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]>

Reply via email to