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/workflowelement/localbackend/LocalBackendModifyOperation.java |  206 +++++++++------------------------------------------
 1 files changed, 38 insertions(+), 168 deletions(-)

diff --git a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
index d57b74d..dec33a3 100644
--- a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
+++ b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendModifyOperation.java
@@ -35,7 +35,6 @@
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.*;
 
-import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -68,36 +67,10 @@
 import org.opends.server.core.PersistentSearch;
 import org.opends.server.core.PluginConfigManager;
 import org.opends.server.loggers.debug.DebugTracer;
-import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.schema.AuthPasswordSyntax;
 import org.opends.server.schema.BooleanSyntax;
 import org.opends.server.schema.UserPasswordSyntax;
-import org.opends.server.types.AcceptRejectWarn;
-import org.opends.server.types.AccountStatusNotification;
-import org.opends.server.types.AccountStatusNotificationType;
-import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
-import org.opends.server.types.AttributeValue;
-import org.opends.server.types.AuthenticationInfo;
-import org.opends.server.types.ByteString;
-import org.opends.server.types.CanceledOperationException;
-import org.opends.server.types.Control;
-import org.opends.server.types.DN;
-import org.opends.server.types.DebugLogLevel;
-import org.opends.server.types.DirectoryException;
-import org.opends.server.types.Entry;
-import org.opends.server.types.LDAPException;
-import org.opends.server.types.LockManager;
-import org.opends.server.types.Modification;
-import org.opends.server.types.ModificationType;
-import org.opends.server.types.ObjectClass;
-import org.opends.server.types.Privilege;
-import org.opends.server.types.RDN;
-import org.opends.server.types.ResultCode;
-import org.opends.server.types.SearchFilter;
-import org.opends.server.types.SearchResultEntry;
-import org.opends.server.types.SynchronizationProviderResult;
+import org.opends.server.types.*;
 import org.opends.server.types.operation.PostOperationModifyOperation;
 import org.opends.server.types.operation.PostResponseModifyOperation;
 import org.opends.server.types.operation.PostSynchronizationModifyOperation;
@@ -767,30 +740,8 @@
 
         if (oid.equals(OID_LDAP_ASSERTION))
         {
-          LDAPAssertionRequestControl assertControl;
-          if (c instanceof LDAPAssertionRequestControl)
-          {
-            assertControl = (LDAPAssertionRequestControl) c;
-          }
-          else
-          {
-            try
-            {
-              assertControl = LDAPAssertionRequestControl.decodeControl(c);
-              requestControls.set(i, assertControl);
-            }
-            catch (LDAPException le)
-            {
-              if (debugEnabled())
-              {
-                TRACER.debugCaught(DebugLogLevel.ERROR, le);
-              }
-
-              throw new DirectoryException(
-                             ResultCode.valueOf(le.getResultCode()),
-                             le.getMessageObject());
-            }
-          }
+          LDAPAssertionRequestControl assertControl =
+                getRequestControl(LDAPAssertionRequestControl.DECODER);
 
           try
           {
@@ -828,29 +779,8 @@
         }
         else if (oid.equals(OID_LDAP_READENTRY_PREREAD))
         {
-          if (c instanceof LDAPPreReadRequestControl)
-          {
-            preReadRequest = (LDAPPreReadRequestControl) c;
-          }
-          else
-          {
-            try
-            {
-              preReadRequest = LDAPPreReadRequestControl.decodeControl(c);
-              requestControls.set(i, preReadRequest);
-            }
-            catch (LDAPException le)
-            {
-              if (debugEnabled())
-              {
-                TRACER.debugCaught(DebugLogLevel.ERROR, le);
-              }
-
-              throw new DirectoryException(
-                             ResultCode.valueOf(le.getResultCode()),
-                             le.getMessageObject());
-            }
-          }
+          preReadRequest =
+                getRequestControl(LDAPPreReadRequestControl.DECODER);
         }
         else if (oid.equals(OID_LDAP_READENTRY_POSTREAD))
         {
@@ -860,22 +790,9 @@
           }
           else
           {
-            try
-            {
-              postReadRequest = LDAPPostReadRequestControl.decodeControl(c);
-              requestControls.set(i, postReadRequest);
-            }
-            catch (LDAPException le)
-            {
-              if (debugEnabled())
-              {
-                TRACER.debugCaught(DebugLogLevel.ERROR, le);
-              }
-
-              throw new DirectoryException(
-                             ResultCode.valueOf(le.getResultCode()),
-                             le.getMessageObject());
-            }
+            postReadRequest =
+                getRequestControl(LDAPPostReadRequestControl.DECODER);
+            requestControls.set(i, postReadRequest);
           }
         }
         else if (oid.equals(OID_PROXIED_AUTH_V1))
@@ -888,31 +805,8 @@
                            ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
           }
 
