package com.hwlcn.ldap.ldap.sdk;
import java.util.List;
import com.hwlcn.core.annotation.NotMutable;
import com.hwlcn.ldap.util.StaticUtils;
import com.hwlcn.core.annotation.ThreadSafety;
import com.hwlcn.ldap.util.ThreadSafetyLevel;
@NotMutable()
@ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
public final class LDAPSearchException
extends LDAPException
{
private static final long serialVersionUID = 350230437196125113L;
private final SearchResult searchResult;
public LDAPSearchException(final ResultCode resultCode,
final String errorMessage)
{
super(resultCode, errorMessage);
searchResult = new SearchResult(-1, resultCode, errorMessage, null,
StaticUtils.NO_STRINGS, 0, 0, StaticUtils.NO_CONTROLS);
}
public LDAPSearchException(final ResultCode resultCode,
final String errorMessage, final Throwable cause)
{
super(resultCode, errorMessage, cause);
searchResult = new SearchResult(-1, resultCode, errorMessage, null,
StaticUtils.NO_STRINGS , 0, 0, StaticUtils.NO_CONTROLS);
}
public LDAPSearchException(final LDAPException ldapException)
{
super(ldapException.getResultCode(), ldapException.getMessage(),
ldapException.getMatchedDN(), ldapException.getReferralURLs(),
ldapException.getResponseControls(), ldapException);
if (ldapException instanceof LDAPSearchException)
{
final LDAPSearchException lse = (LDAPSearchException) ldapException;
searchResult = lse.searchResult;
}
else
{
searchResult = new SearchResult(-1, ldapException.getResultCode(),
ldapException.getMessage(),
ldapException.getMatchedDN(),
ldapException.getReferralURLs(), 0, 0,
ldapException.getResponseControls());
}
}
public LDAPSearchException(final SearchResult searchResult)
{
super(searchResult);
this.searchResult = searchResult;
}
public SearchResult getSearchResult()
{
return searchResult;
}
public int getEntryCount()
{
return searchResult.getEntryCount();
}
public int getReferenceCount()
{
return searchResult.getReferenceCount();
}
public List<SearchResultEntry> getSearchEntries()
{
return searchResult.getSearchEntries();
}
public List<SearchResultReference> getSearchReferences()
{
return searchResult.getSearchReferences();
}
@Override()
public SearchResult toLDAPResult()
{
return searchResult;
}
@Override()
public void toString(final StringBuilder buffer)
{
buffer.append("LDAPSearchException(resultCode=");
buffer.append(getResultCode());
buffer.append(", numEntries=");
buffer.append(searchResult.getEntryCount());
buffer.append(", numReferences=");
buffer.append(searchResult.getReferenceCount());
final String errorMessage = getMessage();
if (errorMessage != null)
{
buffer.append(", errorMessage='");
buffer.append(errorMessage);
buffer.append('\'');
}
final String matchedDN = getMatchedDN();
if (matchedDN != null)
{
buffer.append(", matchedDN='");
buffer.append(matchedDN);
buffer.append('\'');
}
final String[] referralURLs = getReferralURLs();
if (referralURLs.length > 0)
{
buffer.append(", referralURLs={");
for (int i=0; i < referralURLs.length; i++)
{
if (i > 0)
{
buffer.append(", ");
}
buffer.append('\'');
buffer.append(referralURLs[i]);
buffer.append('\'');
}
buffer.append('}');
}
final Control[] responseControls = getResponseControls();
if (responseControls.length > 0)
{
buffer.append(", responseControls={");
for (int i=0; i < responseControls.length; i++)
{
if (i > 0)
{
buffer.append(", ");
}
buffer.append(responseControls[i]);
}
buffer.append('}');
}
buffer.append(')');
}
}