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/server/org/opends/server/tools/LDAPModify.java | 182 ++++++++++++++++++--------------------------
1 files changed, 75 insertions(+), 107 deletions(-)
diff --git a/opends/src/server/org/opends/server/tools/LDAPModify.java b/opends/src/server/org/opends/server/tools/LDAPModify.java
index 44eb914..7768f61 100644
--- a/opends/src/server/org/opends/server/tools/LDAPModify.java
+++ b/opends/src/server/org/opends/server/tools/LDAPModify.java
@@ -32,16 +32,10 @@
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.StringTokenizer;
+import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
-import org.opends.server.protocols.asn1.ASN1Element;
import org.opends.server.protocols.asn1.ASN1Exception;
-import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.asn1.ASN1Sequence;
import org.opends.server.protocols.ldap.AddRequestProtocolOp;
import org.opends.server.protocols.ldap.AddResponseProtocolOp;
import org.opends.server.protocols.ldap.DeleteRequestProtocolOp;
@@ -54,16 +48,8 @@
import org.opends.server.protocols.ldap.ModifyResponseProtocolOp;
import org.opends.server.protocols.ldap.ModifyDNRequestProtocolOp;
import org.opends.server.protocols.ldap.ModifyDNResponseProtocolOp;
-import org.opends.server.protocols.ldap.SearchResultEntryProtocolOp;
import org.opends.server.protocols.ldap.ProtocolOp;
-import org.opends.server.types.Attribute;
-import org.opends.server.types.DebugLogLevel;
-import org.opends.server.types.DN;
-import org.opends.server.types.LDAPException;
-import org.opends.server.types.LDIFImportConfig;
-import org.opends.server.types.NullOutputStream;
-import org.opends.server.types.RawAttribute;
-import org.opends.server.types.RawModification;
+import org.opends.server.types.*;
import org.opends.server.util.AddChangeRecordEntry;
import org.opends.server.util.ChangeRecordEntry;
import org.opends.server.util.EmbeddedUtils;
@@ -86,6 +72,8 @@
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
import static org.opends.server.tools.ToolConstants.*;
+import org.opends.server.controls.*;
+import org.opends.server.plugins.ChangeNumberControlPlugin;
@@ -161,7 +149,7 @@
LDAPModifyOptions modifyOptions)
throws IOException, LDAPException
{
- ArrayList<LDAPControl> controls = modifyOptions.getControls();
+ ArrayList<Control> controls = modifyOptions.getControls();
LDIFReader reader;
// Create an LDIF import configuration to do this and then get the reader.
@@ -279,11 +267,10 @@
}
ProtocolOp protocolOp = null;
- ASN1OctetString asn1OctetStr =
- new ASN1OctetString(entry.getDN().toString());
+ ByteString asn1OctetStr =
+ ByteString.valueOf(entry.getDN().toString());
String operationType = "";
- int msgID = 0;
switch(entry.getChangeOperationType())
{
case ADD:
@@ -298,13 +285,13 @@
}
protocolOp = new AddRequestProtocolOp(asn1OctetStr, attributes);
out.println(INFO_PROCESSING_OPERATION.get(
- operationType, String.valueOf(asn1OctetStr)));
+ operationType, asn1OctetStr.toString()));
break;
case DELETE:
operationType = "DELETE";
protocolOp = new DeleteRequestProtocolOp(asn1OctetStr);
out.println(INFO_PROCESSING_OPERATION.get(
- operationType, String.valueOf(asn1OctetStr)));
+ operationType, asn1OctetStr.toString()));
break;
case MODIFY:
operationType = "MODIFY";
@@ -313,7 +300,7 @@
new ArrayList<RawModification>(modEntry.getModifications());
protocolOp = new ModifyRequestProtocolOp(asn1OctetStr, mods);
out.println(INFO_PROCESSING_OPERATION.get(
- operationType, String.valueOf(asn1OctetStr)));
+ operationType, asn1OctetStr.toString()));
break;
case MODIFY_DN:
operationType = "MODIFY DN";
@@ -322,19 +309,19 @@
if(modDNEntry.getNewSuperiorDN() != null)
{
protocolOp = new ModifyDNRequestProtocolOp(asn1OctetStr,
- new ASN1OctetString(modDNEntry.getNewRDN().toString()),
+ ByteString.valueOf(modDNEntry.getNewRDN().toString()),
modDNEntry.deleteOldRDN(),
- new ASN1OctetString(
+ ByteString.valueOf(
modDNEntry.getNewSuperiorDN().toString()));
} else
{
protocolOp = new ModifyDNRequestProtocolOp(asn1OctetStr,
- new ASN1OctetString(modDNEntry.getNewRDN().toString()),
+ ByteString.valueOf(modDNEntry.getNewRDN().toString()),
modDNEntry.deleteOldRDN());
}
out.println(INFO_PROCESSING_OPERATION.get(
- operationType, String.valueOf(asn1OctetStr)));
+ operationType, asn1OctetStr.toString()));
break;
default:
break;
@@ -424,7 +411,7 @@
} else
{
Message msg = INFO_OPERATION_SUCCESSFUL.get(
- operationType, String.valueOf(asn1OctetStr));
+ operationType, asn1OctetStr.toString());
out.println(msg);
if (errorMessage != null)
@@ -439,102 +426,91 @@
}
- for (LDAPControl c : responseMessage.getControls())
+ for (Control c : responseMessage.getControls())
{
String oid = c.getOID();
if (oid.equals(OID_LDAP_READENTRY_PREREAD))
{
- ASN1OctetString controlValue = c.getValue();
- if (controlValue == null)
- {
-
- err.println(wrapText(
- ERR_LDAPMODIFY_PREREAD_NO_VALUE.get(),
- MAX_LINE_WIDTH));
- continue;
- }
-
- SearchResultEntryProtocolOp searchEntry;
+ SearchResultEntry searchEntry;
try
{
- byte[] valueBytes = controlValue.value();
- ASN1Element valueElement = ASN1Element.decode(valueBytes);
- searchEntry =
- SearchResultEntryProtocolOp.decodeSearchEntry(valueElement);
+ LDAPPreReadResponseControl prrc;
+ if(c instanceof LDAPControl)
+ {
+ // Control needs to be decoded
+ prrc = LDAPPreReadResponseControl.DECODER.decode(
+ c.isCritical(), ((LDAPControl) c).getValue());
+
+ }
+ else
+ {
+ prrc = (LDAPPreReadResponseControl)c;
+ }
+ searchEntry = prrc.getSearchEntry();
}
- catch (ASN1Exception ae)
+ catch (DirectoryException de)
{
err.println(wrapText(
- ERR_LDAPMODIFY_PREREAD_CANNOT_DECODE_VALUE.get(
- ae.getMessage()),
- MAX_LINE_WIDTH));
- continue;
- }
- catch (LDAPException le)
- {
-
- err.println(wrapText(
- ERR_LDAPMODIFY_PREREAD_CANNOT_DECODE_VALUE.get(
- le.getMessage()),
+ ERR_LDAPMODIFY_PREREAD_CANNOT_DECODE_VALUE.get(
+ de.getMessage()),
MAX_LINE_WIDTH));
continue;
}
StringBuilder buffer = new StringBuilder();
- searchEntry.toLDIF(buffer, 78);
+ searchEntry.toString(buffer, 78);
out.println(INFO_LDAPMODIFY_PREREAD_ENTRY.get());
out.println(buffer);
}
else if (oid.equals(OID_LDAP_READENTRY_POSTREAD))
{
- ASN1OctetString controlValue = c.getValue();
- if (controlValue == null)
- {
-
- err.println(wrapText(
- ERR_LDAPMODIFY_POSTREAD_NO_VALUE.get(),
- MAX_LINE_WIDTH));
- continue;
- }
-
- SearchResultEntryProtocolOp searchEntry;
+ SearchResultEntry searchEntry;
try
{
- byte[] valueBytes = controlValue.value();
- ASN1Element valueElement = ASN1Element.decode(valueBytes);
- searchEntry =
- SearchResultEntryProtocolOp.decodeSearchEntry(valueElement);
+ LDAPPostReadResponseControl pprc;
+ if (c instanceof LDAPControl)
+ {
+ // Control needs to be decoded
+ pprc = LDAPPostReadResponseControl.DECODER.decode(c
+ .isCritical(), ((LDAPControl) c).getValue());
+
+ }
+ else
+ {
+ pprc = (LDAPPostReadResponseControl)c;
+ }
+ searchEntry = pprc.getSearchEntry();
}
- catch (ASN1Exception ae)
+ catch (DirectoryException de)
{
err.println(wrapText(
ERR_LDAPMODIFY_POSTREAD_CANNOT_DECODE_VALUE.get(
- ae.getMessage()),
- MAX_LINE_WIDTH));
- continue;
- }
- catch (LDAPException le)
- {
-
- err.println(wrapText(
- ERR_LDAPMODIFY_POSTREAD_CANNOT_DECODE_VALUE.get(
- le.getMessage()),
+ de.getMessage()),
MAX_LINE_WIDTH));
continue;
}
StringBuilder buffer = new StringBuilder();
- searchEntry.toLDIF(buffer, 78);
+ searchEntry.toString(buffer, 78);
out.println(INFO_LDAPMODIFY_POSTREAD_ENTRY.get());
out.println(buffer);
}
else if (oid.equals(OID_CSN_CONTROL))
{
- ASN1OctetString controlValue = c.getValue();
- out.println(INFO_CHANGE_NUMBER_CONTROL_RESULT.get(operationType,
- String.valueOf(controlValue)));
+ if(c instanceof LDAPControl)
+ {
+ // Don't really need to decode since its just an octet string.
+ out.println(INFO_CHANGE_NUMBER_CONTROL_RESULT.get(operationType,
+ ((LDAPControl)c).getValue().toString()));
+ }
+ else
+ {
+ out.println(INFO_CHANGE_NUMBER_CONTROL_RESULT.get(operationType,
+ ((ChangeNumberControlPlugin.ChangeNumberControl)c).
+ getChangeNumber().toString()));
+ }
}
}
}
@@ -1052,7 +1028,7 @@
{
for (String ctrlString : controlStr.getValues())
{
- LDAPControl ctrl = LDAPToolUtils.getControl(ctrlString, err);
+ Control ctrl = LDAPToolUtils.getControl(ctrlString, err);
if(ctrl == null)
{
Message message = ERR_TOOL_INVALID_CONTROL_STRING.get(ctrlString);
@@ -1066,10 +1042,9 @@
if (proxyAuthzID.isPresent())
{
- ASN1OctetString proxyValue = new ASN1OctetString(proxyAuthzID.getValue());
-
- LDAPControl proxyControl =
- new LDAPControl(OID_PROXIED_AUTH_V2, true, proxyValue);
+ Control proxyControl =
+ new ProxiedAuthV2Control(true,
+ ByteString.valueOf(proxyAuthzID.getValue()));
modifyOptions.getControls().add(proxyControl);
}
@@ -1081,9 +1056,8 @@
{
filter = LDAPFilter.decode(filterString);
- LDAPControl assertionControl =
- new LDAPControl(OID_LDAP_ASSERTION, true,
- new ASN1OctetString(filter.encode().encode()));
+ Control assertionControl =
+ new LDAPAssertionRequestControl(true, filter);
modifyOptions.getControls().add(assertionControl);
}
catch (LDAPException le)
@@ -1098,36 +1072,30 @@
if (preReadAttributes.isPresent())
{
String valueStr = preReadAttributes.getValue();
- ArrayList<ASN1Element> attrElements = new ArrayList<ASN1Element>();
+ Set<String> attrElements = new LinkedHashSet<String>();
StringTokenizer tokenizer = new StringTokenizer(valueStr, ", ");
while (tokenizer.hasMoreTokens())
{
- attrElements.add(new ASN1OctetString(tokenizer.nextToken()));
+ attrElements.add(tokenizer.nextToken());
}
- ASN1OctetString controlValue =
- new ASN1OctetString(new ASN1Sequence(attrElements).encode());
- LDAPControl c = new LDAPControl(OID_LDAP_READENTRY_PREREAD, true,
- controlValue);
+ Control c = new LDAPPreReadRequestControl(true, attrElements);
modifyOptions.getControls().add(c);
}
if (postReadAttributes.isPresent())
{
String valueStr = postReadAttributes.getValue();
- ArrayList<ASN1Element> attrElements = new ArrayList<ASN1Element>();
+ Set<String> attrElements = new LinkedHashSet<String>();
StringTokenizer tokenizer = new StringTokenizer(valueStr, ", ");
while (tokenizer.hasMoreTokens())
{
- attrElements.add(new ASN1OctetString(tokenizer.nextToken()));
+ attrElements.add(tokenizer.nextToken());
}
- ASN1OctetString controlValue =
- new ASN1OctetString(new ASN1Sequence(attrElements).encode());
- LDAPControl c = new LDAPControl(OID_LDAP_READENTRY_POSTREAD, true,
- controlValue);
+ Control c = new LDAPPostReadRequestControl(true, attrElements);
modifyOptions.getControls().add(c);
}
--
Gitblit v1.10.0