我必须使用ContentSyncRequestControl
Unboundid sdk 搜索已修改(添加、删除、修改)条目,但它显示所有已修改条目的状态。
到目前为止我做了什么
LDAPConnection ldapConnection = null;
try {
/*Apache LDAP*/
ldapConnection = new LDAPConnection("192.168.0.0", 389);
ldapConnection.bind("uid=test,ou=system", "mypassword");
Scanner sc = new Scanner(System.in);
ASN1OctetString cookie = null;
int choice = 3;
while (true) {
SearchRequest searchRequest = new SearchRequest(ldapConnection
.getRootDSE().getAttributeValue("namingContexts"),
SearchScope.SUB, "(&(objectclass=person))",
"createTimestamp","modifyTimestamp","sn","mobile","givenName","ucMiddleName","mail",
"isDeleted");
ContentSyncRequestControl control = new ContentSyncRequestControl(ContentSyncRequestMode.REFRESH_AND_PERSIST);
//added control to request
searchRequest.addControl(control);
final SearchResult searchResult = ldapConnection.search(searchRequest);
java.util.List<SearchResultEntry> entries = searchResult
.getSearchEntries();
int count = 0;
for (SearchResultEntry entry : entries) {
System.out.println(entry.getAttributes());
++count;
}
System.out.println("Press 0 for exit");
choice = sc.nextInt();
if (choice == 0) {
System.exit(0);
}
}
} catch (LDAPSearchException e) {
e.printStackTrace();
} catch (LDAPException e) {
e.printStackTrace();
}
但这向我显示了所有已修改条目的状态。
同样,当我浏览ContentSyncRequestControl
类API 文档时,我发现要记住以下几点。但我不知道如何设置以下内容
1] 关联的搜索请求应该有一个 SearchResultListener 以便条目在返回后立即可用,而不必等待搜索完成和/或通过将条目存储在列表中来消耗大量内存仅在搜索完成时可用。
2] 从搜索返回的条目和引用应包括 ContentSyncStateControl 和相关的 entryUUID,并可能包含一个带有更新的同步会话状态的 cookie。您应该在搜索结果条目和引用上调用 getControl(ContentSyncStateControl.SYNC_STATE_OID) 以检索具有同步状态信息的控件。
3] 如果搜索完成,则 SearchResult 可能包含一个 ContentSyncDoneControl 和更新的同步状态信息。您应该调用 getResponseControl(ContentSyncDoneControl.SYNC_DONE_OID) 来检索具有同步状态信息的控件。
谁可以帮我这个事 ?谢谢...
编辑
添加控件后,我仍然得到修改条目的所有条目。
现在我正在使用
ContentSyncRequestControl(ContentSyncRequestMode mode)
构造函数,那么我该如何使用这种形式的构造函数有人可以帮助我吗
ContentSyncRequestControl(boolean isCritical, ContentSyncRequestMode mode, ASN1OctetString cookie, boolean reloadHint)
当我使用ContentSyncRequestMode.REFRESH_ONLY
它时,它会给我所有条目,但是当我使用ContentSyncRequestMode.REFRESH_AND_PERSIST
模式时,它会进入无限循环。
那么有人可以帮我解决这个问题吗...?