From 7372d4b38952ac3ec6b56ffa8112e42fddb9bd98 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Wed, 08 Jan 2014 17:02:31 +0000
Subject: [PATCH] Remove toHex and hexStringToByteArray methods in StaticUtils  class in favor of equivalent methods in ByteString class

---
 opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/AbstractIntermediateResponse.java    |    4 
 opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/GenericExtendedResultImpl.java       |    4 
 opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/GenericIntermediateResponseImpl.java |    4 
 opendj-core/src/main/java/org/forgerock/opendj/ldap/requests/AbstractExtendedRequest.java          |    4 
 opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/AbstractExtendedResult.java          |    4 
 opendj-core/src/main/java/org/forgerock/opendj/ldap/AVA.java                                       |    6 
 opendj-core/src/main/java/org/forgerock/opendj/ldap/Filter.java                                    |    4 
 opendj-core/src/main/java/org/forgerock/opendj/ldap/controls/GenericControl.java                   |    3 
 opendj-core/src/main/java/org/forgerock/opendj/ldap/requests/GenericExtendedRequestImpl.java       |    3 
 opendj-core/src/main/java/com/forgerock/opendj/util/StaticUtils.java                               |  158 -------------------------------
 opendj-core/src/main/java/org/forgerock/opendj/ldap/ByteString.java                                |   44 +++++++-
 opendj-core/src/main/java/org/forgerock/opendj/ldap/DN.java                                        |    4 
 12 files changed, 52 insertions(+), 190 deletions(-)

diff --git a/opendj-core/src/main/java/com/forgerock/opendj/util/StaticUtils.java b/opendj-core/src/main/java/com/forgerock/opendj/util/StaticUtils.java
index 564ba14..46c9ed1 100644
--- a/opendj-core/src/main/java/com/forgerock/opendj/util/StaticUtils.java
+++ b/opendj-core/src/main/java/com/forgerock/opendj/util/StaticUtils.java
@@ -28,8 +28,6 @@
 package com.forgerock.opendj.util;
 
 import static com.forgerock.opendj.ldap.CoreMessages.ERR_HEX_DECODE_INVALID_CHARACTER;
