Hi Patrick,

(please keep [email protected] as a recipient, other people might be interested in this discussion)

Actually, a search filter can be converted into a String, per RFC 4515 [1], so yes, we could keep the String as a String instead of switching to a Base64 encoded String.

I must say that the conversion to a Base64 encoded String was convenient for us, but that might be a burden in many cases.

Switchijg to something that is not base64 encoded should not be a big burden for the API (actually, probably a one liner).

[1] (https://datatracker.ietf.org/doc/html/rfc4515)

On 09/02/2024 08:58, Patrick Peer wrote:
Emmanuel,

no worries, as far as I can tell, your code is correct ;). The attribute xsi:type="xsd:base64Binary" is generated correctly in the request I sent [2]. However, the simulator seems to ignore/drop this attribute [1] when interpreting the request, which should bug in the simulator. I'd share a link to that discussion, but unfortunately it is not public :/.

Even though your solution is correct, I'd like to know if you can imagine to preserve the original string, because in this specific case the api call     SearchRequestDsml searchRequest = new SearchRequestDsml(LdapApiServiceFactory.getSingleton()); searchRequest.setFilter("(memberOf=cn=MercyCenterHospitalGroup,ou=Relationship,dc=HPD,o=IHE-Europe,c=FRA)");
leads to
    <value xsi:type="xsd:base64Binary">Y249TWVyY3lDZW50ZXJIb3NwaXRhbEdyb3VwLG91PVJlbGF0aW9uc2hpcCxkYz1IUEQsbz1JSEUtRXVyb3BlLGM9RlJB</value>
in the request.

In other words, do you think the conversion to a byte array within the library (and consequently the base64 encoding) could be avoided for string filters?


Thanks,
Patrick


[1] https://gazelle.ihe.net/HPDSimulator/messages/messageDisplay.seam?id=35572 <https://gazelle.ihe.net/HPDSimulator/messages/messageDisplay.seam?id=35572>
[2]
<?xml version="1.0" encoding="UTF-8" standalone="no"?><env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope <http://www.w3.org/2003/05/soap-envelope>">
   <env:Header>
    <wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing <http://www.w3.org/2005/08/addressing>">https://gazelle.synedra.lan/HPDSimulator-ejb/ProviderInformationDirectory_Service/ProviderInformationDirectory_PortType <https://gazelle.synedra.lan/HPDSimulator-ejb/ProviderInformationDirectory_Service/ProviderInformationDirectory_PortType></wsa:To>     <wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing <http://www.w3.org/2005/08/addressing>">urn:uuid:3498c2e0-45c0-402a-bfc3-e289ee3afaef</wsa:MessageID>     <wsa:ReplyTo xmlns:wsa="http://www.w3.org/2005/08/addressing <http://www.w3.org/2005/08/addressing>">       <wsa:Address>" title="http://www.w3.org/2005/08/addressing/anonymous <http://www.w3.org/2005/08/addressing/anonymous>" target="_blank">http://www.w3.org/2005/08/addressing/anonymous <http://www.w3.org/2005/08/addressing/anonymous></wsa:Address>;
     </wsa:ReplyTo>
    <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing <http://www.w3.org/2005/08/addressing>" env:mustUnderstand="1">urn:ihe:iti:2010:ProviderInformationQuery</wsa:Action>
   </env:Header>
   <env:Body>
    <batchRequest xmlns="urn:oasis:names:tc:DSML:2:0:core" xmlns:xsd="http://www.w3.org/2001/XMLSchema <http://www.w3.org/2001/XMLSchema>" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance <http://www.w3.org/2001/XMLSchema-instance>">       <searchRequest derefAliases="derefAlways" dn="ou=HCProfessional,dc=HPD,o=gazelle,c=IHE" requestID="1" scope="wholeSubtree">
         <filter>
           <equalityMatch name="memberOf">
            <value xsi:type="xsd:base64Binary">Y249TWVyY3lDZW50ZXJIb3NwaXRhbEdyb3VwLG91PVJlbGF0aW9uc2hpcCxkYz1IUEQsbz1JSEUtRXVyb3BlLGM9RlJB</value>
           </equalityMatch>
         </filter>
         <attributes>
           <attribute name="cn"/>
           <attribute name="objectClass"/>
           <attribute name="hcIdentifier"/>
           <attribute name="o"/>
           <attribute name="hcRegisteredName"/>
           <attribute name="hpdProviderPracticeAddress"/>
           <attribute name="displayName"/>
           <attribute name="physicalDeliveryOfficeName"/>
           <attribute name="uid"/>
           <attribute name="individualProviders"/>
           <attribute name="prRelationId"/>
           <attribute name="prHasAProviderFrom"/>
           <attribute name="prHasAProviderTo"/>
           <attribute name="prRelationRole"/>
         </attributes>
       </searchRequest>
     </batchRequest>
   </env:Body>
