mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noel Rouvignac
05.31.2014 780d1d942f3568499fb31ceb3a1f42d4f7c33b1b
OPENDJ-1307 Migrate server ASN1 classes to SDK


ASN1 classes logging is throwing an UnsupportedOperationException while being used in the server. This exception is thrown by OpenDJLoggerAdapter from the opendj-slf4j-adapter in use in the server.
Changed OpenDJ SDK to use LocalizedLogger instead of raw slf4j-api (at least for IO category).
More work remains to switch all OpenDJ SDK to use LocalizedLogger instead of raw slf4j-api.


StaticUtils.java, *.java:
Removed IO_LOG + replaced every uses of it by using per class LocalizedLoggers.

pom.xml:
Added a compile time dependency to 18n-slf4j.

OpenDJLoggerAdapter.java:
Removed an empty line.
10 files modified
321 ■■■■ changed files
opendj-core/pom.xml 4 ●●●● patch | view | raw | blame | history
opendj-core/src/main/java/com/forgerock/opendj/util/StaticUtils.java 8 ●●●● patch | view | raw | blame | history
opendj-core/src/main/java/org/forgerock/opendj/io/ASN1ByteSequenceReader.java 14 ●●●●● patch | view | raw | blame | history
opendj-core/src/main/java/org/forgerock/opendj/io/ASN1InputStreamReader.java 38 ●●●●● patch | view | raw | blame | history
opendj-core/src/main/java/org/forgerock/opendj/io/ASN1OutputStreamWriter.java 49 ●●●● patch | view | raw | blame | history
opendj-core/src/main/java/org/forgerock/opendj/io/LDAPReader.java 56 ●●●● patch | view | raw | blame | history
opendj-core/src/main/java/org/forgerock/opendj/io/LDAPWriter.java 57 ●●●● patch | view | raw | blame | history
opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/ASN1BufferReader.java 43 ●●●●● patch | view | raw | blame | history
opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/ASN1BufferWriter.java 51 ●●●● patch | view | raw | blame | history
opendj-slf4j-adapter/src/main/java/org/opends/server/loggers/OpenDJLoggerAdapter.java 1 ●●●● patch | view | raw | blame | history
opendj-core/pom.xml
@@ -53,6 +53,10 @@
      <artifactId>forgerock-util</artifactId>
    </dependency>
    <dependency>
      <groupId>org.forgerock.commons</groupId>
      <artifactId>i18n-slf4j</artifactId>
    </dependency>
    <dependency>
      <groupId>org.forgerock</groupId>
      <artifactId>forgerock-build-tools</artifactId>
      <version>${forgerockBuildToolsVersion}</version>
opendj-core/src/main/java/com/forgerock/opendj/util/StaticUtils.java
@@ -78,11 +78,6 @@
    public static final Logger SCHEMA_LOG = LoggerFactory.getLogger(DEFAULT_LOGGER_NAME + ".schema");
    /**
     * The logger used by the SDK for IO related features (buffers, readers, writers).
     */
    public static final Logger IO_LOG = LoggerFactory.getLogger(DEFAULT_LOGGER_NAME + ".io");
    /**
     * Indicates whether the SDK is being used in debug mode. In debug mode
     * components may enable certain instrumentation in order to help debug
     * applications.
@@ -1726,11 +1721,10 @@
    public static StackTraceElement[] getStackTraceIfDebugEnabled() {
        if (!DEBUG_ENABLED) {
            return null;
        } else {
        }
            final StackTraceElement[] stack = Thread.currentThread().getStackTrace();
            return Arrays.copyOfRange(stack, 2, stack.length);
        }
    }
    /**
     * Logs the provided message and stack trace if SDK debugging is enabled to
opendj-core/src/main/java/org/forgerock/opendj/io/ASN1ByteSequenceReader.java
@@ -22,17 +22,17 @@
 *
 *
 *      Copyright 2006-2008 Sun Microsystems, Inc.
 *      Portions copyright 2012-2013 ForgeRock AS.
 *      Portions copyright 2012-2014 ForgeRock AS.
 */
package org.forgerock.opendj.io;
import static com.forgerock.opendj.ldap.CoreMessages.*;
import static com.forgerock.opendj.util.StaticUtils.IO_LOG;
import java.io.IOException;
import java.util.LinkedList;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteSequenceReader;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ByteStringBuilder;
@@ -41,7 +41,9 @@
/**
 * An ASN.1 reader that reads from a {@link ByteSequenceReader}.
 */
final class ASN1ByteSequenceReader extends AbstractASN1Reader implements ASN1Reader {
final class ASN1ByteSequenceReader extends AbstractASN1Reader {
    private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
    private int state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
@@ -164,8 +166,8 @@
        }
        if (reader.remaining() > 0) {
            IO_LOG.debug("Ignoring {} unused trailing bytes in ASN.1 SEQUENCE",
                    reader.remaining());
            logger.debug(LocalizableMessage.raw(
                    "Ignoring %d unused trailing bytes in ASN.1 SEQUENCE", reader.remaining()));
        }
        reader = readerStack.removeFirst();
opendj-core/src/main/java/org/forgerock/opendj/io/ASN1InputStreamReader.java
@@ -22,14 +22,11 @@
 *
 *
 *      Copyright 2006-2008 Sun Microsystems, Inc.
 *      Portions copyright 2012-2013 ForgeRock AS.
 *      Portions copyright 2012-2014 ForgeRock AS.
 */
package org.forgerock.opendj.io;
import static com.forgerock.opendj.ldap.CoreMessages.*;
import static com.forgerock.opendj.util.StaticUtils.IO_LOG;
import static com.forgerock.opendj.util.StaticUtils.byteToHex;
import java.io.IOException;
import java.io.InputStream;
@@ -37,6 +34,7 @@
import java.util.LinkedList;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ByteStringBuilder;
import org.forgerock.opendj.ldap.DecodeException;
@@ -46,7 +44,10 @@
/**
 * An ASN1Reader that reads from an input stream.
 */
final class ASN1InputStreamReader extends AbstractASN1Reader implements ASN1Reader {
final class ASN1InputStreamReader extends AbstractASN1Reader {
    private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
    private int state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
    private byte peekType = 0;
@@ -171,10 +172,8 @@
            throw DecodeException.fatalError(message);
        }
        if (IO_LOG.isTraceEnabled()) {
            IO_LOG.trace("READ ASN.1 BOOLEAN(type=0x{}, length={}, value={})",
                    byteToHex(peekType), peekLength, String.valueOf(readByte != 0x00));
        }
        logger.trace("READ ASN.1 BOOLEAN(type=0x%x, length=%d, value=%s)", peekType, peekLength, readByte != 0x00);
        state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
        return readByte != 0x00;
    }
@@ -191,14 +190,12 @@
        // Ignore all unused trailing components.
        final SizeLimitInputStream subSq = (SizeLimitInputStream) in;
        if (subSq.getSizeLimit() - subSq.getBytesRead() > 0) {
            if (IO_LOG.isTraceEnabled()) {
                IO_LOG.trace("Ignoring {} unused trailing bytes in ASN.1 SEQUENCE",
            logger.trace("Ignoring %d unused trailing bytes in ASN.1 SEQUENCE",
                        subSq.getSizeLimit() - subSq.getBytesRead());
            }
            subSq.skip(subSq.getSizeLimit() - subSq.getBytesRead());
        }
        IO_LOG.trace("READ ASN.1 END SEQUENCE");
        logger.trace("READ ASN.1 END SEQUENCE");
        in = streamStack.removeFirst();
@@ -282,8 +279,7 @@
                intValue = (intValue << 8) | (readByte & 0xFF);
            }
            IO_LOG.trace("READ ASN.1 INTEGER(type=0x{}, length={}, value={})",
                    byteToHex(peekType), peekLength, intValue);
            logger.trace("READ ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", peekType, peekLength, intValue);
            state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
            return intValue;
@@ -303,8 +299,7 @@
            throw DecodeException.fatalError(message);
        }
        IO_LOG.trace("READ ASN.1 NULL(type=0x{}, length={})",
                byteToHex(peekType), peekLength);
        logger.trace("READ ASN.1 NULL(type=0x%x, length=%d)", peekType, peekLength);
        state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
    }
