o Added two new AT in apache schema for dealing with subentries using UUID instead of DN
o Modified the server code to deal with this new implementation
This is a partial commit, more modifications will come later. The branch won't build.
git-svn-id: https://svn.apache.org/repos/asf/directory/shared/branches/shared-subtree@966520 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/i18n/src/main/java/org/apache/directory/shared/i18n/I18n.java b/i18n/src/main/java/org/apache/directory/shared/i18n/I18n.java
index a1bcd9b..1524eb8 100644
--- a/i18n/src/main/java/org/apache/directory/shared/i18n/I18n.java
+++ b/i18n/src/main/java/org/apache/directory/shared/i18n/I18n.java
@@ -585,7 +585,7 @@
ERR_04444( "ERR_04444" ),
ERR_04445( "ERR_04445" ),
ERR_04446( "ERR_04446" ),
- ERR_04447( "ERR_04447" ),
+ ERR_04447_CANNOT_NORMALIZE_VALUE( "ERR_04447_CANNOT_NORMALIZE_VALUE" ),
ERR_04448( "ERR_04448" ),
ERR_04449( "ERR_04449" ),
ERR_04450( "ERR_04450" ),
diff --git a/i18n/src/main/resources/org/apache/directory/shared/i18n/errors.properties b/i18n/src/main/resources/org/apache/directory/shared/i18n/errors.properties
index 9c3b46a..40babbf 100644
--- a/i18n/src/main/resources/org/apache/directory/shared/i18n/errors.properties
+++ b/i18n/src/main/resources/org/apache/directory/shared/i18n/errors.properties
@@ -569,7 +569,7 @@
ERR_04444=I don't really know how to compare anything other than ServerBinaryValues at this point in time.
ERR_04445=There is no Syntax associated with this attributeType
ERR_04446=Cannot use standard serialization for a ServerStringValue
-ERR_04447=Cannot normalize the wrapped value {0}
+ERR_04447_CANNOT_NORMALIZE_VALUE=Cannot normalize the wrapped value {0}
ERR_04448=I don't know what to do if value is not a ServerStringValue
ERR_04449=The value ''{0}'' can't be normalized, it hasn't been added
ERR_04450=The value ''{0}'' is incorrect, it hasn't been added
@@ -578,7 +578,7 @@
ERR_04453=The upID ({0}) is not an OID or is different from the AttributeType OID ({1})
ERR_04454=Cannot use standard serialization for a ServerAttribute
ERR_04455=The ID ''{0}''is incompatible with the AttributeType's id ''{1}''
-ERR_04456=An ID cannnot be null, empty, or resolved to an emtpy value when trimmed
+ERR_04456=An ID cannot be null, empty, or resolved to an emtpy value when trimmed
ERR_04457_NULL_ATTRIBUTE_ID=The ID should not be null or empty
ERR_04458=Cannot add an attribute without an ID
ERR_04459=We have had an error while adding the ''{0}'' AttributeType : {1}
diff --git a/ldap-constants/src/main/java/org/apache/directory/shared/ldap/constants/SchemaConstants.java b/ldap-constants/src/main/java/org/apache/directory/shared/ldap/constants/SchemaConstants.java
index 2bc2acd..61cfaf1 100644
--- a/ldap-constants/src/main/java/org/apache/directory/shared/ldap/constants/SchemaConstants.java
+++ b/ldap-constants/src/main/java/org/apache/directory/shared/ldap/constants/SchemaConstants.java
@@ -438,7 +438,15 @@
// TriggerExecutionSubentries
String TRIGGER_EXECUTION_SUBENTRIES_AT = "triggerExecutionSubentries";
- String TRIGGER_EXECUTION_SUBENTRIES_AT_OID = "1.3.6.1.4.1.18060.0.4.1.2.27";
+ String TRIGGER_EXECUTION_SUBENTRIES_AT_OID = "1.3.6.1.4.1.18060.0.4.1.2.12";
+
+ // Ads-SubschemaSubentries
+ String ADS_SUBSCHEMA_SUBENTRIES_AT = "ads-subschemaSubentries";
+ String ADS_SUBSCHEMA_SUBENTRIES_AT_OID = "1.3.6.1.4.1.18060.0.4.1.2.13";
+
+ // Ads-CollectiveAttributeSubentries
+ String ADS_COLLECTIVE_ATTRIBUTE_SUBENTRIES_AT = "ads-collectiveAttributeSubentries";
+ String ADS_COLLECTIVE_ATTRIBUTE_SUBENTRIES_AT_OID = "1.3.6.1.4.1.18060.0.4.1.2.14";
// Comparators
String COMPARATORS_AT = "comparators";
diff --git a/ldap-schema-manager-tests/src/test/java/org/apache/directory/shared/ldap/schema/loader/ldif/SchemaManagerEnableDisableLoadTest.java b/ldap-schema-manager-tests/src/test/java/org/apache/directory/shared/ldap/schema/loader/ldif/SchemaManagerEnableDisableLoadTest.java
index 36951f0..3db33f5 100644
--- a/ldap-schema-manager-tests/src/test/java/org/apache/directory/shared/ldap/schema/loader/ldif/SchemaManagerEnableDisableLoadTest.java
+++ b/ldap-schema-manager-tests/src/test/java/org/apache/directory/shared/ldap/schema/loader/ldif/SchemaManagerEnableDisableLoadTest.java
@@ -149,14 +149,14 @@
assertEquals( 0, disabled.size() );
assertTrue( schemaManager.getErrors().isEmpty() );
- assertEquals( 389, schemaManager.getAttributeTypeRegistry().size() );
+ assertEquals( 391, schemaManager.getAttributeTypeRegistry().size() );
assertEquals( 48, schemaManager.getComparatorRegistry().size() );
assertEquals( 48, schemaManager.getMatchingRuleRegistry().size() );
assertEquals( 48, schemaManager.getNormalizerRegistry().size() );
assertEquals( 114, schemaManager.getObjectClassRegistry().size() );
assertEquals( 66, schemaManager.getSyntaxCheckerRegistry().size() );
assertEquals( 71, schemaManager.getLdapSyntaxRegistry().size() );
- assertEquals( 622, schemaManager.getGlobalOidRegistry().size() );
+ assertEquals( 624, schemaManager.getGlobalOidRegistry().size() );
assertEquals( 12, schemaManager.getRegistries().getLoadedSchemas().size() );
assertNull( schemaManager.getRegistries().getLoadedSchema( "nis" ) );
@@ -194,14 +194,14 @@
assertNotNull( schemaManager.lookupAttributeTypeRegistry( "gecos" ) );
assertTrue( schemaManager.getErrors().isEmpty() );
- assertEquals( 416, schemaManager.getAttributeTypeRegistry().size() );
+ assertEquals( 418, schemaManager.getAttributeTypeRegistry().size() );
assertEquals( 49, schemaManager.getComparatorRegistry().size() );
assertEquals( 49, schemaManager.getMatchingRuleRegistry().size() );
assertEquals( 49, schemaManager.getNormalizerRegistry().size() );
assertEquals( 127, schemaManager.getObjectClassRegistry().size() );
assertEquals( 68, schemaManager.getSyntaxCheckerRegistry().size() );
assertEquals( 73, schemaManager.getLdapSyntaxRegistry().size() );
- assertEquals( 665, schemaManager.getGlobalOidRegistry().size() );
+ assertEquals( 667, schemaManager.getGlobalOidRegistry().size() );
assertEquals( 13, schemaManager.getRegistries().getLoadedSchemas().size() );
assertNotNull( schemaManager.getRegistries().getLoadedSchema( "nis" ) );
@@ -234,14 +234,14 @@
}
assertTrue( schemaManager.getErrors().isEmpty() );
- assertEquals( 389, schemaManager.getAttributeTypeRegistry().size() );
+ assertEquals( 391, schemaManager.getAttributeTypeRegistry().size() );
assertEquals( 48, schemaManager.getComparatorRegistry().size() );
assertEquals( 48, schemaManager.getMatchingRuleRegistry().size() );
assertEquals( 48, schemaManager.getNormalizerRegistry().size() );
assertEquals( 114, schemaManager.getObjectClassRegistry().size() );
assertEquals( 66, schemaManager.getSyntaxCheckerRegistry().size() );
assertEquals( 71, schemaManager.getLdapSyntaxRegistry().size() );
- assertEquals( 622, schemaManager.getGlobalOidRegistry().size() );
+ assertEquals( 624, schemaManager.getGlobalOidRegistry().size() );
assertEquals( 12, schemaManager.getRegistries().getLoadedSchemas().size() );
assertNull( schemaManager.getRegistries().getLoadedSchema( "nis" ) );
diff --git a/ldap-schema-manager-tests/src/test/java/org/apache/directory/shared/ldap/schema/loader/ldif/SchemaManagerLoadTest.java b/ldap-schema-manager-tests/src/test/java/org/apache/directory/shared/ldap/schema/loader/ldif/SchemaManagerLoadTest.java
index 74991ae..13b71cc 100644
--- a/ldap-schema-manager-tests/src/test/java/org/apache/directory/shared/ldap/schema/loader/ldif/SchemaManagerLoadTest.java
+++ b/ldap-schema-manager-tests/src/test/java/org/apache/directory/shared/ldap/schema/loader/ldif/SchemaManagerLoadTest.java
@@ -282,14 +282,14 @@
assertTrue( schemaManager.load( "apache" ) );
assertTrue( schemaManager.getErrors().isEmpty() );
- assertEquals( 146, schemaManager.getAttributeTypeRegistry().size() );
+ assertEquals( 148, schemaManager.getAttributeTypeRegistry().size() );
assertEquals( 43, schemaManager.getComparatorRegistry().size() );
assertEquals( 43, schemaManager.getMatchingRuleRegistry().size() );
assertEquals( 43, schemaManager.getNormalizerRegistry().size() );
assertEquals( 53, schemaManager.getObjectClassRegistry().size() );
assertEquals( 62, schemaManager.getSyntaxCheckerRegistry().size() );
assertEquals( 66, schemaManager.getLdapSyntaxRegistry().size() );
- assertEquals( 308, schemaManager.getGlobalOidRegistry().size() );
+ assertEquals( 310, schemaManager.getGlobalOidRegistry().size() );
assertEquals( 3, schemaManager.getRegistries().getLoadedSchemas().size() );
assertNotNull( schemaManager.getRegistries().getLoadedSchema( "system" ) );
diff --git a/ldap-schema-manager-tests/src/test/java/org/apache/directory/shared/ldap/schema/loader/ldif/SchemaManagerLoadWithDepsTest.java b/ldap-schema-manager-tests/src/test/java/org/apache/directory/shared/ldap/schema/loader/ldif/SchemaManagerLoadWithDepsTest.java
index 8c15294..8629516 100644
--- a/ldap-schema-manager-tests/src/test/java/org/apache/directory/shared/ldap/schema/loader/ldif/SchemaManagerLoadWithDepsTest.java
+++ b/ldap-schema-manager-tests/src/test/java/org/apache/directory/shared/ldap/schema/loader/ldif/SchemaManagerLoadWithDepsTest.java
@@ -167,14 +167,14 @@
schemaManager.loadWithDeps( "apache" );
assertTrue( schemaManager.getErrors().isEmpty() );
- assertEquals( 146, schemaManager.getAttributeTypeRegistry().size() );
+ assertEquals( 148, schemaManager.getAttributeTypeRegistry().size() );
assertEquals( 43, schemaManager.getComparatorRegistry().size() );
assertEquals( 43, schemaManager.getMatchingRuleRegistry().size() );
assertEquals( 43, schemaManager.getNormalizerRegistry().size() );
assertEquals( 53, schemaManager.getObjectClassRegistry().size() );
assertEquals( 62, schemaManager.getSyntaxCheckerRegistry().size() );
assertEquals( 66, schemaManager.getLdapSyntaxRegistry().size() );
- assertEquals( 308, schemaManager.getGlobalOidRegistry().size() );
+ assertEquals( 310, schemaManager.getGlobalOidRegistry().size() );
assertEquals( 3, schemaManager.getRegistries().getLoadedSchemas().size() );
assertNotNull( schemaManager.getRegistries().getLoadedSchema( "system" ) );
@@ -251,14 +251,14 @@
schemaManager.loadWithDeps( "other" );
assertTrue( schemaManager.getErrors().isEmpty() );
- assertEquals( 177, schemaManager.getAttributeTypeRegistry().size() );
+ assertEquals( 179, schemaManager.getAttributeTypeRegistry().size() );
assertEquals( 48, schemaManager.getComparatorRegistry().size() );
assertEquals( 48, schemaManager.getMatchingRuleRegistry().size() );
assertEquals( 48, schemaManager.getNormalizerRegistry().size() );
assertEquals( 66, schemaManager.getObjectClassRegistry().size() );
assertEquals( 66, schemaManager.getSyntaxCheckerRegistry().size() );
assertEquals( 71, schemaManager.getLdapSyntaxRegistry().size() );
- assertEquals( 362, schemaManager.getGlobalOidRegistry().size() );
+ assertEquals( 364, schemaManager.getGlobalOidRegistry().size() );
assertEquals( 5, schemaManager.getRegistries().getLoadedSchemas().size() );
assertNotNull( schemaManager.getRegistries().getLoadedSchema( "system" ) );
diff --git a/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.11.ldif b/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.11.ldif
index ac1f7b5..ed55755 100644
--- a/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.11.ldif
+++ b/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.11.ldif
@@ -10,10 +10,11 @@
m-oid: 1.3.6.1.4.1.18060.0.4.1.2.11
entrycsn: 20090818052729.367000Z#000000#000#000000
m-nousermodification: TRUE
-m-syntax: 1.3.6.1.4.1.1466.115.121.1.12
+m-syntax: 1.3.6.1.1.16.1
objectclass: metaAttributeType
objectclass: metaTop
objectclass: top
m-name: accessControlSubentries
-m-equality: distinguishedNameMatch
+m-equality: uuidMatch
+m-ordering: uuidOrderingMatch
diff --git a/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.27.ldif b/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.12.ldif
similarity index 66%
rename from ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.27.ldif
rename to ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.12.ldif
index 9f58bd2..c02930b 100644
--- a/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.27.ldif
+++ b/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.12.ldif
@@ -1,20 +1,21 @@
version: 1
-dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.27,ou=attributeTypes,cn=apache,ou=schema
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.12,ou=attributeTypes,cn=apache,ou=schema
createtimestamp: 20090818022729Z
m-singlevalue: FALSE
m-obsolete: FALSE
-m-description: Used to track subentries associated with a trigger area which an
- entry falls under
+m-description: Used to track subentries associated with a trigger area which an
+ entry falls under
m-usage: DIRECTORY_OPERATION
creatorsname: uid=admin,ou=system
m-collective: FALSE
-m-oid: 1.3.6.1.4.1.18060.0.4.1.2.27
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.12
entrycsn: 20090818052729.833000Z#000000#000#000000
m-nousermodification: TRUE
-m-syntax: 1.3.6.1.4.1.1466.115.121.1.12
+m-syntax: 1.3.6.1.1.16.1
objectclass: metaAttributeType
objectclass: metaTop
objectclass: top
m-name: triggerExecutionSubentries
-m-equality: distinguishedNameMatch
+m-equality: uuidMatch
+m-ordering: uuidOrderingMatch
diff --git a/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.13.ldif b/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.13.ldif
new file mode 100644
index 0000000..508fec0
--- /dev/null
+++ b/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.13.ldif
@@ -0,0 +1,21 @@
+version: 1
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.13,ou=attributeTypes,cn=apache,ou=schema
+createtimestamp: 20090818022729Z
+m-singlevalue: FALSE
+m-obsolete: FALSE
+m-description: Used to track subentries associated with a subschema area which
+ an entry falls under
+m-usage: DIRECTORY_OPERATION
+creatorsname: uid=admin,ou=system
+m-collective: FALSE
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.13
+entrycsn: 20090818052729.833000Z#000000#000#000000
+m-nousermodification: TRUE
+m-syntax: 1.3.6.1.1.16.1
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-name: ads-subschemaSubentries
+m-equality: uuidMatch
+m-ordering: uuidOrderingMatch
+
diff --git a/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.14.ldif b/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.14.ldif
new file mode 100644
index 0000000..6441ca5
--- /dev/null
+++ b/ldap-schema/src/main/resources/schema/ou=schema/cn=apache/ou=attributetypes/m-oid=1.3.6.1.4.1.18060.0.4.1.2.14.ldif
@@ -0,0 +1,21 @@
+version: 1
+dn: m-oid=1.3.6.1.4.1.18060.0.4.1.2.14,ou=attributeTypes,cn=apache,ou=schema
+createtimestamp: 20090818022729Z
+m-singlevalue: FALSE
+m-obsolete: FALSE
+m-description: Used to track subentries associated with a collectiveAttribute a
+ rea which an entry falls under
+m-usage: DIRECTORY_OPERATION
+creatorsname: uid=admin,ou=system
+m-collective: FALSE
+m-oid: 1.3.6.1.4.1.18060.0.4.1.2.14
+entrycsn: 20090818052729.833000Z#000000#000#000000
+m-nousermodification: TRUE
+m-syntax: 1.3.6.1.1.16.1
+objectclass: metaAttributeType
+objectclass: metaTop
+objectclass: top
+m-name: ads-collectiveAttributeSubentries
+m-equality: uuidMatch
+m-ordering: uuidOrderingMatch
+
diff --git a/ldap/src/main/java/org/apache/directory/shared/ldap/entry/AbstractValue.java b/ldap/src/main/java/org/apache/directory/shared/ldap/entry/AbstractValue.java
index 2bf9555..dc52a46 100644
--- a/ldap/src/main/java/org/apache/directory/shared/ldap/entry/AbstractValue.java
+++ b/ldap/src/main/java/org/apache/directory/shared/ldap/entry/AbstractValue.java
@@ -19,9 +19,8 @@
*/
package org.apache.directory.shared.ldap.entry;
-import org.apache.directory.shared.ldap.exception.LdapException;
-
import org.apache.directory.shared.i18n.I18n;
+import org.apache.directory.shared.ldap.exception.LdapException;
import org.apache.directory.shared.ldap.schema.AttributeType;
import org.apache.directory.shared.ldap.schema.LdapComparator;
import org.apache.directory.shared.ldap.schema.MatchingRule;
@@ -129,7 +128,7 @@
}
catch ( LdapException le )
{
- String message = I18n.err( I18n.ERR_04447, le.getLocalizedMessage() );
+ String message = I18n.err( I18n.ERR_04447_CANNOT_NORMALIZE_VALUE, le.getLocalizedMessage() );
LOG.info( message );
normalized = false;
}
@@ -142,7 +141,7 @@
}
catch ( LdapException ne )
{
- String message = I18n.err( I18n.ERR_04447, ne.getLocalizedMessage() );
+ String message = I18n.err( I18n.ERR_04447_CANNOT_NORMALIZE_VALUE, ne.getLocalizedMessage() );
LOG.info( message );
normalized = false;
}