</env:Envelope>

Am Do., 8. Feb. 2024 um 20:24 Uhr schrieb Emmanuel Lécharny <[email protected] <mailto:[email protected]>>:

    Ok  so some more info:

    The memberOf attribute is a bit special. It's first a AcriveDirectory
    Attribute and its syntax is Distinguish Name Syntax. Which means it's
    not purely a String, which is the reason it's base64 encoded.

    Whe it comes to encode values, the following rule should apply:

    "When creating DSML messages, all Attributes whose value is Java byte
    array are Base64 encoded to String before being written in the DSML
    message.

    If when creating a DSML message an Attribute is passed whose value's
    type is neither String nor Java byte array, the value is converted to
    String by calling the object's "toString()" method and this String
    value
    is written in the DSML message.
    "
    (that is from IBM).

    OASIS is a bit more light when it comes to tell what should be base64
    encoded or not:

    "The definition of DsmlValue permits the following types: UTF-8,
    base64Binary, and any URI."

    Now, to be able to know what would be the value type, there is some
    attribute that needs to be added:

    xsi:type="xsd:base64Binary"

    Like in :

         <control type="1.2.840.113556.1.4.612" criticality="true">
            <controlValue xsi:type="xsd:base64Binary">
               U2VhcmNoIFJlcXVlc3QgRXhhbXBsZQ==
            </controlValue>
         </control>


    So I guess we should avoid ommitting this attribute when base64
    encoding
    a value.

    On 08/02/2024 18:11, Emmanuel Lecharny wrote:
     > Hi Patrick,
     >
     > I have to check why the value gets base64 encoded. I thought the
    issue
     > was already properly addressed (see
     >
    https://issues.apache.org/jira/plugins/servlet/mobile#issue/DIRAPI-369 
<https://issues.apache.org/jira/plugins/servlet/mobile#issue/DIRAPI-369>
     >
    <https://issues.apache.org/jira/plugins/servlet/mobile#issue/DIRAPI-369 
<https://issues.apache.org/jira/plugins/servlet/mobile#issue/DIRAPI-369>>)
     >
     > Regards,
     > Cordialement,
     > Emmanuel Lécharny
     > www.iktek.com <http://www.iktek.com> <http://www.iktek.com
    <http://www.iktek.com>>
     >
     >
     > Le jeu. 8 févr. 2024 à 16:22, Patrick Peer <[email protected]
    <mailto:[email protected]>
     > <mailto:[email protected] <mailto:[email protected]>>> a écrit :
     >
     >     Hi Emmanuel!
     >
     >     I finally got around to upgrading to the newest version. The good
     >     news: The value for the equalityMatch is generated
    successfully. The
     >     bad news: IHE's HPD simulator [1] seems to have problems with the
     >     base64 encoding. It seems as if the xsi:type-Attribute is not
     >     recognized and/or dropped [2].
     >     Now, I think the request should be correct in the context of
     >     HPD-queries, and that the simulator is clumsy. I will hash
    that out
     >     with the folks at IHE. However, this leads me to think that other
     >     "real" implementations of HPDs will have problems with
    base64, too.
     >
     >     I will now have to decide with my colleagues how to handle
    this. One
     >     possibility would be to generate the normal strings again. To do
     >     that, I could compile a modified version of the library myself
     >     (luckily I could get away with breaking the code for parsing
     >     requests, should that be an issue, as you hinted before).
    Still, I'd
     >     like to know how you think about reverting to generating
    strings in
     >     the official library again. At least for the case, when the
    value is
     >     a string to begin with, and a conversion to base64 would not be
     >     required.
     >
     >     In any case, thanks for the fix :)!
     >
     >     Cheers,
     >     Patrick
     >
     >     [1] https://gazelle.ihe.net/HPDSimulator/home.seam
    <https://gazelle.ihe.net/HPDSimulator/home.seam>
     >     <https://gazelle.ihe.net/HPDSimulator/home.seam
    <https://gazelle.ihe.net/HPDSimulator/home.seam>>
     >     [2]
     >
    https://gazelle.ihe.net/HPDSimulator/messages/messageDisplay.seam?id=35572 
