All you have to do is setPatent(null) on the copnfiguration fragment to
prevent this behavior !
On Thu, 2002-11-21 at 11:49, Stephen McConnell wrote:
>
> Hang on a tick - if I understand the comments below correctly, a object
> having a refernce to a configuration fragment could get the parent of
> that fragment and from there, get the partent and children of the
> parent, - i.e. navigate the entire configuration hierachy. While your
> respect read-only, its scarry feature because currently the
> configuration fragment is totally isolated and the rest of the
> configuration.
>
> Cheers, Steve.
>
> (who think s that "know me" is not the same as "knowing my family")
>
>
>
> Leandro Rodrigo Saad Cruz wrote:
>
> >Hi all. I'm sending this patches to the list to see if you would like to
> >include them into CVS.
> >
> >These changes should help a developer, with a Configuration instance at
> >hand, determine it's parent and root Configuration instances.
> >It respects the read-only nature of Configuration objects.
> >
> >
> >
> >------------------------------------------------------------------------
> >
> >Index: src/java/org/apache/avalon/framework/configuration/Configuration.java
> >===================================================================
> >RCS file:
>/home/cvspublic/jakarta-avalon/src/java/org/apache/avalon/framework/configuration/Configuration.java,v
> >retrieving revision 1.23
> >diff -u -b -B -r1.23 Configuration.java
> >--- src/java/org/apache/avalon/framework/configuration/Configuration.java 7 Nov
>2002 08:35:27 -0000 1.23
> >+++ src/java/org/apache/avalon/framework/configuration/Configuration.java 21 Nov
>2002 13:27:53 -0000
> >@@ -499,4 +499,19 @@
> > * the value is not set.
> > */
> > boolean getAttributeAsBoolean( String name, boolean defaultValue );
> >+
> >+ /**
> >+ * Returns the parent os this Configuration instance, (can be null).
> >+ *
> >+ * @return Configuration object that this instance is child of.
> >+ */
> >+ public Configuration getParent();
> >+
> >+ /**
> >+ * Returns the root Configuration object that this Configuration instance is
>part of.
> >+ *
> >+ * @see SAXConfigurationHandler
> >+ * @return Configuration object that is the root of the Configuration tree.
> >+ */
> >+ public Configuration getRoot();
> > }
> >
> >
> >------------------------------------------------------------------------
> >
> >Index: src/java/org/apache/avalon/framework/configuration/DefaultConfiguration.java
> >===================================================================
> >RCS file:
>/home/cvspublic/jakarta-avalon/src/java/org/apache/avalon/framework/configuration/DefaultConfiguration.java,v
> >retrieving revision 1.25
> >diff -u -b -B -r1.25 DefaultConfiguration.java
> >--- src/java/org/apache/avalon/framework/configuration/DefaultConfiguration.java
> 11 Nov 2002 01:54:07 -0000 1.25
> >+++ src/java/org/apache/avalon/framework/configuration/DefaultConfiguration.java
> 21 Nov 2002 13:31:02 -0000
> >@@ -84,6 +84,7 @@
> > private ArrayList m_children;
> > private String m_value;
> > private boolean m_readOnly;
> >+ private Configuration m_parent;
> >
> > /**
> > * Create a new <code>DefaultConfiguration</code> instance.
> >@@ -536,5 +537,46 @@
> > throw new IllegalStateException
> > ( "Configuration is read only and can not be modified" );
> > }
> >+ }
> >+
> >+
> >+
> >+ /**
> >+ * Returns the parent os this Configuration instance, (can be null).
> >+ *
> >+ * @return Configuration object that this instance is child of.
> >+ */
> >+ public Configuration getParent()
> >+ {
> >+ return m_parent;
> >+ }
> >+
> >+
> >+
> >+ /**
> >+ * Set the parent Configuration object for this instance
> >+ */
> >+ public void setParent(Configuration parent)
> >+ {
> >+ m_parent = parent;
> >+ }
> >+
> >+
> >+
> >+ /**
> >+ * Returns the root Configuration object that this Configuration instance is
>part of.
> >+ * A Configuration object is considered to be the root of the Configuration
>tree if it has no parent.
> >+ *
> >+ * @see SAXConfigurationHandler
> >+ * @return Configuration object that is the root of the Configuration tree.
> >+ */
> >+ public Configuration getRoot()
> >+ {
> >+ if(m_parent != null)
> >+ {
> >+ return m_parent.getRoot();
> >+ }
> >+ return this;
> >+
> > }
> > }
> >
> >
> >------------------------------------------------------------------------
> >
> >Index:
>src/java/org/apache/avalon/framework/configuration/SAXConfigurationHandler.java
> >===================================================================
> >RCS file:
>/home/cvspublic/jakarta-avalon/src/java/org/apache/avalon/framework/configuration/SAXConfigurationHandler.java,v
> >retrieving revision 1.24
> >diff -u -b -B -r1.24 SAXConfigurationHandler.java
> >--- src/java/org/apache/avalon/framework/configuration/SAXConfigurationHandler.java
> 7 Nov 2002 08:35:27 -0000 1.24
> >+++ src/java/org/apache/avalon/framework/configuration/SAXConfigurationHandler.java
> 21 Nov 2002 13:27:14 -0000
> >@@ -232,6 +232,7 @@
> > {
> > final DefaultConfiguration parent =
> > (DefaultConfiguration)m_elements.get( depth - 1 );
> >+ configuration.setParent(parent);
> > parent.addChild( configuration );
> > // inherits parent's space preservation policy
> > preserveSpace = m_preserveSpace.get( depth - 1 );
> >
> >
> >
> >------------------------------------------------------------------------
> >
> >--
> >To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> >For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> >
>
> --
>
> Stephen J. McConnell
>
> OSM SARL
> digital products for a global economy
> mailto:[EMAIL PROTECTED]
> http://www.osm.net
>
>
>
>
> --
> To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
>
--
Leandro Rodrigo Saad Cruz
IT - Inter Business Tecnologia e Servicos (IB)
http://www.ibnetwork.com.br
http://jakarta.apache.org/ojb
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>