From ebd92d4cca1d8345c485bd50bdb30a190b100a30 Mon Sep 17 00:00:00 2001
From: Fabio Pistolesi <fabio.pistolesi@forgerock.com>
Date: Wed, 09 Sep 2015 15:20:11 +0000
Subject: [PATCH] Use forgerock util's Options class instead of SDK's private copy.

---
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/SchemaBuilder.java          |   11 +-
 opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/DirectoryStringSyntax.java |    2 
 /dev/null                                                                                         |   91 ----------------------
 opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/AttributeTypeSyntax.java   |    2 
 opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/SchemaOptionsTestCase.java  |   12 +-
 opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/JPEGSyntax.java            |    2 
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/SchemaOptions.java          |   83 --------------------
 opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/Schema.java                 |   19 ++--
 opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/CountryStringSyntax.java   |    2 
 opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/CertificateSyntax.java     |    2 
 opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/TelephoneNumberSyntax.java |    2 
 11 files changed, 32 insertions(+), 196 deletions(-)

diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/Option.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/Option.java
deleted file mode 100644
index 9f5dec5..0000000
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/Option.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at legal-notices/CDDLv1_0.txt.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information:
- *      Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- *
- *
- *      Copyright 2014-2015 ForgeRock AS
- */
-package org.forgerock.opendj.ldap;
-
-/**
- * Public API for defining new options.
- *
- * @param <T> The option type.
- */
-public final class Option<T> {
-    private final Class<T> type;
-    private final T defaultValue;
-
-    /**
-     * Defines a new {@link Boolean} option with the provided default value.
-     *
-     * @param defaultValue
-     *            The {@link Boolean} default value of this option.
-     * @return A new {@link Boolean} option with the provided default value.
-     */
-    public static Option<Boolean> withDefault(boolean defaultValue) {
-        return of(Boolean.class, defaultValue);
-    }
-
-    /**
-     * Defines a new option of the provided type with the provided default
-     * value.
-     *
-     * @param <T>
-     *            The type of this option.
-     * @param type
-     *            The type of the option.
-     * @param defaultValue
-     *            The new option default value.
-     * @return A new option of the provided type with the provided default
-     *         value.
-     */
-    public static <T> Option<T> of(Class<T> type, T defaultValue) {
-        return new Option<>(type, defaultValue);
-    }
-
-    private Option(Class<T> type, T defaultValue) {
-        this.type = type;
-        this.defaultValue = defaultValue;
-    }
-
-    /**
-     * Returns the type of this option.
-     *
-     * @return the type of this option.
-     */
-    public Class<T> getType() {
-        return type;
-    }
-
-    /**
-     * Returns the provided value if not {@code null}, otherwise returns the
-     * default one.
-     *
-     * @param value
-     *            The option which overrides the default one if not null.
-     * @return The provided value if not {@code null}, otherwise return the
-     *         default one.
-     */
-    public T getValue(Object value) {
-        return value != null ? type.cast(value) : defaultValue;
-    }
-}
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/Schema.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/Schema.java
index 5e9d74c..0a928a3 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/Schema.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/Schema.java
@@ -47,10 +47,11 @@
 import org.forgerock.opendj.ldap.LdapException;
 import org.forgerock.opendj.ldap.LdapPromise;
 import org.forgerock.opendj.ldap.LinkedAttribute;
-import org.forgerock.opendj.ldap.Option;
 import org.forgerock.opendj.ldap.RDN;
-import org.forgerock.util.Reject;
 import org.forgerock.util.Function;
+import org.forgerock.util.Option;
+import org.forgerock.util.Options;
+import org.forgerock.util.Reject;
 
 import com.forgerock.opendj.util.StaticUtils;
 
@@ -77,7 +78,7 @@
 
         Schema asStrictSchema();
 
-        SchemaOptions getOptions();
+        Options getOptions();
 
         MatchingRule getDefaultMatchingRule();
 
@@ -180,7 +181,7 @@
         }
 
         @Override