@@ -336,7 +331,7 @@
            bytesNeeded -= bytesRead;
        }
        IO_LOG.trace("READ ASN.1 OCTETSTRING(type=0x{}, length={})", byteToHex(peekType), peekLength);
        logger.trace("READ ASN.1 OCTETSTRING(type=0x%x, length=%d)", peekType, peekLength);
        state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
        return ByteString.wrap(value);
@@ -367,7 +362,7 @@
            bytesNeeded -= bytesRead;
        }
        IO_LOG.trace("READ ASN.1 OCTETSTRING(type=0x{}, length={})", byteToHex(peekType), peekLength);
        logger.trace("READ ASN.1 OCTETSTRING(type=0x%x, length=%d)", peekType, peekLength);
        state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
        return builder;
    }
@@ -411,8 +406,7 @@
            throw new RuntimeException("Unable to decode ASN.1 OCTETSTRING bytes as UTF-8 string ", e);
        }
        IO_LOG.trace("READ ASN.1 OCTETSTRING(type=0x{}, length={}, value={})",
                byteToHex(peekType), peekLength, str);
        logger.trace("READ ASN.1 OCTETSTRING(type=0x%x, length=%d, value=%s)", peekType, peekLength, str);
        return str;
    }
@@ -426,7 +420,7 @@
        final SizeLimitInputStream subStream = new SizeLimitInputStream(in, peekLength);
        IO_LOG.trace("READ ASN.1 START SEQUENCE(type=0x{}, length={})", byteToHex(peekType), peekLength);
        logger.trace("READ ASN.1 START SEQUENCE(type=0x%x, length=%d)", peekType, peekLength);
        streamStack.addFirst(in);
        in = subStream;
opendj-core/src/main/java/org/forgerock/opendj/io/ASN1OutputStreamWriter.java
@@ -26,14 +26,13 @@
 */
package org.forgerock.opendj.io;
import static com.forgerock.opendj.ldap.CoreMessages.ERR_ASN1_SEQUENCE_WRITE_NOT_STARTED;
import static com.forgerock.opendj.util.StaticUtils.IO_LOG;
import static com.forgerock.opendj.util.StaticUtils.byteToHex;
import static com.forgerock.opendj.ldap.CoreMessages.*;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.opendj.ldap.ByteStringBuilder;
@@ -43,6 +42,9 @@
 * An ASN1Writer implementation that outputs to an outputstream.
 */
final class ASN1OutputStreamWriter extends AbstractASN1Writer {
    private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
    private final OutputStream rootStream;
    private OutputStream out;
    private final ArrayList<ByteStringBuilder> streamStack;
@@ -96,8 +98,7 @@
        writeLength(1);
        out.write(booleanValue ? ASN1.BOOLEAN_VALUE_TRUE : ASN1.BOOLEAN_VALUE_FALSE);
        IO_LOG.trace("WRITE ASN.1 BOOLEAN(type=0x{}, length={}, value={})",
                    byteToHex(type), 1, String.valueOf(booleanValue));
        logger.trace("WRITE ASN.1 BOOLEAN(type=0x%x, length=%d, value=%s)", type, 1, booleanValue);
        return this;
    }