<https://gazelle.ihe.net/HPDSimulator/messages/messageDisplay.seam?id=35572> 
<https://gazelle.ihe.net/HPDSimulator/messages/messageDisplay.seam?id=35572 
<https://gazelle.ihe.net/HPDSimulator/messages/messageDisplay.seam?id=35572>>
     >
     >     Am Di., 6. Feb. 2024 um 08:52 Uhr schrieb Emmanuel Lécharny
     >     <[email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>>:
     >
     >         Hi,
     >
     >         the release has been voted. It's available. Enjoy!
     >
     >         On 02/02/2024 12:05, Patrick Peer wrote:
     >          > Thank you very much! Much appreciated :).
     >          >
     >          > Am Fr., 2. Feb. 2024 um 10:41 Uhr schrieb Emmanuel
    Lécharny
     >          > <[email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>
     >         <mailto:[email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>>>:
     >          >
     >          >     The release is being voted. I expect to be out at the
     >         beginning of next
     >          >     week.
     >          >
     >          >     On 29/01/2024 14:03, Patrick Peer wrote:
     >          >      > Emmanuel,
     >          >      >
     >          >      > can you give me a rough estimate on when a new
    version
     >         with the
     >          >     fixes
     >          >      > will be available? I need to upgrade due to
    CVEs for
     >         dependencies of
     >          >      > older versions of org.apache.directory.api:api-all,
     >         for the
     >          >     release of
     >          >      > our own software. Thus I need to know whether I can
     >         wait for your
     >          >      > release, or need to compile the library myself.
     >          >      >
     >          >      > Cheers,
     >          >      > Patrick
     >          >      >
     >          >      > Am Mi., 6. Dez. 2023 um 09:26 Uhr schrieb
    Patrick Peer
     >          >      > <[email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>
     >         <mailto:[email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>>
     >          >     <mailto:[email protected]
    <mailto:[email protected]> <mailto:[email protected]
    <mailto:[email protected]>>
     >         <mailto:[email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>>>>:
     >          >      >
     >          >      >     Hi Emmanuel!
     >          >      >
     >          >      >      > Side note: I'd be interested to know what is
     >         your usage of the
     >          >      >     LDAP API
     >          >      >      > and why you picked it against other
    libs. Just
     >         for my
     >          >     personnal
     >          >      >     interest!
     >          >      >     I inherited the code using the LDAP API, so my
     >         best guess is:
     >          >     When
     >          >      >     Apache provides a library for the thing you
    want
     >         to do, you
     >          >     use it :).
     >          >      >     As for the actual use case, we want to query
     >         Healthcare Provider
     >          >      >     Directories (HPDs) [1].
     >          >      >
     >          >      >      > Btw, I now realize that the output is
     >         incorrect, even after my
     >          >      >     fix. The
     >          >      >      > produced DSML should still contain the
    Base64
     >         value, which is
     >          >      >     currently
     >          >      >      > not. I'll fix that.
     >          >      >     Given that this was a bug, and the filter
    values
     >         will be
     >          >     generated
     >          >      >     again, setFilter(String) _should_ work
    after the fix.
     >          >     However, given
     >          >      >     my experience in the field, I fear there
    will be
     >         problems
     >          >     with HPDs
     >          >      >     that are not prepared to handle base64
    values. I
     >         might be
     >          >     wrong on
     >          >      >     that though, and as long as IHE's HPD
    simulator is
     >         happy, I
     >          >     think I
     >          >      >     will use the simpler (for me) base64
    filters. On
     >         that note,
     >          >     do you
     >          >      >     have an estimate on when a new version will be
     >         released?
     >          >      >
     >          >      >     Cheers,
     >          >      >     Patrick
     >          >      >
     >          >      >
     >          >      >
     >          >      >     [1]
     >          >      >
     >          >
     >
    https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf <https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf> 
<https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf <https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf>> 
<https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf <https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf> 
<https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf <https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf>>> 
<https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf <https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf> 
<https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf <https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf>> 
<https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf <https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf> 
<https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf <https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf>>>> - 
3.58 Provider Information Query
     >          >      >
     >          >      >     Am Di., 5. Dez. 2023 um 23:02 Uhr schrieb
    Emmanuel
     >         Lécharny
     >          >      >     <[email protected]
    <mailto:[email protected]> <mailto:[email protected]
    <mailto:[email protected]>>
     >         <mailto:[email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>>
     >          >     <mailto:[email protected]
    <mailto:[email protected]> <mailto:[email protected]
    <mailto:[email protected]>>
     >         <mailto:[email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>>>>:
     >          >      >
     >          >      >         Ok, I get a fixed version of the setFilter(
     >         String ) that
     >          >      >         produces this
     >          >      >         output:
     >          >      >
     >          >      >         <?xml version="1.0" encoding="UTF-8"?>
     >          >      >         <batchRequest
     >         xmlns:xsd="http://www.w3.org/2001/XMLSchema
    <http://www.w3.org/2001/XMLSchema>
     >         <http://www.w3.org/2001/XMLSchema
    <http://www.w3.org/2001/XMLSchema>>
     >          >     <http://www.w3.org/2001/XMLSchema
    <http://www.w3.org/2001/XMLSchema>
     >         <http://www.w3.org/2001/XMLSchema
    <http://www.w3.org/2001/XMLSchema>>>
     >          >      >         <http://www.w3.org/2001/XMLSchema
    <http://www.w3.org/2001/XMLSchema>
     >         <http://www.w3.org/2001/XMLSchema
    <http://www.w3.org/2001/XMLSchema>>
     >          >     <http://www.w3.org/2001/XMLSchema
    <http://www.w3.org/2001/XMLSchema>
     >         <http://www.w3.org/2001/XMLSchema
    <http://www.w3.org/2001/XMLSchema>>>>"
     >          >      >
     >           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
    <http://www.w3.org/2001/XMLSchema-instance>
     >         <http://www.w3.org/2001/XMLSchema-instance
    <http://www.w3.org/2001/XMLSchema-instance>>
     >          >     <http://www.w3.org/2001/XMLSchema-instance
    <http://www.w3.org/2001/XMLSchema-instance>
     >         <http://www.w3.org/2001/XMLSchema-instance
    <http://www.w3.org/2001/XMLSchema-instance>>>
>          >      >  <http://www.w3.org/2001/XMLSchema-instance
    <http://www.w3.org/2001/XMLSchema-instance>
     >         <http://www.w3.org/2001/XMLSchema-instance
    <http://www.w3.org/2001/XMLSchema-instance>>
     >          >     <http://www.w3.org/2001/XMLSchema-instance
    <http://www.w3.org/2001/XMLSchema-instance>
     >         <http://www.w3.org/2001/XMLSchema-instance
    <http://www.w3.org/2001/XMLSchema-instance>>>>">
     >          >      >              <searchRequest
    derefAliases="derefAlways">
     >          >      >                 <filter>
     >          >      >                    <equalityMatch name="uid">
     >          >      >                       <value/>
     >          >      >                    </equalityMatch>
     >          >      >                    <equalityMatch name="uid">
     >          >      >                       <value
     >          >      >
     >          >
>  xsi:type="xsd:base64Binary">U29tZUFyYml0cmFyeUJlbmlnblN0cmluZw==</value>
     >          >      >                    </equalityMatch>
     >          >      >                 </filter>
     >          >      >              </searchRequest>
     >          >      >         </batchRequest>
     >          >      >
     >          >      >         As youc an imagine,
     >         "U29tZUFyYml0cmFyeUJlbmlnblN0cmluZw==" is
     >          >      >         "SomeArbitraryBenignString" base 64
    encoded.
     >          >      >
     >          >      >
     >          >      >         Should it do the trick?
     >          >      >
     >          >      >         On 05/12/2023 15:43, Patrick Peer wrote:
     >          >      >          > Thanks Emmanuel!
     >          >      >          >
     >          >      >          > Using a SchemaManager solved my
    immediate
     >         problem.
     >          >     However,
     >          >      >         now I need
     >          >      >          > to provide a custom Schema, since I
    need to
     >         query domain
     >          >      >         specific OIDs.
     >          >      >          > Before, the library was happy with
     >         arbitrary OIDs, and
     >          >     so was
     >          >      >         I :).
     >          >      >          >
     >          >      >          > Addressing the easy API life,
     >          >      >          >
     >          >      >
     >          >
>  org.apache.directory.api.dsmlv2.request.SearchRequestDsml.setFilter(String) seems broken to me, as this code path does not produce the expected output, and this is not obvious in any way, not to say that the semantic of this method changed without notice. Ideally, this method would not exist, but since it is required by the implemented interface, that is not easily achieved, and a bigger refactoring would be needed. That said, I, of course, do not have a deep understanding of your code base, so please take my suggestion with a grain of salt ;).
     >          >      >          >
     >          >      >          > Thanks for the improved
     >         setFilter(SchemaManager, String)
     >          >      >         method, albeit
     >          >      >          > it is secondary to me, compared to
    the changed
     >          >     semantics of
     >          >      >          > setFilter(String), and the extra setup
     >         needed to be
     >          >     able to
     >          >      >         query
     >          >      >          > arbitrary OIDs. To better illustrate
    what I
     >         mean, here
     >          >     is one
     >          >      >         of the
     >          >      >          > filters which is currently broken
    for me:
     >          >      >          >
     >          >
>  "(hcIdentifier=*1.3.6.1.4.1.21367.1776:IHENA:A-919191:Active*)"
     >          >      >          >
     >          >      >          > I am currently in the process of
    figuring
     >         out an easy
     >          >     way to
     >          >      >         add the
     >          >      >          > required OIDs to the SchemaManager, and
     >         will eventually
     >          >      >         figure it out,
     >          >      >          > but if you have any hints, I'd be
    grateful :).
     >          >      >          >
     >          >      >          > Cheers,
     >          >      >          > Patrick
     >          >      >          >
     >          >      >          > Am Di., 5. Dez. 2023 um 13:48 Uhr
    schrieb
     >         Emmanuel
     >          >     Lécharny
     >          >      >          > <[email protected]
    <mailto:[email protected]>
     >         <mailto:[email protected] <mailto:[email protected]>>
    <mailto:[email protected] <mailto:[email protected]>
     >         <mailto:[email protected] <mailto:[email protected]>>>
     >          >     <mailto:[email protected]
    <mailto:[email protected]> <mailto:[email protected]
    <mailto:[email protected]>>
     >         <mailto:[email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>>>
     >          >      >         <mailto:[email protected]
    <mailto:[email protected]>
     >         <mailto:[email protected] <mailto:[email protected]>>
    <mailto:[email protected] <mailto:[email protected]>
     >         <mailto:[email protected] <mailto:[email protected]>>>
     >          >     <mailto:[email protected]
    <mailto:[email protected]> <mailto:[email protected]
    <mailto:[email protected]>>
     >         <mailto:[email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>>>>>:
     >          >      >          >
     >          >      >          >     Hi again!
     >          >      >          >
     >          >      >          >     I have modified the LDAP API to
    be able
     >         to deal
     >          >     with the
     >          >      >         attributeType
     >          >      >          >     properly when we have a
    SchemaManager,
     >         and to do
     >          >     so in a
     >          >      >         more user
     >          >      >          >     friendly way.
     >          >      >          >
     >          >      >          >     Here is thge modified original test:
     >          >      >          >
     >          >      >          >           @Test
     >          >      >          >           public void
     >         testMinimalEqualityRequest() throws
     >          >      >         Exception {
     >          >      >          >               SearchRequestDsml
     >         searchRequest = new
     >          >      >          >
>          >  SearchRequestDsml(LdapApiServiceFactory.getSingleton());
     >          >      >          >
     >          >      >          >              // Create the SchemaManager
     >         instance
     >          >      >          >               SchemaManager
    schemaManager = new
     >          >      >         DefaultSchemaManager();
     >          >      >          >
     >          >      >          >              // Use it as a parameter so
     >         that the
     >          >     filter get
     >          >      >         properly parsed
     >          >      >          >               searchRequest.setFilter(
     >         schemaManager,
     >          >      >          >     "(uid=SomeArbitraryBenignString)" );
     >          >      >          >
     >          >      >          >
     >          >      >          >               BatchRequestDsml
    batchRequest
     >         = new
     >          >      >         BatchRequestDsml();
     >          >      >          >
     >           batchRequest.addRequest(searchRequest);
     >          >      >          >               String dsmlString =
     >         batchRequest.toDsml();
     >          >      >          >
     >          >      >          >              System.out.print(
    dsmlString );
     >          >      >          >           }
     >          >      >          >
     >          >      >          >     which prints out the expected
    result:
     >          >      >          >
     >          >      >          >     <?xml version="1.0"
    encoding="UTF-8"?>
     >          >      >          >     <batchRequest>
     >          >      >          >          <searchRequest
     >         derefAliases="derefAlways">
     >          >      >          >             <filter>
     >          >      >          >                <equalityMatch
    name="uid">
     >          >      >          >
     >           <value>SomeArbitraryBenignString</value>
     >          >      >          >                </equalityMatch>
     >          >      >          >             </filter>
     >          >      >          >          </searchRequest>
     >          >      >          >     </batchRequest>
     >          >      >          >
     >          >      >          >     It will most certainly be
    included in
     >         2.1.6.
     >          >      >          >
     >          >      >          >
     >          >      >          >     On 04/12/2023 21:18, Patrick
    Peer wrote:
     >          >      >          >      > Hello!
     >          >      >          >      >
     >          >      >          >      > I recently upgraded the version
>          >      >          >  of org.apache.directory.api:api-all from
     >          >      >          >      > 2.1.0 to 2.1.5 in the
    dependencies
     >         of our product,
     >          >      >         which resulted in
     >          >      >          >      > some test failures on my end.
    As it
     >         seems,
     >          >     values for
     >          >      >         equality
     >          >      >          >     filters
     >          >      >          >      > are not set in the request
    anymore.
     >         For your
     >          >      >         convenience, I cobbled
     >          >      >          >      > together a minimal test case to
     >         reproduce the
     >          >      >         condition [1].
     >          >      >          >     It works
     >          >      >          >      > with Version 2.1.0 and does
    not work
     >         with 2.1.5.
     >          >      >          >      >
     >          >      >          >      > Upon further investigation, I
    think
     >         I found
     >          >     some issues
     >          >      >          >      >
     >          >      >          >
     >          >      >
     >          >
>  in org.apache.directory.api.dsmlv2.request.SearchRequestDsml.toDsml(Element, ExprNode)@2.1.5:
     >          >      >          >      > + On line
    559 value.isHumanReadable() is
     >          >     queried to decide
     >          >      >          >     whether to
     >          >      >          >      > use the value as is, or to
    encode it
     >         in base64. =>
     >          >      >         This seems
     >          >      >          >     broken,
     >          >      >          >      > since, as far as I can tell,
     >          >      >          >      >
     >          >      >
     >           the org.apache.directory.api.ldap.model.entry.Value.isHR
     >          >     flag is
     >          >      >          >     always
     >          >      >          >      > false at this particular point in
     >         the code.
     >          >      >          >      >
     >          >      >          >
     >          >      >
     >          >
>  + org.apache.directory.api.dsmlv2.ParserUtils.base64Encode(Object)
     >          >     only
     >          >      >          >      > yields base64 values
    for byte[] and
     >         String,
     >          >     however here a
     >          >      >          >      >
     >         org.apache.directory.api.ldap.model.entry.Value is
     >          >      >         passed, which
     >          >      >          >     will
     >          >      >          >      > always result in an empty String.
     >          >      >          >      >
     >          >      >          >      > The corresponding commit
    should be [2].
     >          >      >          >      >
     >          >      >          >      > Do you agree that this is a
    bug, and
     >         should I jump
     >          >      >         through the
     >          >      >          >     hoops to
     >          >      >          >      > open a Jira issue, or is there an
     >          >     alternative/intended
     >          >      >         way to work
     >          >      >          >      > around this?
     >          >      >          >      >
     >          >      >          >      > Cheers,
     >          >      >          >      > Patrick Peer
     >          >      >          >      >
     >          >      >          >      >
     >          >      >          >      >
     >          >      >          >      > [1]
     >          >      >          >      > @Test
     >          >      >          >      > public void
     >         testMinimalEqualityRequest() throws
     >          >      >         Exception {
     >          >      >          >      >      SearchRequestDsml
    searchRequest
     >         = new
     >          >      >          >      >
>          >  SearchRequestDsml(LdapApiServiceFactory.getSingleton());
     >          >      >          >      >
     >          >      >
     >           searchRequest.setFilter("(uid=SomeArbitraryBenignString)");
     >          >      >          >      >
     >          >      >          >      >      BatchRequestDsml
    batchRequest = new
     >          >      >         BatchRequestDsml();
     >          >      >          >      >
     >         batchRequest.addRequest(searchRequest);
     >          >      >          >      >      String dsmlString =
     >         batchRequest.toDsml();
     >          >      >          >      >
     >          >      >          >      >
     >          >      >
>  assertThat(dsmlString).contains("SomeArbitraryBenignString");
     >          >      >          >      > }
     >          >      >          >      >
     >          >      >          >      > [2]
     >          >      >          >      >
     >          >      >          >
     >          >      >
     >          >
     >
    https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>>>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>>>>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>>>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>> 
<https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 <https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859>>>>>>
     >          >      >          >
     >          >      >          >     --
     >          >      >          >     *Emmanuel Lécharny* P. +33 (0)6
    08 33 32 61
     >          >      >          > [email protected]
    <mailto:[email protected]>
     >         <mailto:[email protected]
    <mailto:[email protected]>> <mailto:[email protected]
    <mailto:[email protected]>
     >         <mailto:[email protected] <mailto:[email protected]>>>
     >          >     <mailto:[email protected]
    <mailto:[email protected]>
     >         <mailto:[email protected]
    <mailto:[email protected]>> <mailto:[email protected]
    <mailto:[email protected]>
     >         <mailto:[email protected] <mailto:[email protected]>>>>
     >          >      >         <mailto:[email protected]
    <mailto:[email protected]>
     >         <mailto:[email protected] <mailto:[email protected]>>
     >          >     <mailto:[email protected]
    <mailto:[email protected]>
     >         <mailto:[email protected]
    <mailto:[email protected]>>> <mailto:[email protected]
    <mailto:[email protected]>
     >         <mailto:[email protected] <mailto:[email protected]>>
     >          >     <mailto:[email protected]
    <mailto:[email protected]> <mailto:[email protected]
    <mailto:[email protected]>>>>>
     >          >      >          >
     >          >      >
     >          >      >         --
     >          >      >         *Emmanuel Lécharny* P. +33 (0)6 08 33 32 61
     >          >      > [email protected]
    <mailto:[email protected]> <mailto:[email protected]
    <mailto:[email protected]>>
     >         <mailto:[email protected]
    <mailto:[email protected]> <mailto:[email protected]
    <mailto:[email protected]>>>
     >          >     <mailto:[email protected]
    <mailto:[email protected]>
     >         <mailto:[email protected]
    <mailto:[email protected]>> <mailto:[email protected]
    <mailto:[email protected]>
     >         <mailto:[email protected] <mailto:[email protected]>>>>
     >          >      >
     >          >
     >          >     --
     >          >     *Emmanuel Lécharny* P. +33 (0)6 08 33 32 61
     >          > [email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>
     >         <mailto:[email protected]
    <mailto:[email protected]> <mailto:[email protected]
    <mailto:[email protected]>>>
     >          >
     >
     >
     >         --
     >         *Emmanuel Lécharny* P. +33 (0)6 08 33 32 61
     > [email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>
     >

-- *Emmanuel Lécharny* P. +33 (0)6 08 33 32 61
    [email protected] <mailto:[email protected]>


--
*Emmanuel Lécharny* P. +33 (0)6 08 33 32 61
[email protected]

Reply via email to