You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2006/12/27 01:50:51 UTC

svn commit: r490418 - in /directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap: aci/ filter/ subtree/

Author: seelmann
Date: Tue Dec 26 16:50:50 2006
New Revision: 490418

URL: http://svn.apache.org/viewvc?view=rev&rev=490418
Log:
Added methods printToBuffer(StringBuffer) and printRefinementToBuffer(StringBuffer buffer). It is used get the string representation of ACI, Filter and SubtreeSpecification items.

Modified:
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ACIItem.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/GrantAndDenial.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ItemFirstACIItem.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ItemPermission.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ProtectedItem.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserClass.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserFirstACIItem.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserPermission.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/AssertionNode.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/BranchNode.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ExprNode.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ExtensibleNode.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/PresenceNode.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ScopeNode.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/SimpleNode.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/SubstringNode.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/subtree/BaseSubtreeSpecification.java
    directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/subtree/SubtreeSpecification.java

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ACIItem.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ACIItem.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ACIItem.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ACIItem.java Tue Dec 26 16:50:50 2006
@@ -111,6 +111,15 @@
 
 
     /**
+     * Converts this item into its string representation as stored
+     * in directory.
+     *
+     * @param buffer the string buffer
+     */
+    public abstract void printToBuffer( StringBuffer buffer );
+
+    
+    /**
      * Converts a set of {@link GrantAndDenial}s into a set of
      * {@link MicroOperation}s and returns it.
      */

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/GrantAndDenial.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/GrantAndDenial.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/GrantAndDenial.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/GrantAndDenial.java Tue Dec 26 16:50:50 2006
@@ -172,4 +172,16 @@
     {
         return "[" + code + "] " + name;
     }
+    
+    
+    /**
+     * Converts this item into its string representation as stored
+     * in directory.
+     *
+     * @param buffer the string buffer
+     */
+    public void printToBuffer( StringBuffer buffer )
+    {
+        buffer.append( getName() );
+    }
 }

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ItemFirstACIItem.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ItemFirstACIItem.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ItemFirstACIItem.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ItemFirstACIItem.java Tue Dec 26 16:50:50 2006
@@ -135,4 +135,95 @@
         }
         return tuples;
     }
+
+
+    /**
+     * Converts this item into its string representation as stored
+     * in directory.
+     *
+     * @param buffer the string buffer
+     */
+    public void printToBuffer( StringBuffer buffer )
+    {
+        buffer.append( '{' );
+        buffer.append( ' ' );
+        
+        // identificationTag
+        buffer.append( "identificationTag" );
+        buffer.append( ' ' );
+        buffer.append( '"' );
+        buffer.append( getIdentificationTag() );
+        buffer.append( '"' );
+        buffer.append( ',' );
+        buffer.append( ' ' );
+        
+        // precedence
+        buffer.append( "precedence" );
+        buffer.append( ' ' );
+        buffer.append( getPrecedence() );
+        buffer.append( ',' );
+        buffer.append( ' ' );
+        
+        // authenticationLevel
+        buffer.append( "authenticationLevel" );
+        buffer.append( ' ' );
+        buffer.append( getAuthenticationLevel().getName() );
+        buffer.append( ',' );
+        buffer.append( ' ' );
+        
+        // itemOrUserFirst
+        buffer.append( "itemOrUserFirst" );
+        buffer.append( ' ' );
+        buffer.append( "itemFirst" );
+        buffer.append( ':' );
+        buffer.append( ' ' );
+        
+        buffer.append( '{' );
+        buffer.append( ' ' );
+        
+        // protectedItems
+        buffer.append( "protectedItems" );
+        buffer.append( ' ' );
+        buffer.append( '{' );
+        buffer.append( ' ' );
+        for ( Iterator it = protectedItems.iterator(); it.hasNext(); )
+        {
+            ProtectedItem item =  ( ProtectedItem ) it.next();
+            item.printToBuffer( buffer );
+            
+            if(it.hasNext()) {
+                buffer.append( ',' );
+                buffer.append( ' ' );
+            }
+        }
+        buffer.append( ' ' );
+        buffer.append( '}' );
+        
+        buffer.append( ',' );
+        buffer.append( ' ' );
+        
+        // itemPermissions
+        buffer.append( "itemPermissions" );
+        buffer.append( ' ' );
+        buffer.append( '{' );
+        buffer.append( ' ' );
+        for ( Iterator it = itemPermissions.iterator(); it.hasNext(); )
+        {
+            ItemPermission permission = ( ItemPermission ) it.next();
+            permission.printToBuffer( buffer );
+            
+            if(it.hasNext()) {
+                buffer.append( ',' );
+                buffer.append( ' ' );
+            }
+        }
+        buffer.append( ' ' );
+        buffer.append( '}' );
+        
+        buffer.append( ' ' );
+        buffer.append( '}' );
+        
+        buffer.append( ' ' );
+        buffer.append( '}' );
+    }
 }

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ItemPermission.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ItemPermission.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ItemPermission.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ItemPermission.java Tue Dec 26 16:50:50 2006
@@ -82,4 +82,65 @@
         return "itemPermission: precedence=" + getPrecedence() + ", " + "userClasses=" + userClasses + ", "
             + "grantsAndDenials=" + getGrantsAndDenials();
     }
