From 2d7aad2c25507ea427980b54848c26594c607ae2 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 20 Feb 2014 11:20:22 +0000
Subject: [PATCH] OPENDJ-1308 Migrate schema support

---
 opendj3-server-dev/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java |  133 +++++++++----------------------------------
 1 files changed, 29 insertions(+), 104 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java b/opendj3-server-dev/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java
index ab0c24f..135cce2 100644
--- a/opendj3-server-dev/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java
+++ b/opendj3-server-dev/src/server/org/opends/server/schema/IntegerOrderingMatchingRule.java
@@ -35,11 +35,10 @@
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.ldap.ByteSequence;
 import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.DecodeException;
 import org.opends.server.api.AbstractMatchingRule;
 import org.opends.server.api.OrderingMatchingRule;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.types.DirectoryException;
-import org.forgerock.opendj.ldap.ResultCode;
 
 import static org.opends.messages.SchemaMessages.*;
 import static org.opends.server.schema.SchemaConstants.*;
@@ -137,12 +136,12 @@
    *
    * @return  The normalized version of the provided value.
    *
-   * @throws  DirectoryException  If the provided value is invalid according to
+   * @throws  DecodeException  If the provided value is invalid according to
    *                              the associated attribute syntax.
    */
   @Override
   public ByteString normalizeAttributeValue(ByteSequence value)
-         throws DirectoryException
+         throws DecodeException
   {
     int length = value.length();
     StringBuilder buffer = new StringBuilder(length);
@@ -164,20 +163,7 @@
               else
               {
                 LocalizableMessage message = WARN_ATTR_SYNTAX_INTEGER_INITIAL_ZERO.get(value);
-
-                switch (DirectoryServer.getSyntaxEnforcementPolicy())
-                {
-                  case REJECT:
-                    throw new DirectoryException(
-                                 ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
-                  case WARN:
-                    if (! logged)
-                    {
-                      logged = true;
-                      logger.error(message);
-                    }
-                    break;
-                }
+                logged = reportInvalidSyntax(logged, message);
               }
               break;
             case 1:
@@ -185,21 +171,7 @@
               if (buffer.charAt(0) == '-')
               {
                 LocalizableMessage message = WARN_ATTR_SYNTAX_INTEGER_INITIAL_ZERO.get(value);
-
-                switch (DirectoryServer.getSyntaxEnforcementPolicy())
-                {
-                  case REJECT:
-                    throw new DirectoryException(
-                                  ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
-                  case WARN:
-                    if (! logged)
-                    {
-                      logged = true;
-                      logger.error(
-                              message);
-                    }
-                    break;
-                }
+                logged = reportInvalidSyntax(logged, message);
               }
               else
               {
@@ -248,97 +220,50 @@
           else
           {
             LocalizableMessage message = WARN_ATTR_SYNTAX_INTEGER_MISPLACED_DASH.get(value);
-
-            switch (DirectoryServer.getSyntaxEnforcementPolicy())
-            {
-              case REJECT:
-                throw new DirectoryException(
-                               ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
-              case WARN:
-                if (! logged)
-                {
-                  logged = true;
-                  logger.error(
-                          message);
-                }
-                break;
-            }
+            logged = reportInvalidSyntax(logged, message);
           }
           break;
         default:
           LocalizableMessage message = WARN_ATTR_SYNTAX_INTEGER_INVALID_CHARACTER.get(
               value, ((char) value.byteAt(i)), i);
-          switch (DirectoryServer.getSyntaxEnforcementPolicy())
-          {
-            case REJECT:
-              throw new DirectoryException(
-                             ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
-            case WARN:
-              if (! logged)
-              {
-                logged = true;
-                logger.error(
-                        message);
-              }
-              break;
-          }
+          logged = reportInvalidSyntax(logged, message);
       }
     }
 
     if (buffer.length() == 0)
     {
       LocalizableMessage message = WARN_ATTR_SYNTAX_INTEGER_EMPTY_VALUE.get(value);
-
-      switch (DirectoryServer.getSyntaxEnforcementPolicy())
-      {
-        case REJECT:
-          throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
-                                       message);
-
-        case WARN:
-          if (! logged)
-          {
-            logged = true;
-            logger.error(message);
-          }
-
-          buffer.append("0");
-          break;
-
-        default:
-          buffer.append("0");
-          break;
-      }
+      logged = reportInvalidSyntax(logged, message);
+      buffer.append("0");
     }
     else if ((buffer.length() == 1) && (buffer.charAt(0) == '-'))
     {
       LocalizableMessage message = WARN_ATTR_SYNTAX_INTEGER_DASH_NEEDS_VALUE.get(value);
-
-      switch (DirectoryServer.getSyntaxEnforcementPolicy())
-      {
-        case REJECT:
-          throw new DirectoryException(ResultCode.INVALID_ATTRIBUTE_SYNTAX,
-                                       message);
-
-        case WARN:
-          if (! logged)
-          {
-            logged = true;
-            logger.error(message);
-          }
-
-          buffer.setCharAt(0, '0');
-          break;
-
-        default:
-          buffer.setCharAt(0, '0');
-          break;
-      }
+      logged = reportInvalidSyntax(logged, message);
+      buffer.setCharAt(0, '0');
     }
 
     return ByteString.valueOf(buffer.toString());
   }
 
+  private boolean reportInvalidSyntax(boolean logged, LocalizableMessage message)
+      throws DecodeException
+  {
+    switch (DirectoryServer.getSyntaxEnforcementPolicy())
+    {
+      case REJECT:
+        throw DecodeException.error(message);
+      case WARN:
+        if (! logged)
+        {
+          logged = true;
+          logger.error(message);
+        }
+        break;
+    }
+    return logged;
+  }
+
 
 
   /**

--
Gitblit v1.10.0