'lo all,
Somehow I've hit the following exception when adding an entry to my
(embedded) ApacheDS server:
2008-10-02 16:13:19,182 ERROR [pool-9-thread-7]
handlers.ReferralAwareRequestHandler - OTHER: failed for Add Request :
ClientEntry
dn: 1.3.6.1.4.1.28416.2.2.2.131=2000114,2.5.4.11=customers,2.5.4.11=smx,
2.5.4.10=smx
objectclass: smxparty
smxpartyid: 2000114
: java.lang.Long cannot be cast to java.lang.String
java.lang.ClassCastException: java.lang.Long cannot be cast to
java.lang.String
at
org.apache.directory.shared.ldap.schema.DeepTrimToLowerNormalizer.normalize(DeepTrimToLowerNormalizer.java:59)
at
org.apache.directory.shared.ldap.schema.CachingNormalizer.normalize(CachingNormalizer.java:99)
at
org.apache.directory.shared.ldap.schema.NormalizingComparator.compare(NormalizingComparator.java:74)
at
org.apache.directory.server.schema.SerializableComparator.compare(SerializableComparator.java:99)
I'm assuming the problem here is triggering on the smxpartyid attribute,
which is defined as:
dn: m-oid=1.3.6.1.4.1.28416.2.2.2.131, ou=attributeTypes, cn=smx3, ou=schema
objectclass: metaAttributeType
objectclass: metaTop
objectclass: top
m-oid: 1.3.6.1.4.1.28416.2.2.2.131
m-name: smxpartyid
m-equality: integerMatch
m-syntax: 1.3.6.1.4.1.1466.115.121.1.27
m-length: 0
In code, this is being setup and passed to LDAP as String's:
final Attributes attributes = new BasicAttributes();
attributes.put(new BasicAttribute("objectclass", "smxparty"));
attributes.put(new BasicAttribute("smxpartyid",
party.getId().toString()));
At what point is ApacheDS converting this to a Long (is this based on the
m-equality: integerMatch?). I assume the code should be falling into
something other than NormalizingComparator (or NormalizingComparator
shouldn't assume String's).
I'm using ApacheDS 1.5.4.
Cheers,
Mark
--
"It is easier to optimize correct code than to correct optimized code." --
Bill Harlan