Description
This is a follow-up to DIRSERVER-1301.
When performing the following schema modification, due to a collision between attribute type and object class name there is a NamingException thrown:
-
-
-
-
-
-
-
-
-
-
version: 1
dn: cn=schema
changetype: modify
add: attributeTypes
attributeTypes: ( 1.3.6.1.4.1.18060.0.4.3.2.1
NAME 'ship'
DESC 'a reference to a ship'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
SINGLE-VALUE
)
-
-
-
-
-
-
-
-
-
add: objectClasses
objectClasses: ( 1.3.6.1.4.1.18060.0.4.3.3.1
NAME 'ship'
DESC 'An entry which represents a ship'
SUP top
STRUCTURAL
MUST cn
MAY ( description )
)
objectClasses: ( 1.3.6.1.4.1.18060.0.4.3.3.2
NAME 'port'
DESC 'An entry which represents a port'
SUP top
STRUCTURAL
MUST cn
MAY ( description $ ship )
)
However, the NamingException in such case doesn't give any hint about the real cause of the problem (name collision):
javax.naming.directory.NoSuchAttributeException: attributeType w/ OID 1.3.6.1.4.1.18060.0.4.3.3.1 not registered!
at org.apache.directory.server.schema.registries.DefaultAttributeTypeRegistry.lookup(DefaultAttributeTypeRegistry.java:198)
at org.apache.directory.server.core.schema.ObjectClassImpl.getMayList(ObjectClassImpl.java:104)
at org.apache.directory.server.utils.AttributesFactory.getAttributes(AttributesFactory.java:393)
at org.apache.directory.server.utils.AttributesFactory.getAttributes(AttributesFactory.java:74)
at org.apache.directory.server.core.schema.SchemaSubentryModifier.addSchemaObject(SchemaSubentryModifier.java:188)
...
The exception should be made more informative.