From fc649ad091ca53cbb9798ab193f0e36695abe825 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Wed, 09 May 2007 20:41:56 +0000
Subject: [PATCH] Update the DSML gateway so that it properly treats the request ID as an optional element rather than required. Also, update the DSML search processing code to be a little more forgiving when it comes to the search scope and deref policy strings.
---
opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java | 39 +++++++++++++++++++++------------------
1 files changed, 21 insertions(+), 18 deletions(-)
diff --git a/opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java b/opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java
index 81d1ebc..614df02 100644
--- a/opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java
+++ b/opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java
@@ -93,18 +93,7 @@
throws IOException, LDAPException
{
SearchResponse searchResponse = objFactory.createSearchResponse();
-
- String requestID = searchRequest.getRequestID();
- int reqID = 1;
- try
- {
- reqID = Integer.parseInt(requestID);
- } catch (NumberFormatException nfe)
- {
- throw new IOException(nfe.getMessage());
- }
-
- searchResponse.setRequestID(requestID);
+ searchResponse.setRequestID(searchRequest.getRequestID());
ArrayList<LDAPFilter> filters = new ArrayList<LDAPFilter> ();
LDAPFilter f = null;
@@ -124,12 +113,27 @@
{
filters.add(f);
}
- DereferencePolicy derefPolicy = DereferencePolicy.DEREF_IN_SEARCHING;
+ DereferencePolicy derefPolicy = DereferencePolicy.NEVER_DEREF_ALIASES;
+ String derefStr = searchRequest.getDerefAliases().toLowerCase();
+ if (derefStr.equals("derefinsearching"))
+ {
+ derefPolicy = DereferencePolicy.DEREF_IN_SEARCHING;
+ }
+ else if (derefStr.equals("dereffindingbaseobj"))
+ {
+ derefPolicy = DereferencePolicy.DEREF_FINDING_BASE_OBJECT;
+ }
+ else if (derefStr.equals("derefalways"))
+ {
+ derefPolicy = DereferencePolicy.DEREF_ALWAYS;
+ }
+
SearchScope scope = SearchScope.WHOLE_SUBTREE;
- if(searchRequest.getScope().equals("singleLevel"))
+ String scopeStr = searchRequest.getScope().toLowerCase();
+ if(scopeStr.equals("singlelevel") || scopeStr.equals("one"))
{
scope = SearchScope.SINGLE_LEVEL;
- } else if(searchRequest.getScope().equals("baseObject"))
+ } else if(scopeStr.equals("baseobject") || scopeStr.equals("base"))
{
scope = SearchScope.BASE_OBJECT;
}
@@ -157,7 +161,8 @@
false, filter, attributes);
try
{
- LDAPMessage msg = new LDAPMessage(reqID, protocolOp);
+ LDAPMessage msg = new LDAPMessage(DSMLServlet.nextMessageID(),
+ protocolOp);
int numBytes = connection.getASN1Writer().writeElement(msg.encode());
byte opType;
@@ -250,8 +255,6 @@
ae.printStackTrace();
throw new IOException(ae.getMessage());
}
-
- reqID++;
}
return searchResponse;
}
--
Gitblit v1.10.0