You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2015/09/17 12:34:06 UTC

svn commit: r1703557 - in /directory/shared/trunk/ldap: client/api/src/main/java/org/apache/directory/ldap/client/api/ model/src/main/java/org/apache/directory/api/ldap/model/schema/ model/src/main/java/org/apache/directory/api/ldap/model/schema/regist...

Author: elecharny
Date: Thu Sep 17 10:34:04 2015
New Revision: 1703557

URL: http://svn.apache.org/r1703557
Log:
o Hidden the quirksMode, which is now included into the relaxed mode
o Added some method in LdapConnection that allow users to load a schema in relaxed mode : loadSchemaRelaxed()
o Added the STRICT and RELAXED flags in the SchemaManager, instead of the DefaultSchemaManager
o Added the isRelaxed(), isStrict() and setRelaxed( boolean ) methods in the SchemaLoader interface, implementing those methods in the classes implementing this interface

Modified:
    directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/DefaultSchemaLoader.java
    directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnection.java
    directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionConfig.java
    directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionWrapper.java
    directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java
    directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/SchemaManager.java
    directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/registries/AbstractSchemaLoader.java
    directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/registries/SchemaLoader.java
    directory/shared/trunk/ldap/schema/data/src/main/java/org/apache/directory/api/ldap/schema/manager/impl/DefaultSchemaManager.java

Modified: directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/DefaultSchemaLoader.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/DefaultSchemaLoader.java?rev=1703557&r1=1703556&r2=1703557&view=diff
==============================================================================
--- directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/DefaultSchemaLoader.java (original)
+++ directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/DefaultSchemaLoader.java Thu Sep 17 10:34:04 2015
@@ -121,11 +121,11 @@ public class DefaultSchemaLoader extends
      * Creates a new instance of DefaultSchemaLoader.
      *
      * @param connection the LDAP connection
-     * @param initial setting for the quirks mode
+     * @param initial setting for the relaxed mode
      * @throws Exception if the connection is not authenticated or if there are any problems
      *                   while loading the schema entries
      */
-    public DefaultSchemaLoader( LdapConnection connection, boolean quirksMode ) throws LdapException
+    public DefaultSchemaLoader( LdapConnection connection, boolean relaxed ) throws LdapException
     {
         if ( connection == null )
         {
@@ -133,7 +133,8 @@ public class DefaultSchemaLoader extends
         }
 
         this.connection = connection;
-        setQuirksMode( quirksMode );
+        setRelaxed( relaxed );
+        setQuirksMode( relaxed );
 
         // Flagging if the connection was already connected
         boolean wasConnected = connection.isConnected();

Modified: directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnection.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnection.java?rev=1703557&r1=1703556&r2=1703557&view=diff
==============================================================================
--- directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnection.java (original)
+++ directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnection.java Thu Sep 17 10:34:04 2015
@@ -792,6 +792,16 @@ public interface LdapConnection extends
 
 
     /**
+     * Loads all the default schemas that are bundled with the API, in a relaxed mode.<br><br>
+     * <b>Note:</b> This method enables <b>all</b> schemas prior to loading.<br/>
+     * The relaxed mode will allow inconsistencies in the schema.
+     * 
+     * @throws LdapException in case of problems while loading the schema
+     */
+    void loadSchemaRelaxed() throws LdapException;
+
+
+    /**
      * @return The SchemaManager associated with this LdapConection if any
      */
     SchemaManager getSchemaManager();

Modified: directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionConfig.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionConfig.java?rev=1703557&r1=1703556&r2=1703557&view=diff
==============================================================================
--- directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionConfig.java (original)
+++ directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionConfig.java Thu Sep 17 10:34:04 2015
@@ -21,6 +21,7 @@
 package org.apache.directory.ldap.client.api;
 
 
+import java.net.InetAddress;
 import java.security.KeyStore;
 import java.security.KeyStoreException;
 import java.security.NoSuchAlgorithmException;
@@ -54,7 +55,19 @@ public class LdapConnectionConfig
     public static final int DEFAULT_LDAPS_PORT = 636;
 
     /** The default host : localhost */
-    public static final String DEFAULT_LDAP_HOST = "127.0.0.1";
+    public static String DEFAULT_LDAP_HOST;
+    
+    static
+    {
+        try
+        {
+            DEFAULT_LDAP_HOST = InetAddress.getLocalHost().getHostName();//"127.0.0.1";
+        }
+        catch ( Exception e )
+        {
+            
+        }
+    }
 
     /** The LDAP version */
     public static final int LDAP_V3 = 3;

Modified: directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionWrapper.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionWrapper.java?rev=1703557&r1=1703556&r2=1703557&view=diff
==============================================================================
--- directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionWrapper.java (original)
+++ directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapConnectionWrapper.java Thu Sep 17 10:34:04 2015
@@ -566,4 +566,14 @@ public class LdapConnectionWrapper imple
     {
         connection.setSchemaManager( schemaManager );
     }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void loadSchemaRelaxed() throws LdapException
+    {
+        connection.loadSchemaRelaxed();
+    }
 }