-import static com.forgerock.opendj.ldap.CoreMessages.ERR_HEX_DECODE_INVALID_LENGTH;
-
 import java.io.Closeable;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -1529,37 +1527,6 @@
     }
 
     /**
-     * Converts the provided hexadecimal string to a byte array.
-     *
-     * @param hexString
-     *            The hexadecimal string to convert to a byte array.
-     * @return The byte array containing the binary representation of the
-     *         provided hex string.
-     * @throws java.text.ParseException
-     *             If the provided string contains invalid hexadecimal digits or
-     *             does not contain an even number of digits.
-     */
-    public static byte[] hexStringToByteArray(final String hexString) throws ParseException {
-        int length;
-        if (hexString == null || (length = hexString.length()) == 0) {
-            return new byte[0];
-        }
-
-        if (length % 2 != 0) {
-            final LocalizableMessage message = ERR_HEX_DECODE_INVALID_LENGTH.get(hexString);
-            throw new ParseException(message.toString(), 0);
-        }
-
-        final int arrayLength = length / 2;
-        final byte[] returnArray = new byte[arrayLength];
-        for (int i = 0; i < arrayLength; i++) {
-            returnArray[i] = hexToByte(hexString.charAt(i * 2), hexString.charAt(i * 2 + 1));
-        }
-
-        return returnArray;
-    }
-
-    /**
      * Converts the provided pair of characters to a byte.
      *
      * @param c1
@@ -1913,131 +1880,6 @@
     }
 
     /**
-     * Returns a string representation of the contents of the provided byte
-     * sequence using hexadecimal characters and a space between each byte.
-     *
-     * @param bytes
-     *            The byte sequence.
-     * @return A string representation of the contents of the provided byte
-     *         sequence using hexadecimal characters.
-     */
-    public static String toHex(final ByteSequence bytes) {
-        return toHex(bytes, new StringBuilder((bytes.length() - 1) * 3 + 2)).toString();
-    }
-
-    /**
-     * Appends the string representation of the contents of the provided byte
-     * sequence to a string builder using hexadecimal characters and a space
-     * between each byte.
-     *
-     * @param bytes
-     *            The byte sequence.
-     * @param builder
-     *            The string builder to which the hexadecimal representation of
-     *            {@code bytes} should be appended.
-     * @return The string builder.
-     */
-    public static StringBuilder toHex(final ByteSequence bytes, final StringBuilder builder) {
-        final int length = bytes.length();
-        builder.ensureCapacity(builder.length() + (length - 1) * 3 + 2);
-        builder.append(StaticUtils.byteToHex(bytes.byteAt(0)));
-        for (int i = 1; i < length; i++) {
-            builder.append(" ");
-            builder.append(StaticUtils.byteToHex(bytes.byteAt(i)));
-        }
-        return builder;
-    }
-
-    /**
-     * Appends a string representation of the data in the provided byte sequence
-     * to the given string builder using the specified indent.
-     * <p>
-     * The data will be formatted with sixteen hex bytes in a row followed by
-     * the ASCII representation, then wrapping to a new line as necessary. The
-     * state of the byte buffer is not changed.
-     *
-     * @param bytes
-     *            The byte sequence.
-     * @param builder
-     *            The string builder to which the information is to be appended.
-     * @param indent
-     *            The number of spaces to indent the output.
-     * @return The string builder.
-     */
-    public static StringBuilder toHexPlusAscii(final ByteSequence bytes,
-            final StringBuilder builder, final int indent) {
-        final StringBuilder indentBuf = new StringBuilder(indent);
-        for (int i = 0; i < indent; i++) {
-            indentBuf.append(' ');
-        }
-
-        final int length = bytes.length();
-        int pos = 0;
-        while (length - pos >= 16) {
-            final StringBuilder asciiBuf = new StringBuilder(17);
-
-            byte currentByte = bytes.byteAt(pos);
-            builder.append(indentBuf);
-            builder.append(StaticUtils.byteToHex(currentByte));
-            asciiBuf.append(byteToASCII(currentByte));
-            pos++;
-
-            for (int i = 1; i < 16; i++, pos++) {
-                currentByte = bytes.byteAt(pos);
-                builder.append(' ');
-                builder.append(StaticUtils.byteToHex(currentByte));
-                asciiBuf.append(byteToASCII(currentByte));
-
-                if (i == 7) {
-                    builder.append("  ");
-                    asciiBuf.append(' ');
-                }
-            }
-
-            builder.append("  ");
-            builder.append(asciiBuf);
-            builder.append(EOL);
-        }
-
-        final int remaining = length - pos;
-        if (remaining > 0) {
-            final StringBuilder asciiBuf = new StringBuilder(remaining + 1);
-
-            byte currentByte = bytes.byteAt(pos);
-            builder.append(indentBuf);
-            builder.append(StaticUtils.byteToHex(currentByte));
-            asciiBuf.append(byteToASCII(currentByte));
-            pos++;
-
-            for (int i = 1; i < 16; i++, pos++) {
-                builder.append(' ');
-
-                if (i < remaining) {
-                    currentByte = bytes.byteAt(pos);
-                    builder.append(StaticUtils.byteToHex(currentByte));
-                    asciiBuf.append(byteToASCII(currentByte));
-                } else {
-                    builder.append("  ");
-                }
-
-                if (i == 7) {
-                    builder.append("  ");
-
-                    if (i < remaining) {
-                        asciiBuf.append(' ');
-                    }
-                }
-            }
-
-            builder.append("  ");
-            builder.append(asciiBuf);
-            builder.append(EOL);
-        }
-
-        return builder;
-    }
-
-    /**
      * Appends a lowercase string representation of the contents of the given
      * byte array to the provided buffer. This implementation presumes that the
      * provided string will contain only ASCII characters and is optimized for
diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/AVA.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/AVA.java
index 5485cb7..5e55e95 100644
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/AVA.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/AVA.java
@@ -531,7 +531,7 @@
             // octet string.
             try {
                 reader.reset();
-                return ByteString.wrap(hexStringToByteArray(reader.read(length)));
+                return ByteString.valueOfHex(reader.read(length));
             } catch (final Exception e) {
                 final LocalizableMessage message =
                         ERR_ATTR_SYNTAX_DN_ATTR_VALUE_DECODE_FAILURE.get(reader.getString(), String
@@ -738,7 +738,7 @@
         if (!attributeType.getNames().iterator().hasNext()) {
             builder.append(attributeType.getOID());
             builder.append("=#");
-            StaticUtils.toHex(attributeValue, builder);
+            builder.append(attributeValue.toHexString());
         } else {
             final String name = attributeType.getNameOrOID();
             builder.append(name);
@@ -747,7 +747,7 @@
             final Syntax syntax = attributeType.getSyntax();
             if (!syntax.isHumanReadable()) {
                 builder.append("#");
-                StaticUtils.toHex(attributeValue, builder);
+                builder.append(attributeValue.toHexString());
             } else {
                 escapeAttributeValue(attributeValue.toString(), builder);
             }
diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/ByteString.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/ByteString.java
index 5e8c453..34cf27a 100755
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/ByteString.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/ByteString.java
@@ -26,6 +26,7 @@
  */
 package org.forgerock.opendj.ldap;
 
