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 2015/07/14 10:41:53 UTC
svn commit: r1690876 - 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/
schema/data/src/main/java/org/apache/directory/api/ldap/schema/loader/
Author: semancik
Date: Tue Jul 14 08:41:52 2015
New Revision: 1690876
URL: http://svn.apache.org/r1690876
Log:
Modifications needed to support 389 Directory Server in API
Modified:
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/schema/data/src/main/java/org/apache/directory/api/ldap/schema/loader/SchemaEntityFactory.java
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=1690876&r1=1690875&r2=1690876&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 Tue Jul 14 08:41:52 2015
@@ -3474,6 +3474,19 @@ public class LdapNetworkConnection exten
Attribute attr = rootDse.get( SchemaConstants.SUPPORTED_CONTROL_AT );
+ if (attr == null)
+ {
+ // Unlikely. Perhaps the server does not respond properly to "+" attribute query
+ // (such as 389ds server). So let's try again and let's be more explicit.
+ fetchRootDSE( SchemaConstants.ALL_USER_ATTRIBUTES,
+ SchemaConstants.ALL_OPERATIONAL_ATTRIBUTES, SchemaConstants.SUPPORTED_CONTROL_AT );
+ attr = rootDse.get( SchemaConstants.SUPPORTED_CONTROL_AT );
+ if (attr == null)
+ {
+ return supportedControls;
+ }
+ }
+
for ( Value<?> value : attr )
{
supportedControls.add( value.getString() );
@@ -3609,17 +3622,25 @@ public class LdapNetworkConnection exten
* fetches the rootDSE from the server
* @throws LdapException
*/
- private void fetchRootDSE() throws LdapException
+ private void fetchRootDSE(String... explicitAttributes) throws LdapException
{
EntryCursor cursor = null;
+ String[] attributes = explicitAttributes;
+ if (attributes.length == 0) {
+ attributes = new String[] { SchemaConstants.ALL_USER_ATTRIBUTES, SchemaConstants.ALL_OPERATIONAL_ATTRIBUTES };
+ }
+
try
{
cursor = search( "", LdapConstants.OBJECT_CLASS_STAR, SearchScope.OBJECT,
- SchemaConstants.ALL_USER_ATTRIBUTES,
- SchemaConstants.ALL_OPERATIONAL_ATTRIBUTES );
- cursor.next();
- rootDse = cursor.get();
+ attributes );
+ if ( cursor.next() )
+ {
+ rootDse = cursor.get();
+ } else {
+ throw new LdapException( "Search for root DSE returned no entry" );
+ }
}
catch ( Exception e )
{
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=1690876&r1=1690875&r2=1690876&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 Tue Jul 14 08:41:52 2015
@@ -405,8 +405,22 @@ public interface SchemaManager
*/
boolean isDisabled( Schema schema );
+ /**
+ * Tells if the SchemaManager is permissive or if it must be checked
+ * against inconsistencies.
+ *
+ * @return True if SchemaObjects can be added even if they break the consistency
+ */
+ boolean isRelaxed();
/**
+ * Tells if the SchemaManager is strict.
+ *
+ * @return True if SchemaObjects cannot be added if they break the consistency
+ */
+ boolean isStrict();
+
+ /**
* Check that the Schemas are consistent regarding the current Registries.
*
* @param schemas The schemas to check
Modified: directory/shared/trunk/ldap/schema/data/src/main/java/org/apache/directory/api/ldap/schema/loader/SchemaEntityFactory.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/schema/data/src/main/java/org/apache/directory/api/ldap/schema/loader/SchemaEntityFactory.java?rev=1690876&r1=1690875&r2=1690876&view=diff
==============================================================================
--- directory/shared/trunk/ldap/schema/data/src/main/java/org/apache/directory/api/ldap/schema/loader/SchemaEntityFactory.java (original)
+++ directory/shared/trunk/ldap/schema/data/src/main/java/org/apache/directory/api/ldap/schema/loader/SchemaEntityFactory.java Tue Jul 14 08:41:52 2015
@@ -101,7 +101,7 @@ public class SchemaEntityFactory impleme
* Get an OID from an entry. Handles the bad cases (null OID,
* not a valid OID, ...)
*/
- private String getOid( Entry entry, String objectType ) throws LdapInvalidAttributeValueException
+ private String getOid( Entry entry, String objectType, boolean strict ) throws LdapInvalidAttributeValueException
{
// The OID
Attribute mOid = entry.get( MetaSchemaConstants.M_OID_AT );
@@ -115,7 +115,7 @@ public class SchemaEntityFactory impleme
String oid = mOid.getString();
- if ( !Oid.isOid( oid ) )
+ if ( strict && !Oid.isOid( oid ) )
{
String msg = I18n.err( I18n.ERR_10006, oid );
LOG.warn( msg );
@@ -306,7 +306,7 @@ public class SchemaEntityFactory impleme
checkEntry( entry, SchemaConstants.SYNTAX_CHECKER );
// The SyntaxChecker OID
- String oid = getOid( entry, SchemaConstants.SYNTAX_CHECKER );
+ String oid = getOid( entry, SchemaConstants.SYNTAX_CHECKER, schemaManager.isStrict() );
// Get the schema
if ( !schemaManager.isSchemaLoaded( schemaName ) )
@@ -495,7 +495,7 @@ public class SchemaEntityFactory impleme
checkEntry( entry, SchemaConstants.COMPARATOR );
// The Comparator OID
- String oid = getOid( entry, SchemaConstants.COMPARATOR );
+ String oid = getOid( entry, SchemaConstants.COMPARATOR, schemaManager.isStrict() );
// Get the schema
if ( !schemaManager.isSchemaLoaded( schemaName ) )
@@ -626,7 +626,7 @@ public class SchemaEntityFactory impleme
checkEntry( entry, SchemaConstants.NORMALIZER );
// The Normalizer OID
- String oid = getOid( entry, SchemaConstants.NORMALIZER );
+ String oid = getOid( entry, SchemaConstants.NORMALIZER, schemaManager.isStrict() );
// Get the schema
if ( !schemaManager.isSchemaLoaded( schemaName ) )
@@ -682,7 +682,7 @@ public class SchemaEntityFactory impleme
checkEntry( entry, SchemaConstants.SYNTAX );
// The Syntax OID
- String oid = getOid( entry, SchemaConstants.SYNTAX );
+ String oid = getOid( entry, SchemaConstants.SYNTAX, schemaManager.isStrict() );
// Get the schema
if ( !schemaManager.isSchemaLoaded( schemaName ) )
@@ -724,7 +724,7 @@ public class SchemaEntityFactory impleme
checkEntry( entry, SchemaConstants.MATCHING_RULE );
// The MatchingRule OID
- String oid = getOid( entry, SchemaConstants.MATCHING_RULE );
+ String oid = getOid( entry, SchemaConstants.MATCHING_RULE, schemaManager.isStrict() );
// Get the schema
if ( !schemaManager.isSchemaLoaded( schemaName ) )
@@ -795,7 +795,7 @@ public class SchemaEntityFactory impleme
checkEntry( entry, SchemaConstants.OBJECT_CLASS );
// The ObjectClass OID
- String oid = getOid( entry, SchemaConstants.OBJECT_CLASS );
+ String oid = getOid( entry, SchemaConstants.OBJECT_CLASS, schemaManager.isStrict() );
// Get the schema
if ( !schemaManager.isSchemaLoaded( schemaName ) )
@@ -870,7 +870,7 @@ public class SchemaEntityFactory impleme
checkEntry( entry, SchemaConstants.ATTRIBUTE_TYPE );
// The AttributeType OID
- String oid = getOid( entry, SchemaConstants.ATTRIBUTE_TYPE );
+ String oid = getOid( entry, SchemaConstants.ATTRIBUTE_TYPE, schemaManager.isStrict() );
// Get the schema
if ( !schemaManager.isSchemaLoaded( schemaName ) )