@@ -125,7 +126,7 @@
        writeLength(childStream.length());
        childStream.copyTo(parentStream);
        IO_LOG.trace("WRITE ASN.1 END SEQUENCE(length={})", childStream.length());
        logger.trace("WRITE ASN.1 END SEQUENCE(length=%d)", childStream.length());
        if (childStream.capacity() > maxBufferSize) {
            // garbage collect excessively large buffers
@@ -162,27 +163,27 @@
                || ((intValue & 0x0000007F) == intValue)) {
            writeLength(1);
            out.write((byte) (intValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 1, intValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 1, intValue);
        } else if (((intValue < 0) && ((intValue & 0xFFFF8000) == 0xFFFF8000))
                || ((intValue & 0x00007FFF) == intValue)) {
            writeLength(2);
            out.write((byte) ((intValue >> 8) & 0xFF));
            out.write((byte) (intValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 2, intValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 2, intValue);
        } else if (((intValue < 0) && ((intValue & 0xFF800000) == 0xFF800000))
                || ((intValue & 0x007FFFFF) == intValue)) {
            writeLength(3);
            out.write((byte) ((intValue >> 16) & 0xFF));
            out.write((byte) ((intValue >> 8) & 0xFF));
            out.write((byte) (intValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 3, intValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 3, intValue);
        } else {
            writeLength(4);
            out.write((byte) ((intValue >> 24) & 0xFF));
            out.write((byte) ((intValue >> 16) & 0xFF));
            out.write((byte) ((intValue >> 8) & 0xFF));
            out.write((byte) (intValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 4, intValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 4, intValue);
        }
        return this;
    }
@@ -197,20 +198,20 @@
                || ((longValue & 0x000000000000007FL) == longValue)) {
            writeLength(1);
            out.write((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 1, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 1, longValue);
        } else if (((longValue < 0) && ((longValue & 0xFFFFFFFFFFFF8000L) == 0xFFFFFFFFFFFF8000L))
                || ((longValue & 0x0000000000007FFFL) == longValue)) {
            writeLength(2);
            out.write((byte) ((longValue >> 8) & 0xFF));
            out.write((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 2, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 2, longValue);
        } else if (((longValue < 0) && ((longValue & 0xFFFFFFFFFF800000L) == 0xFFFFFFFFFF800000L))
                || ((longValue & 0x00000000007FFFFFL) == longValue)) {
            writeLength(3);
            out.write((byte) ((longValue >> 16) & 0xFF));
            out.write((byte) ((longValue >> 8) & 0xFF));
            out.write((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 3, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 3, longValue);
        } else if (((longValue < 0) && ((longValue & 0xFFFFFFFF80000000L) == 0xFFFFFFFF80000000L))
                || ((longValue & 0x000000007FFFFFFFL) == longValue)) {
            writeLength(4);
@@ -218,7 +219,7 @@
            out.write((byte) ((longValue >> 16) & 0xFF));
            out.write((byte) ((longValue >> 8) & 0xFF));
            out.write((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 4, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 4, longValue);
        } else if (((longValue < 0) && ((longValue & 0xFFFFFF8000000000L) == 0xFFFFFF8000000000L))
                || ((longValue & 0x0000007FFFFFFFFFL) == longValue)) {
            writeLength(5);
@@ -227,7 +228,7 @@
            out.write((byte) ((longValue >> 16) & 0xFF));
            out.write((byte) ((longValue >> 8) & 0xFF));
            out.write((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 5, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 5, longValue);
        } else if (((longValue < 0) && ((longValue & 0xFFFF800000000000L) == 0xFFFF800000000000L))
                || ((longValue & 0x00007FFFFFFFFFFFL) == longValue)) {
            writeLength(6);
@@ -237,7 +238,7 @@
            out.write((byte) ((longValue >> 16) & 0xFF));
            out.write((byte) ((longValue >> 8) & 0xFF));
            out.write((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 6, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 6, longValue);
        } else if (((longValue < 0) && ((longValue & 0xFF80000000000000L) == 0xFF80000000000000L))
                || ((longValue & 0x007FFFFFFFFFFFFFL) == longValue)) {
            writeLength(7);
@@ -248,7 +249,7 @@
            out.write((byte) ((longValue >> 16) & 0xFF));
            out.write((byte) ((longValue >> 8) & 0xFF));
            out.write((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 7, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 7, longValue);
        } else {
            writeLength(8);
            out.write((byte) ((longValue >> 56) & 0xFF));
@@ -259,7 +260,7 @@
            out.write((byte) ((longValue >> 16) & 0xFF));
            out.write((byte) ((longValue >> 8) & 0xFF));
            out.write((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 8, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 8, longValue);
        }
        return this;
    }
@@ -272,7 +273,7 @@
        out.write(type);
        writeLength(0);
        IO_LOG.trace("WRITE ASN.1 NULL(type=0x{}, length={})", byteToHex(type), 0);
        logger.trace("WRITE ASN.1 NULL(type=0x%x, length=%d)", type, 0);
        return this;
    }
@@ -286,7 +287,7 @@
        writeLength(length);
        out.write(value, offset, length);
        IO_LOG.trace("WRITE ASN.1 OCTETSTRING(type=0x{}, length={})", byteToHex(type), length);
        logger.trace("WRITE ASN.1 OCTETSTRING(type=0x%x, length=%d)", type, length);
        return this;
    }
@@ -300,8 +301,7 @@
        writeLength(value.length());
        value.copyTo(out);
        IO_LOG.trace("WRITE ASN.1 OCTETSTRING(type=0x{}, length={})", byteToHex(type), value.length());
        logger.trace("WRITE ASN.1 OCTETSTRING(type=0x%x, length=%d)", type, value.length());
        return this;
    }
@@ -321,8 +321,7 @@
        writeLength(bytes.length);
        out.write(bytes);
        IO_LOG.trace("WRITE ASN.1 OCTETSTRING(type=0x{}, length={}, value={})",
                byteToHex(type), bytes.length, value);
        logger.trace("WRITE ASN.1 OCTETSTRING(type=0x%x, length=%d, value=%s)", type, bytes.length, value);
        return this;
    }
@@ -346,7 +345,7 @@
            out = streamStack.get(stackDepth).asOutputStream();
        }
        IO_LOG.trace("WRITE ASN.1 START SEQUENCE(type=0x{})", byteToHex(type));
        logger.trace("WRITE ASN.1 START SEQUENCE(type=0x%x)", type);
        return this;
    }
opendj-core/src/main/java/org/forgerock/opendj/io/LDAPReader.java
@@ -27,15 +27,12 @@
package org.forgerock.opendj.io;
import static com.forgerock.opendj.ldap.CoreMessages.ERR_LDAP_MODIFICATION_DECODE_INVALID_MOD_TYPE;
import static com.forgerock.opendj.ldap.CoreMessages.ERR_LDAP_SEARCH_REQUEST_DECODE_INVALID_DEREF;
import static com.forgerock.opendj.ldap.CoreMessages.ERR_LDAP_SEARCH_REQUEST_DECODE_INVALID_SCOPE;
import static com.forgerock.opendj.util.StaticUtils.IO_LOG;
import static com.forgerock.opendj.util.StaticUtils.byteToHex;
import static com.forgerock.opendj.ldap.CoreMessages.*;
import java.io.IOException;
import org.forgerock.i18n.LocalizedIllegalArgumentException;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.Attribute;
import org.forgerock.opendj.ldap.AttributeDescription;
import org.forgerock.opendj.ldap.ByteString;
@@ -82,6 +79,9 @@
 *            The type of ASN.1 reader used for decoding elements.
 */
public final class LDAPReader<R extends ASN1Reader> {
    private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
    private final DecodeOptions options;
    private final R reader;
@@ -140,7 +140,7 @@
        final int msgToAbandon = (int) reader.readInteger(LDAP.OP_TYPE_ABANDON_REQUEST);
        final AbandonRequest message = Requests.newAbandonRequest(msgToAbandon);
        readControls(message);
        IO_LOG.trace("DECODE LDAP ABANDON REQUEST(messageID={}, request={})", messageID, message);
        logger.trace("DECODE LDAP ABANDON REQUEST(messageID=%d, request=%s)", messageID, message);
        handler.abandonRequest(messageID, message);
    }
@@ -149,7 +149,7 @@
        final Entry entry = LDAP.readEntry(reader, LDAP.OP_TYPE_ADD_REQUEST, options);
        final AddRequest message = Requests.newAddRequest(entry);
        readControls(message);
        IO_LOG.trace("DECODE LDAP ADD REQUEST(messageID={}, request={})", messageID, message);
        logger.trace("DECODE LDAP ADD REQUEST(messageID=%d, request=%s)", messageID, message);
        handler.addRequest(messageID, message);
    }
@@ -169,7 +169,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP ADD RESULT(messageID={}, result={})", messageID, message);
        logger.trace("DECODE LDAP ADD RESULT(messageID=%d, result=%s)", messageID, message);
        handler.addResult(messageID, message);
    }
@@ -184,8 +184,8 @@
            final GenericBindRequest request =
                    Requests.newGenericBindRequest(authName, authType, authBytes);
            readControls(request);
            IO_LOG.trace("DECODE LDAP BIND REQUEST(messageID={}, auth=0x{}, request={})",
                    messageID, byteToHex(request.getAuthenticationType()), request);
            logger.trace("DECODE LDAP BIND REQUEST(messageID=%d, auth=0x%x, request=%s)",
                messageID, request.getAuthenticationType(), request);
            handler.bindRequest(messageID, protocolVersion, request);
        } finally {
@@ -213,7 +213,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP BIND RESULT(messageID={}, result={})", messageID, message);
        logger.trace("DECODE LDAP BIND RESULT(messageID=%d, result=%s)", messageID, message);
        handler.bindResult(messageID, message);
    }
