[ http://issues.apache.org/jira/browse/DIRSERVER-174?page=all ]

Emmanuel Lecharny closed DIRSERVER-174.
---------------------------------------

    Resolution: Fixed

Many of the element being discussed in this task have been implemented. I close 
the improvment.

> Use NameComponent instead of String in LdapNames
> ------------------------------------------------
>
>                 Key: DIRSERVER-174
>                 URL: http://issues.apache.org/jira/browse/DIRSERVER-174
>             Project: Directory ApacheDS
>          Issue Type: Improvement
>          Components: ldap
>            Reporter: Emmanuel Lecharny
>            Priority: Minor
>
> To avoid redondant parsing in NormalizationService, we might parse a DN and 
> normalize it in one pass, then store the informations as NameComponent 
> instead of String.
> Here is a transcript of a convo we had yesturday :
> ..
> elecharny: 
> NormalizationService
> lot of stuff like :
> synchronized( parser )
>         {
>             normName = parser.parse( normName.toString() );
>         }
> normName is already a Name, so parsing the normName.toString() seems  useless 
> to me.
> Am I right ?
> akarasulu: 
> that's why this service does not take any chances
> elecharny:
> ok.
> is there any possibility that we can go through Normalization withour having 
> a Name that is not normalized?
> akarasulu:
> unfortunately this normalization may be a necessary cost to pay.
> yes I think so
> we do need to do some evaluation however to determine if some situations are 
> redundant
> elecharny: 
> actually, in Twix, I do some kind of normalization (even if it's not perfect)
> akarasulu: 
> but you cannot do normalization according to schema
> elecharny: 
> of course not ! but I normalize Types, not Values
> akarasulu:
> this is the kind of normalization we are talking about in this interceptor
> this is costly yes 
> right I just did not have a partial normalizer. well we would need to parse 
> the name component same thing as parsing a name its just like a dn but with 
> one name component
> elecharny :
> isn't the name component already parsed? may be you think that we need a 
> specific NameCOmponent container ?
> akarasulu :
> the name component is parsed by it is put into a list as a string type=value
> the parser does parse this on first pass but still deposits the concatenation 
> of type + '=" + value into the array of name components
> elecharny :
> ok, I get it.
> akarasulu :
> if we did not use a string but has a type like NameComponent then we could 
> take advantage of some of these optimizations you speak of if NameComponent 
> kept the type separate from the value
> elecharny :
> ok, this is exactly the point I just arrived half an hour ago...
> we need this NameComponent class to be able to avoid this parsing again.
> akarasulu :
> hmmm I see
> yes
> elecharny 
> if the parser produces a list of NameComponent, it's cool the job is already 
> done in one pass, then
> akarasulu :
> yes then normalization can be separated from the parse
> this is a good point
> ...
> So right now we can consider this approach possible. But it has some impact 
> on JNDI API :
> Alex :
> "There is however a slight problem with this approach.   However I think we 
> might be able to get around it.  Using a NameComponent instead of a String 
> introduces a problem when mapping to the JNDI Name interface.  Name expects a 
> String for name components as seen by the add() methods, and the get() 
> method.  Getting around this is easy.  The internal representation for name 
> components can be a NameComponent object within LdapName rather than a 
> String.  The add() methods can be overloaded to take a NameComponent in 
> addition to a String.  The overloads taking a String can generate the 
> NameComponent object before storing it within the internal array of 
> NameComponents.  Similarly, the get() method can call toString() to return 
> the String representation of the NameComponent (btw which can/should be 
> cached by NameComponent).  A new getNameComponent() method can be added to 
> LdapName for access to the individual name components by a normalizer."

-- 
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