directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From elecha...@apache.org
Subject svn commit: r896599 [3/30] - in /directory/apacheds/trunk: ./ avl-partition/ avl-partition/src/ avl-partition/src/main/ avl-partition/src/main/java/ avl-partition/src/main/java/org/ avl-partition/src/main/java/org/apache/ avl-partition/src/main/java/or...
Date Wed, 06 Jan 2010 18:27:19 GMT
Modified: directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerBinaryValue.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerBinaryValue.java?rev=896599&r1=896598&r2=896599&view=diff
==============================================================================
--- directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerBinaryValue.java (original)
+++ directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerBinaryValue.java Wed Jan  6 18:26:43 2010
@@ -32,6 +32,7 @@
 import org.apache.directory.shared.ldap.entry.Value;
 import org.apache.directory.shared.ldap.entry.client.ClientBinaryValue;
 import org.apache.directory.shared.ldap.schema.AttributeType;
+import org.apache.directory.shared.ldap.schema.LdapComparator;
 import org.apache.directory.shared.ldap.schema.MatchingRule;
 import org.apache.directory.shared.ldap.schema.Normalizer;
 import org.apache.directory.shared.ldap.schema.comparators.ByteArrayComparator;
@@ -53,7 +54,7 @@
 {
     /** Used for serialization */
     private static final long serialVersionUID = 2L;
-    
+
     /** logger for reporting errors that might not be handled properly upstream */
     private static final Logger LOG = LoggerFactory.getLogger( ServerBinaryValue.class );
 
@@ -73,38 +74,31 @@
      */
     protected String logAssert( String message )
     {
-        LOG.error(  message );
+        LOG.error( message );
         return message;
     }
 
-    
+
     /**
      *  Check the attributeType member. It should not be null, 
      *  and it should contains a syntax.
      */
     protected String checkAttributeType( AttributeType attributeType )
     {
-        try
+        if ( attributeType == null )
         {
-            if ( attributeType == null )
-            {
-                return "The AttributeType parameter should not be null";
-            }
-            
-            if ( attributeType.getSyntax() == null )
-            {
-                return "There is no Syntax associated with this attributeType";
-            }
-
-            return null;
+            return "The AttributeType parameter should not be null";
         }
-        catch ( NamingException ne )
+
+        if ( attributeType.getSyntax() == null )
         {
-            return "This AttributeType is incorrect";
+            return "There is no Syntax associated with this attributeType";
         }
+
+        return null;
     }
 
-    
+
     // -----------------------------------------------------------------------
     // Constructors
     // -----------------------------------------------------------------------
@@ -116,27 +110,20 @@
     public ServerBinaryValue( AttributeType attributeType )
     {
         super();
-        
+
         if ( attributeType == null )
         {
             throw new IllegalArgumentException( "The AttributeType parameter should not be null" );
         }
 
-        try
+        if ( attributeType.getSyntax() == null )
         {
-            if ( attributeType.getSyntax() == null )
-            {
-                throw new IllegalArgumentException( "There is no Syntax associated with this attributeType" );
-            }
-
-            if ( attributeType.getSyntax().isHumanReadable() )
-            {
-                LOG.warn( "Treating a value of a human readible attribute {} as binary: ", attributeType.getName() );
-            }
+            throw new IllegalArgumentException( "There is no Syntax associated with this attributeType" );
         }
-        catch( NamingException e )
+
+        if ( attributeType.getSyntax().isHumanReadable() )
         {
-            LOG.error( "Failed to resolve syntax for attributeType {}", attributeType, e );
+            LOG.warn( "Treating a value of a human readible attribute {} as binary: ", attributeType.getName() );
         }
 
         this.attributeType = attributeType;
@@ -164,7 +151,7 @@
      * @param wrapped the value to wrap which can be null
      * @param normalizedValue the normalized value
      */
-    /** No protection */ 
+    /** No protection */
     ServerBinaryValue( AttributeType attributeType, byte[] wrapped, byte[] normalizedValue, boolean same, boolean valid )
     {
         super( wrapped );
@@ -172,7 +159,7 @@
         this.attributeType = attributeType;
         this.normalizedValue = normalizedValue;
         this.valid = valid;
-        this.same = same;
+        this.same = same;
         //this.oid = attributeType.getOid();
     }
 
@@ -187,11 +174,11 @@
             // Bypass the normalization if it has already been done. 
             return;
         }
-        
+
         if ( wrapped != null )
         {
             Normalizer normalizer = getNormalizer();
-    
+
             if ( normalizer == null )
             {
                 normalizedValue = wrapped;
@@ -213,9 +200,9 @@
         }
     }
 
-    
+
     /**
-     * Gets the normalized (cannonical) representation for the wrapped string.
+     * Gets the normalized (canonical) representation for the wrapped string.
      * If the wrapped String is null, null is returned, otherwise the normalized
      * form is returned.  If no the normalizedValue is null, then this method
      * will attempt to generate it from the wrapped value: repeated calls to
@@ -259,7 +246,7 @@
      *
      * @return gets the normalized value
      */
-    public byte[] getNormalizedValue() 
+    public byte[] getNormalizedValue()
     {
         if ( isNull() )
         {
@@ -315,7 +302,7 @@
 
         if ( normalizedValue != null )
         {
-            byte[] copy = new byte[ normalizedValue.length ];
+            byte[] copy = new byte[normalizedValue.length];
             System.arraycopy( normalizedValue, 0, copy, 0, normalizedValue.length );
             return copy;
         }
@@ -342,20 +329,11 @@
             return valid;
         }
 
-        try
-        {
-            valid = attributeType.getSyntax().getSyntaxChecker().isValidSyntax( getReference() );
-        }
-        catch ( NamingException ne )
-        {
-            String message = "Cannot check the syntax : " + ne.getMessage();
-            LOG.error( message );
-            valid = false;
-        }
-        
+        valid = attributeType.getSyntax().getSyntaxChecker().isValidSyntax( getReference() );
+
         return valid;
     }
-    
+
 
     /**
      *
@@ -378,7 +356,7 @@
         }
         else
         {
-            if ( ( value == null ) || value.isNull() ) 
+            if ( ( value == null ) || value.isNull() )
             {
                 return 1;
             }
@@ -390,29 +368,30 @@
 
             try
             {
-                Comparator<? super Value<byte[]>> comparator = getComparator();
-                
+                Comparator<? super byte[]> comparator = getLdapComparator();
+
                 if ( comparator != null )
                 {
-                    return getComparator().compare( getNormalizedValueReference(), binaryValue.getNormalizedValueReference() );
+                    return comparator
+                        .compare( getNormalizedValueReference(), binaryValue.getNormalizedValueReference() );
                 }
                 else
                 {
-                    return ByteArrayComparator.INSTANCE.compare( getNormalizedValueReference(), 
-                        binaryValue.getNormalizedValueReference() );
+                    return new ByteArrayComparator( null ).compare( getNormalizedValueReference(), binaryValue
+                        .getNormalizedValueReference() );
                 }
             }
             catch ( NamingException e )
             {
-                String msg = "Failed to compare normalized values for " + Arrays.toString( getReference() )
-                        + " and " + value;
+                String msg = "Failed to compare normalized values for " + Arrays.toString( getReference() ) + " and "
+                    + value;
                 LOG.error( msg, e );
                 throw new IllegalStateException( msg, e );
             }
         }
 
-        String message = "I don't really know how to compare anything other " +
-        "than ServerBinaryValues at this point in time.";
+        String message = "I don't really know how to compare anything other "
+            + "than ServerBinaryValues at this point in time.";
         LOG.error( message );
         throw new NotImplementedException( message );
     }
@@ -485,18 +464,18 @@
             return true;
         }
 
-        if ( ! ( obj instanceof ServerBinaryValue ) )
+        if ( !( obj instanceof ServerBinaryValue ) )
         {
             return false;
         }
 
         ServerBinaryValue other = ( ServerBinaryValue ) obj;
-        
+
         if ( !attributeType.equals( other.attributeType ) )
         {
             return false;
         }
-        
+
         if ( isNull() )
         {
             return other.isNull();
@@ -512,7 +491,7 @@
         {
             try
             {
-                Comparator<byte[]> comparator = getComparator();
+                LdapComparator<? super byte[]> comparator = getLdapComparator();
 
                 // Compare normalized values
                 if ( comparator == null )
@@ -555,7 +534,7 @@
 
         if ( mr == null )
         {
-            mr = attributeType.getSubstr();
+            mr = attributeType.getSubstring();
         }
 
         return mr;
@@ -589,7 +568,7 @@
      * @return a comparator associated with the attributeType or null if one cannot be found
      * @throws NamingException if resolution of schema entities fail
      */
-    private Comparator getComparator() throws NamingException
+    private LdapComparator<? super Object> getLdapComparator() throws NamingException
     {
         MatchingRule mr = getMatchingRule();
 
@@ -598,23 +577,23 @@
             return null;
         }
 
-        return mr.getComparator();
+        return mr.getLdapComparator();
     }