@@ -238,7 +238,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP COMPARE REQUEST(messageID={}, request={})", messageID, message);
        logger.trace("DECODE LDAP COMPARE REQUEST(messageID=%d, request=%s)", messageID, message);
        handler.compareRequest(messageID, message);
    }
@@ -258,7 +258,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP COMPARE RESULT(messageID={}, result={})", messageID, message);
        logger.trace("DECODE LDAP COMPARE RESULT(messageID=%d, result=%s)", messageID, message);
        handler.compareResult(messageID, message);
    }
@@ -317,7 +317,7 @@
        final DN dn = LDAP.readDN(dnString, schema);
        final DeleteRequest message = Requests.newDeleteRequest(dn);
        readControls(message);
        IO_LOG.trace("DECODE LDAP DELETE REQUEST(messageID={}, request={})", messageID, message);
        logger.trace("DECODE LDAP DELETE REQUEST(messageID=%d, request=%s)", messageID, message);
        handler.deleteRequest(messageID, message);
    }
@@ -337,7 +337,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP DELETE RESULT(messageID={}, result={})", messageID, message);
        logger.trace("DECODE LDAP DELETE RESULT(messageID=%d, result=%s)", messageID, message);
        handler.deleteResult(messageID, message);
    }
@@ -357,7 +357,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP EXTENDED REQUEST(messageID={}, request={})", messageID, message);
        logger.trace("DECODE LDAP EXTENDED REQUEST(messageID=%d, request=%s)", messageID, message);
        handler.extendedRequest(messageID, message);
    }
@@ -383,7 +383,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP EXTENDED RESULT(messageID={}, result={})", messageID, message);
        logger.trace("DECODE LDAP EXTENDED RESULT(messageID=%d, result=%s)", messageID, message);
        handler.extendedResult(messageID, message);
    }
@@ -405,8 +405,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP INTERMEDIATE RESPONSE(messageID={}, response={})", messageID,
                message);
        logger.trace("DECODE LDAP INTERMEDIATE RESPONSE(messageID=%d, response=%s)", messageID, message);
        handler.intermediateResponse(messageID, message);
    }
@@ -432,7 +431,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP MODIFY DN REQUEST(messageID={}, request={})", messageID, message);
        logger.trace("DECODE LDAP MODIFY DN REQUEST(messageID=%d, request=%s)", messageID, message);
        handler.modifyDNRequest(messageID, message);
    }
@@ -452,7 +451,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE MODIFY DN RESULT(messageID={}, result={})", messageID, message);
        logger.trace("DECODE LDAP MODIFY DN RESULT(messageID=%d, result=%s)", messageID, message);
        handler.modifyDNResult(messageID, message);
    }
@@ -507,7 +506,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP MODIFY REQUEST(messageID={}, request={})", messageID, message);
        logger.trace("DECODE LDAP MODIFY REQUEST(messageID=%d, request=%s)", messageID, message);
        handler.modifyRequest(messageID, message);
    }
@@ -527,7 +526,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP MODIFY RESULT(messageID={}, result={})", messageID, message);
        logger.trace("DECODE LDAP MODIFY RESULT(messageID=%d, result=%s)", messageID, message);
        handler.modifyResult(messageID, message);
    }
@@ -672,7 +671,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP SEARCH REQUEST(messageID={}, request={})", messageID, message);
        logger.trace("DECODE LDAP SEARCH REQUEST(messageID=%d, request=%s)", messageID, message);
        handler.searchRequest(messageID, message);
    }
@@ -692,7 +691,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP SEARCH RESULT(messageID={}, result={})", messageID, message);
        logger.trace("DECODE LDAP SEARCH RESULT(messageID=%d, result=%s)", messageID, message);
        handler.searchResult(messageID, message);
    }
@@ -701,7 +700,7 @@
        final Entry entry = LDAP.readEntry(reader, LDAP.OP_TYPE_SEARCH_RESULT_ENTRY, options);
        final SearchResultEntry message = Responses.newSearchResultEntry(entry);
        readControls(message);
        IO_LOG.trace("DECODE LDAP SEARCH RESULT ENTRY(messageID={}, entry={})", messageID, message);
        logger.trace("DECODE LDAP SEARCH RESULT ENTRY(messageID=%d, entry=%s)", messageID, message);
        handler.searchResultEntry(messageID, message);
    }
@@ -718,8 +717,7 @@
            reader.readEndSequence();
        }
        readControls(message);
        IO_LOG.trace("DECODE LDAP SEARCH RESULT REFERENCE(messageID={}, result={})", messageID,
                message);
        logger.trace("DECODE LDAP SEARCH RESULT REFERENCE(messageID=%d, reference=%s)", messageID, message);
        handler.searchResultReference(messageID, message);
    }
