directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Lecharny (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DIRSERVER-858) Allow subclassing LdapDN
Date Tue, 06 Mar 2007 10:54:24 GMT

    [ https://issues.apache.org/jira/browse/DIRSERVER-858?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12478354
] 

Emmanuel Lecharny commented on DIRSERVER-858:
---------------------------------------------

Parsing a DN is a pretty fast operation : on my desktop (pentium 3Ghz), I can parse 120 000
dc=example, dc=com DN per second. 

Your example is not correct. I assume it will work for "dc=example, dc=com" if you do a 
bytes = StringTools.getBytesUtf8(dn); 
but if you have a DN like : sn=lécharny, dc=example, dc=com, it's simply not enough. The
'é'  should be handled and escaped, and this is what the parser is doing.

Last point : LdapDN is not intended to be used out of the server.

However, if you propose a patch, we may consider to apply it. Don't forget to propose a patch
for 1.0 and 1.5 version.

> Allow subclassing LdapDN
> ------------------------
>
>                 Key: DIRSERVER-858
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-858
>             Project: Directory ApacheDS
>          Issue Type: Improvement
>          Components: ldap
>    Affects Versions: 1.0.1, 1.5.0
>            Reporter: Endi S. Dewata
>
> Currently when you create an LdapDN object from a given DN string the code will always
parse the string into its RDN components.
>     LdapDN dn = new LdapDN("dc=example,dc=com");
> The parsing code, however, depending on your application, could take up to 5% of the
time.
> For applications that require high performance, it would be great if we could create
a subclass of LdapDN that will bypass the DN parsing code, or lazily parse the DN only when
needed. See the following code:
>     LdapDN dn = new MyLdapDN("dc=example,dc=com");
>     SearchResponseEntry response = new SearchResponseEntryImpl(request.getMessageId());
>     response.setObjectName(dn);
>     response.setAttributes(attributes);
> The MyLdapDN class would be very simple:
>     public class MyLdapDN extends LdapDN {
>         public MyLdapDN(String dn) throws Exception {
>             bytes = StringTools.getBytesUtf8(dn);
>         }
>     }
> Unfortunately this code is currently doesn't work because the the "bytes" field of LdapDN
is private and the LdapDN.getNbBytes() and LdapDN.getBytes() methods require direct access
to the field.
> The solution is simple, here are some alternatives:
> 1. Change the field access to protected.
> 2. Add LdapDN.setBytes() method.
> 3. Add LdapDN.getBytes() that can be overridden by the subclass, and change the LdapDN.getNbBytes()
and LdapDN.getBytes() to call this method.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message