\ No newline at end of file

Modified: directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java?rev=1703557&r1=1703556&r2=1703557&view=diff
==============================================================================
--- directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java (original)
+++ directory/shared/trunk/ldap/client/api/src/main/java/org/apache/directory/ldap/client/api/LdapNetworkConnection.java Thu Sep 17 10:34:04 2015
@@ -3506,6 +3506,15 @@ public class LdapNetworkConnection exten
 
 
     /**
+     * {@inheritDoc}
+     */
+    public void loadSchemaRelaxed() throws LdapException
+    {
+        loadSchema( new DefaultSchemaLoader( this, true ) );
+    }
+
+
+    /**
      * loads schema using the specified schema loader
      *
      * @param loader the {@link SchemaLoader} to be used to load schema
@@ -3519,7 +3528,7 @@ public class LdapNetworkConnection exten
 
             tmp.loadAllEnabled();
 
-            if ( !tmp.getErrors().isEmpty() )
+            if ( !tmp.getErrors().isEmpty() && loader.isStrict() )
             {
                 String msg = "there are errors while loading the schema";
                 LOG.error( msg + " {}", tmp.getErrors() );

Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/SchemaManager.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/SchemaManager.java?rev=1703557&r1=1703556&r2=1703557&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/SchemaManager.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/SchemaManager.java Thu Sep 17 10:34:04 2015
@@ -52,6 +52,12 @@ import org.apache.directory.api.ldap.mod
  */
 public interface SchemaManager
 {
+    /** Two flags for RELAXED and STRICT, this is STRICT */
+    boolean STRICT = false;
+
+    /** Two flags for RELAXED and STRICT, this is RELAXED */
+    boolean RELAXED = true;
+
     //---------------------------------------------------------------------------------
     // Schema loading methods
     //---------------------------------------------------------------------------------

Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/registries/AbstractSchemaLoader.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/registries/AbstractSchemaLoader.java?rev=1703557&r1=1703556&r2=1703557&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/registries/AbstractSchemaLoader.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/registries/AbstractSchemaLoader.java Thu Sep 17 10:34:04 2015
@@ -34,6 +34,7 @@ import org.apache.directory.api.ldap.mod
 import org.apache.directory.api.ldap.model.entry.Attribute;
 import org.apache.directory.api.ldap.model.entry.Entry;
 import org.apache.directory.api.ldap.model.entry.Value;
+import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.util.StringConstants;
 import org.apache.directory.api.util.Strings;
 
@@ -51,6 +52,9 @@ public abstract class AbstractSchemaLoad
      * the LDIF based schema repository.
      */
     protected final Map<String, Schema> schemaMap = new LowerCaseKeyMap();
+    
+    /** The flag that tells about the SchemaLoader mode : relaxed or strict */
+    private boolean relaxed;
 
     /**
      * a map implementation which converts the keys to lower case before inserting
@@ -111,7 +115,7 @@ public abstract class AbstractSchemaLoad
      */
     public Schema getSchema( String schemaName )
     {
-        return schemaMap.get( Strings.toLowerCase( schemaName ) );
+        return schemaMap.get( Strings.toLowerCaseAscii( schemaName ) );
     }
 
 
@@ -129,7 +133,7 @@ public abstract class AbstractSchemaLoad
      */
     public void removeSchema( Schema schema )
     {
-        schemaMap.remove( Strings.toLowerCase( schema.getSchemaName() ) );
+        schemaMap.remove( Strings.toLowerCaseAscii( schema.getSchemaName() ) );
     }
 
 
@@ -377,4 +381,31 @@ public abstract class AbstractSchemaLoad
 
         return loadSyntaxCheckers( buildSchemaArray( schemaNames ) );
     }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isRelaxed()