+    
+    /**
+     * Converts this item into its string representation as stored
+     * in directory.
+     *
+     * @param buffer the string buffer
+     */
+    public void printToBuffer( StringBuffer buffer )
+    {
+        buffer.append( '{' );
+        buffer.append( ' ' );
+
+        if ( getPrecedence() >= 0 && getPrecedence() <= 255 )
+        {
+            buffer.append( "precedence" );
+            buffer.append( ' ' );
+            buffer.append( getPrecedence() );
+            buffer.append( ',' );
+            buffer.append( ' ' );
+        }
+        
+        buffer.append( "userClasses" );
+        buffer.append( ' ' );
+        buffer.append( '{' );
+        buffer.append( ' ' );
+        for ( Iterator it = userClasses.iterator(); it.hasNext(); )
+        {
+            UserClass userClass = ( UserClass ) it.next();
+            userClass.printToBuffer( buffer );
+            
+            if(it.hasNext()) {
+                buffer.append( ',' );
+                buffer.append( ' ' );
+            }
+        }
+        buffer.append( ' ' );
+        buffer.append( '}' );
+        
+        buffer.append( ',' );
+        buffer.append( ' ' );
+        
+        buffer.append( "grantsAndDenials" );
+        buffer.append( ' ' );
+        buffer.append( '{' );
+        buffer.append( ' ' );
+        for ( Iterator it = getGrantsAndDenials().iterator(); it.hasNext(); )
+        {
+            GrantAndDenial grantAndDenial = ( GrantAndDenial ) it.next();
+            grantAndDenial.printToBuffer( buffer );
+            
+            if(it.hasNext()) {
+                buffer.append( ',' );
+                buffer.append( ' ' );
+            }
+        }
+        buffer.append( ' ' );
+        buffer.append( '}' );
+        
+        buffer.append( ' ' );
+        buffer.append( '}' );
+    }
 }

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ProtectedItem.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ProtectedItem.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ProtectedItem.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/ProtectedItem.java Tue Dec 26 16:50:50 2006
@@ -26,6 +26,7 @@
 import java.util.Collections;
 import java.util.Iterator;
 
+import javax.naming.NamingException;
 import javax.naming.directory.Attribute;
 
 import org.apache.directory.shared.ldap.filter.ExprNode;
@@ -69,6 +70,16 @@
     {
     }
 
