From f2160f4bd1c8ac67e5a86a6710d431e8932877f9 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 28 May 2010 11:47:51 +0000
Subject: [PATCH] Synchronize SDK on java.net with internal repository.
---
sdk/src/com/sun/opends/sdk/ldap/LDAPSearchFutureResultImpl.java | 67 +++++++++++++++++++++++----------
1 files changed, 46 insertions(+), 21 deletions(-)
diff --git a/sdk/src/com/sun/opends/sdk/ldap/LDAPSearchFutureResultImpl.java b/sdk/src/com/sun/opends/sdk/ldap/LDAPSearchFutureResultImpl.java
index 9a2f116..5385a1c 100644
--- a/sdk/src/com/sun/opends/sdk/ldap/LDAPSearchFutureResultImpl.java
+++ b/sdk/src/com/sun/opends/sdk/ldap/LDAPSearchFutureResultImpl.java
@@ -29,10 +29,7 @@
-import org.opends.sdk.ResultCode;
-import org.opends.sdk.FutureResult;
-import org.opends.sdk.ResultHandler;
-import org.opends.sdk.SearchResultHandler;
+import org.opends.sdk.*;
import org.opends.sdk.requests.SearchRequest;
import org.opends.sdk.responses.Responses;
import org.opends.sdk.responses.Result;
@@ -45,27 +42,30 @@
* Search result future implementation.
*/
final class LDAPSearchFutureResultImpl extends
- AbstractLDAPFutureResultImpl<Result> implements FutureResult<Result>
+ AbstractLDAPFutureResultImpl<Result> implements FutureResult<Result>,
+ SearchResultHandler
{
- private final SearchResultHandler searchResultHandler;
+ private SearchResultHandler searchResultHandler;
private final SearchRequest request;
- LDAPSearchFutureResultImpl(int messageID, SearchRequest request,
- ResultHandler<Result> resultHandler,
- SearchResultHandler searchResultHandler, LDAPConnection connection)
+ LDAPSearchFutureResultImpl(final int messageID, final SearchRequest request,
+ final ResultHandler<Result> resultHandler,
+ final SearchResultHandler searchResultHandler,
+ final IntermediateResponseHandler intermediateResponseHandler,
+ final AsynchronousConnection connection)
{
- super(messageID, resultHandler, connection);
+ super(messageID, resultHandler, intermediateResponseHandler, connection);
this.request = request;
this.searchResultHandler = searchResultHandler;
}
- void handleSearchResultEntry(SearchResultEntry entry)
+ public boolean handleEntry(final SearchResultEntry entry)
{
// FIXME: there's a potential race condition here - the future could
// get cancelled between the isDone() call and the handler
@@ -73,16 +73,21 @@
// the synchronizer.
if (!isDone())
{
+ updateTimestamp();
if (searchResultHandler != null)
{
- searchResultHandler.handleEntry(entry);
+ if (!searchResultHandler.handleEntry(entry))
+ {
+ searchResultHandler = null;
+ }
}
}
+ return true;
}
- void handleSearchResultReference(SearchResultReference reference)
+ public boolean handleReference(final SearchResultReference reference)
{
// FIXME: there's a potential race condition here - the future could
// get cancelled between the isDone() call and the handler
@@ -90,23 +95,30 @@
// the synchronizer.
if (!isDone())
{
+ updateTimestamp();
if (searchResultHandler != null)
{
- searchResultHandler.handleReference(reference);
+ if (!searchResultHandler.handleReference(reference))
+ {
+ searchResultHandler = null;
+ }
}
}
+ return true;
}
- /**
- * {@inheritDoc}
- */
- Result newErrorResult(ResultCode resultCode,
- String diagnosticMessage, Throwable cause)
+ @Override
+ public String toString()
{
- return Responses.newResult(resultCode).setDiagnosticMessage(
- diagnosticMessage).setCause(cause);
+ final StringBuilder sb = new StringBuilder();
+ sb.append("LDAPSearchFutureResultImpl(");
+ sb.append("request = ");
+ sb.append(request);
+ super.toString(sb);
+ sb.append(")");
+ return sb.toString();
}
@@ -115,4 +127,17 @@
{
return request;
}
+
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ Result newErrorResult(final ResultCode resultCode,
+ final String diagnosticMessage, final Throwable cause)
+ {
+ return Responses.newResult(resultCode).setDiagnosticMessage(
+ diagnosticMessage).setCause(cause);
+ }
}
--
Gitblit v1.10.0