+    {
+        return SchemaManager.RELAXED;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isStrict()
+    {
+        return relaxed == SchemaManager.STRICT;
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    public void setRelaxed( boolean relaxed )
+    {
+        this.relaxed = relaxed;
+    }
 }

Modified: directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/registries/SchemaLoader.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/registries/SchemaLoader.java?rev=1703557&r1=1703556&r2=1703557&view=diff
==============================================================================
--- directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/registries/SchemaLoader.java (original)
+++ directory/shared/trunk/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/registries/SchemaLoader.java Thu Sep 17 10:34:04 2015
@@ -286,6 +286,29 @@ public interface SchemaLoader
 
     /**
      * Remove a schema from the schema's list
+     * 
+     * @param schema The schema to remove
      */
     void removeSchema( Schema schema );
+    
+    
+    /**
+     * @return Tells if the SchemaLoader is in RELAXED mode
+     */
+    boolean isRelaxed();
+    
+    
+    /**
+     * @return Tells if the SchemaLoader is in STRICT mode
+     */
+    boolean isStrict();
+    
+    
+    /**
+     * Set the SchemzLoader in STRICT or RELAXED mode.
+     * 
+     * @param relaxed if <code>true</code>, the SchemaLoader will be in relaxed mode, otherwise
+     * it will be in strict mode (the default)
+     */
+    void setRelaxed( boolean relaxed );
 }

Modified: directory/shared/trunk/ldap/schema/data/src/main/java/org/apache/directory/api/ldap/schema/manager/impl/DefaultSchemaManager.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/schema/data/src/main/java/org/apache/directory/api/ldap/schema/manager/impl/DefaultSchemaManager.java?rev=1703557&r1=1703556&r2=1703557&view=diff
==============================================================================
--- directory/shared/trunk/ldap/schema/data/src/main/java/org/apache/directory/api/ldap/schema/manager/impl/DefaultSchemaManager.java (original)
+++ directory/shared/trunk/ldap/schema/data/src/main/java/org/apache/directory/api/ldap/schema/manager/impl/DefaultSchemaManager.java Thu Sep 17 10:34:04 2015
@@ -117,13 +117,6 @@ public class DefaultSchemaManager implem
     /** A flag indicating that the SchemaManager is relaxed or not */
     private boolean isRelaxed = STRICT;
 
