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

Jean-Noel Rouvignac
18.04.2014 f20fea692975b8541715a34ff5e67dd30b93ac9e
OPENDJ-1308 Migrate schema support

ResultCode.java, ResultCodeTestCase.java, core.properties:
Added UNDEFINED value.
Transformed ELEMENTS array field into a Map + adapted the code.
3 files modified
54 ■■■■■ changed files
opendj-core/src/main/java/org/forgerock/opendj/ldap/ResultCode.java 32 ●●●●● patch | view | raw | blame | history
opendj-core/src/main/resources/com/forgerock/opendj/ldap/core.properties 1 ●●●● patch | view | raw | blame | history
opendj-core/src/test/java/org/forgerock/opendj/ldap/ResultCodeTestCase.java 21 ●●●● patch | view | raw | blame | history
opendj-core/src/main/java/org/forgerock/opendj/ldap/ResultCode.java
@@ -24,12 +24,13 @@
 *      Copyright 2009 Sun Microsystems, Inc.
 *      Portions copyright 2013 ForgeRock AS.
 */
package org.forgerock.opendj.ldap;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.LinkedHashMap;
import java.util.Map;
import org.forgerock.i18n.LocalizableMessage;
@@ -54,6 +55,8 @@
     */
    public static enum Enum {
        //@Checkstyle:off
        /** @see ResultCode#UNDEFINED */
        UNDEFINED,
        /** @see ResultCode#SUCCESS */
        SUCCESS,
        /** @see ResultCode#OPERATIONS_ERROR */
@@ -191,10 +194,20 @@
        //@Checkstyle:on
    }
    private static final ResultCode[] ELEMENTS = new ResultCode[16655];
    private static final Map<Integer, ResultCode> ELEMENTS = new LinkedHashMap<Integer, ResultCode>();
    private static final List<ResultCode> IMMUTABLE_ELEMENTS = Collections.unmodifiableList(Arrays
            .asList(ELEMENTS));
    private static final List<ResultCode> IMMUTABLE_ELEMENTS = Collections.unmodifiableList(new ArrayList<ResultCode>(
            ELEMENTS.values()));
    /**
     * The result code that should only be used if the actual result code has
     * not yet been determined.
     * <p>
     * Despite not being a standard result code, it is an implementation of the
     * null object design pattern for this type.
     */
    public static final ResultCode UNDEFINED = registerErrorResultCode(-1,
            INFO_RESULT_UNDEFINED.get(), Enum.UNDEFINED);
    /**
     * The result code that indicates that the operation completed successfully.
@@ -846,10 +859,7 @@
     * @return The result code.
     */
    public static ResultCode valueOf(final int intValue) {
        ResultCode result = null;
        if (0 <= intValue && intValue < ELEMENTS.length) {
            result = ELEMENTS[intValue];
        }
        ResultCode result = ELEMENTS.get(intValue);
        if (result == null) {
            result = new ResultCode(
                intValue, LocalizableMessage.raw("unknown(" + intValue + ")"), true, Enum.UNKNOWN);
@@ -883,7 +893,7 @@
    private static ResultCode registerErrorResultCode(final int intValue,
            final LocalizableMessage name, final Enum resultCodeEnum) {
        final ResultCode t = new ResultCode(intValue, name, true, resultCodeEnum);
        ELEMENTS[intValue] = t;
        ELEMENTS.put(intValue, t);
        return t;
    }
@@ -902,7 +912,7 @@
    private static ResultCode registerSuccessResultCode(final int intValue,
            final LocalizableMessage name, final Enum resultCodeEnum) {
        final ResultCode t = new ResultCode(intValue, name, false, resultCodeEnum);
        ELEMENTS[intValue] = t;
        ELEMENTS.put(intValue, t);
        return t;
    }
opendj-core/src/main/resources/com/forgerock/opendj/ldap/core.properties
@@ -514,6 +514,7 @@
ERR_SCHEMA_CONFLICTING_NAME_FORM_OID=Unable to register name form %s \
 with the server schema because its OID %s conflicts with the OID for an \
 existing name form %s
INFO_RESULT_UNDEFINED=Undefined
INFO_RESULT_SUCCESS=Success
INFO_RESULT_OPERATIONS_ERROR=Operations Error
INFO_RESULT_PROTOCOL_ERROR=Protocol Error
opendj-core/src/test/java/org/forgerock/opendj/ldap/ResultCodeTestCase.java
@@ -26,7 +26,6 @@
import java.util.EnumSet;
import java.util.Iterator;
import java.util.LinkedList;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
@@ -39,13 +38,7 @@
    @DataProvider
    public Iterator<Object[]> valuesDataProvider() {
        final LinkedList<ResultCode> values = new LinkedList<ResultCode>(ResultCode.values());
        for (Iterator<ResultCode> iter = values.iterator(); iter.hasNext();) {
            if (iter.next() == null) {
                iter.remove();
            }
        }
        return new DataProviderIterator(values);
        return new DataProviderIterator(ResultCode.values());
    }
    @Test(dataProvider = "valuesDataProvider")
@@ -55,8 +48,16 @@
    @Test
    public void valueOfIntUnknown() throws Exception {
        int intValue = -1;
        ResultCode unknown = ResultCode.valueOf(intValue);
        int intValue;
        ResultCode unknown;
        intValue = -2;
        unknown = ResultCode.valueOf(intValue);
        assertSame(unknown.intValue(), intValue);
        assertSame(unknown.asEnum(), ResultCode.Enum.UNKNOWN);
        intValue = Integer.MAX_VALUE;
        unknown = ResultCode.valueOf(intValue);
        assertSame(unknown.intValue(), intValue);
        assertSame(unknown.asEnum(), ResultCode.Enum.UNKNOWN);
    }