-    
-    
+
+
     /**
      * @return a copy of the current value
      */
     public ServerBinaryValue clone()
     {
-        ServerBinaryValue clone = (ServerBinaryValue)super.clone();
-        
+        ServerBinaryValue clone = ( ServerBinaryValue ) super.clone();
+
         if ( normalizedValue != null )
         {
-            clone.normalizedValue = new byte[ normalizedValue.length ];
+            clone.normalizedValue = new byte[normalizedValue.length];
             System.arraycopy( normalizedValue, 0, clone.normalizedValue, 0, normalizedValue.length );
         }
-        
+
         return clone;
     }
 
@@ -624,13 +603,13 @@
      * 
      * We can't use this method for a ServerBinaryValue, as we have to feed the value
      * with an AttributeType object
-     */ 
+     */
     public void writeExternal( ObjectOutput out ) throws IOException
     {
         throw new IllegalStateException( "Cannot use standard serialization for a ServerStringValue" );
     }
-    
-    
+
+
     /**
      * We will write the value and the normalized value, only
      * if the normalized value is different.
@@ -655,18 +634,18 @@
         {
             // write a the wrapped length
             out.writeInt( wrapped.length );
-            
+
             // Write the data if not empty
             if ( wrapped.length > 0 )
             {
                 // The data
                 out.write( wrapped );
-                
+
                 // Normalize the data
                 try
                 {
                     normalize();
-                    
+
                     if ( !normalized )
                     {
                         // We may not have a normalizer. Just get out
@@ -677,7 +656,7 @@
                     {
                         // Write a flag indicating that the data has been normalized
                         out.writeBoolean( true );
-                        
+
                         if ( Arrays.equals( getReference(), normalizedValue ) )
                         {
                             // Write the 'same = true' flag
@@ -687,10 +666,10 @@
                         {
                             // Write the 'same = false' flag
                             out.writeBoolean( false );
-                            
+
                             // Write the normalized value length
-                            out.write( normalizedValue.length );
-                            
+                            out.writeInt( normalizedValue.length );
+
                             if ( normalizedValue.length > 0 )
                             {
                                 // Write the normalized value if not empty
@@ -715,7 +694,7 @@
         }
     }
 
-    
+
     /**
      * @see Externalizable#readExternal(ObjectInput)
      * 
@@ -726,7 +705,7 @@
     {
         throw new IllegalStateException( "Cannot use standard serialization for a ServerStringValue" );
     }
-    
+
 
     /**
      * 
@@ -740,7 +719,7 @@
     {
         // The UP value length
         int wrappedLength = in.readInt();
-        
+
         if ( wrappedLength == -1 )
         {
             // If the value is null, the length will be set to -1
@@ -749,35 +728,35 @@
         }
         else if ( wrappedLength == 0 )
         {
-             wrapped = StringTools.EMPTY_BYTES;
-             same = true;
-             normalized = true;
-             normalizedValue = wrapped;
+            wrapped = StringTools.EMPTY_BYTES;
+            same = true;
+            normalized = true;
+            normalizedValue = wrapped;
         }
         else
         {
             wrapped = new byte[wrappedLength];
-            
+
             // Read the data
             in.readFully( wrapped );
-            
+
             // Check if we have a normalized value
             normalized = in.readBoolean();
-            
+
             if ( normalized )
             {
                 // Read the 'same' flag
                 same = in.readBoolean();
-                
+
                 if ( !same )
                 {
                     // Read the normalizedvalue length
                     int normalizedLength = in.readInt();
-                
+
                     if ( normalizedLength > 0 )
                     {
                         normalizedValue = new byte[normalizedLength];
-                        
+
                         // Read the normalized value
                         in.read( normalizedValue, 0, normalizedLength );
                     }
@@ -794,4 +773,4 @@
             }
         }
     }
-}
+}

Modified: directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntrySerializer.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntrySerializer.java?rev=896599&r1=896598&r2=896599&view=diff
==============================================================================
--- directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntrySerializer.java (original)
+++ directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntrySerializer.java Wed Jan  6 18:26:43 2010
@@ -25,12 +25,12 @@
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 
-import org.apache.directory.server.schema.registries.Registries;
+import jdbm.helper.Serializer;
+
+import org.apache.directory.shared.ldap.schema.SchemaManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import jdbm.helper.Serializer;
-
 
 /**
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
@@ -48,18 +48,18 @@
      */
     private static final boolean IS_DEBUG = LOG.isDebugEnabled();
 