+    
+    /**
+     * Converts this item into its string representation as stored
+     * in directory.
+     *
+     * @param buffer the string buffer
+     */
+    public abstract void printToBuffer( StringBuffer buffer );
+
+    
     /**
      * The contents of entries (possibly a family member) which are restricted
      * to those that have object class values that satisfy the predicate defined
@@ -117,6 +128,14 @@
 
             return false;
         }
+
+
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "classes" );
+            buffer.append( ' ' );
+            classes.printRefinementToBuffer( buffer );
+        }
     }
 
     /**
@@ -141,6 +160,12 @@
         {
             return "entry";
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "entry" );
+        }
     }
 
     /**
@@ -161,6 +186,12 @@
         {
             return "allUserAttributeTypes";
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "allUserAttributeTypes" );
+        }
     }
 
     /**
@@ -181,6 +212,12 @@
         {
             return "allUserAttributeTypesAndValues";
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "allUserAttributeTypesAndValues" );
+        }
     }
 
     /**
@@ -244,6 +281,27 @@
 
             return false;
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( '{' );
+            buffer.append( ' ' );
+            
+            for ( Iterator it = attributeTypes.iterator(); it.hasNext(); )
+            {
+                String attributeType = ( String ) it.next();
+                buffer.append( attributeType );
+                
+                if(it.hasNext()) {
+                    buffer.append( ',' );
+                    buffer.append( ' ' );
+                }
+            }
+            
+            buffer.append( ' ' );
+            buffer.append( '}' );
+        }
     }
 
     /**
@@ -269,7 +327,15 @@
 
         public String toString()
         {
-            return "attributType: " + attributeTypes;
+            return "attributeType: " + attributeTypes;
+        }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "attributeType" );
+            buffer.append( ' ' );
+            super.printToBuffer( buffer );
         }
     }
 
@@ -297,6 +363,14 @@
         {
             return "allAttributeValues: " + attributeTypes;
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "allAttributeValues" );
+            buffer.append( ' ' );
+            super.printToBuffer( buffer );
+        }
     }
 
     /**
@@ -328,6 +402,14 @@
         {
             return "selfValue: " + attributeTypes;
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "selfValue" );
+            buffer.append( ' ' );
+            super.printToBuffer( buffer );
+        }
     }
 
     /**
@@ -389,6 +471,39 @@
         {
             return "attributeValue: " + attributes;
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "attributeValue" );
+            buffer.append( ' ' );
+           
+            buffer.append( '{' );
+            buffer.append( ' ' );
+            
+            for ( Iterator it = attributes.iterator(); it.hasNext(); )
+            {
+                Attribute attribute = ( Attribute ) it.next();
+                buffer.append( attribute.getID() );
+                buffer.append( '=' );
+                try
+                {
+                    buffer.append( attribute.get( 0 ) );
+                }
+                catch ( NamingException e )
+                {
+                    // doesn't occur here, it is a BasicAttribute
+                }
+                
+                if(it.hasNext()) {
+                    buffer.append( ',' );
+                    buffer.append( ' ' );
+                }
+            }
+            
+            buffer.append( ' ' );
+            buffer.append( '}' );
+        }
     }
 
     /**
@@ -457,6 +572,30 @@
         {
             return "maxValueCount: " + items;
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "maxValueCount" );
+            buffer.append( ' ' );
+           
+            buffer.append( '{' );
+            buffer.append( ' ' );
+            
+            for ( Iterator it = items.iterator(); it.hasNext(); )
+            {
+                MaxValueCountItem item = ( MaxValueCountItem ) it.next();
+                item.printToBuffer( buffer );
+                
+                if(it.hasNext()) {
+                    buffer.append( ',' );
+                    buffer.append( ' ' );
+                }
+            }
+            
+            buffer.append( ' ' );
+            buffer.append( '}' );
+        }
     }
 
     /**
@@ -520,6 +659,14 @@
             filter.printToBuffer( buf );
             return buf.toString();
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "rangeOfValues" );
+            buffer.append( ' ' );
+            filter.printToBuffer( buffer );
+        }
     }
 
     /**
@@ -581,6 +728,14 @@
         {
             return "maxImmSub: " + value;
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "maxImmSub" );
+            buffer.append( ' ' );
+            buffer.append( value );
+        }
     }
 
     /**
@@ -650,6 +805,30 @@
         {
             return "restrictedBy: " + items;
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "restrictedBy" );
+            buffer.append( ' ' );
+            
+            buffer.append( '{' );
+            buffer.append( ' ' );
+            
+            for ( Iterator it = items.iterator(); it.hasNext(); )
+            {
+                RestrictedByItem item = ( RestrictedByItem ) it.next();
+                item.printToBuffer( buffer );
+                
+                if(it.hasNext()) {
+                    buffer.append( ',' );
+                    buffer.append( ' ' );
+                }
+            }
+            
+            buffer.append( ' ' );
+            buffer.append( '}' );
+        }
     }
 
     /**
@@ -702,6 +881,26 @@
         {
             return "attributeType=" + attributeType + ", maxCount=" + maxCount;
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( '{' );
+            buffer.append( ' ' );
+            
+            buffer.append( "type" );
+            buffer.append( ' ' );
+            buffer.append( attributeType );
+
+            buffer.append( ' ' );
+            
+            buffer.append( "maxCount" );
+            buffer.append( ' ' );
+            buffer.append( maxCount );
+            
+            buffer.append( ' ' );
+            buffer.append( '}' );
+        }
     }
 
     /**
@@ -755,5 +954,26 @@
         {
             return "attributeType=" + attributeType + ", valuesIn=" + valuesIn;
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( '{' );
+            buffer.append( ' ' );
+            
+            buffer.append( "type" );
+            buffer.append( ' ' );
+            buffer.append( attributeType );
+
+            buffer.append( ' ' );
+            
+            buffer.append( "valuesIn" );
+            buffer.append( ' ' );
+            buffer.append( valuesIn );
+            
+            buffer.append( ' ' );
+            buffer.append( '}' );
+        }
     }
+    
 }

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserClass.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserClass.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserClass.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserClass.java Tue Dec 26 16:50:50 2006
@@ -59,6 +59,16 @@
     protected UserClass()
     {
     }
+    
+    
+    /**
+     * Converts this item into its string representation as stored
+     * in directory.
+     *
+     * @param buffer the string buffer
+     */
+    public abstract void printToBuffer( StringBuffer buffer );
+    
 
     /**
      * Every directory user (with possible requirements for
@@ -78,6 +88,12 @@
         {
             return "allUsers";
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "allUsers" );
+        }
     }
 
     /**
@@ -99,6 +115,12 @@
         {
             return "thisEntry";
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "thisEntry" );
+        }
     }
 
     /**
@@ -164,6 +186,29 @@
         {
             return names.toString();
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( '{' );
+            buffer.append( ' ' );
+            
+            for ( Iterator it = names.iterator(); it.hasNext(); )
+            {
+                javax.naming.Name name = ( javax.naming.Name ) it.next();
+                buffer.append( '"' );
+                buffer.append( name.toString() );
+                buffer.append( '"' );
+                
+                if(it.hasNext()) {
+                    buffer.append( ',' );
+                    buffer.append( ' ' );
+                }
+            }
+            
+            buffer.append( ' ' );
+            buffer.append( '}' );
+        }
     }
 
     /**
@@ -190,6 +235,14 @@
         {
             return "name: " + super.toString();
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "name" );
+            buffer.append( ' ' );
+            super.printToBuffer( buffer );
+        }
     }
 
     /**
@@ -219,6 +272,14 @@
         {
             return "userGroup: " + super.toString();
         }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "userGroup" );
+            buffer.append( ' ' );
+            super.printToBuffer( buffer );
+        }
     }
 
     /**
@@ -281,6 +342,29 @@
         public String toString()
         {
             return "subtree: " + subtreeSpecifications;
+        }
+        
+        
+        public void printToBuffer( StringBuffer buffer )
+        {
+            buffer.append( "subtree" );
+            buffer.append( ' ' );
+            buffer.append( '{' );
+            buffer.append( ' ' );
+            
+            for ( Iterator it = subtreeSpecifications.iterator(); it.hasNext(); )
+            {
+                SubtreeSpecification ss = ( SubtreeSpecification ) it.next();
+                ss.printToBuffer( buffer );
+                
+                if(it.hasNext()) {
+                    buffer.append( ',' );
+                    buffer.append( ' ' );
+                }
+            }
+            
+            buffer.append( ' ' );
+            buffer.append( '}' );
         }
     }
 }

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserFirstACIItem.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserFirstACIItem.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserFirstACIItem.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserFirstACIItem.java Tue Dec 26 16:50:50 2006
@@ -135,4 +135,95 @@
         }
         return tuples;
     }
+    
+    
+    /**
+     * Converts this item into its string representation as stored
+     * in directory.
+     *
+     * @param buffer the string buffer
+     */
+    public void printToBuffer( StringBuffer buffer )
+    {
+        buffer.append( '{' );
+        buffer.append( ' ' );
+        
+        // identificationTag
+        buffer.append( "identificationTag" );
+        buffer.append( ' ' );
+        buffer.append( '"' );
+        buffer.append( getIdentificationTag() );
+        buffer.append( '"' );
+        buffer.append( ',' );
+        buffer.append( ' ' );
+        
+        // precedence
+        buffer.append( "precedence" );
+        buffer.append( ' ' );
+        buffer.append( getPrecedence() );
+        buffer.append( ',' );
+        buffer.append( ' ' );
+        
+        // authenticationLevel
+        buffer.append( "authenticationLevel" );
+        buffer.append( ' ' );
+        buffer.append( getAuthenticationLevel().getName() );
+        buffer.append( ',' );
+        buffer.append( ' ' );
+        
+        // itemOrUserFirst
+        buffer.append( "itemOrUserFirst" );
+        buffer.append( ' ' );
+        buffer.append( "userFirst" );
+        buffer.append( ':' );
+        buffer.append( ' ' );
+        
+        buffer.append( '{' );
+        buffer.append( ' ' );
+        
+        // protectedItems
+        buffer.append( "userClasses" );
+        buffer.append( ' ' );
+        buffer.append( '{' );
+        buffer.append( ' ' );
+        for ( Iterator it = userClasses.iterator(); it.hasNext(); )
+        {
+            UserClass userClass =  ( UserClass ) it.next();
+            userClass.printToBuffer( buffer );
+            
+            if(it.hasNext()) {
+                buffer.append( ',' );
+                buffer.append( ' ' );
+            }
+        }
+        buffer.append( ' ' );
+        buffer.append( '}' );
+        
+        buffer.append( ',' );
+        buffer.append( ' ' );
+        
+        // itemPermissions
+        buffer.append( "userPermissions" );
+        buffer.append( ' ' );
+        buffer.append( '{' );
+        buffer.append( ' ' );
+        for ( Iterator it = userPermissions.iterator(); it.hasNext(); )
+        {
+            UserPermission permission = ( UserPermission ) it.next();
+            permission.printToBuffer( buffer );
+            
+            if(it.hasNext()) {
+                buffer.append( ',' );
+                buffer.append( ' ' );
+            }
+        }
+        buffer.append( ' ' );
+        buffer.append( '}' );
+        
+        buffer.append( ' ' );
+        buffer.append( '}' );
+        
+        buffer.append( ' ' );
+        buffer.append( '}' );
+    }
 }

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserPermission.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserPermission.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserPermission.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/aci/UserPermission.java Tue Dec 26 16:50:50 2006
@@ -81,4 +81,66 @@
         return "itemPermission: precedence=" + getPrecedence() + ", " + "protectedItems=" + protectedItems + ", "
             + "grantsAndDenials=" + getGrantsAndDenials();
     }
