[
https://issues.apache.org/jira/browse/DIRAPI-320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16612973#comment-16612973
]
Emmanuel Lecharny commented on DIRAPI-320:
------------------------------------------
Now, what we could do is to define 'fake' missing elements, like what we do for
missing {{Comparable}}/{{Normalizer}} :
{code:java}
...
try
{
// Gets the associated Normalizer
normalizer = registries.getNormalizerRegistry().lookup(
matchingRule.getOid() );
}
catch ( LdapException ne )
{
// Default to the NoOp normalizer
normalizer = new NoOpNormalizer( matchingRule.getOid() );
}
...
{code}
but a few lines lower, in teh same function, when it comes to {{LdapSyntax} :
{code:java}
...
try
{
// Get the associated LdapSyntax
ldapSyntax = registries.getLdapSyntaxRegistry().lookup(
matchingRule.getSyntaxOid() );
}
catch ( LdapException ne )
{
// The Syntax is a mandatory element, it must exist.
String msg = I18n.err(
I18n.ERR_13765_MR_MUST_REFER_EXISTING_SYNTAX );
LdapSchemaException ldapSchemaException = new
LdapSchemaException(
LdapSchemaExceptionCodes.MR_NONEXISTENT_SYNTAX, msg, ne
);
ldapSchemaException.setSourceObject( matchingRule );
ldapSchemaException.setRelatedId(
matchingRule.getSyntaxOid() );
errorHandler.handle( LOG, msg, ldapSchemaException );
}
...
{code}
> ClassCastException on Objects.equals(Value,Value) for userPassword attribute
> ----------------------------------------------------------------------------
>
> Key: DIRAPI-320
> URL: https://issues.apache.org/jira/browse/DIRAPI-320
> Project: Directory Client API
> Issue Type: Bug
> Affects Versions: 2.0.0.AM2
> Reporter: Pavel Zlámal
> Priority: Minor
>
> When I use _JarLdifSchemaLoader_ it seems to load _userPassword_ attribute
> type with different Comparator than when I load it from LDAP connection
> (openLDAP in my case).
> Then If I call:
> {code:java}
> Objects.equals(val, attribute.get())
> {code}
> to check if value passed to my method is the first in the attribute, I get
> _ClassCastException_, since it tries to pass _String_ (normalized value) to
> the _ByteArrayComparator._
> When I use Schema only loaded from connection, then it works, since it uses
> _ComparableComparator._
> {code:java}
> java.lang.ClassCastException: java.lang.String cannot be cast to [B
> at
> org.apache.directory.api.ldap.model.schema.comparators.ByteArrayComparator.compare(ByteArrayComparator.java:32)
> at org.apache.directory.api.ldap.model.entry.Value.equals(Value.java:1389)
> at java.util.Objects.equals(Objects.java:59)
> {code}
> So there is probably bug in schema ldif included in JAR or in equals()
> implementation of Value.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)