-        public SchemaOptions getOptions() {
+        public Options getOptions() {
             return strictImpl.getOptions();
         }
 
@@ -419,14 +420,14 @@
         private final Map<String, String> name2OIDs;
         private final List<LocalizableMessage> warnings;
         private final String schemaName;
-        private final SchemaOptions options;
+        private final Options options;
         private final Syntax defaultSyntax;
         private final MatchingRule defaultMatchingRule;
         private final Schema strictSchema;
         private final Schema nonStrictSchema;
 
         StrictImpl(final String schemaName,
-                final SchemaOptions options,
+                final Options options,
                 final Syntax defaultSyntax,
                 final MatchingRule defaultMatchingRule,
                 final Map<String, Syntax> numericOID2Syntaxes,
@@ -449,7 +450,7 @@
                 final Map<String, String> name2OIDs,
                 final List<LocalizableMessage> warnings) {
             this.schemaName = schemaName;
-            this.options = SchemaOptions.unmodifiable(options);
+            this.options = options;
             this.defaultSyntax = defaultSyntax;
             this.defaultMatchingRule = defaultMatchingRule;
             this.numericOID2Syntaxes = Collections.unmodifiableMap(numericOID2Syntaxes);
@@ -486,7 +487,7 @@
         }
 
         @Override
-        public SchemaOptions getOptions() {
+        public Options getOptions() {
             return options;
         }
 
@@ -1460,7 +1461,7 @@
         return getOptions().get(option);
     }
 
-    SchemaOptions getOptions() {
+    Options getOptions() {
         return impl.getOptions();
     }
 
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/SchemaBuilder.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/SchemaBuilder.java
index a4fc04d..e9593a2 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/SchemaBuilder.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/SchemaBuilder.java
@@ -65,16 +65,17 @@
 import org.forgerock.opendj.ldap.Filter;
 import org.forgerock.opendj.ldap.LdapException;
 import org.forgerock.opendj.ldap.LdapPromise;
-import org.forgerock.opendj.ldap.Option;
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.SearchScope;
 import org.forgerock.opendj.ldap.requests.Requests;
 import org.forgerock.opendj.ldap.requests.SearchRequest;
 import org.forgerock.opendj.ldap.responses.SearchResultEntry;
 import org.forgerock.opendj.ldap.schema.DITContentRule.Builder;
+import org.forgerock.util.Options;
 import org.forgerock.util.Reject;
 import org.forgerock.util.AsyncFunction;
 import org.forgerock.util.Function;
+import org.forgerock.util.Option;
 import org.forgerock.util.promise.Promise;
 
 import com.forgerock.opendj.util.StaticUtils;
@@ -157,7 +158,7 @@
     private Map<String, String> name2OIDs;
     private String schemaName;
     private List<LocalizableMessage> warnings;
-    private SchemaOptions options;
+    private Options options;
 
 
     /** A schema which should be copied into this builder on any mutation. */
@@ -1883,7 +1884,7 @@
         return this;
     }
 
-    SchemaOptions getOptions() {
+    Options getOptions() {
         lazyInitBuilder();
 
         return options;
@@ -2439,7 +2440,7 @@
     private void lazyInitBuilder() {
         // Lazy initialization.
         if (numericOID2Syntaxes == null) {
-            options = defaultSchemaOptions();
+            options = Options.defaultOptions();
 
             numericOID2Syntaxes = new LinkedHashMap<>();
             numericOID2MatchingRules = new LinkedHashMap<>();
@@ -2467,7 +2468,7 @@
         if (copyOnWriteSchema != null) {
             // Copy the schema.
             addSchema0(copyOnWriteSchema, true);
-            options = SchemaOptions.copyOf(copyOnWriteSchema.getOptions());
+            options = Options.copyOf(copyOnWriteSchema.getOptions());
             copyOnWriteSchema = null;
         }
     }
diff --git a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/SchemaOptions.java b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/SchemaOptions.java
index ba30b98..10f4df1 100644
--- a/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/SchemaOptions.java
+++ b/opendj-sdk/opendj-core/src/main/java/org/forgerock/opendj/ldap/schema/SchemaOptions.java
@@ -21,14 +21,11 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2014 ForgeRock AS
+ *      Copyright 2014-2015 ForgeRock AS
  */
 package org.forgerock.opendj.ldap.schema;
 
-import java.util.IdentityHashMap;
-import java.util.Map;
-
-import org.forgerock.opendj.ldap.Option;
+import org.forgerock.util.Option;
 
 import static java.util.Collections.*;
 
@@ -136,79 +133,5 @@
      */
     public static final Option<Boolean> STRIP_UPPER_BOUND_FOR_ATTRIBUTE_TYPE = Option.withDefault(false);
 
-    private final Map<Option<?>, Object> options;
-
-    /**
-     * Creates a new set of schema options with default settings.
-     *
-     * @return A new {@link SchemaOptions} with default settings.
-     */
-    static SchemaOptions defaultSchemaOptions() {
-        return new SchemaOptions(new IdentityHashMap<Option<?>, Object>());
-    }
-
-    /**
-     * Creates a new schema options object by copying the provided schema
-     * options. The options names and values will all be copied.
-     *
-     * @param schemaOptions
-     *            The schema options to be copied.
-     * @return A new schema options object created by copying the provided schema
-     *         options.
-     */
-    static SchemaOptions copyOf(SchemaOptions schemaOptions) {
-        return new SchemaOptions(new IdentityHashMap<Option<?>, Object>(schemaOptions.options));
-    }
-
-    /**
-     * Returns an unmodifiable {@link SchemaOptions} copy of this set of options.
-     *
-     * @param schemaOptions
-     *            The schema options to be copied.
-     * @return An unmodifiable {@link SchemaOptions} view of this set of options.
-     */
-    static SchemaOptions unmodifiable(SchemaOptions schemaOptions) {
-        return new SchemaOptions(unmodifiableMap(new IdentityHashMap<Option<?>, Object>(schemaOptions.options)));
-    }
-
-    private SchemaOptions(Map<Option<?>, Object> optionsMap) {
-        this.options = optionsMap;
-    }
-
-    /**
-     * Returns the value to which the specified {@link Option} is mapped, or
-     * {@code null} if this options set contains no mapping for the {@link Option}.
-     *
-     * @param <T>
-     *            The option type.
-     * @param option
-     *            The option whose associated value is to be returned.
-     * @return The value to which the specified option is mapped, or null if
-     *         this options set contains no mapping for the option.
-     */
-    <T> T get(Option<T> option) {
-        return option.getValue(options.get(option));
-    }
-
-    /**
-     * Associates the specified option value with the specified option in this
-     * set of options. (optional operation). If this set of options previously
-     * contained a mapping for the option, the old value is replaced by the
-     * specified value.
-     *
-     * @param <T>
-     *            The option type.
-     * @param option
-     *            Option with which the specified value is to be associated.
-     * @param value
-     *            Value to be associated with the specified option.
-     * @return A reference to this set of options.
-     * @throws UnsupportedOperationException
-     *         If this set of options is read only.
-     */
-    <T> SchemaOptions set(Option<T> option, T value) {
-        options.put(option, value);
-        return this;
-    }
-
+    private SchemaOptions() { }
 }
diff --git a/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/SchemaOptionsTestCase.java b/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/SchemaOptionsTestCase.java
index 6f5b180..87b9e95 100644
--- a/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/SchemaOptionsTestCase.java
+++ b/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/SchemaOptionsTestCase.java
@@ -21,14 +21,15 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2013-2014 ForgeRock AS.
+ *      Copyright 2013-2015 ForgeRock AS.
  */
 package org.forgerock.opendj.ldap.schema;
 
 import static org.fest.assertions.Assertions.*;
 import static org.forgerock.opendj.ldap.schema.SchemaOptions.*;
 
-import org.forgerock.opendj.ldap.Option;
+import org.forgerock.util.Option;
+import org.forgerock.util.Options;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
@@ -53,7 +54,8 @@
 
     @Test(dataProvider = "defaultSchemaOptions")
     public void testDefaultSchemaOptions(Option<?> option) {
-        assertThat(new SchemaBuilder().getOptions().get(option)).isEqualTo(option.getValue(null));
+        Options defaultOptions = Options.defaultOptions();
+        assertThat(new SchemaBuilder().getOptions().get(option)).isEqualTo(defaultOptions.get(option));
     }
 
     @Test
@@ -68,13 +70,13 @@
 
     @Test
     public void testSchemaOptionsCopy() {
-        final SchemaOptions copiedOptions = SchemaOptions.copyOf(newSchemaBuilder().getOptions());
+        final Options copiedOptions = Options.copyOf(newSchemaBuilder().getOptions());
         assertThat(copiedOptions.get(TEST_OPTION)).isEqualTo(TEST_OPTION_DEFAULT_VALUE);
     }
 
     @Test(expectedExceptions = UnsupportedOperationException.class)
     public void testAsReadOnlyOptions() {
-        SchemaOptions.unmodifiable(new SchemaBuilder().getOptions()).set(ALLOW_MALFORMED_CERTIFICATES, false);
+        Options.unmodifiableCopyOf(new SchemaBuilder().getOptions()).set(ALLOW_MALFORMED_CERTIFICATES, false);
     }
 
     private SchemaBuilder newSchemaBuilder() {
diff --git a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/AttributeTypeSyntax.java b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/AttributeTypeSyntax.java
index 0bd93df..c50ed00 100644
--- a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/AttributeTypeSyntax.java
+++ b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/AttributeTypeSyntax.java
@@ -42,12 +42,12 @@
 import org.forgerock.opendj.config.server.ConfigChangeResult;
 import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.opendj.ldap.ByteSequence;
-import org.forgerock.opendj.ldap.Option;
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.schema.AttributeUsage;
 import org.forgerock.opendj.ldap.schema.MatchingRule;
 import org.forgerock.opendj.ldap.schema.SchemaOptions;
 import org.forgerock.opendj.ldap.schema.Syntax;
+import org.forgerock.util.Option;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.AttributeTypeDescriptionAttributeSyntaxCfg;
 import org.opends.server.api.AttributeSyntax;
diff --git a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/CertificateSyntax.java b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/CertificateSyntax.java
index 11a17ae..b039f5a 100644
--- a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/CertificateSyntax.java
+++ b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/CertificateSyntax.java
@@ -34,10 +34,10 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.config.server.ConfigChangeResult;
 import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.opendj.ldap.Option;
 import org.forgerock.opendj.ldap.schema.Schema;
 import org.forgerock.opendj.ldap.schema.SchemaOptions;
 import org.forgerock.opendj.ldap.schema.Syntax;
+import org.forgerock.util.Option;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.CertificateAttributeSyntaxCfg;
 import org.opends.server.api.AttributeSyntax;
diff --git a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/CountryStringSyntax.java b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/CountryStringSyntax.java
index f2d1ada..6d046a4 100644
--- a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/CountryStringSyntax.java
+++ b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/CountryStringSyntax.java
@@ -35,10 +35,10 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.config.server.ConfigChangeResult;
 import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.opendj.ldap.Option;
 import org.forgerock.opendj.ldap.schema.Schema;
 import org.forgerock.opendj.ldap.schema.SchemaOptions;
 import org.forgerock.opendj.ldap.schema.Syntax;
+import org.forgerock.util.Option;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.CountryStringAttributeSyntaxCfg;
 import org.opends.server.api.AttributeSyntax;
diff --git a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/DirectoryStringSyntax.java b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/DirectoryStringSyntax.java
index 0df279c..751ebd9 100644
--- a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/DirectoryStringSyntax.java
+++ b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/DirectoryStringSyntax.java
@@ -32,10 +32,10 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.config.server.ConfigChangeResult;
 import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.opendj.ldap.Option;
 import org.forgerock.opendj.ldap.schema.Schema;
 import org.forgerock.opendj.ldap.schema.SchemaOptions;
 import org.forgerock.opendj.ldap.schema.Syntax;
+import org.forgerock.util.Option;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.DirectoryStringAttributeSyntaxCfg;
 import org.opends.server.api.AttributeSyntax;
diff --git a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/JPEGSyntax.java b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/JPEGSyntax.java
index 1db6ee6..6c4ffed 100644
--- a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/JPEGSyntax.java
+++ b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/JPEGSyntax.java
@@ -34,10 +34,10 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.config.server.ConfigChangeResult;
 import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.opendj.ldap.Option;
 import org.forgerock.opendj.ldap.schema.Schema;
 import org.forgerock.opendj.ldap.schema.SchemaOptions;
 import org.forgerock.opendj.ldap.schema.Syntax;
+import org.forgerock.util.Option;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.JPEGAttributeSyntaxCfg;
 import org.opends.server.api.AttributeSyntax;
diff --git a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/TelephoneNumberSyntax.java b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/TelephoneNumberSyntax.java
index b693c57..c05cc47 100644
--- a/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/TelephoneNumberSyntax.java
+++ b/opendj-sdk/opendj-server-legacy/src/main/java/org/opends/server/schema/TelephoneNumberSyntax.java
@@ -33,10 +33,10 @@
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.config.server.ConfigChangeResult;
 import org.forgerock.opendj.config.server.ConfigException;
-import org.forgerock.opendj.ldap.Option;
 import org.forgerock.opendj.ldap.schema.Schema;
 import org.forgerock.opendj.ldap.schema.SchemaOptions;
 import org.forgerock.opendj.ldap.schema.Syntax;
+import org.forgerock.util.Option;
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.TelephoneNumberAttributeSyntaxCfg;
 import org.opends.server.api.AttributeSyntax;

--
Gitblit v1.10.0