+    
+    
+    /**
+     * Converts this item into its string representation as stored
+     * in directory.
+     *
+     * @param buffer the string buffer
+     */
+    public void printToBuffer( StringBuffer buffer )
+    {
+        buffer.append( '{' );
+        buffer.append( ' ' );
+
+        if ( getPrecedence() >= 0 && getPrecedence() <= 255 )
+        {
+            buffer.append( "precedence" );
+            buffer.append( ' ' );
+            buffer.append( getPrecedence() );
+            buffer.append( ',' );
+            buffer.append( ' ' );
+        }
+        
+        buffer.append( "protectedItems" );
+        buffer.append( ' ' );
+        buffer.append( '{' );
+        buffer.append( ' ' );
+        for ( Iterator it = protectedItems.iterator(); it.hasNext(); )
+        {
+            ProtectedItem item = ( ProtectedItem ) it.next();
+            item.printToBuffer( buffer );
+            
+            if(it.hasNext()) {
+                buffer.append( ',' );
+                buffer.append( ' ' );
+            }
+        }
+        buffer.append( ' ' );
+        buffer.append( '}' );
+        
+        buffer.append( ',' );
+        buffer.append( ' ' );
+        
+        buffer.append( "grantsAndDenials" );
+        buffer.append( ' ' );
+        buffer.append( '{' );
+        buffer.append( ' ' );
+        for ( Iterator it = getGrantsAndDenials().iterator(); it.hasNext(); )
+        {
+            GrantAndDenial grantAndDenial = ( GrantAndDenial ) it.next();
+            grantAndDenial.printToBuffer( buffer );
+            
+            if(it.hasNext()) {
+                buffer.append( ',' );
+                buffer.append( ' ' );
+            }
+        }
+        buffer.append( ' ' );
+        buffer.append( '}' );
+        
+        buffer.append( ' ' );
+        buffer.append( '}' );
+    }
 }

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/AssertionNode.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/AssertionNode.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/AssertionNode.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/AssertionNode.java Tue Dec 26 16:50:50 2006
@@ -122,6 +122,15 @@
         return a_buf.append( m_desc ).append( MAX_STR );
     }
 
