[ 
https://issues.apache.org/jira/browse/DIRAPI-165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14291792#comment-14291792
 ] 

Emmanuel Lecharny commented on DIRAPI-165:
------------------------------------------

I checked the code, there are at missing parts :
- the ASF headers (they are mandatory, and we can't cut a release without them)
- the classes header : we need the apache directory email address to be added 
in the header
- The javadoc : we are poor on Javadoc, due to the urge of developping and 
because we are a bit lazzy, but we try to get this fixed

Currently, the {{FilterBuilder}} class is the only one that has everything but 
the ASF header, and I must admit it's quite well documented. It would be cool 
if the other classes have a bit of doco, too. Not necessarily that extensive, 
but still. For test, we don't really care about Javadoc, except for specific 
tests.

Regarding the {{Operator}} enum, we do have an enum in the ldap-model module 
that could have been used, or at least improved : AssertionType. I think there 
is some room for improvement in this enum. I also think that there is no need 
to declare two inner Operator - in UnaryFilter and setOfFiltersFilter -.

Last, not least, the Filter.build(...) is clearly missing a lot of things : the 
attribute value is to be escaped wrt RFC 4515  (assertionvalue) :

{code}
      assertionvalue = valueencoding
      ; The <valueencoding> rule is used to encode an <AssertionValue>
      ; from Section 4.1.6 of [RFC4511].
      valueencoding  = 0*(normal / escaped)
      normal         = UTF1SUBSET / UTFMB
      escaped        = ESC HEX HEX
      UTF1SUBSET     = %x01-27 / %x2B-5B / %x5D-7F
                          ; UTF1SUBSET excludes 0x00 (NUL), LPAREN,
                          ; RPAREN, ASTERISK, and ESC.
      EXCLAMATION    = %x21 ; exclamation mark ("!")
      AMPERSAND      = %x26 ; ampersand (or AND symbol) ("&")
      ASTERISK       = %x2A ; asterisk ("*")
      COLON          = %x3A ; colon (":")
      VERTBAR        = %x7C ; vertical bar (or pipe) ("|")
      TILDE          = %x7E ; tilde ("~")
{code}

If we don't do that, we are very likely to have failing requests. I think we 
have the code that does the escaping in the ldap-model module (Filter)

> Add a FilterBuillder
> --------------------
>
>                 Key: DIRAPI-165
>                 URL: https://issues.apache.org/jira/browse/DIRAPI-165
>             Project: Directory Client API
>          Issue Type: New Feature
>    Affects Versions: 1.0.0-M21
>            Reporter: lucas theisen
>            Priority: Minor
>             Fix For: 1.0.0-M29
>
>
> Looking for something Fluent, in the _spirit_ of Hibernate Criteria.  May not 
> seem like much, but can drastically reduce query syntax issues. Also, you 
> would likely be using a StringBuilder anyway, so its not much different. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to