-    /** Two flags for RELAXED and STRICT, this is STRICT */
-    public static final boolean STRICT = false;
-
-    /** Two flags for RELAXED and STRICT, this is RELAXED */
-    public static final boolean RELAXED = true;
-
-
     /**
      * Creates a new instance of DefaultSchemaManager with the default schema schemaLoader
      *
@@ -155,7 +148,7 @@ public class DefaultSchemaManager implem
         errors = new ArrayList<Throwable>();
         registries = new Registries();
         factory = new SchemaEntityFactory();
-        isRelaxed = STRICT;
+        isRelaxed = loader.isRelaxed();
     }
 
 
@@ -173,7 +166,7 @@ public class DefaultSchemaManager implem
         errors = new ArrayList<Throwable>();
         registries = new Registries();
         factory = new SchemaEntityFactory();
-        isRelaxed = STRICT;
+        isRelaxed = loader.isRelaxed();
     }
 
 
@@ -270,7 +263,7 @@ public class DefaultSchemaManager implem
     private void deleteSchemaObjects( Schema schema, Registries registries ) throws LdapException
     {
         Map<String, Set<SchemaObjectWrapper>> schemaObjects = registries.getObjectBySchemaName();
-        Set<SchemaObjectWrapper> content = schemaObjects.get( Strings.toLowerCase( schema.getSchemaName() ) );
+        Set<SchemaObjectWrapper> content = schemaObjects.get( Strings.toLowerCaseAscii( schema.getSchemaName() ) );
 
         List<SchemaObject> toBeDeleted = new ArrayList<SchemaObject>();
 
@@ -1103,11 +1096,18 @@ public class DefaultSchemaManager implem
                 loaded = true;
             }
         }
-        else
+        else if ( isStrict() )
         {
             // clear the cloned registries
             clonedRegistries.clear();
         }
+        else
+        {
+            // Relaxed mode
+            registries = clonedRegistries;
+            registries.setRelaxed();
+            loaded = true;
+        }
 
         return loaded;
     }
@@ -1599,7 +1599,7 @@ public class DefaultSchemaManager implem
      */
     public AttributeType lookupAttributeTypeRegistry( String oid ) throws LdapException
     {
-        String oidTrimmed = Strings.toLowerCase( oid ).trim();
+        String oidTrimmed = Strings.toLowerCaseAscii( oid ).trim();
         String oidNoOption = stripOptions( oidTrimmed );
         return registries.getAttributeTypeRegistry().lookup( oidNoOption );
     }
@@ -1612,7 +1612,7 @@ public class DefaultSchemaManager implem
     {
         try
         {
-            return registries.getAttributeTypeRegistry().lookup( Strings.toLowerCase( oid ).trim() );
+            return registries.getAttributeTypeRegistry().lookup( Strings.toLowerCaseAscii( oid ).trim() );
         }
         catch ( LdapException lnsae )
         {
@@ -1635,7 +1635,7 @@ public class DefaultSchemaManager implem
      */
     public MatchingRule lookupMatchingRuleRegistry( String oid ) throws LdapException
     {
-        return registries.getMatchingRuleRegistry().lookup( Strings.toLowerCase( oid ).trim() );
+        return registries.getMatchingRuleRegistry().lookup( Strings.toLowerCaseAscii( oid ).trim() );
     }
 
 
@@ -1653,7 +1653,7 @@ public class DefaultSchemaManager implem
      */
     public ObjectClass lookupObjectClassRegistry( String oid ) throws LdapException
     {
-        return registries.getObjectClassRegistry().lookup( Strings.toLowerCase( oid ).trim() );
+        return registries.getObjectClassRegistry().lookup( Strings.toLowerCaseAscii( oid ).trim() );
     }
 
 
@@ -1662,7 +1662,7 @@ public class DefaultSchemaManager implem
      */
     public LdapSyntax lookupLdapSyntaxRegistry( String oid ) throws LdapException
     {
-        return registries.getLdapSyntaxRegistry().lookup( Strings.toLowerCase( oid ).trim() );
+        return registries.getLdapSyntaxRegistry().lookup( Strings.toLowerCaseAscii( oid ).trim() );
     }
 
 
@@ -1725,7 +1725,7 @@ public class DefaultSchemaManager implem
      */
     private String getSchemaName( SchemaObject schemaObject )
     {
-        String schemaName = Strings.toLowerCase( schemaObject.getSchemaName() );
+        String schemaName = Strings.toLowerCaseAscii( schemaObject.getSchemaName() );
 
         if ( Strings.isEmpty( schemaName ) )
         {