-
-          ProxiedAuthV1Control proxyControl;
-          if (c instanceof ProxiedAuthV1Control)
-          {
-            proxyControl = (ProxiedAuthV1Control) c;
-          }
-          else
-          {
-            try
-            {
-              proxyControl = ProxiedAuthV1Control.decodeControl(c);
-            }
-            catch (LDAPException le)
-            {
-              if (debugEnabled())
-              {
-                TRACER.debugCaught(DebugLogLevel.ERROR, le);
-              }
-
-              throw new DirectoryException(
-                             ResultCode.valueOf(le.getResultCode()),
-                             le.getMessageObject());
-            }
-          }
-
+          ProxiedAuthV1Control proxyControl =
+                  getRequestControl(ProxiedAuthV1Control.DECODER);
 
           Entry authorizationEntry = proxyControl.getAuthorizationEntry();
           setAuthorizationEntry(authorizationEntry);
@@ -935,31 +829,8 @@
                            ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
           }
 
-
-          ProxiedAuthV2Control proxyControl;
-          if (c instanceof ProxiedAuthV2Control)
-          {
-            proxyControl = (ProxiedAuthV2Control) c;
-          }
-          else
-          {
-            try
-            {
-              proxyControl = ProxiedAuthV2Control.decodeControl(c);
-            }
-            catch (LDAPException le)
-            {
-              if (debugEnabled())
-              {
-                TRACER.debugCaught(DebugLogLevel.ERROR, le);
-              }
-
-              throw new DirectoryException(
-                             ResultCode.valueOf(le.getResultCode()),
-                             le.getMessageObject());
-            }
-          }
-
+          ProxiedAuthV2Control proxyControl =
+              getRequestControl(ProxiedAuthV2Control.DECODER);
 
           Entry authorizationEntry = proxyControl.getAuthorizationEntry();
           setAuthorizationEntry(authorizationEntry);
@@ -1071,7 +942,7 @@
             try
             {
               isEnabled =
-                  (! BooleanSyntax.decodeBooleanValue(v.getNormalizedValue()));
+                  (! BooleanSyntax.DECODER.decode(v));
             }
             catch (DirectoryException de)
             {
@@ -1349,7 +1220,8 @@
 
         for (ByteString s : pwPolicyState.encodePassword(v.getValue()))
         {
-          builder.add(new AttributeValue(pwAttr.getAttributeType(), s));
+          builder.add(AttributeValues.create(
+              pwAttr.getAttributeType(), s));
         }
       }
     }
@@ -1412,7 +1284,7 @@
               if (AuthPasswordSyntax.isEncoded(av.getValue()))
               {
                 StringBuilder[] components = AuthPasswordSyntax
-                    .decodeAuthPassword(av.getStringValue());
+                    .decodeAuthPassword(av.getValue().toString());
                 PasswordStorageScheme<?> scheme = DirectoryServer
                     .getAuthPasswordStorageScheme(components[0].toString());
                 if (scheme != null)
@@ -1439,12 +1311,12 @@
               if (UserPasswordSyntax.isEncoded(av.getValue()))
               {
                 String[] components = UserPasswordSyntax.decodeUserPassword(av
-                    .getStringValue());
+                    .getValue().toString());
                 PasswordStorageScheme<?> scheme = DirectoryServer
                     .getPasswordStorageScheme(toLowerCase(components[0]));
                 if (scheme != null)
                 {
-                  if (scheme.passwordMatches(v.getValue(), new ASN1OctetString(
+                  if (scheme.passwordMatches(v.getValue(), ByteString.valueOf(
                       components[1])))
                   {
                     builder.add(av);
@@ -1528,7 +1400,7 @@
           {
             throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
                 ERR_MODIFY_ADD_INVALID_SYNTAX.get(String.valueOf(entryDN), attr
-                    .getName(), v.getStringValue(), invalidReason));
+                    .getName(), v.getValue().toString(), invalidReason));
           }
         }
       }
@@ -1541,7 +1413,7 @@
           {
             setResultCode(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
             logError(ERR_MODIFY_ADD_INVALID_SYNTAX.get(String.valueOf(entryDN),
-                attr.getName(), v.getStringValue(), invalidReason));
+                attr.getName(), v.getValue().toString(), invalidReason));
             invalidReason = new MessageBuilder();
           }
         }