+    
+    /**
+     * @see ExprNode#printRefinementToBuffer(StringBuffer)
+     */
+    public StringBuffer printRefinementToBuffer( StringBuffer a_buf ) throws UnsupportedOperationException
+    {
+        throw new UnsupportedOperationException( "AssertionNode can't be part of a refinement" );
+    }
+
 
     /**
      * @see org.apache.directory.shared.ldap.filter.ExprNode#accept(

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/BranchNode.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/BranchNode.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/BranchNode.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/BranchNode.java Tue Dec 26 16:50:50 2006
@@ -22,9 +22,12 @@
 
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.math.BigInteger;
 
+import org.apache.directory.shared.ldap.name.LdapDN;
+
 
 /**
  * Node representing branches within the expression tree corresponding to
@@ -277,6 +280,48 @@
         return buf;
     }
 
+    
+    /**
+     * @see ExprNode#printRefinementToBuffer(StringBuffer)
+     */
+    public StringBuffer printRefinementToBuffer( StringBuffer buf ) throws UnsupportedOperationException
+    {
+        
+        
+        switch ( operator )
+        {
+            case AND :
+                buf.append( "and" );
+                break;
+            case OR :
+                buf.append( "or" );
+                break;
+            case NOT :
+                buf.append( "not" );
+                break;
+        }
+        
+        
+        buf.append( ':' );
+        buf.append( ' ' );
+        buf.append( '{' );
+        
+        for ( Iterator<ExprNode> it = children.iterator(); it.hasNext(); )
+        {
+            ExprNode node = it.next();
+            node.printRefinementToBuffer( buf );
+            
+            if(it.hasNext())
+            {
+                buf.append( ',' );
+                buf.append( ' ' );
+            }
+        }
+        
+        buf.append( '}' );
+        
+        return buf;
+    }
 
     /**
      * Gets a human readable representation for the operators: AND for '&', OR

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ExprNode.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ExprNode.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ExprNode.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ExprNode.java Tue Dec 26 16:50:50 2006
@@ -70,6 +70,18 @@
 
 
     /**
+     * Recursively appends the refinement string representation of this node and its
+     * descendents in prefix notation to a buffer.
+     * 
+     * @param a_buf
+     *            the buffer to append to.
+     * @throws UnsupportedOperationException
+     *            if this node isn't a part of a refinement.
+     */
+    StringBuffer printRefinementToBuffer( StringBuffer a_buf ) throws UnsupportedOperationException;
+    
+    
+    /**
      * Element/node accept method for visitor pattern.
      * 
      * @param a_visitor

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ExtensibleNode.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ExtensibleNode.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ExtensibleNode.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ExtensibleNode.java Tue Dec 26 16:50:50 2006
@@ -145,6 +145,15 @@
         return buf;
     }
 
+    
+    /**
+     * @see ExprNode#printRefinementToBuffer(StringBuffer)
+     */
+    public StringBuffer printRefinementToBuffer( StringBuffer a_buf ) throws UnsupportedOperationException
+    {
+        throw new UnsupportedOperationException( "ExtensibleNode can't be part of a refinement" );
+    }
+
 
     /**
      * @see java.lang.Object#toString()

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/PresenceNode.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/PresenceNode.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/PresenceNode.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/PresenceNode.java Tue Dec 26 16:50:50 2006
@@ -76,6 +76,15 @@
         return ( buf.toString() );
     }
 
+    
+    /**
+     * @see ExprNode#printRefinementToBuffer(StringBuffer)
+     */
+    public StringBuffer printRefinementToBuffer( StringBuffer a_buf ) throws UnsupportedOperationException
+    {
+        throw new UnsupportedOperationException( "PresenceNode can't be part of a refinement" );
+    }
+
 
     /**
      * @see org.apache.directory.shared.ldap.filter.ExprNode#accept(

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ScopeNode.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ScopeNode.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ScopeNode.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/ScopeNode.java Tue Dec 26 16:50:50 2006
@@ -167,6 +167,15 @@
 
         return buf;
     }
+    
+    
+    /**
+     * @see ExprNode#printRefinementToBuffer(StringBuffer)
+     */
+    public StringBuffer printRefinementToBuffer( StringBuffer a_buf ) throws UnsupportedOperationException
+    {
+        throw new UnsupportedOperationException( "ScopeNode can't be part of a refinement" );
+    }
 
 
     /**

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/SimpleNode.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/SimpleNode.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/SimpleNode.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/SimpleNode.java Tue Dec 26 16:50:50 2006
@@ -184,6 +184,44 @@
         return buf;
     }
 
+    
+    /**
+     * @see ExprNode#printRefinementToBuffer(StringBuffer)
+     */
+    public StringBuffer printRefinementToBuffer( StringBuffer buf ) throws UnsupportedOperationException
+    {
+
+        switch ( getAssertionType() )
+        {
+            case EQUALITY:
+                break;
+
+            case APPROXIMATE:
+                throw new UnsupportedOperationException( "Approximate assertion isn't valid for a refinement" );
+
+            case GREATEREQ:
+                throw new UnsupportedOperationException( "GreaterOrEqual assertion isn't valid for a refinement" );
+
+            case LESSEQ:
+                throw new UnsupportedOperationException( "LessOrEqual assertion isn't valid for a refinement" );
+
+            default:
+                throw new UnsupportedOperationException( "Undefined assertion for a refinement" );
+        }
+
+        if ( getAttribute() == null || !"objectClass".equalsIgnoreCase( getAttribute() ) )
+        {
+            throw new UnsupportedOperationException( "Invalid attribute " + getAttribute() + " for a refinement" );
+        }
+
+        buf.append( "item" );
+        buf.append( ':' );
+        buf.append( ' ' );
+        buf.append( getValue() );
+
+        return buf;
+    }
+
 
     /**
      * @see java.lang.Object#toString()

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/SubstringNode.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/SubstringNode.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/SubstringNode.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/filter/SubstringNode.java Tue Dec 26 16:50:50 2006
@@ -246,6 +246,15 @@
         return buf;
     }
 
+    
+    /**
+     * @see ExprNode#printRefinementToBuffer(StringBuffer)
+     */
+    public StringBuffer printRefinementToBuffer( StringBuffer a_buf ) throws UnsupportedOperationException
+    {
+        throw new UnsupportedOperationException( "SubstringNode can't be part of a refinement" );
+    }
+
 
     /**
      * @see org.apache.directory.shared.ldap.filter.ExprNode#accept(

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/subtree/BaseSubtreeSpecification.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/subtree/BaseSubtreeSpecification.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/subtree/BaseSubtreeSpecification.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/subtree/BaseSubtreeSpecification.java Tue Dec 26 16:50:50 2006
@@ -23,6 +23,7 @@
 import org.apache.directory.shared.ldap.filter.ExprNode;
 import org.apache.directory.shared.ldap.name.LdapDN;
 
+import java.util.Iterator;
 import java.util.Set;
 import java.util.Collections;
 
@@ -237,4 +238,108 @@
     {
         return this.refinement;
     }
+
+    
+    /**
+     * Converts this item into its string representation as stored
+     * in directory.
+     *
+     * @param buffer the string buffer
+     */
+    public void printToBuffer( StringBuffer buffer )
+    {
+        buffer.append( '{' );
+        
+        if(!base.isEmpty()) {
+            buffer.append( ' ' );
+            buffer.append( "base" );
+            buffer.append( ' ' );
+            buffer.append( '"' );
+            buffer.append( base.getUpName() );
+            buffer.append( '"' );
+            buffer.append( ',' );
+        }
+        
+        if(minBaseDistance > 0) {
+            buffer.append( ' ' );
+            buffer.append( "minimum" );
+            buffer.append( ' ' );
+            buffer.append( minBaseDistance );
+            buffer.append( ',' );
+        }
+        
+        if(maxBaseDistance > UNBOUNDED_MAX) {
+            buffer.append( ' ' );
+            buffer.append( "maximum" );
+            buffer.append( ' ' );
+            buffer.append( maxBaseDistance );
+            buffer.append( ',' );
+        }
+        
+        if(!chopBefore.isEmpty() || !chopAfter.isEmpty()) {
+            buffer.append( ' ' );
+            buffer.append( "specificExclusions" );
+            buffer.append( ' ' );
+            buffer.append( '{' );
+
+            for ( Iterator it = chopBefore.iterator(); it.hasNext(); )
+            {
+                LdapDN dn = ( LdapDN ) it.next();
+                buffer.append( ' ' );
+                buffer.append( "chopBefore" );
+                buffer.append( ':' );
+                buffer.append( ' ' );
+                buffer.append( '"' );
+                buffer.append( dn.getUpName() );
+                buffer.append( '"' );
+                
+                if(it.hasNext())
+                {
+                    buffer.append( ',' );
+                    buffer.append( ' ' );
+                }
+            }
+            
+            for ( Iterator it = chopAfter.iterator(); it.hasNext(); )
+            {
+                LdapDN dn = ( LdapDN ) it.next();
+                buffer.append( ' ' );
+                buffer.append( "chopAfter" );
+                buffer.append( ':' );
+                buffer.append( ' ' );
+                buffer.append( '"' );
+                buffer.append( dn.getUpName() );
+                buffer.append( '"' );
+                
+                if(it.hasNext())
+                {
+                    buffer.append( ',' );
+                    buffer.append( ' ' );
+                }
+            }
+            
+            buffer.append( ' ' );
+            buffer.append( '}' );
+            
+            buffer.append( ',' );
+        }
+        
+        if(refinement != null) 
+        {
+            buffer.append( ' ' );
+            buffer.append( "specificationFilter" );
+            buffer.append( ' ' );
+            refinement.printRefinementToBuffer( buffer );
+            buffer.append( ',' );
+        }
+        
+        if(buffer.charAt( buffer.length()-1 ) == ',') {
+            buffer.deleteCharAt( buffer.length()-1 );
+        }
+        
+        buffer.append( ' ' );
+        buffer.append( '}' );
+    }
+
+    
 }

Modified: directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/subtree/SubtreeSpecification.java
URL: http://svn.apache.org/viewvc/directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/subtree/SubtreeSpecification.java?view=diff&rev=490418&r1=490417&r2=490418
==============================================================================
--- directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/subtree/SubtreeSpecification.java (original)
+++ directory/trunks/shared/ldap/src/main/java/org/apache/directory/shared/ldap/subtree/SubtreeSpecification.java Tue Dec 26 16:50:50 2006
@@ -117,4 +117,14 @@
      *         specification
      */
     ExprNode getRefinement();
+    
+    
+    /**
+     * Converts this item into its string representation as stored
+     * in directory.
+     *
+     * @param buffer the string buffer
+     */
+    void printToBuffer( StringBuffer buffer );
+    
 }