@@ -728,7 +726,7 @@
        reader.readNull(LDAP.OP_TYPE_UNBIND_REQUEST);
        final UnbindRequest message = Requests.newUnbindRequest();
        readControls(message);
        IO_LOG.trace("DECODE LDAP UNBIND REQUEST(messageID={}, request={})", messageID, message);
        logger.trace("DECODE LDAP UNBIND REQUEST(messageID=%d, request=%s)", messageID, message);
        handler.unbindRequest(messageID, message);
    }
}
opendj-core/src/main/java/org/forgerock/opendj/io/LDAPWriter.java
@@ -27,12 +27,10 @@
package org.forgerock.opendj.io;
import static com.forgerock.opendj.util.StaticUtils.IO_LOG;
import static com.forgerock.opendj.util.StaticUtils.byteToHex;
import java.io.IOException;
import java.util.List;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.Modification;
@@ -55,8 +53,6 @@
import org.forgerock.opendj.ldap.responses.SearchResultEntry;
import org.forgerock.opendj.ldap.responses.SearchResultReference;
import com.forgerock.opendj.util.StaticUtils;
/**
 * Writes LDAP messages to an underlying ASN.1 writer.
 * <p>
@@ -69,6 +65,7 @@
public final class LDAPWriter<W extends ASN1Writer> {
    // @Checkstyle:ignore AvoidNestedBlocks
    private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
    private final W writer;
    LDAPWriter(final W asn1Writer) {
@@ -96,7 +93,7 @@
     */
    public void writeAbandonRequest(final int messageID, final AbandonRequest request)
            throws IOException {
        IO_LOG.trace("ENCODE LDAP ABANDON REQUEST(messageID={}, request={})", messageID, request);
        logger.trace("ENCODE LDAP ABANDON REQUEST(messageID=%d, request=%s)", messageID, request);
        writeMessageHeader(messageID);
        {
            writer.writeInteger(LDAP.OP_TYPE_ABANDON_REQUEST, request.getRequestID());
@@ -115,7 +112,7 @@
     *             If an unexpected IO error occurred.
     */
    public void writeAddRequest(final int messageID, final AddRequest request) throws IOException {
        IO_LOG.trace("ENCODE LDAP ADD REQUEST(messageID={}, request={})", messageID, request);
        logger.trace("ENCODE LDAP ADD REQUEST(messageID=%d, request=%s)", messageID, request);
        writeMessageHeader(messageID);
        {
            LDAP.writeEntry(writer, LDAP.OP_TYPE_ADD_REQUEST, request);
@@ -134,7 +131,7 @@
     *             If an unexpected IO error occurred.
     */
    public void writeAddResult(final int messageID, final Result result) throws IOException {
        IO_LOG.trace("ENCODE LDAP ADD RESULT(messageID={}, result={})", messageID, result);
        logger.trace("ENCODE LDAP ADD RESULT(messageID=%d, result=%s)", messageID, result);
        writeMessageHeader(messageID);
        {
            writeResultHeader(LDAP.OP_TYPE_ADD_RESPONSE, result);
@@ -157,8 +154,8 @@
     */
    public void writeBindRequest(final int messageID, final int version,
            final GenericBindRequest request) throws IOException {
        IO_LOG.trace("ENCODE LDAP BIND REQUEST(messageID={}, auth=0x{}, request={})", messageID,
                byteToHex(request.getAuthenticationType()), request);
        logger.trace("ENCODE LDAP BIND REQUEST(messageID=%d, auth=0x%x, request=%s)",
            messageID, request.getAuthenticationType(), request);
        writeMessageHeader(messageID);
        {
            writer.writeStartSequence(LDAP.OP_TYPE_BIND_REQUEST);
@@ -184,7 +181,7 @@
     *             If an unexpected IO error occurred.
     */
    public void writeBindResult(final int messageID, final BindResult result) throws IOException {
        IO_LOG.trace("ENCODE LDAP BIND RESULT(messageID={}, result={})", messageID, result);
        logger.trace("ENCODE LDAP BIND RESULT(messageID=%d, result=%s)", messageID, result);
        writeMessageHeader(messageID);
        {
            writeResultHeader(LDAP.OP_TYPE_BIND_RESPONSE, result);
@@ -212,7 +209,7 @@
     */
    public void writeCompareRequest(final int messageID, final CompareRequest request)
            throws IOException {
        IO_LOG.trace("ENCODE LDAP COMPARE REQUEST(messageID={}, request={})", messageID, request);
        logger.trace("ENCODE LDAP COMPARE REQUEST(messageID=%d, request=%s)", messageID, request);
        writeMessageHeader(messageID);
        {
            writer.writeStartSequence(LDAP.OP_TYPE_COMPARE_REQUEST);
@@ -242,7 +239,7 @@
     */
    public void writeCompareResult(final int messageID, final CompareResult result)
            throws IOException {
        IO_LOG.trace("ENCODE LDAP COMPARE RESULT(messageID={}, result={})", messageID, result);
        logger.trace("ENCODE LDAP COMPARE RESULT(messageID=%d, result=%s)", messageID, result);
        writeMessageHeader(messageID);
        {
            writeResultHeader(LDAP.OP_TYPE_COMPARE_RESPONSE, result);
@@ -285,7 +282,7 @@
     */
    public void writeDeleteRequest(final int messageID, final DeleteRequest request)
            throws IOException {
        IO_LOG.trace("ENCODE LDAP DELETE REQUEST(messageID={}, request={})", messageID, request);
        logger.trace("ENCODE LDAP DELETE REQUEST(messageID=%d, request=%s)", messageID, request);
        writeMessageHeader(messageID);
        {
            writer.writeOctetString(LDAP.OP_TYPE_DELETE_REQUEST, request.getName().toString());
@@ -304,7 +301,7 @@
     *             If an unexpected IO error occurred.
     */
    public void writeDeleteResult(final int messageID, final Result result) throws IOException {
        IO_LOG.trace("ENCODE LDAP DELETE RESULT(messageID={}, result={})", messageID, result);
        logger.trace("ENCODE LDAP DELETE RESULT(messageID=%d, result=%s)", messageID, result);
        writeMessageHeader(messageID);
        {
            writeResultHeader(LDAP.OP_TYPE_DELETE_RESPONSE, result);
@@ -325,7 +322,7 @@
     */
    public void writeExtendedRequest(final int messageID, final ExtendedRequest<?> request)
            throws IOException {
        IO_LOG.trace("ENCODE LDAP EXTENDED REQUEST(messageID={}, request={})", messageID, request);
        logger.trace("ENCODE LDAP EXTENDED REQUEST(messageID=%d, request=%s)", messageID, request);
        writeMessageHeader(messageID);
        {
            writer.writeStartSequence(LDAP.OP_TYPE_EXTENDED_REQUEST);
@@ -353,7 +350,7 @@
     */
    public void writeExtendedResult(final int messageID, final ExtendedResult result)
            throws IOException {
        IO_LOG.trace("ENCODE LDAP EXTENDED RESULT(messageID={}, result={})", messageID, result);
        logger.trace("ENCODE LDAP EXTENDED RESULT(messageID=%d, result=%s)", messageID, result);
        writeMessageHeader(messageID);
        {
            writeResultHeader(LDAP.OP_TYPE_EXTENDED_RESPONSE, result);
@@ -384,8 +381,7 @@
     */
    public void writeIntermediateResponse(final int messageID, final IntermediateResponse response)
            throws IOException {
        IO_LOG.trace("ENCODE LDAP INTERMEDIATE RESPONSE(messageID={}, response={})", messageID,
                response);
        logger.trace("ENCODE LDAP INTERMEDIATE RESPONSE(messageID=%d, response=%s)", messageID, response);
        writeMessageHeader(messageID);
        {
            writer.writeStartSequence(LDAP.OP_TYPE_INTERMEDIATE_RESPONSE);
@@ -417,7 +413,7 @@
     */
    public void writeModifyDNRequest(final int messageID, final ModifyDNRequest request)
            throws IOException {
        IO_LOG.trace("ENCODE LDAP MODIFY DN REQUEST(messageID={}, request={})", messageID, request);
        logger.trace("ENCODE LDAP MODIFY DN REQUEST(messageID=%d, request=%s)", messageID, request);
        writeMessageHeader(messageID);
        {
            writer.writeStartSequence(LDAP.OP_TYPE_MODIFY_DN_REQUEST);
@@ -447,7 +443,7 @@
     *             If an unexpected IO error occurred.
     */
    public void writeModifyDNResult(final int messageID, final Result result) throws IOException {
        IO_LOG.trace("ENCODE LDAP MODIFY DN RESULT(messageID={}, result={})", messageID, result);
        logger.trace("ENCODE LDAP MODIFY DN RESULT(messageID=%d, result=%s)", messageID, result);
        writeMessageHeader(messageID);
        {
            writeResultHeader(LDAP.OP_TYPE_MODIFY_DN_RESPONSE, result);
@@ -468,7 +464,7 @@
     */
    public void writeModifyRequest(final int messageID, final ModifyRequest request)
            throws IOException {
        IO_LOG.trace("ENCODE LDAP MODIFY REQUEST(messageID={}, request={})", messageID, request);
        logger.trace("ENCODE LDAP MODIFY REQUEST(messageID=%d, request=%s)", messageID, request);
        writeMessageHeader(messageID);
        {
            writer.writeStartSequence(LDAP.OP_TYPE_MODIFY_REQUEST);
@@ -498,7 +494,7 @@
     *             If an unexpected IO error occurred.
     */
    public void writeModifyResult(final int messageID, final Result result) throws IOException {
        IO_LOG.trace("ENCODE LDAP MODIFY RESULT(messageID={}, result={})", messageID, result);
        logger.trace("ENCODE LDAP MODIFY RESULT(messageID=%d, result=%s)", messageID, result);
        writeMessageHeader(messageID);
        {
            writeResultHeader(LDAP.OP_TYPE_MODIFY_RESPONSE, result);
@@ -519,7 +515,7 @@
     */
    public void writeSearchRequest(final int messageID, final SearchRequest request)
            throws IOException {
        IO_LOG.trace("ENCODE LDAP SEARCH REQUEST(messageID={}, request={})", messageID, request);
        logger.trace("ENCODE LDAP SEARCH REQUEST(messageID=%d, request=%s)", messageID, request);
        writeMessageHeader(messageID);
        {
            writer.writeStartSequence(LDAP.OP_TYPE_SEARCH_REQUEST);
@@ -555,7 +551,7 @@
     *             If an unexpected IO error occurred.
     */
    public void writeSearchResult(final int messageID, final Result result) throws IOException {
        IO_LOG.trace("ENCODE LDAP SEARCH RESULT(messageID={}, result={})", messageID, result);
        logger.trace("ENCODE LDAP SEARCH RESULT(messageID=%d, result=%s)", messageID, result);
        writeMessageHeader(messageID);
        {
            writeResultHeader(LDAP.OP_TYPE_SEARCH_RESULT_DONE, result);
@@ -576,7 +572,7 @@
     */
    public void writeSearchResultEntry(final int messageID, final SearchResultEntry entry)
            throws IOException {
        IO_LOG.trace("ENCODE LDAP SEARCH RESULT ENTRY(messageID={}, entry={})", messageID, entry);
        logger.trace("ENCODE LDAP SEARCH RESULT ENTRY(messageID=%d, entry=%s)", messageID, entry);
        writeMessageHeader(messageID);
        {
            LDAP.writeEntry(writer, LDAP.OP_TYPE_SEARCH_RESULT_ENTRY, entry);
@@ -596,8 +592,7 @@
     */
    public void writeSearchResultReference(final int messageID,
            final SearchResultReference reference) throws IOException {
        IO_LOG.trace("ENCODE LDAP SEARCH RESULT REFERENCE(messageID={}, reference={})", messageID,
                reference);
        logger.trace("ENCODE LDAP SEARCH RESULT REFERENCE(messageID=%d, reference=%s)", messageID, reference);
        writeMessageHeader(messageID);
        {
            writer.writeStartSequence(LDAP.OP_TYPE_SEARCH_RESULT_REFERENCE);
@@ -623,7 +618,7 @@
     */
    public void writeUnbindRequest(final int messageID, final UnbindRequest request)
            throws IOException {
        IO_LOG.trace("ENCODE LDAP UNBIND REQUEST(messageID={}, request={})", messageID, request);
        logger.trace("ENCODE LDAP UNBIND REQUEST(messageID=%d, request=%s)", messageID, request);
        writeMessageHeader(messageID);
        {
            writer.writeNull(LDAP.OP_TYPE_UNBIND_REQUEST);
@@ -645,8 +640,8 @@
     */
    public void writeUnrecognizedMessage(final int messageID, final byte messageTag,
            final ByteString messageBytes) throws IOException {
        IO_LOG.trace("ENCODE LDAP UNKNOWN MESSAGE(messageID={}, messageTag={}, messageBytes={})",
                messageID, StaticUtils.byteToHex(messageTag), messageBytes);
        logger.trace("ENCODE LDAP UNKNOWN MESSAGE(messageID=%d, messageTag=%x, messageBytes=%s)",
                messageID, messageTag, messageBytes);
        writeMessageHeader(messageID);
        {
            writer.writeOctetString(messageTag, messageBytes);
opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/ASN1BufferReader.java
@@ -22,24 +22,16 @@
 *
 *
 *      Copyright 2010 Sun Microsystems, Inc.
 *      Portions copyright 2012-2013 ForgeRock AS.
 *      Portions copyright 2012-2014 ForgeRock AS.
 */
package org.forgerock.opendj.grizzly;
import static com.forgerock.opendj.ldap.CoreMessages.ERR_ASN1_BOOLEAN_INVALID_LENGTH;
import static com.forgerock.opendj.ldap.CoreMessages.ERR_ASN1_INTEGER_INVALID_LENGTH;
import static com.forgerock.opendj.ldap.CoreMessages.ERR_ASN1_INVALID_NUM_LENGTH_BYTES;
import static com.forgerock.opendj.ldap.CoreMessages.ERR_ASN1_NULL_INVALID_LENGTH;
import static com.forgerock.opendj.ldap.CoreMessages.ERR_ASN1_SEQUENCE_READ_NOT_STARTED;
import static com.forgerock.opendj.ldap.CoreMessages.ERR_ASN1_TRUNCATED_LENGTH_BYTE;
import static com.forgerock.opendj.ldap.CoreMessages.ERR_LDAP_CLIENT_DECODE_MAX_REQUEST_SIZE_EXCEEDED;
import static com.forgerock.opendj.util.StaticUtils.IO_LOG;
import static com.forgerock.opendj.util.StaticUtils.byteToHex;
import static com.forgerock.opendj.ldap.CoreMessages.*;
import java.io.IOException;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.io.ASN1;
import org.forgerock.opendj.io.ASN1Reader;
import org.forgerock.opendj.io.AbstractASN1Reader;
@@ -73,7 +65,8 @@
        public SequenceLimiter endSequence() throws IOException {
            parent.checkLimit(remaining());
            if (remaining() > 0) {
                IO_LOG.debug("Ignoring {} unused trailing bytes in ASN.1 SEQUENCE", remaining());
                logger.debug(LocalizableMessage.raw(
                    "Ignoring %d unused trailing bytes in ASN.1 SEQUENCE", remaining()));
            }
            for (int i = 0; i < remaining(); i++) {
                buffer.get();
@@ -136,6 +129,8 @@
        public SequenceLimiter startSequence(int readLimit);
    }
    private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
    private static final int MAX_STRING_BUFFER_SIZE = 1024;
    private int state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
    private byte peekType = 0;
@@ -250,8 +245,7 @@
        readLimiter.checkLimit(peekLength);
        final byte readByte = buffer.get();
        IO_LOG.trace("READ ASN.1 BOOLEAN(type=0x{}, length={}, value={})", byteToHex(peekType),
                peekLength, String.valueOf(readByte != 0x00));
        logger.trace("READ ASN.1 BOOLEAN(type=0x%x, length=%d, value=%s)", peekType, peekLength, readByte != 0x00);
        state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
        return readByte != 0x00;
@@ -263,7 +257,7 @@
    public void readEndSequence() throws IOException {
        readLimiter = readLimiter.endSequence();
        IO_LOG.debug("READ ASN.1 END SEQUENCE");
        logger.trace("READ ASN.1 END SEQUENCE");
        // Reset the state
        state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
@@ -336,8 +330,7 @@
                intValue = (intValue << 8) | (readByte & 0xFF);
            }
            IO_LOG.trace("READ ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(peekType),
                    peekLength, intValue);
            logger.trace("READ ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", peekType, peekLength, intValue);
            state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
            return intValue;
@@ -357,7 +350,7 @@
            throw DecodeException.fatalError(message);
        }
        IO_LOG.trace("READ ASN.1 NULL(type=0x{}, length={})", byteToHex(peekType), peekLength);
        logger.trace("READ ASN.1 NULL(type=0x%x, length=%d)", peekType, peekLength);
        state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
    }
@@ -379,8 +372,7 @@
        final byte[] value = new byte[peekLength];
        buffer.get(value);
        IO_LOG.trace("READ ASN.1 OCTETSTRING(type=0x{}, length={})", byteToHex(peekType),
                peekLength);
        logger.trace("READ ASN.1 OCTETSTRING(type=0x%x, length=%d)", peekType, peekLength);
        state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
        return ByteString.wrap(value);
@@ -405,8 +397,7 @@
            builder.append(buffer.get());
        }
        IO_LOG.trace("READ ASN.1 OCTETSTRING(type=0x{}, length={})", byteToHex(peekType),
                peekLength);
        logger.trace("READ ASN.1 OCTETSTRING(type=0x%x, length=%d)", peekType, peekLength);
        state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
        return builder;
@@ -441,13 +432,12 @@
            str = new String(readBuffer, 0, peekLength, "UTF-8");
        } catch (final Exception e) {
            // TODO: I18N
            IO_LOG.warn("Unable to decode ASN.1 OCTETSTRING bytes as UTF-8 string", e);
            logger.warn(LocalizableMessage.raw("Unable to decode ASN.1 OCTETSTRING bytes as UTF-8 string: %s", e));
            str = new String(stringBuffer, 0, peekLength);
        }
        IO_LOG.trace("READ ASN.1 OCTETSTRING(type=0x{}, length={}, value={})", byteToHex(peekType),
                peekLength, str);
        logger.trace("READ ASN.1 OCTETSTRING(type=0x%x, length=%d, value=%s)", peekType, peekLength, str);
        return str;
    }
@@ -461,8 +451,7 @@
        readLimiter = readLimiter.startSequence(peekLength);
        IO_LOG.trace("READ ASN.1 START SEQUENCE(type=0x{}, length={})", byteToHex(peekType),
                peekLength);
        logger.trace("READ ASN.1 START SEQUENCE(type=0x%x, length=%d)", peekType, peekLength);
        // Reset the state
        state = ASN1.ELEMENT_READ_STATE_NEED_TYPE;
opendj-grizzly/src/main/java/org/forgerock/opendj/grizzly/ASN1BufferWriter.java
@@ -22,18 +22,17 @@
 *
 *
 *      Copyright 2010 Sun Microsystems, Inc.
 *      Portions copyright 2012-2013 ForgeRock AS.
 *      Portions copyright 2012-2014 ForgeRock AS.
 */
package org.forgerock.opendj.grizzly;
import static com.forgerock.opendj.ldap.CoreMessages.ERR_ASN1_SEQUENCE_WRITE_NOT_STARTED;
import static com.forgerock.opendj.util.StaticUtils.IO_LOG;
import static com.forgerock.opendj.util.StaticUtils.byteToHex;
import static com.forgerock.opendj.ldap.CoreMessages.*;
import java.io.IOException;
import java.nio.ByteBuffer;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.io.ASN1;
import org.forgerock.opendj.io.ASN1Writer;
import org.forgerock.opendj.io.AbstractASN1Writer;
@@ -60,7 +59,7 @@
            writeLength(parent, buffer.length());
            parent.writeByteArray(buffer.getBackingArray(), 0, buffer.length());
            IO_LOG.trace("WRITE ASN.1 END SEQUENCE(length={})", buffer.length());
            logger.trace("WRITE ASN.1 END SEQUENCE(length=%d)", buffer.length());
            return parent;
        }
@@ -161,6 +160,8 @@
        public void writeByteArray(byte[] bs, int offset, int length) throws IOException;
    }
    private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
    private static final int BUFFER_INIT_SIZE = 1024;
    /**
@@ -224,9 +225,7 @@
        writeLength(sequenceBuffer, 1);
        sequenceBuffer.writeByte(booleanValue ? ASN1.BOOLEAN_VALUE_TRUE : ASN1.BOOLEAN_VALUE_FALSE);
        IO_LOG.trace("WRITE ASN.1 BOOLEAN(type=0x{}, length={}, value={})",
                byteToHex(type), 1, String.valueOf(booleanValue));
        logger.trace("WRITE ASN.1 BOOLEAN(type=0x%x, length=%d, value=%s)", type, 1, booleanValue);
        return this;
    }
@@ -262,27 +261,27 @@
                || ((intValue & 0x0000007F) == intValue)) {
            writeLength(sequenceBuffer, 1);
            sequenceBuffer.writeByte((byte) (intValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 1, intValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 1, intValue);
        } else if (((intValue < 0) && ((intValue & 0xFFFF8000) == 0xFFFF8000))
                || ((intValue & 0x00007FFF) == intValue)) {
            writeLength(sequenceBuffer, 2);
            sequenceBuffer.writeByte((byte) ((intValue >> 8) & 0xFF));
            sequenceBuffer.writeByte((byte) (intValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 2, intValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 2, intValue);
        } else if (((intValue < 0) && ((intValue & 0xFF800000) == 0xFF800000))
                || ((intValue & 0x007FFFFF) == intValue)) {
            writeLength(sequenceBuffer, 3);
            sequenceBuffer.writeByte((byte) ((intValue >> 16) & 0xFF));
            sequenceBuffer.writeByte((byte) ((intValue >> 8) & 0xFF));
            sequenceBuffer.writeByte((byte) (intValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 3, intValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 3, intValue);
        } else {
            writeLength(sequenceBuffer, 4);
            sequenceBuffer.writeByte((byte) ((intValue >> 24) & 0xFF));
            sequenceBuffer.writeByte((byte) ((intValue >> 16) & 0xFF));
            sequenceBuffer.writeByte((byte) ((intValue >> 8) & 0xFF));
            sequenceBuffer.writeByte((byte) (intValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 4, intValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 4, intValue);
        }
        return this;
    }
@@ -296,20 +295,20 @@
                || ((longValue & 0x000000000000007FL) == longValue)) {
            writeLength(sequenceBuffer, 1);
            sequenceBuffer.writeByte((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 1, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 1, longValue);
        } else if (((longValue < 0) && ((longValue & 0xFFFFFFFFFFFF8000L) == 0xFFFFFFFFFFFF8000L))
                || ((longValue & 0x0000000000007FFFL) == longValue)) {
            writeLength(sequenceBuffer, 2);
            sequenceBuffer.writeByte((byte) ((longValue >> 8) & 0xFF));
            sequenceBuffer.writeByte((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 2, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 2, longValue);
        } else if (((longValue < 0) && ((longValue & 0xFFFFFFFFFF800000L) == 0xFFFFFFFFFF800000L))
                || ((longValue & 0x00000000007FFFFFL) == longValue)) {
            writeLength(sequenceBuffer, 3);
            sequenceBuffer.writeByte((byte) ((longValue >> 16) & 0xFF));
            sequenceBuffer.writeByte((byte) ((longValue >> 8) & 0xFF));
            sequenceBuffer.writeByte((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 3, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 3, longValue);
        } else if (((longValue < 0) && ((longValue & 0xFFFFFFFF80000000L) == 0xFFFFFFFF80000000L))
                || ((longValue & 0x000000007FFFFFFFL) == longValue)) {
            writeLength(sequenceBuffer, 4);
@@ -317,7 +316,7 @@
            sequenceBuffer.writeByte((byte) ((longValue >> 16) & 0xFF));
            sequenceBuffer.writeByte((byte) ((longValue >> 8) & 0xFF));
            sequenceBuffer.writeByte((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 4, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 4, longValue);
        } else if (((longValue < 0) && ((longValue & 0xFFFFFF8000000000L) == 0xFFFFFF8000000000L))
                || ((longValue & 0x0000007FFFFFFFFFL) == longValue)) {
            writeLength(sequenceBuffer, 5);
@@ -326,7 +325,7 @@
            sequenceBuffer.writeByte((byte) ((longValue >> 16) & 0xFF));
            sequenceBuffer.writeByte((byte) ((longValue >> 8) & 0xFF));
            sequenceBuffer.writeByte((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 5, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 5, longValue);
        } else if (((longValue < 0) && ((longValue & 0xFFFF800000000000L) == 0xFFFF800000000000L))
                || ((longValue & 0x00007FFFFFFFFFFFL) == longValue)) {
            writeLength(sequenceBuffer, 6);
@@ -336,7 +335,7 @@
            sequenceBuffer.writeByte((byte) ((longValue >> 16) & 0xFF));
            sequenceBuffer.writeByte((byte) ((longValue >> 8) & 0xFF));
            sequenceBuffer.writeByte((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 6, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 6, longValue);
        } else if (((longValue < 0) && ((longValue & 0xFF80000000000000L) == 0xFF80000000000000L))
                || ((longValue & 0x007FFFFFFFFFFFFFL) == longValue)) {
            writeLength(sequenceBuffer, 7);
@@ -347,7 +346,7 @@
            sequenceBuffer.writeByte((byte) ((longValue >> 16) & 0xFF));
            sequenceBuffer.writeByte((byte) ((longValue >> 8) & 0xFF));
            sequenceBuffer.writeByte((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 7, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 7, longValue);
        } else {
            writeLength(sequenceBuffer, 8);
            sequenceBuffer.writeByte((byte) ((longValue >> 56) & 0xFF));
@@ -358,7 +357,7 @@
            sequenceBuffer.writeByte((byte) ((longValue >> 16) & 0xFF));
            sequenceBuffer.writeByte((byte) ((longValue >> 8) & 0xFF));
            sequenceBuffer.writeByte((byte) (longValue & 0xFF));
            IO_LOG.trace("WRITE ASN.1 INTEGER(type=0x{}, length={}, value={})", byteToHex(type), 8, longValue);
            logger.trace("WRITE ASN.1 INTEGER(type=0x%x, length=%d, value=%d)", type, 8, longValue);
        }
        return this;
    }
@@ -370,8 +369,7 @@
        sequenceBuffer.writeByte(type);
        writeLength(sequenceBuffer, 0);
        IO_LOG.trace("WRITE ASN.1 NULL(type=0x{}, length={})", byteToHex(type), 0);
        logger.trace("WRITE ASN.1 NULL(type=0x%x, length=%d)", type, 0);
        return this;
    }
@@ -384,7 +382,7 @@
        writeLength(sequenceBuffer, length);
        sequenceBuffer.writeByteArray(value, offset, length);
        IO_LOG.trace("WRITE ASN.1 OCTETSTRING(type=0x{}, length={})", byteToHex(type), length);
        logger.trace("WRITE ASN.1 OCTETSTRING(type=0x%x, length=%d)", type, length);
        return this;
    }
@@ -400,7 +398,7 @@
            sequenceBuffer.writeByte(value.byteAt(i));
        }
        IO_LOG.trace("WRITE ASN.1 OCTETSTRING(type=0x{}, length={})", byteToHex(type), value.length());
        logger.trace("WRITE ASN.1 OCTETSTRING(type=0x%x, length=%d)", type, value.length());
        return this;
    }
@@ -419,8 +417,7 @@
        writeLength(sequenceBuffer, bytes.length);
        sequenceBuffer.writeByteArray(bytes, 0, bytes.length);
        IO_LOG.trace("WRITE ASN.1 OCTETSTRING(type=0x{}, length={}, value={})", byteToHex(type),
                    bytes.length, value);
        logger.trace("WRITE ASN.1 OCTETSTRING(type=0x%x, length=%d, value=%s)", type, bytes.length, value);
        return this;
    }
@@ -431,7 +428,7 @@
        // Get a child sequence buffer
        sequenceBuffer = sequenceBuffer.startSequence(type);
        IO_LOG.trace("WRITE ASN.1 START SEQUENCE(type=0x{})", byteToHex(type));
        logger.trace("WRITE ASN.1 START SEQUENCE(type=0x%x)", type);
        return this;
    }
opendj-slf4j-adapter/src/main/java/org/opends/server/loggers/OpenDJLoggerAdapter.java
@@ -71,7 +71,6 @@
    /** Trace with message only. */
    private void logTraceMessage(String msg) {
        tracer.trace(msg);
    }
    /** Trace with message and exception. */