From 22094368c2865dcfb6daf8366425212b721a4657 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Thu, 05 Feb 2009 17:42:14 +0000
Subject: [PATCH] Merge ASN1 branch to trunk
---
opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java | 539 ++++++++++++++++++++++++++++++++++-------------------------
1 files changed, 311 insertions(+), 228 deletions(-)
diff --git a/opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java b/opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java
index ffa9b75..171be52 100644
--- a/opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java
+++ b/opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java
@@ -25,25 +25,26 @@
* Copyright 2006-2008 Sun Microsystems, Inc.
*/
package org.opends.dsml.protocol;
+
+
+
import org.opends.messages.Message;
-
-
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
+
import javax.xml.bind.JAXBElement;
+
import org.opends.server.protocols.asn1.ASN1Exception;
-import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.ldap.LDAPAttribute;
import org.opends.server.protocols.ldap.LDAPConstants;
import org.opends.server.protocols.ldap.LDAPFilter;
import org.opends.server.protocols.ldap.LDAPMessage;
import org.opends.server.protocols.ldap.SearchRequestProtocolOp;
import org.opends.server.protocols.ldap.SearchResultEntryProtocolOp;
-import org.opends.server.protocols.ldap.SearchResultReferenceProtocolOp;
import org.opends.server.protocols.ldap.SearchResultDoneProtocolOp;
import org.opends.server.tools.LDAPConnection;
import org.opends.server.types.ByteString;
@@ -55,17 +56,21 @@
/**
- * This class provides the functionality for the performing an
- * LDAP SEARCH operation based on the specified DSML request.
+ * This class provides the functionality for the performing an LDAP
+ * SEARCH operation based on the specified DSML request.
*/
public class DSMLSearchOperation
{
+
private LDAPConnection connection;
+
+
/**
* Create the instance with the specified connection.
*
- * @param connection The LDAP connection to send the request on.
+ * @param connection
+ * The LDAP connection to send the request on.
*/
public DSMLSearchOperation(LDAPConnection connection)
@@ -73,301 +78,381 @@
this.connection = connection;
}
+
+
/**
- * Returns a new AND search filter with the provided filter components.
+ * Returns a new AND search filter with the provided filter
+ * components.
*
- * @param filterSet The filter components for this filter
- *
- * @return a new AND search filter with the provided filter components.
- *
- * @throws LDAPException an LDAPException is thrown if the creation of a
- * filter component fails.
+ * @param filterSet
+ * The filter components for this filter
+ * @return a new AND search filter with the provided filter
+ * components.
+ * @throws LDAPException
+ * an LDAPException is thrown if the creation of a filter
+ * component fails.
*/
private static LDAPFilter createANDFilter(FilterSet filterSet)
- throws LDAPException {
+ throws LDAPException
+ {
List<JAXBElement<?>> list = filterSet.getFilterGroup();
ArrayList<RawFilter> filters = new ArrayList<RawFilter>(list.size());
- for(JAXBElement<?> filter : list) {
+ for (JAXBElement<?> filter : list)
+ {
filters.add(createFilter(filter));
}
return LDAPFilter.createANDFilter(filters);
}
+
+
/**
- * Returns a new Approximate search filter with the provided information.
+ * Returns a new Approximate search filter with the provided
+ * information.
*
- * @param ava the attribute value assertion for this approximate filter.
- *
- * @return a new Approximate search filter with the provided information.
+ * @param ava
+ * the attribute value assertion for this approximate
+ * filter.
+ * @return a new Approximate search filter with the provided
+ * information.
*/
private static LDAPFilter createApproximateFilter(AttributeValueAssertion ava)
{
- return LDAPFilter.createApproximateFilter(ava.getName(),
- new ASN1OctetString(ava.getValue()));
+ return LDAPFilter.createApproximateFilter(ava.getName(), ByteString
+ .valueOf(ava.getValue()));
}
+
+
/**
- * Returns a new Equality search filter with the provided information.
+ * Returns a new Equality search filter with the provided
+ * information.
*
- * @param ava the attribute value assertion for this Equality filter.
- *
- * @return a new Equality search filter with the provided information.
+ * @param ava
+ * the attribute value assertion for this Equality filter.
+ * @return a new Equality search filter with the provided
+ * information.
*/
- private static LDAPFilter createEqualityFilter(AttributeValueAssertion ava) {
- return LDAPFilter.createEqualityFilter(ava.getName(),
- new ASN1OctetString(ava.getValue()));
+ private static LDAPFilter createEqualityFilter(AttributeValueAssertion ava)
+ {
+ return LDAPFilter.createEqualityFilter(ava.getName(), ByteString
+ .valueOf(ava.getValue()));
}
+
+
/**
- * Returns a new Extensible search filter with the provided information.
+ * Returns a new Extensible search filter with the provided
+ * information.
*
- * @param mra the matching rule assertion for this Extensible filter.
- *
- * @return a new Extensible search filter with the provided information.
+ * @param mra
+ * the matching rule assertion for this Extensible filter.
+ * @return a new Extensible search filter with the provided
+ * information.
*/
- private static LDAPFilter createExtensibleFilter(MatchingRuleAssertion mra) {
- return LDAPFilter.createExtensibleFilter(mra.getMatchingRule(),
- mra.getName(),
- new ASN1OctetString(mra.getValue()),
- mra.isDnAttributes());
+ private static LDAPFilter createExtensibleFilter(MatchingRuleAssertion mra)
+ {
+ return LDAPFilter.createExtensibleFilter(mra.getMatchingRule(), mra
+ .getName(), ByteString.valueOf(mra.getValue()), mra.isDnAttributes());
}
+
+
/**
- * Returns a new GreaterOrEqual search filter with the provided information.
+ * Returns a new GreaterOrEqual search filter with the provided
+ * information.
*
- * @param ava the attribute value assertion for this GreaterOrEqual filter.
- *
- * @return a new GreaterOrEqual search filter with the provided information.
+ * @param ava
+ * the attribute value assertion for this GreaterOrEqual
+ * filter.
+ * @return a new GreaterOrEqual search filter with the provided
+ * information.
*/
private static LDAPFilter createGreaterOrEqualFilter(
- AttributeValueAssertion ava) {
- return LDAPFilter.createGreaterOrEqualFilter(ava.getName(),
- new ASN1OctetString(ava.getValue()));
+ AttributeValueAssertion ava)
+ {
+ return LDAPFilter.createGreaterOrEqualFilter(ava.getName(), ByteString
+ .valueOf(ava.getValue()));
}
+
+
/**
- * Returns a new LessOrEqual search filter with the provided information.
+ * Returns a new LessOrEqual search filter with the provided
+ * information.
*
- * @param ava the attribute value assertion for this LessOrEqual filter.
- *
- * @return a new LessOrEqual search filter with the provided information.
+ * @param ava
+ * the attribute value assertion for this LessOrEqual
+ * filter.
+ * @return a new LessOrEqual search filter with the provided
+ * information.
*/
- private static LDAPFilter createLessOrEqualFilter(
- AttributeValueAssertion ava) {
- return LDAPFilter.createLessOrEqualFilter(ava.getName(),
- new ASN1OctetString(ava.getValue()));
+ private static LDAPFilter createLessOrEqualFilter(AttributeValueAssertion ava)
+ {
+ return LDAPFilter.createLessOrEqualFilter(ava.getName(), ByteString
+ .valueOf(ava.getValue()));
}
+
+
/**
* Returns a new NOT search filter with the provided information.
*
- * @param filter the filter for this NOT filter.
- *
+ * @param filter
+ * the filter for this NOT filter.
* @return a new NOT search filter with the provided information.
- *
- * @throws LDAPException an LDAPException is thrown if the creation of the
- * provided filter fails.
+ * @throws LDAPException
+ * an LDAPException is thrown if the creation of the
+ * provided filter fails.
*/
- private static LDAPFilter createNOTFilter(Filter filter)
- throws LDAPException {
+ private static LDAPFilter createNOTFilter(Filter filter) throws LDAPException
+ {
return LDAPFilter.createNOTFilter(createFilter(filter));
}
+
+
/**
- * Returns a new OR search filter with the provided filter components.
+ * Returns a new OR search filter with the provided filter
+ * components.
*
- * @param filterSet The filter components for this filter
- *
- * @return a new OR search filter with the provided filter components.
- *
- * @throws LDAPException an LDAPException is thrown if the creation of a
- * filter component fails.
+ * @param filterSet
+ * The filter components for this filter
+ * @return a new OR search filter with the provided filter
+ * components.
+ * @throws LDAPException
+ * an LDAPException is thrown if the creation of a filter
+ * component fails.
*/
private static LDAPFilter createORFilter(FilterSet filterSet)
- throws LDAPException {
+ throws LDAPException
+ {
List<JAXBElement<?>> list = filterSet.getFilterGroup();
ArrayList<RawFilter> filters = new ArrayList<RawFilter>(list.size());
- for(JAXBElement<?> filter : list) {
+ for (JAXBElement<?> filter : list)
+ {
filters.add(createFilter(filter));
}
return LDAPFilter.createORFilter(filters);
}
+
+
/**
- * Returns a new Present search filter with the provided information.
+ * Returns a new Present search filter with the provided
+ * information.
*
- * @param ad the attribute description for this Present filter.
- *
+ * @param ad
+ * the attribute description for this Present filter.
* @returna new Present search filter with the provided information.
- *
- * @throws LDAPException an LDAPException is thrown if the ASN.1 element
- * provided by the attribute description cannot be
- * decoded as a raw search filter.
+ * @throws LDAPException
+ * an LDAPException is thrown if the ASN.1 element
+ * provided by the attribute description cannot be decoded
+ * as a raw search filter.
*/
private static LDAPFilter createPresentFilter(AttributeDescription ad)
- throws LDAPException {
- return LDAPFilter.decode(
- new StringBuilder(ad.getName()).append("=*").toString());
+ throws LDAPException
+ {
+ return LDAPFilter.decode(new StringBuilder(ad.getName()).append("=*")
+ .toString());
}
+
+
/**
- * Returns a new Substring search filter with the provided information.
+ * Returns a new Substring search filter with the provided
+ * information.
*
- * @param sf the substring filter for this Substring filter.
- *
- * @return a new Substring search filter with the provided information.
+ * @param sf
+ * the substring filter for this Substring filter.
+ * @return a new Substring search filter with the provided
+ * information.
*/
- private static LDAPFilter createSubstringFilter(SubstringFilter sf) {
+ private static LDAPFilter createSubstringFilter(SubstringFilter sf)
+ {
List<String> anys = sf.getAny();
- ArrayList<ByteString> subAnyElements =
- new ArrayList<ByteString>(anys.size());
+ ArrayList<ByteString> subAnyElements = new ArrayList<ByteString>(anys
+ .size());
- for(String s : anys) {
- subAnyElements.add(new ASN1OctetString(s));
+ for (String s : anys)
+ {
+ subAnyElements.add(ByteString.valueOf(s));
}
- return LDAPFilter.createSubstringFilter(sf.getName(),
- new ASN1OctetString(sf.getInitial()),
- subAnyElements,
- new ASN1OctetString(sf.getFinal()));
+ return LDAPFilter.createSubstringFilter(sf.getName(), ByteString.valueOf(sf
+ .getInitial()), subAnyElements, ByteString.valueOf(sf.getFinal()));
}
+
+
/**
- * Returns a new LDAPFilter according to the tag name of the provided element
- * that can be "and", "or", "not", "equalityMatch", "substrings",
- * "greaterOrEqual", "lessOrEqual", "present", "approxMatch",
- * "extensibleMatch".
+ * Returns a new LDAPFilter according to the tag name of the
+ * provided element that can be "and", "or", "not", "equalityMatch",
+ * "substrings", "greaterOrEqual", "lessOrEqual", "present",
+ * "approxMatch", "extensibleMatch".
*
- * @param xmlElement a JAXBElement that contains the name of the filter to
- * create and the associated argument.
- *
- * @return a new LDAPFilter according to the tag name of the provided element.
- *
- * @throws LDAPException an LDAPException is thrown if the creation of the
- * targeted filter fails.
+ * @param xmlElement
+ * a JAXBElement that contains the name of the filter to
+ * create and the associated argument.
+ * @return a new LDAPFilter according to the tag name of the
+ * provided element.
+ * @throws LDAPException
+ * an LDAPException is thrown if the creation of the
+ * targeted filter fails.
*/
private static LDAPFilter createFilter(JAXBElement<?> xmlElement)
- throws LDAPException {
+ throws LDAPException
+ {
LDAPFilter result = null;
String filterName = xmlElement.getName().getLocalPart();
- if ( "and".equals(filterName) ) {
+ if ("and".equals(filterName))
+ {
// <xsd:element name="and" type="FilterSet"/>
- result = createANDFilter((FilterSet)xmlElement.getValue());
+ result = createANDFilter((FilterSet) xmlElement.getValue());
}
- else if ( "or".equals(filterName) ) {
+ else if ("or".equals(filterName))
+ {
// <xsd:element name="or" type="FilterSet"/>
- result = createORFilter((FilterSet)xmlElement.getValue());
+ result = createORFilter((FilterSet) xmlElement.getValue());
}
- else if ( "not".equals(filterName) ) {
+ else if ("not".equals(filterName))
+ {
// <xsd:element name="not" type="Filter"/>
- result = createNOTFilter((Filter)xmlElement.getValue());
+ result = createNOTFilter((Filter) xmlElement.getValue());
}
- else if ( "equalityMatch".equals(filterName) ) {
- // <xsd:element name="equalityMatch" type="AttributeValueAssertion"/>
- result = createEqualityFilter((AttributeValueAssertion)
- xmlElement.getValue());
+ else if ("equalityMatch".equals(filterName))
+ {
+ // <xsd:element name="equalityMatch"
+ // type="AttributeValueAssertion"/>
+ result = createEqualityFilter((AttributeValueAssertion) xmlElement
+ .getValue());
}
- else if ( "substrings".equals(filterName) ) {
+ else if ("substrings".equals(filterName))
+ {
// <xsd:element name="substrings" type="SubstringFilter"/>
- result = createSubstringFilter((SubstringFilter)xmlElement.getValue());
+ result = createSubstringFilter((SubstringFilter) xmlElement.getValue());
}
- else if ( "greaterOrEqual".equals(filterName) ) {
- // <xsd:element name="greaterOrEqual" type="AttributeValueAssertion"/>
- result = createGreaterOrEqualFilter((AttributeValueAssertion)
- xmlElement.getValue());
+ else if ("greaterOrEqual".equals(filterName))
+ {
+ // <xsd:element name="greaterOrEqual"
+ // type="AttributeValueAssertion"/>
+ result = createGreaterOrEqualFilter((AttributeValueAssertion) xmlElement
+ .getValue());
}
- else if ( "lessOrEqual".equals(filterName) ) {
- // <xsd:element name="lessOrEqual" type="AttributeValueAssertion"/>
- result = createLessOrEqualFilter((AttributeValueAssertion)
- xmlElement.getValue());
+ else if ("lessOrEqual".equals(filterName))
+ {
+ // <xsd:element name="lessOrEqual"
+ // type="AttributeValueAssertion"/>
+ result = createLessOrEqualFilter((AttributeValueAssertion) xmlElement
+ .getValue());
}
- else if ( "present".equals(filterName) ) {
+ else if ("present".equals(filterName))
+ {
// <xsd:element name="present" type="AttributeDescription"/>
- result = createPresentFilter((AttributeDescription)xmlElement.getValue());
+ result =
+ createPresentFilter((AttributeDescription) xmlElement.getValue());
}
- else if ( "approxMatch".equals(filterName) ) {
- // <xsd:element name="approxMatch" type="AttributeValueAssertion"/>
- result = createApproximateFilter((AttributeValueAssertion)
- xmlElement.getValue());
+ else if ("approxMatch".equals(filterName))
+ {
+ // <xsd:element name="approxMatch"
+ // type="AttributeValueAssertion"/>
+ result = createApproximateFilter((AttributeValueAssertion) xmlElement
+ .getValue());
}
- else if ( "extensibleMatch".equals(filterName) ) {
- // <xsd:element name="extensibleMatch" type="MatchingRuleAssertion"/>
- result = createExtensibleFilter((MatchingRuleAssertion)
- xmlElement.getValue());
+ else if ("extensibleMatch".equals(filterName))
+ {
+ // <xsd:element name="extensibleMatch"
+ // type="MatchingRuleAssertion"/>
+ result = createExtensibleFilter((MatchingRuleAssertion) xmlElement
+ .getValue());
}
return result;
}
+
+
/**
- * Returns a new LDAPFilter according to the filter assigned to the provided
- * filter.
+ * Returns a new LDAPFilter according to the filter assigned to the
+ * provided filter.
*
- * @param filter a filter that contains the object filter to create.
- *
- * @return a new LDAPFilter according to the filter assigned to the provided
- * filter.
- *
- * @throws LDAPException an LDAPException is thrown if the creation of the
- * targeted filter fails.
+ * @param filter
+ * a filter that contains the object filter to create.
+ * @return a new LDAPFilter according to the filter assigned to the
+ * provided filter.
+ * @throws LDAPException
+ * an LDAPException is thrown if the creation of the
+ * targeted filter fails.
*/
- private static LDAPFilter createFilter(Filter filter)
- throws LDAPException {
+ private static LDAPFilter createFilter(Filter filter) throws LDAPException
+ {
LDAPFilter result = null;
- if ( filter.getAnd() != null ) {
+ if (filter.getAnd() != null)
+ {
result = createANDFilter(filter.getAnd());
}
- else if ( filter.getApproxMatch() != null ) {
+ else if (filter.getApproxMatch() != null)
+ {
result = createApproximateFilter(filter.getApproxMatch());
}
- else if ( filter.getEqualityMatch() != null ) {
+ else if (filter.getEqualityMatch() != null)
+ {
result = createEqualityFilter(filter.getEqualityMatch());
}
- else if ( filter.getExtensibleMatch() != null ) {
+ else if (filter.getExtensibleMatch() != null)
+ {
result = createExtensibleFilter(filter.getExtensibleMatch());
}
- else if ( filter.getGreaterOrEqual() != null ) {
+ else if (filter.getGreaterOrEqual() != null)
+ {
result = createGreaterOrEqualFilter(filter.getGreaterOrEqual());
}
- else if ( filter.getLessOrEqual() != null ) {
+ else if (filter.getLessOrEqual() != null)
+ {
result = createLessOrEqualFilter(filter.getLessOrEqual());
}
- else if ( filter.getNot() != null ) {
+ else if (filter.getNot() != null)
+ {
result = createNOTFilter(filter.getNot());
}
- else if ( filter.getOr() != null ) {
+ else if (filter.getOr() != null)
+ {
result = createORFilter(filter.getOr());
}
- else if ( filter.getPresent() != null ) {
+ else if (filter.getPresent() != null)
+ {
result = createPresentFilter(filter.getPresent());
}
- else if ( filter.getSubstrings() != null ) {
+ else if (filter.getSubstrings() != null)
+ {
result = createSubstringFilter(filter.getSubstrings());
}
return result;
}
+
+
/**
* Perform the LDAP SEARCH operation and send the result back to the
* client.
*
- * @param objFactory The object factory for this operation.
- * @param searchRequest The search request for this operation.
- *
- * @return The result of the add operation.
- *
- * @throws IOException If an I/O problem occurs.
- *
- * @throws LDAPException If an error occurs while interacting with an LDAP
- * element.
+ * @param objFactory
+ * The object factory for this operation.
+ * @param searchRequest
+ * The search request for this operation.
+ * @return The result of the add operation.
+ * @throws IOException
+ * If an I/O problem occurs.
+ * @throws LDAPException
+ * If an error occurs while interacting with an LDAP
+ * element.
*/
public SearchResponse doSearch(ObjectFactory objFactory,
- SearchRequest searchRequest)
- throws IOException, LDAPException
+ SearchRequest searchRequest) throws IOException, LDAPException
{
SearchResponse searchResponse = objFactory.createSearchResponse();
searchResponse.setRequestID(searchRequest.getRequestID());
@@ -391,10 +476,11 @@
SearchScope scope = SearchScope.WHOLE_SUBTREE;
String scopeStr = searchRequest.getScope().toLowerCase();
- if(scopeStr.equals("singlelevel") || scopeStr.equals("one"))
+ if (scopeStr.equals("singlelevel") || scopeStr.equals("one"))
{
scope = SearchScope.SINGLE_LEVEL;
- } else if(scopeStr.equals("baseobject") || scopeStr.equals("base"))
+ }
+ else if (scopeStr.equals("baseobject") || scopeStr.equals("base"))
{
scope = SearchScope.BASE_OBJECT;
}
@@ -402,25 +488,23 @@
LinkedHashSet<String> attributes = new LinkedHashSet<String>();
// Get the list of attributes.
AttributeDescriptions attrDescriptions = searchRequest.getAttributes();
- if(attrDescriptions != null)
+ if (attrDescriptions != null)
{
List<AttributeDescription> attrDesc = attrDescriptions.getAttribute();
- for(AttributeDescription desc : attrDesc)
+ for (AttributeDescription desc : attrDesc)
{
attributes.add(desc.getName());
}
}
- SearchRequestProtocolOp protocolOp = new SearchRequestProtocolOp(
- new ASN1OctetString(searchRequest.getDn()),
- scope, derefPolicy,
- (int) searchRequest.getSizeLimit(),
- (int) searchRequest.getTimeLimit(),
+ SearchRequestProtocolOp protocolOp = new SearchRequestProtocolOp(ByteString
+ .valueOf(searchRequest.getDn()), scope, derefPolicy,
+ (int) searchRequest.getSizeLimit(), (int) searchRequest.getTimeLimit(),
searchRequest.isTypesOnly(), filter, attributes);
try
{
- LDAPMessage msg = new LDAPMessage(DSMLServlet.nextMessageID(),
- protocolOp);
+ LDAPMessage msg =
+ new LDAPMessage(DSMLServlet.nextMessageID(), protocolOp);
connection.getLDAPWriter().writeMessage(msg);
byte opType;
@@ -428,68 +512,68 @@
{
int resultCode = 0;
Message errorMessage = null;
- LDAPMessage responseMessage =
- connection.getLDAPReader().readMessage();
+ LDAPMessage responseMessage = connection.getLDAPReader().readMessage();
opType = responseMessage.getProtocolOpType();
- switch(opType)
+ switch (opType)
{
- case LDAPConstants.OP_TYPE_SEARCH_RESULT_ENTRY:
- SearchResultEntryProtocolOp searchEntryOp =
- responseMessage.getSearchResultEntryProtocolOp();
+ case LDAPConstants.OP_TYPE_SEARCH_RESULT_ENTRY:
+ SearchResultEntryProtocolOp searchEntryOp = responseMessage
+ .getSearchResultEntryProtocolOp();
- SearchResultEntry entry = objFactory.createSearchResultEntry();
- java.util.List<DsmlAttr> attrList = entry.getAttr();
+ SearchResultEntry entry = objFactory.createSearchResultEntry();
+ java.util.List<DsmlAttr> attrList = entry.getAttr();
- LinkedList<LDAPAttribute> attrs = searchEntryOp.getAttributes();
+ LinkedList<LDAPAttribute> attrs = searchEntryOp.getAttributes();
- for(LDAPAttribute attr : attrs)
+ for (LDAPAttribute attr : attrs)
+ {
+ String nm = attr.getAttributeType();
+ DsmlAttr dsmlAttr = objFactory.createDsmlAttr();
+
+ dsmlAttr.setName(nm);
+ List<String> dsmlAttrVal = dsmlAttr.getValue();
+ ArrayList<ByteString> vals = attr.getValues();
+ for (ByteString val : vals)
{
- String nm = attr.getAttributeType();
- DsmlAttr dsmlAttr = objFactory.createDsmlAttr();
-
- dsmlAttr.setName(nm);
- List<String> dsmlAttrVal = dsmlAttr.getValue();
- ArrayList<ASN1OctetString> vals = attr.getValues();
- for(ASN1OctetString val : vals)
- {
- dsmlAttrVal.add(val.toString());
- }
- attrList.add(dsmlAttr);
+ dsmlAttrVal.add(val.toString());
}
+ attrList.add(dsmlAttr);
+ }
- entry.setDn(searchEntryOp.getDN().toString());
- searchResponse.getSearchResultEntry().add(entry);
- break;
+ entry.setDn(searchEntryOp.getDN().toString());
+ searchResponse.getSearchResultEntry().add(entry);
+ break;
- case LDAPConstants.OP_TYPE_SEARCH_RESULT_REFERENCE:
- SearchResultReferenceProtocolOp searchRefOp =
- responseMessage.getSearchResultReferenceProtocolOp();
- break;
+ case LDAPConstants.OP_TYPE_SEARCH_RESULT_REFERENCE:
+ responseMessage.getSearchResultReferenceProtocolOp();
+ break;
- case LDAPConstants.OP_TYPE_SEARCH_RESULT_DONE:
- SearchResultDoneProtocolOp searchOp =
- responseMessage.getSearchResultDoneProtocolOp();
- resultCode = searchOp.getResultCode();
- errorMessage = searchOp.getErrorMessage();
- LDAPResult result = objFactory.createLDAPResult();
- ResultCode code = objFactory.createResultCode();
- code.setCode(resultCode);
- result.setResultCode(code);
- result.setErrorMessage(
- errorMessage != null ? errorMessage.toString() : null);
- if(searchOp.getMatchedDN() != null)
- {
- result.setMatchedDN(searchOp.getMatchedDN().toString());
- }
- searchResponse.setSearchResultDone(result);
- break;
- default:
- throw new RuntimeException("Invalid protocol operation:" + opType);
- }
- } while(opType != LDAPConstants.OP_TYPE_SEARCH_RESULT_DONE);
+ case LDAPConstants.OP_TYPE_SEARCH_RESULT_DONE:
+ SearchResultDoneProtocolOp searchOp = responseMessage
+ .getSearchResultDoneProtocolOp();
+ resultCode = searchOp.getResultCode();
+ errorMessage = searchOp.getErrorMessage();
+ LDAPResult result = objFactory.createLDAPResult();
+ ResultCode code = objFactory.createResultCode();
+ code.setCode(resultCode);
+ result.setResultCode(code);
+ result.setErrorMessage(errorMessage != null ? errorMessage.toString()
+ : null);
+ if (searchOp.getMatchedDN() != null)
+ {
+ result.setMatchedDN(searchOp.getMatchedDN().toString());
+ }
+ searchResponse.setSearchResultDone(result);
+ break;
+ default:
+ throw new RuntimeException("Invalid protocol operation:" + opType);
+ }
+ }
+ while (opType != LDAPConstants.OP_TYPE_SEARCH_RESULT_DONE);
- } catch(ASN1Exception ae)
+ }
+ catch (ASN1Exception ae)
{
ae.printStackTrace();
throw new IOException(ae.getMessage());
@@ -498,4 +582,3 @@
return searchResponse;
}
}
-
--
Gitblit v1.10.0