+import static com.forgerock.opendj.ldap.CoreMessages.*;
 import static com.forgerock.opendj.util.StaticUtils.*;
 
 import java.io.IOException;
@@ -34,8 +35,10 @@
 import java.nio.ByteBuffer;
 import java.nio.CharBuffer;
 import java.nio.charset.Charset;
+import java.text.ParseException;
 import java.util.Arrays;
 
+import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizedIllegalArgumentException;
 
 import com.forgerock.opendj.util.StaticUtils;
@@ -161,6 +164,36 @@
     }
 
     /**
+     * Returns a byte string containing the bytes of the provided hexadecimal string.
+     *
+     * @param hexString
+     *            The hexadecimal string to convert to a byte array.
+     * @return The byte string containing the binary representation of the
+     *         provided hex string.
+     * @throws java.text.ParseException
+     *             If the provided string contains invalid hexadecimal digits or
+     *             does not contain an even number of digits.
+     */
+    public static ByteString valueOfHex(final String hexString) throws ParseException {
+        byte[] bytes = null;
+        int length = 0;
+        if (hexString == null || (length = hexString.length()) == 0) {
+            bytes = new byte[0];
+        } else {
+            if (length % 2 != 0) {
+                final LocalizableMessage message = ERR_HEX_DECODE_INVALID_LENGTH.get(hexString);
+                throw new ParseException(message.toString(), 0);
+            }
+            final int arrayLength = length / 2;
+            bytes = new byte[arrayLength];
+            for (int i = 0; i < arrayLength; i++) {
+                bytes[i] = hexToByte(hexString.charAt(i * 2), hexString.charAt(i * 2 + 1));
+            }
+        }
+        return valueOf(bytes);
+    }
+
+    /**
      * Returns a byte string containing the contents of the provided byte array.
      * <p>
      * This method differs from {@link #wrap(byte[])} in that it defensively
@@ -574,19 +607,19 @@
     }
 
     /**
-     * Appends a string representation of the data in this byte sequence to the
-     * given buffer using the specified indent.
+     * Returns a string representation of the data in this byte sequence using
+     * the specified indent.
      * <p>
      * The data will be formatted with sixteen hex bytes in a row followed by
      * the ASCII representation, then wrapping to a new line as necessary. The
      * state of the byte buffer is not changed.
      *
-     * @param builder
-     *            The buffer to which the information is to be appended.
      * @param indent
      *            The number of spaces to indent the output.
+     * @return the string representation of this byte string
      */
