It's definitely a problem.
On 3/6/2018 5:03 PM, George S. wrote:
I looked at
LdapNetworkConnection.search(String,String,SearchScope,String...) and
it's a wrapper around a call to search using a SearchRequest, and
constructing a EntryCursorImpl from the SearchCursor.
There seems to be something wrong in EntryCursorImpl. If I change my
code to use a SearchRequest, then I get results in a SearchCursor and
I can iterate over them.
Looking at the code, EntryCursorImpl implicitly calls
searchCursor.available(), which is returning false because it appears
response is not set until a call to next(). See SearchResultImpl line
117 or so.
public Collection<Response>search(String base,String...
attributeNames)throws LdapException{
if (attributeNames.length ==0){
attributeNames =new String[]{
"distinguishedName","objectClass","name",
prop.getProperty("emailAddress","mail")};
}
Collection<Response> entries =new ArrayList<>();
SearchRequest sr=new SearchRequestImpl();
sr.setBase(new Dn(base));
sr.setTimeLimit(Integer.MAX_VALUE);
sr.setFilter("(objectclass=*)");
sr.addAttributes(attributeNames);
sr.setScope(SearchScope.ONELEVEL);
sr.setDerefAliases(AliasDerefMode.DEREF_ALWAYS);
SearchCursor cursor = lc.search(sr);
// EntryCursor cursor=new EntryCursorImpl(scursor);
if (isDebugMode()){
System.err.print("search(\""+base+"\"");
for (String s : attributeNames){
System.err.print(",\""+s+"\"");
}
System.err.println(");");
}
if (true || cursor.available()){
for (Response entry: cursor){
entries.add(entry);
}
} else {
if (isDebugMode()){
System.err.println("SearchResults came back null!");
}
}
try {
cursor.close();
} catch (IOException ioeClose){
ioeClose.printStackTrace(System.err);
}
return entries;
}
On 3/6/2018 4:27 PM, Emmanuel Lécharny wrote:
Le 07/03/2018 à 00:08, George S. a écrit :
and, just to throw in another point, I've got some other code using the
Novell LDAP API library and it is able to do the query, and I can use
JXplorer to browse the tree.
It's really looking like there's something wrong in the library.
Sorry, I missed the point. Removed the 'if ( cursor.available() )', it
should work.
--
George S.
*MH Software, Inc.*
Voice: 303 438 9585
http://www.mhsoftware.com