package com.hwlcn.ldap.ldap.sdk;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.hwlcn.core.annotation.InternalUseOnly;
import com.hwlcn.core.annotation.Mutable;
import com.hwlcn.core.annotation.ThreadSafety;
import com.hwlcn.ldap.util.ThreadSafetyLevel;
@Mutable()
@ThreadSafety(level=ThreadSafetyLevel.NOT_THREADSAFE)
public final class BasicAsyncSearchResultListener
implements AsyncSearchResultListener
{
private static final long serialVersionUID = 2289128360755244209L;
private final List<SearchResultEntry> entryList;
private final List<SearchResultReference> referenceList;
private volatile SearchResult searchResult;
public BasicAsyncSearchResultListener()
{
searchResult = null;
entryList = new ArrayList<SearchResultEntry>(5);
referenceList = new ArrayList<SearchResultReference>(5);
}
@InternalUseOnly()
public void searchEntryReturned(final SearchResultEntry searchEntry)
{
entryList.add(searchEntry);
}
@InternalUseOnly()
public void searchReferenceReturned(
final SearchResultReference searchReference)
{
referenceList.add(searchReference);
}
@InternalUseOnly()
public void searchResultReceived(final AsyncRequestID requestID,
final SearchResult searchResult)
{
this.searchResult = searchResult;
}
public SearchResult getSearchResult()
{
return searchResult;
}
public List<SearchResultEntry> getSearchEntries()
{
return Collections.unmodifiableList(entryList);
}
public List<SearchResultReference> getSearchReferences()
{
return Collections.unmodifiableList(referenceList);
}
}