-    public void toHexPlusAsciiString(StringBuilder builder, int indent) {
+    public String toHexPlusAsciiString(int indent) {
+        StringBuilder builder = new StringBuilder();
         StringBuilder indentBuf = new StringBuilder(indent);
         for (int i = 0; i < indent; i++) {
             indentBuf.append(' ');
@@ -651,6 +684,7 @@
             builder.append(asciiBuf);
             builder.append(EOL);
         }
+        return builder.toString();
     }
 
     /**
diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/DN.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/DN.java
index 58cd314..c0612ba 100644
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/DN.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/DN.java
@@ -998,7 +998,7 @@
         if (!ava.getAttributeType().getNames().iterator().hasNext()) {
             builder.append(ava.getAttributeType().getOID());
             builder.append("=#");
-            StaticUtils.toHex(value, builder);
+            builder.append(value.toHexString());
         } else {
             final String name = ava.getAttributeType().getNameOrOID();
             // Normalizing.
@@ -1009,7 +1009,7 @@
             final Syntax syntax = ava.getAttributeType().getSyntax();
             if (!syntax.isHumanReadable()) {
                 builder.append("#");
-                StaticUtils.toHex(value, builder);
+                builder.append(value.toHexString());
             } else {
                 final String str = value.toString();
                 if (str.length() == 0) {
diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/Filter.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/Filter.java
index a4001a1..3c3b2cb 100644
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/Filter.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/Filter.java
@@ -43,8 +43,6 @@
 import org.forgerock.opendj.ldap.schema.Schema;
 import org.forgerock.util.Reject;
 
-import com.forgerock.opendj.util.StaticUtils;
-
 /**
  * A search filter as defined in RFC 4511. In addition this class also provides
  * support for the absolute true and absolute false filters as defined in RFC
@@ -422,7 +420,7 @@
                     builder.append('(');
                     builder.append(byteToHex(filterTag));
                     builder.append(':');
-                    StaticUtils.toHex(filterBytes, builder);
+                    builder.append(filterBytes.toHexString());
                     builder.append(')');
                     return builder;
                 }
diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/controls/GenericControl.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/controls/GenericControl.java
index 47370a4..7329289 100644
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/controls/GenericControl.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/controls/GenericControl.java
@@ -28,7 +28,6 @@
 
 import org.forgerock.opendj.ldap.ByteString;
 
-import com.forgerock.opendj.util.StaticUtils;
 import org.forgerock.util.Reject;
 
 /**
@@ -168,7 +167,7 @@
         builder.append(isCritical());
         if (value != null) {
             builder.append(", value=");
-            StaticUtils.toHexPlusAscii(value, builder, 4);
+            builder.append(value.toHexPlusAsciiString(4));
         }
         builder.append(")");
         return builder.toString();
diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/requests/AbstractExtendedRequest.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/requests/AbstractExtendedRequest.java
index c8efd73..3515ecb 100644
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/requests/AbstractExtendedRequest.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/requests/AbstractExtendedRequest.java
@@ -31,8 +31,6 @@
 import org.forgerock.opendj.ldap.responses.ExtendedResult;
 import org.forgerock.opendj.ldap.responses.ExtendedResultDecoder;
 
-import com.forgerock.opendj.util.StaticUtils;
-
 /**
  * An abstract Extended request which can be used as the basis for implementing
  * new Extended operations.
@@ -84,7 +82,7 @@
         builder.append(getOID());
         if (hasValue()) {
             builder.append(", requestValue=");
-            StaticUtils.toHexPlusAscii(getValue(), builder, 4);
+            builder.append(getValue().toHexPlusAsciiString(4));
         }
         builder.append(", controls=");
         builder.append(getControls());
diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/requests/GenericExtendedRequestImpl.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/requests/GenericExtendedRequestImpl.java
index 30c48ef..b248156 100644
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/requests/GenericExtendedRequestImpl.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/requests/GenericExtendedRequestImpl.java
@@ -38,7 +38,6 @@
 import org.forgerock.opendj.ldap.responses.GenericExtendedResult;
 import org.forgerock.opendj.ldap.responses.Responses;
 
-import com.forgerock.opendj.util.StaticUtils;
 import org.forgerock.util.Reject;
 
 /**
@@ -154,7 +153,7 @@
         builder.append(getOID());
         if (hasValue()) {
             builder.append(", requestValue=");
-            StaticUtils.toHexPlusAscii(getValue(), builder, 4);
+            builder.append(getValue().toHexPlusAsciiString(4));
         }
         builder.append(", controls=");
         builder.append(getControls());
diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/AbstractExtendedResult.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/AbstractExtendedResult.java
index a215853..d0b481a 100644
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/AbstractExtendedResult.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/AbstractExtendedResult.java
@@ -30,8 +30,6 @@
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ResultCode;
 
-import com.forgerock.opendj.util.StaticUtils;
-
 /**
  * An abstract Extended result which can be used as the basis for implementing
  * new Extended operations.
@@ -91,7 +89,7 @@
         builder.append(getOID() == null ? "" : getOID());
         if (hasValue()) {
             builder.append(", responseValue=");
-            StaticUtils.toHexPlusAscii(getValue(), builder, 4);
+            builder.append(getValue().toHexPlusAsciiString(4));
         }
         builder.append(", controls=");
         builder.append(getControls());
diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/AbstractIntermediateResponse.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/AbstractIntermediateResponse.java
index fa47f82..793bd05 100644
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/AbstractIntermediateResponse.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/AbstractIntermediateResponse.java
@@ -29,8 +29,6 @@
 
 import org.forgerock.opendj.ldap.ByteString;
 
-import com.forgerock.opendj.util.StaticUtils;
-
 /**
  * An abstract Intermediate response which can be used as the basis for
  * implementing new Intermediate responses.
@@ -77,7 +75,7 @@
         builder.append(getOID() == null ? "" : getOID());
         if (hasValue()) {
             builder.append(", responseValue=");
-            StaticUtils.toHexPlusAscii(getValue(), builder, 4);
+            builder.append(getValue().toHexPlusAsciiString(4));
         }
         builder.append(", controls=");
         builder.append(getControls());
diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/GenericExtendedResultImpl.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/GenericExtendedResultImpl.java
index 62dc9e9..775cefd 100644
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/GenericExtendedResultImpl.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/GenericExtendedResultImpl.java
@@ -30,8 +30,6 @@
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ResultCode;
 
-import com.forgerock.opendj.util.StaticUtils;
-
 /**
  * Generic extended result implementation.
  */
@@ -93,7 +91,7 @@
         builder.append(getOID() == null ? "" : getOID());
         if (hasValue()) {
             builder.append(", responseValue=");
-            StaticUtils.toHexPlusAscii(getValue(), builder, 4);
+            builder.append(getValue().toHexPlusAsciiString(4));
         }
         builder.append(", controls=");
         builder.append(getControls());
diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/GenericIntermediateResponseImpl.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/GenericIntermediateResponseImpl.java
index 30a7acf..4697c95 100644
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/GenericIntermediateResponseImpl.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/responses/GenericIntermediateResponseImpl.java
@@ -29,8 +29,6 @@
 
 import org.forgerock.opendj.ldap.ByteString;
 
-import com.forgerock.opendj.util.StaticUtils;
-
 /**
  * Generic intermediate response implementation.
  */
@@ -85,7 +83,7 @@
         builder.append(getOID() == null ? "" : getOID());
         if (hasValue()) {
             builder.append(", requestValue=");
-            StaticUtils.toHexPlusAscii(getValue(), builder, 4);
+            builder.append(getValue().toHexPlusAsciiString(4));
         }
         builder.append(", controls=");
         builder.append(getControls());

--
Gitblit v1.10.0