@@ -1566,11 +1438,11 @@
     {
       StringBuilder buffer = new StringBuilder();
       Iterator<AttributeValue> iterator = duplicateValues.iterator();
-      buffer.append(iterator.next().getStringValue());
+      buffer.append(iterator.next().getValue().toString());
       while (iterator.hasNext())
       {
         buffer.append(", ");
-        buffer.append(iterator.next().getStringValue());
+        buffer.append(iterator.next().getValue().toString());
       }
 
       throw new DirectoryException(ResultCode.ATTRIBUTE_OR_VALUE_EXISTS,
@@ -1596,12 +1468,12 @@
     Validator.ensureTrue(attr.getAttributeType().isObjectClassType());
     for (AttributeValue v : attr)
     {
-      String name = v.getStringValue();
+      String name = v.getValue().toString();
 
       String lowerName;
       try
       {
-        lowerName = v.getNormalizedStringValue();
+        lowerName = v.getNormalizedValue().toString();
       }
       catch (Exception e)
       {
@@ -1610,7 +1482,7 @@
           TRACER.debugCaught(DebugLogLevel.ERROR, e);
         }
 
-        lowerName = toLowerCase(v.getStringValue());
+        lowerName = toLowerCase(v.getValue().toString());
       }
 
       ObjectClass oc = DirectoryServer.getObjectClass(lowerName);
@@ -1672,11 +1544,11 @@
       {
         StringBuilder buffer = new StringBuilder();
         Iterator<AttributeValue> iterator = missingValues.iterator();
-        buffer.append(iterator.next().getStringValue());
+        buffer.append(iterator.next().getValue().toString());
         while (iterator.hasNext())
         {
           buffer.append(", ");
-          buffer.append(iterator.next().getStringValue());
+          buffer.append(iterator.next().getValue().toString());
         }
 
         throw new DirectoryException(ResultCode.NO_SUCH_ATTRIBUTE,
@@ -1725,7 +1597,7 @@
           {
             throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
                 ERR_MODIFY_REPLACE_INVALID_SYNTAX.get(String.valueOf(entryDN),
-                    attr.getName(), v.getStringValue(), invalidReason));
+                    attr.getName(), v.getValue().toString(), invalidReason));
           }
         }
       }
@@ -1738,7 +1610,7 @@
           {
             setResultCode(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
             logError(ERR_MODIFY_REPLACE_INVALID_SYNTAX.get(String
-                .valueOf(entryDN), attr.getName(), v.getStringValue(),
+                .valueOf(entryDN), attr.getName(), v.getValue().toString(),
                 invalidReason));
             invalidReason = new MessageBuilder();
           }
@@ -1817,7 +1689,7 @@
     long incrementValue;
     try
     {
-      incrementValue = Long.parseLong(v.getNormalizedStringValue());
+      incrementValue = Long.parseLong(v.getNormalizedValue().toString());
     }
     catch (Exception e)
     {
@@ -1828,7 +1700,7 @@
 
       throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
           ERR_MODIFY_INCREMENT_PROVIDED_VALUE_NOT_INTEGER.get(String
-              .valueOf(entryDN), attr.getName(), v.getStringValue()), e);
+              .valueOf(entryDN), attr.getName(), v.getValue().toString()), e);
     }
 
     // Get the attribute that is to be incremented.
@@ -1844,7 +1716,7 @@
     AttributeBuilder builder = new AttributeBuilder(a, true);
     for (AttributeValue existingValue : a)
     {
-      String s = existingValue.getStringValue();
+      String s = existingValue.getValue().toString();
       long currentValue;
       try
       {
@@ -1860,12 +1732,13 @@
         throw new DirectoryException(
             ResultCode.INVALID_ATTRIBUTE_SYNTAX,
             ERR_MODIFY_INCREMENT_REQUIRES_INTEGER_VALUE.get(String
-                .valueOf(entryDN), a.getName(), existingValue.getStringValue()),
+                .valueOf(entryDN), a.getName(),
+                existingValue.getValue().toString()),
             e);
       }
 
       long newValue = currentValue + incrementValue;
-      builder.add(new AttributeValue(t, String.valueOf(newValue)));
+      builder.add(AttributeValues.create(t, String.valueOf(newValue)));
     }
 
     // Replace the existing attribute with the incremented version.
@@ -1942,7 +1815,7 @@
               boolean found = false;
               for (ByteString s : clearPasswords)
               {
-                if (Arrays.equals(s.value(), pw.value()))
+                if (s.equals(pw))
                 {
                   found = true;
                   break;
@@ -2209,8 +2082,7 @@
       //          returned or if any attributes need to be stripped out..
       SearchResultEntry searchEntry = new SearchResultEntry(entry);
       LDAPPreReadResponseControl responseControl =
-           new LDAPPreReadResponseControl(preReadRequest.getOID(),
-                                          preReadRequest.isCritical(),
+           new LDAPPreReadResponseControl(preReadRequest.isCritical(),
                                           searchEntry);
       getResponseControls().add(responseControl);
     }
@@ -2258,9 +2130,7 @@
       //          returned or if any attributes need to be stripped out..
       SearchResultEntry searchEntry = new SearchResultEntry(entry);
       LDAPPostReadResponseControl responseControl =
-           new LDAPPostReadResponseControl(postReadRequest.getOID(),
-                                           postReadRequest.isCritical(),
-                                           searchEntry);
+           new LDAPPostReadResponseControl(searchEntry);
 
       getResponseControls().add(responseControl);
     }

--
Gitblit v1.10.0