[ 
http://issues.apache.org/jira/browse/DIRSERVER-658?page=comments#action_12418748
 ] 

Emmanuel Lecharny commented on DIRSERVER-658:
---------------------------------------------

I think that a patch like this one could solve the problem :

Index: 
apacheds/core/src/main/java/org/apache/directory/server/core/partition/DefaultDirectoryPartitionNexus.java
===================================================================
--- 
apacheds/core/src/main/java/org/apache/directory/server/core/partition/DefaultDirectoryPartitionNexus.java
  (revision 416873)
+++ 
apacheds/core/src/main/java/org/apache/directory/server/core/partition/DefaultDirectoryPartitionNexus.java
  (working copy)
@@ -428,7 +428,7 @@
         partitions.put( partition.getSuffix().toString(), partition );
 
         Attribute namingContexts = rootDSE.get( NAMINGCTXS_ATTR );
-        namingContexts.add( partition.getUpSuffix() );
+        namingContexts.add( partition.getUpSuffix().toString() );
     }
 
 
@@ -442,7 +442,7 @@
         }
 
         Attribute namingContexts = rootDSE.get( NAMINGCTXS_ATTR );
-        namingContexts.remove( partition.getUpSuffix() );
+        namingContexts.remove( partition.getUpSuffix().toString() );
         partitions.remove( key );
 
         partition.sync();


Alex, is this ok with you ?

> ClassCast exception when fetching DNs from root DES
> ---------------------------------------------------
>
>          Key: DIRSERVER-658
>          URL: http://issues.apache.org/jira/browse/DIRSERVER-658
>      Project: Directory ApacheDS
>         Type: Bug

>     Versions: 1.0-RC4
>     Reporter: Emmanuel Lecharny
>     Assignee: Emmanuel Lecharny

>
> When fetching for DNs in LdapBrowser, you get an exception while encoding the 
> SearchResultEntry :
> ...
> Caused by: java.lang.ClassCastException: 
> org.apache.directory.shared.ldap.name.LdapDN
>       at 
> org.apache.directory.shared.ldap.codec.search.SearchResultEntry.computeLength(SearchResultEntry.java:240)
>       at 
> org.apache.directory.shared.ldap.codec.LdapMessage.computeLength(LdapMessage.java:530)
>       at 
> org.apache.directory.shared.ldap.codec.LdapMessage.encode(LdapMessage.java:602)
>       at 
> org.apache.directory.shared.ldap.codec.TwixEncoder.encodeBlocking(TwixEncoder.java:121)
>       at 
> org.apache.directory.shared.ldap.codec.TwixEncoder.encode(TwixEncoder.java:200)
>       at 
> org.apache.directory.shared.ldap.message.MessageEncoder.encode(MessageEncoder.java:131)
>       at 
> org.apache.mina.filter.codec.asn1.Asn1CodecEncoder.encode(Asn1CodecEncoder.java:55)
>       at 
> org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:226)
> ... 22 more
> The problem is that when encoding a SearchResultEntry, the values are 
> supposed to be Strings or byte arrays, not LdapDNs. When you fetch for DNs in 
> the root DSE, the result is stored in the SearchResultEntry as LdapDN 
> objects, not Strings, and it's allowad, as the method which set the value 
> accept an Object.
> We have to fix two problems :
> - first, check that the Object is either a String or a byte[], nothing else 
> (defensive programming)
> - second, avoid storing LdapDN objects where String or byte[] are expected :)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to