-    /** The registries reference */
-    private transient Registries registries;
+    /** The schemaManager reference */
+    private transient SchemaManager schemaManager;
 
 
     /**
      * Creates a new instance of ServerEntrySerializer.
      *
-     * @param registries The reference to the global registries
+     * @param schemaManager The reference to the global schemaManager
      */
-    public ServerEntrySerializer( Registries registries )
+    public ServerEntrySerializer( SchemaManager schemaManager )
     {
-        this.registries = registries;
+        this.schemaManager = schemaManager;
     }
 
 
@@ -144,7 +144,7 @@
     {
         ObjectInputStream in = new ObjectInputStream( new ByteArrayInputStream( bytes ) );
 
-        DefaultServerEntry serverEntry = new DefaultServerEntry( registries );
+        DefaultServerEntry serverEntry = new DefaultServerEntry( schemaManager );
         
         try
         {

Modified: directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntryUtils.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntryUtils.java?rev=896599&r1=896598&r2=896599&view=diff
==============================================================================
--- directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntryUtils.java (original)
+++ directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerEntryUtils.java Wed Jan  6 18:26:43 2010
@@ -35,15 +35,15 @@
 import javax.naming.directory.ModificationItem;
 import javax.naming.directory.SearchResult;
 
-import org.apache.directory.server.schema.registries.AttributeTypeRegistry;
-import org.apache.directory.server.schema.registries.Registries;
 import org.apache.directory.shared.ldap.constants.SchemaConstants;
 import org.apache.directory.shared.ldap.entry.EntryAttribute;
 import org.apache.directory.shared.ldap.entry.Modification;
 import org.apache.directory.shared.ldap.entry.ModificationOperation;
 import org.apache.directory.shared.ldap.entry.Value;
+import org.apache.directory.shared.ldap.exception.LdapInvalidAttributeIdentifierException;
 import org.apache.directory.shared.ldap.name.LdapDN;
 import org.apache.directory.shared.ldap.schema.AttributeType;
+import org.apache.directory.shared.ldap.schema.SchemaManager;
 import org.apache.directory.shared.ldap.schema.SchemaUtils;
 import org.apache.directory.shared.ldap.util.EmptyEnumeration;
 import org.apache.directory.shared.ldap.util.StringTools;
@@ -195,14 +195,14 @@
      * 
      * @throws InvalidAttributeIdentifierException If we get an invalid attribute
      */
-    public static ServerEntry toServerEntry( Attributes attributes, LdapDN dn, Registries registries ) 
+    public static ServerEntry toServerEntry( Attributes attributes, LdapDN dn, SchemaManager schemaManager ) 
             throws InvalidAttributeIdentifierException
     {
         if ( attributes instanceof BasicAttributes )
         {
             try 
             {
-                ServerEntry entry = new DefaultServerEntry( registries, dn );
+                ServerEntry entry = new DefaultServerEntry( schemaManager, dn );
     
                 for ( NamingEnumeration<? extends Attribute> attrs = attributes.getAll(); attrs.hasMoreElements(); )
                 {
@@ -212,7 +212,7 @@
                     String id = SchemaUtils.stripOptions( attributeId );
                     Set<String> options = SchemaUtils.getOptions( attributeId );
                     // TODO : handle options.
-                    AttributeType attributeType = registries.getAttributeTypeRegistry().lookup( id );
+                    AttributeType attributeType = schemaManager.lookupAttributeTypeRegistry( id );
                     ServerAttribute serverAttribute = ServerEntryUtils.toServerAttribute( attr, attributeType );
                     
                     if ( serverAttribute != null )
@@ -244,12 +244,12 @@
      * @return the resultant entry after the modification has taken place
      * @throws NamingException if there are problems accessing attributes
      */
-    public static ServerEntry getTargetEntry( Modification mod, ServerEntry entry, Registries registries ) throws NamingException
+    public static ServerEntry getTargetEntry( Modification mod, ServerEntry entry, SchemaManager schemaManager ) throws NamingException
     {
         ServerEntry targetEntry = ( ServerEntry ) entry.clone();
         ModificationOperation modOp = mod.getOperation();
         String id = mod.getAttribute().getId();
-        AttributeType attributeType = registries.getAttributeTypeRegistry().lookup( id );
+        AttributeType attributeType = schemaManager.lookupAttributeTypeRegistry( id );
         
         switch ( modOp )
         {
@@ -397,7 +397,7 @@
      * @throws NamingException
      */
     public static List<Modification> convertToServerModification( List<ModificationItem> modificationItems, 
-        AttributeTypeRegistry atRegistry ) throws NamingException
+        SchemaManager schemaManager ) throws NamingException
     {
         if ( modificationItems != null )
         {
@@ -405,7 +405,7 @@
 
             for ( ModificationItem modificationItem: modificationItems )
             {
-                AttributeType attributeType = atRegistry.lookup( modificationItem.getAttribute().getID() );
+                AttributeType attributeType = schemaManager.lookupAttributeTypeRegistry( modificationItem.getAttribute().getID() );
                 modifications.add( toServerModification( modificationItem, attributeType ) );
             }
         
@@ -442,7 +442,7 @@
 
     
     public static List<Modification> toServerModification( Modification[] modifications, 
-        AttributeTypeRegistry atRegistry ) throws NamingException
+        SchemaManager schemaManager ) throws NamingException
     {
         if ( modifications != null )
         {
@@ -459,25 +459,21 @@
                 // DIRSERVER-646 Fix: Replacing an unknown attribute with no values 
                 // (deletion) causes an error
                 // -------------------------------------------------------------------
-                
-                // TODO - after removing JNDI we need to make the server handle 
-                // this in the codec
-                
-                if ( ! atRegistry.hasAttributeType( id ) 
+                if ( ! schemaManager.getAttributeTypeRegistry().contains( id ) 
                      && modification.getAttribute().size() == 0 
                      && modification.getOperation() == ModificationOperation.REPLACE_ATTRIBUTE )
                 {
-                    continue;
+                    // The attributeType does not exist in the schema.
+                    // It's an error
+                    String message = "The AttributeType '" + id + "' does not exist in the schema";
+                    throw new LdapInvalidAttributeIdentifierException( message );
+                }
+                else
+                {
+                    // TODO : handle options
+                    AttributeType attributeType = schemaManager.lookupAttributeTypeRegistry( id );
+                    modificationsList.add( toServerModification( modification, attributeType ) );
                 }
-
-                // -------------------------------------------------------------------
-                // END DIRSERVER-646 Fix
-                // -------------------------------------------------------------------
-                
-                
-                // TODO : handle options
-                AttributeType attributeType = atRegistry.lookup( id );
-                modificationsList.add( toServerModification( modification, attributeType ) );
             }
         
             return modificationsList;
@@ -490,7 +486,7 @@
 
 
     public static List<Modification> toServerModification( ModificationItem[] modifications, 
-        AttributeTypeRegistry atRegistry ) throws NamingException
+        SchemaManager schemaManager ) throws NamingException
     {
         if ( modifications != null )
         {
@@ -510,7 +506,7 @@
                 // TODO - after removing JNDI we need to make the server handle 
                 // this in the codec
                 
-                if ( ! atRegistry.hasAttributeType( id ) 
+                if ( ! schemaManager.getAttributeTypeRegistry().contains( id ) 
                      && modification.getAttribute().size() == 0 
                      && modification.getModificationOp() == DirContext.REPLACE_ATTRIBUTE )
                 {
@@ -523,7 +519,7 @@
                 
                 
                 // TODO : handle options
-                AttributeType attributeType = atRegistry.lookup( id );
+                AttributeType attributeType = schemaManager.lookupAttributeTypeRegistry( id );
                 modificationsList.add( toServerModification( (ModificationItem)modification, attributeType ) );
             }
         
@@ -616,7 +612,7 @@
                 ServerSearchResult rec = result.next();
                 
                 SearchResult searchResult = new SearchResult( 
-                        rec.getDn().getUpName(), 
+                        rec.getDn().getName(), 
                         rec.getObject(), 
                         toBasicAttributes( rec.getServerEntry() ), 
                         rec.isRelative() );
@@ -644,7 +640,7 @@
                     ServerSearchResult rec = result.next();
     
                     SearchResult searchResult = new SearchResult( 
-                            rec.getDn().getUpName(), 
+                            rec.getDn().getName(), 
                             rec.getObject(), 
                             toBasicAttributes( rec.getServerEntry() ), 
                             rec.isRelative() );

Modified: directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerModification.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerModification.java?rev=896599&r1=896598&r2=896599&view=diff
==============================================================================
--- directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerModification.java (original)
+++ directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerModification.java Wed Jan  6 18:26:43 2010
@@ -24,15 +24,13 @@
 import java.io.ObjectOutput;
 
 import javax.naming.NamingException;
-//import javax.naming.directory.DirContext;
 
-import org.apache.directory.server.schema.registries.AttributeTypeRegistry;
-import org.apache.directory.server.schema.registries.Registries;
 import org.apache.directory.shared.ldap.entry.EntryAttribute;
 import org.apache.directory.shared.ldap.entry.Modification;
 import org.apache.directory.shared.ldap.entry.ModificationOperation;
 import org.apache.directory.shared.ldap.entry.client.ClientModification;
 import org.apache.directory.shared.ldap.schema.AttributeType;
+import org.apache.directory.shared.ldap.schema.SchemaManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -81,7 +79,7 @@
     }
     
     
-    public ServerModification( Registries registries, Modification modification )
+    public ServerModification( SchemaManager schemaManager, Modification modification )
     {
         operation = modification.getOperation();
         
@@ -97,7 +95,7 @@
             }
             else
             {
-                at = registries.getAttributeTypeRegistry().lookup( modAttribute.getId() );
+                at = schemaManager.lookupAttributeTypeRegistry( modAttribute.getId() );
             }
             
             attribute = new DefaultServerAttribute( at, modAttribute );
@@ -278,7 +276,7 @@
      * @throws ClassNotFoundException if we weren't able to construct a Modification instance
      * @throws NamingException If we didn't found the AttributeType in the registries
      */
-    public void deserialize( ObjectInput in, AttributeTypeRegistry atRegistry ) throws IOException, ClassNotFoundException, NamingException
+    public void deserialize( ObjectInput in, SchemaManager schemaManager ) throws IOException, ClassNotFoundException, NamingException
     {
         // Read the operation
         int op = in.readInt();
@@ -289,7 +287,7 @@
         String oid = in.readUTF();
         
         // Lookup for tha associated AttributeType
-        AttributeType attributeType = atRegistry.lookup( oid );
+        AttributeType attributeType = schemaManager.lookupAttributeTypeRegistry( oid );
         
         attribute = new DefaultServerAttribute( attributeType );
         

Modified: directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerSearchResult.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerSearchResult.java?rev=896599&r1=896598&r2=896599&view=diff
==============================================================================
--- directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerSearchResult.java (original)
+++ directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerSearchResult.java Wed Jan  6 18:26:43 2010
@@ -131,7 +131,7 @@
      */
     public String toString()
     {
-        String name = (dn == null ? "null" : ( dn == LdapDN.EMPTY_LDAPDN ? "\"\"" : dn.getUpName() ) );
+        String name = (dn == null ? "null" : ( dn == LdapDN.EMPTY_LDAPDN ? "\"\"" : dn.getName() ) );
         return "ServerSearchResult : " + name + "\n" + serverEntry;
     }
 }

Modified: directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerStringValue.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerStringValue.java?rev=896599&r1=896598&r2=896599&view=diff
==============================================================================
--- directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerStringValue.java (original)
+++ directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/ServerStringValue.java Wed Jan  6 18:26:43 2010
@@ -23,7 +23,6 @@
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
-import java.util.Comparator;
 
 import javax.naming.NamingException;
 
@@ -31,6 +30,7 @@
 import org.apache.directory.shared.ldap.entry.Value;
 import org.apache.directory.shared.ldap.entry.client.ClientStringValue;
 import org.apache.directory.shared.ldap.schema.AttributeType;
+import org.apache.directory.shared.ldap.schema.LdapComparator;
 import org.apache.directory.shared.ldap.schema.MatchingRule;
 import org.apache.directory.shared.ldap.schema.Normalizer;
 import org.slf4j.Logger;
@@ -77,24 +77,17 @@
      */
     protected String checkAttributeType( AttributeType attributeType )
     {
-        try
+        if ( attributeType == null )
         {
-            if ( attributeType == null )
-            {
-                return "The AttributeType parameter should not be null";
-            }
-            
-            if ( attributeType.getSyntax() == null )
-            {
-                return "There is no Syntax associated with this attributeType";
-            }
-
-            return null;
+            return "The AttributeType parameter should not be null";
         }
-        catch ( NamingException ne )
+        
+        if ( attributeType.getSyntax() == null )
         {
-            return "This AttributeType is incorrect";
+            return "There is no Syntax associated with this attributeType";
         }
+
+        return null;
     }
 
     
@@ -115,22 +108,15 @@
             throw new IllegalArgumentException( "The AttributeType parameter should not be null" );
         }
 
-        try
+        if ( attributeType.getSyntax() == null )
         {
-            if ( attributeType.getSyntax() == null )
-            {
-                throw new IllegalArgumentException( "There is no Syntax associated with this attributeType" );
-            }
-
-            if ( ! attributeType.getSyntax().isHumanReadable() )
-            {
-                LOG.warn( "Treating a value of a binary attribute {} as a String: " +
-                        "\nthis could cause data corruption!", attributeType.getName() );
-            }
+            throw new IllegalArgumentException( "There is no Syntax associated with this attributeType" );
         }
-        catch( NamingException e )
+
+        if ( ! attributeType.getSyntax().isHumanReadable() )
         {
-            LOG.error( "Failed to resolve syntax for attributeType {}", attributeType, e );
+            LOG.warn( "Treating a value of a binary attribute {} as a String: " +
+                    "\nthis could cause data corruption!", attributeType.getName() );
         }
 
         this.attributeType = attributeType;
@@ -269,16 +255,7 @@
             return valid;
         }
 
-        try
-        {
-            valid = attributeType.getSyntax().getSyntaxChecker().isValidSyntax( get() );
-        }
-        catch ( NamingException ne )
-        {
-            String message = "Cannot check the syntax : " + ne.getMessage();
-            LOG.error( message );
-            valid = false;
-        }
+        valid = attributeType.getSyntax().getSyntaxChecker().isValidSyntax( get() );
         
         return valid;
     }
@@ -336,7 +313,7 @@
             try
             {
                 //noinspection unchecked
-                return getComparator().compare( getNormalizedValue(), stringValue.getNormalizedValue() );
+                return getLdapComparator().compare( getNormalizedValue(), stringValue.getNormalizedValue() );
             }
             catch ( NamingException e )
             {
@@ -436,7 +413,7 @@
         {
             try
             {
-                Comparator<String> comparator = getComparator();
+                LdapComparator<? super Object> comparator = getLdapComparator();
 
                 // Compare normalized values
                 if ( comparator == null )
@@ -445,7 +422,15 @@
                 }
                 else
                 {
-                    return comparator.compare( getNormalizedValue(), other.getNormalizedValue() ) == 0;
+                    if ( isNormalized() )
+                    {
+                        return comparator.compare( getNormalizedValue(), other.getNormalizedValue() ) == 0;
+                    }
+                    else
+                    {
+                        Normalizer normalizer = attributeType.getEquality().getNormalizer();
+                        return comparator.compare( normalizer.normalize( get() ), normalizer.normalize( other.get() ) ) == 0;
+                    }
                 }
             }
             catch ( NamingException ne )
@@ -481,7 +466,7 @@
 
         if ( mr == null )
         {
-            mr = attributeType.getSubstr();
+            mr = attributeType.getSubstring();
         }
 
         return mr;
@@ -549,7 +534,7 @@
      * @return a comparator associated with the attributeType or null if one cannot be found
      * @throws NamingException if resolution of schema entities fail
      */
-    private Comparator getComparator() throws NamingException
+    private LdapComparator<? super Object> getLdapComparator() throws NamingException
     {
         MatchingRule mr = getMatchingRule();
 
@@ -558,7 +543,7 @@
             return null;
         }
 
-        return mr.getComparator();
+        return mr.getLdapComparator();
     }
     
     

Modified: directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/TestServerEntryUtils.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/TestServerEntryUtils.java?rev=896599&r1=896598&r2=896599&view=diff
==============================================================================
--- directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/TestServerEntryUtils.java (original)
+++ directory/apacheds/trunk/core-entry/src/main/java/org/apache/directory/server/core/entry/TestServerEntryUtils.java Wed Jan  6 18:26:43 2010
@@ -19,21 +19,16 @@
  */
 package org.apache.directory.server.core.entry;
 
-import java.util.Comparator;
-
 import javax.naming.NamingException;
-import javax.naming.directory.InvalidAttributeValueException;
 
 import org.apache.directory.shared.ldap.entry.Value;
 import org.apache.directory.shared.ldap.entry.client.ClientBinaryValue;
 import org.apache.directory.shared.ldap.entry.client.ClientStringValue;
-import org.apache.directory.shared.ldap.schema.AbstractAttributeType;
-import org.apache.directory.shared.ldap.schema.AbstractMatchingRule;
-import org.apache.directory.shared.ldap.schema.AbstractSyntax;
 import org.apache.directory.shared.ldap.schema.AttributeType;
+import org.apache.directory.shared.ldap.schema.LdapComparator;
+import org.apache.directory.shared.ldap.schema.LdapSyntax;
 import org.apache.directory.shared.ldap.schema.MatchingRule;
 import org.apache.directory.shared.ldap.schema.Normalizer;
-import org.apache.directory.shared.ldap.schema.Syntax;
 import org.apache.directory.shared.ldap.schema.SyntaxChecker;
 import org.apache.directory.shared.ldap.schema.comparators.ByteArrayComparator;
 import org.apache.directory.shared.ldap.schema.normalizers.DeepTrimToLowerNormalizer;
@@ -50,165 +45,66 @@
     /**
      * A local Syntax class for tests
      */
-    static class AT extends AbstractAttributeType
+    static class AT extends AttributeType
     {
         private static final long serialVersionUID = 0L;
-        AttributeType superior;
-        Syntax syntax;
-        MatchingRule equality;
-        MatchingRule ordering;
-        MatchingRule substr;
 
         protected AT( String oid )
         {
             super( oid );
         }
-
-        public AttributeType getSuperior() throws NamingException
-        {
-            return superior;
-        }
-
-
-        public Syntax getSyntax() throws NamingException
-        {
-            return syntax;
-        }
-
-
-        public MatchingRule getEquality() throws NamingException
-        {
-            return equality;
-        }
-
-
-        public MatchingRule getOrdering() throws NamingException
-        {
-            return ordering;
-        }
-
-
-        public MatchingRule getSubstr() throws NamingException
-        {
-            return substr;
-        }
-
-
-        public void setSuperior( AttributeType superior )
-        {
-            this.superior = superior;
-        }
-
-
-        public void setSyntax( Syntax syntax )
-        {
-            this.syntax = syntax;
-        }
-
-
-        public void setEquality( MatchingRule equality )
-        {
-            this.equality = equality;
-        }
-
-
-        public void setOrdering( MatchingRule ordering )
-        {
-            this.ordering = ordering;
-        }
-
-
-        public void setSubstr( MatchingRule substr )
-        {
-            this.substr = substr;
-        }
     }
 
+    public static MatchingRule matchingRuleFactory( String oid )
+    {
+        MatchingRule matchingRule = new MatchingRule( oid );
+        
+        return matchingRule;
+    }
     /**
      * A local MatchingRule class for tests
      */
-    static class MR extends AbstractMatchingRule
+    static class MR extends MatchingRule
     {
         private static final long serialVersionUID = 0L;
-        Syntax syntax;
-        Comparator comparator;
-        Normalizer normalizer;
 
         protected MR( String oid )
         {
             super( oid );
         }
-
-        public Syntax getSyntax() throws NamingException
-        {
-            return syntax;
-        }
-
-        public Comparator getComparator() throws NamingException
-        {
-            return comparator;
-        }
-
-
-        public Normalizer getNormalizer() throws NamingException
-        {
-            return normalizer;
-        }
-
-
-        public void setSyntax( Syntax syntax )
-        {
-            this.syntax = syntax;
-        }
-
-
-        public void setComparator( Comparator<?> comparator )
-        {
-            this.comparator = comparator;
-        }
-
-
-        public void setNormalizer( Normalizer normalizer )
-        {
-            this.normalizer = normalizer;
-        }
     }
 
 
     /**
      * A local Syntax class used for the tests
      */
-    static class S extends AbstractSyntax
+    public static LdapSyntax syntaxFactory( String oid, boolean humanReadable )
+    {
+        LdapSyntax ldapSyntax = new LdapSyntax( oid );
+        
+        ldapSyntax.setHumanReadable( humanReadable );
+        
+        return ldapSyntax;
+    }
+    static class S extends LdapSyntax
     {
         private static final long serialVersionUID = 0L;
-        SyntaxChecker checker;
 
         public S( String oid, boolean humanReadible )
         {
-            super( oid, humanReadible );
-        }
-
-        public void setSyntaxChecker( SyntaxChecker checker )
-        {
-            this.checker = checker;
-        }
-
-        public SyntaxChecker getSyntaxChecker() throws NamingException
-        {
-            return checker;
+            super( oid, "", humanReadible );
         }
     }
 
     /* no protection*/ static AttributeType getCaseIgnoringAttributeNoNumbersType()
     {
-        S s = new S( "1.1.1.1", true );
+        AttributeType attributeType = new AttributeType( "1.1.3.1" );
+        LdapSyntax syntax = new LdapSyntax( "1.1.1.1", "", true );
 
-        s.setSyntaxChecker( new SyntaxChecker()
+        syntax.setSyntaxChecker( new SyntaxChecker( "1.1.2.1" )
         {
-            public String getSyntaxOid()
-            {
-                return "1.1.1.1";
-            }
+            private static final long serialVersionUID = 0L;
+
             public boolean isValidSyntax( Object value )
             {
                 if ( !( value instanceof String ) )
@@ -227,20 +123,16 @@
                 }
                 return true;
             }
-
-            public void assertSyntax( Object value ) throws NamingException
-            {
-                if ( ! isValidSyntax( value ) )
-                {
-                    throw new InvalidAttributeValueException();
-                }
-            }
         } );
+        
+        MatchingRule matchingRule = new MatchingRule( "1.1.2.1" );
+        matchingRule.setSyntax( syntax );
+
 
-        final MR mr = new MR( "1.1.2.1" );
-        mr.syntax = s;
-        mr.comparator = new Comparator<String>()
+        matchingRule.setLdapComparator( new LdapComparator<String>( matchingRule.getOid() )
         {
+            private static final long serialVersionUID = 0L;
+
             public int compare( String o1, String o2 )
             {
                 return ( o1 == null ? 
@@ -265,12 +157,11 @@
                 
                 throw new IllegalArgumentException( "Not a valid value" );
             }
-        };
+        } );
         
-        mr.normalizer = new Normalizer()
+        Normalizer normalizer = new Normalizer( "1.1.1" )
         {
-            // The serial UID
-            private static final long serialVersionUID = 1L;
+            private static final long serialVersionUID = 0L;
 
             public Value<?> normalize( Value<?> value ) throws NamingException
             {
@@ -289,98 +180,77 @@
             }
         };
         
-        AT at = new AT( "1.1.3.1" );
-        at.setEquality( mr );
-        at.setSyntax( s );
-        return at;
+        matchingRule.setNormalizer( normalizer );
+        
+        attributeType.setEquality( matchingRule );
+        attributeType.setSyntax( syntax );
+        
+        return attributeType;
     }
 
 
     /* no protection*/ static AttributeType getIA5StringAttributeType()
     {
-        AT at = new AT( "1.1" );
-
-        S s = new S( "1.1.1", true );
+        AttributeType attributeType = new AttributeType( "1.1" );
+        attributeType.addName( "1.1" );
+        LdapSyntax syntax = new LdapSyntax( "1.1.1", "", true );
 
-        s.setSyntaxChecker( new SyntaxChecker()
+        syntax.setSyntaxChecker( new SyntaxChecker( "1.1.2" )
         {
-            public String getSyntaxOid()
-            {
-                return "1.1.1";
-            }
+            private static final long serialVersionUID = 0L;
+
             public boolean isValidSyntax( Object value )
             {
                 return ((String)value == null) || (((String)value).length() < 7) ;
             }
-
-            public void assertSyntax( Object value ) throws NamingException
-            {
-                if ( ! isValidSyntax( value ) )
-                {
-                    throw new InvalidAttributeValueException();
-                }
-            }
         } );
+        
+        MatchingRule matchingRule = new MatchingRule( "1.1.2" );
+        matchingRule.setSyntax( syntax );
+
 
-        final MR mr = new MR( "1.1.2" );
-        mr.syntax = s;
-        mr.comparator = new Comparator<String>()
+        matchingRule.setLdapComparator( new LdapComparator<String>( matchingRule.getOid() )
         {
+            private static final long serialVersionUID = 0L;
+
             public int compare( String o1, String o2 )
             {
                 return ( ( o1 == null ) ? 
                     ( o2 == null ? 0 : -1 ) :
                     ( o2 == null ? 1 : o1.compareTo( o2 ) ) );
             }
-        };
+        } );
+        
+        matchingRule.setNormalizer( new DeepTrimToLowerNormalizer( matchingRule.getOid() ) );
         
-        mr.normalizer = new DeepTrimToLowerNormalizer();
+        attributeType.setEquality( matchingRule );
+        attributeType.setSyntax( syntax );
         
-        at.setEquality( mr );
-        at.setSyntax( s );
-        return at;
+        return attributeType;
     }
 
 
     /* No protection */ static AttributeType getBytesAttributeType()
     {
-        AT at = new AT( "1.2" );
+        AttributeType attributeType = new AttributeType( "1.2" );
+        LdapSyntax syntax = new LdapSyntax( "1.2.1", "", true );
 
-        S s = new S( "1.2.1", true );
-
-        s.setSyntaxChecker( new SyntaxChecker()
+        syntax.setSyntaxChecker( new SyntaxChecker( "1.2.1" )
         {
-            public String getSyntaxOid()
-            {
-                return "1.2.1";
-            }
+            private static final long serialVersionUID = 0L;
+
             public boolean isValidSyntax( Object value )
             {
                 return ( value == null ) || ( ((byte[])value).length < 5 );
             }
-
-            public void assertSyntax( Object value ) throws NamingException
-            {
-                if ( ! isValidSyntax( value ) )
-                {
-                    throw new InvalidAttributeValueException();
-                }
-            }
         } );
 
-        final MR mr = new MR( "1.2.2" );
-        mr.syntax = s;
-        mr.comparator = new Comparator<byte[]>()
-        {
-            public int compare( byte[] o1, byte[] o2 )
-            {
-                return ( ( o1 == null ) ? 
-                    ( o2 == null ? 0 : -1 ) :
-                    ( o2 == null ? 1 : ByteArrayComparator.INSTANCE.compare( o1, o2 ) ) );
-            }
-        };
+        MatchingRule matchingRule = new MatchingRule( "1.2.2" );
+        matchingRule.setSyntax( syntax );
+
+        matchingRule.setLdapComparator( new ByteArrayComparator( "1.2.2" ) );
         
-        mr.normalizer = new Normalizer()
+        matchingRule.setNormalizer( new Normalizer( "1.1.1" )
         {
             // The serial UID
             private static final long serialVersionUID = 1L;
@@ -411,10 +281,11 @@
             {
                 throw new IllegalStateException( "expected byte[] to normalize" );
             }
-        };
+        } );
         
-        at.setEquality( mr );
-        at.setSyntax( s );
-        return at;
+        attributeType.setEquality( matchingRule );
+        attributeType.setSyntax( syntax );
+
+        return attributeType;
     }
 }

Modified: directory/apacheds/trunk/core-entry/src/test/java/org/apache/directory/server/core/entry/DefaultServerAttributeTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-entry/src/test/java/org/apache/directory/server/core/entry/DefaultServerAttributeTest.java?rev=896599&r1=896598&r2=896599&view=diff
==============================================================================
--- directory/apacheds/trunk/core-entry/src/test/java/org/apache/directory/server/core/entry/DefaultServerAttributeTest.java (original)
+++ directory/apacheds/trunk/core-entry/src/test/java/org/apache/directory/server/core/entry/DefaultServerAttributeTest.java Wed Jan  6 18:26:43 2010
@@ -19,16 +19,17 @@
 package org.apache.directory.server.core.entry;
 
 
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.File;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -42,18 +43,7 @@
 import javax.naming.NamingException;
 import javax.naming.directory.InvalidAttributeValueException;
 
-import org.apache.directory.server.schema.bootstrap.ApacheSchema;
-import org.apache.directory.server.schema.bootstrap.ApachemetaSchema;
-import org.apache.directory.server.schema.bootstrap.BootstrapSchemaLoader;
-import org.apache.directory.server.schema.bootstrap.CoreSchema;
-import org.apache.directory.server.schema.bootstrap.CosineSchema;
-import org.apache.directory.server.schema.bootstrap.InetorgpersonSchema;
-import org.apache.directory.server.schema.bootstrap.Schema;
-import org.apache.directory.server.schema.bootstrap.SystemSchema;
-import org.apache.directory.server.schema.registries.DefaultOidRegistry;
-import org.apache.directory.server.schema.registries.DefaultRegistries;
-import org.apache.directory.server.schema.registries.OidRegistry;
-import org.apache.directory.server.schema.registries.Registries;
+import org.apache.commons.io.FileUtils;
 import org.apache.directory.shared.ldap.entry.EntryAttribute;
 import org.apache.directory.shared.ldap.entry.Value;
 import org.apache.directory.shared.ldap.entry.client.ClientAttribute;
@@ -61,8 +51,13 @@
 import org.apache.directory.shared.ldap.entry.client.ClientStringValue;
 import org.apache.directory.shared.ldap.entry.client.DefaultClientAttribute;
 import org.apache.directory.shared.ldap.schema.AttributeType;
+import org.apache.directory.shared.ldap.schema.SchemaManager;
+import org.apache.directory.shared.ldap.schema.ldif.extractor.SchemaLdifExtractor;
+import org.apache.directory.shared.ldap.schema.ldif.extractor.impl.DefaultSchemaLdifExtractor;
+import org.apache.directory.shared.ldap.schema.loader.ldif.LdifSchemaLoader;
+import org.apache.directory.shared.ldap.schema.manager.impl.DefaultSchemaManager;
+import org.apache.directory.shared.ldap.util.ExceptionUtils;
 import org.apache.directory.shared.ldap.util.StringTools;
-
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -75,9 +70,7 @@
  */
 public class DefaultServerAttributeTest
 {
-    private static BootstrapSchemaLoader loader;
-    private static Registries registries;
-    private static OidRegistry oidRegistry;
+    private static LdifSchemaLoader loader;
     
     private static AttributeType atCN;
     private static AttributeType atSN;
@@ -105,30 +98,46 @@
     private static final ClientBinaryValue BIN_VALUE3 = new ClientBinaryValue( BYTES3 );
     private static final ClientBinaryValue BIN_VALUE4 = new ClientBinaryValue( BYTES4 );
 
+        
     /**
      * Initialize the registries once for the whole test suite
      */
     @BeforeClass
     public static void setup() throws Exception
     {
-        loader = new BootstrapSchemaLoader();
-        oidRegistry = new DefaultOidRegistry();
-        registries = new DefaultRegistries( "bootstrap", loader, oidRegistry );
-        
-        // load essential bootstrap schemas 
-        Set<Schema> bootstrapSchemas = new HashSet<Schema>();
-        bootstrapSchemas.add( new ApachemetaSchema() );
-        bootstrapSchemas.add( new ApacheSchema() );
-        bootstrapSchemas.add( new CoreSchema() );
-        bootstrapSchemas.add( new SystemSchema() );
-        bootstrapSchemas.add( new InetorgpersonSchema() );
-        bootstrapSchemas.add( new CosineSchema() );
-        loader.loadWithDependencies( bootstrapSchemas, registries );
-        
-        atCN = registries.getAttributeTypeRegistry().lookup( "cn" );
-        atC = registries.getAttributeTypeRegistry().lookup( "c" );
-        atSN = registries.getAttributeTypeRegistry().lookup( "sn" );
-        atPwd = registries.getAttributeTypeRegistry().lookup( "userpassword" );
+    	String workingDirectory = System.getProperty( "workingDirectory" );
+    	
+    	if ( workingDirectory == null )
+    	{
+    	    String path = DefaultServerAttributeTest.class.getResource( "" ).getPath();
+    	    int targetPos = path.indexOf( "target" );
+            workingDirectory = path.substring( 0, targetPos + 6 );
+    	}
+    	
+        // Cleanup the target directory
+        File schemaRepository = new File( workingDirectory, "schema" );
+        FileUtils.deleteDirectory( schemaRepository );
+    	
+        SchemaLdifExtractor extractor = new DefaultSchemaLdifExtractor( new File( workingDirectory ) );
+        extractor.extractOrCopy( true );
+    	loader = new LdifSchemaLoader( schemaRepository );
+        SchemaManager schemaManager = new DefaultSchemaManager( loader );
+
+        schemaManager.loadAllEnabled();
+        
+        List<Throwable> errors = schemaManager.getErrors();
+        
+        if ( errors.size() != 0 )
+        {
+            // We have inconsistencies : log them and exit.
+            throw new RuntimeException( "Inconsistent schemas : " + 
+                ExceptionUtils.printErrors( errors ) );
+        }
+        
+        atCN = schemaManager.lookupAttributeTypeRegistry( "cn" );
+        atC = schemaManager.lookupAttributeTypeRegistry( "c" );
+        atSN = schemaManager.lookupAttributeTypeRegistry( "sn" );
+        atPwd = schemaManager.lookupAttributeTypeRegistry( "userpassword" );
     }
 
     /**
@@ -573,8 +582,8 @@
     {
         ServerAttribute attr = new DefaultServerAttribute( atCN );
         
-        // No value, this should be valid
-        assertTrue( attr.isValid() );
+        // No value, this should not be valid
+        assertFalse( attr.isValid() );
         
         attr.add( "test", "test2", "A123\\;" );
         assertTrue( attr.isValid() );
@@ -2097,7 +2106,7 @@
         assertEquals( "cn", dsaSer.getUpId() );
         assertEquals( 0, dsaSer.size() );
         assertTrue( dsaSer.isHR() );
-        assertTrue( dsaSer.isValid() );
+        assertFalse( dsaSer.isValid() );
     }
     
     



Mime
View raw message