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

Reply via email to