From 9ca3c4828a35ac7e54bc5c00e8a08875a0ba65cd Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Fri, 09 Sep 2016 09:45:25 +0000
Subject: [PATCH] OPENDJ-3089 OPENDJ-1237 Add missing server matching rules in SchemaHandler initialization

---
 opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java                      |    9 ++++++++-
 opendj-server-legacy/src/main/java/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java |   20 +++++++++++++++++++-
 opendj-server-legacy/src/main/java/org/opends/server/schema/UserPasswordEqualityMatchingRule.java |   20 +++++++++++++++++++-
 3 files changed, 46 insertions(+), 3 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java b/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java
index f518163..b6cce94 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/core/SchemaHandler.java
@@ -46,7 +46,9 @@
 import org.opends.server.api.AlertGenerator;
 import org.opends.server.replication.plugin.HistoricalCsnOrderingMatchingRuleImpl;
 import org.opends.server.schema.AciSyntax;
+import org.opends.server.schema.AuthPasswordEqualityMatchingRule;
 import org.opends.server.schema.SubtreeSpecificationSyntax;
+import org.opends.server.schema.UserPasswordEqualityMatchingRule;
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.adapter.server3x.Converters;
@@ -204,10 +206,15 @@
 
       try
       {
-        // Add server specific syntaxes and matching rules not provided by the SDK
+        // Add server specific syntaxes not provided by the SDK
         AciSyntax.addAciSyntax(schemaBuilder);
         SubtreeSpecificationSyntax.addSubtreeSpecificationSyntax(schemaBuilder);
+
+        // Add server specific matching rules not provided by the SDK
         HistoricalCsnOrderingMatchingRuleImpl.addHistoricalCsnOrderingMatchingRule(schemaBuilder);
+        AuthPasswordEqualityMatchingRule.addAuthPasswordEqualityMatchingRule(schemaBuilder);
+        UserPasswordEqualityMatchingRule.addUserPasswordEqualityMatchingRule(schemaBuilder);
+
       }
       catch (ConflictingSchemaElementException e)
       {
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java
index f781418..5fbb857 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/AuthPasswordEqualityMatchingRule.java
@@ -16,15 +16,18 @@
  */
 package org.opends.server.schema;
 
+import static org.opends.server.schema.SchemaConstants.*;
+
 import static org.opends.server.core.DirectoryServer.*;
 
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.ldap.ByteSequence;
 import org.forgerock.opendj.ldap.ConditionResult;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
 import org.opends.server.api.PasswordStorageScheme;
 
 /** This class implements the authPasswordMatch matching rule defined in RFC 3112. */
-class AuthPasswordEqualityMatchingRule extends AbstractPasswordEqualityMatchingRuleImpl
+public class AuthPasswordEqualityMatchingRule extends AbstractPasswordEqualityMatchingRuleImpl
 {
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
@@ -55,4 +58,19 @@
     return ConditionResult.valueOf(storageScheme.authPasswordMatches(
         assertionValue, authPWComponents[1], authPWComponents[2]));
   }
+
+  /**
+   * Adds the auth password equality matching rule to the provided schema builder.
+   *
+   * @param builder
+   *          where to add the matching rule
+   */
+  public static void addAuthPasswordEqualityMatchingRule(SchemaBuilder builder)
+  {
+    builder.buildMatchingRule(EMR_AUTH_PASSWORD_OID)
+        .names(EMR_AUTH_PASSWORD_NAME)
+        .syntaxOID(SYNTAX_AUTH_PASSWORD_OID).description(EMR_AUTH_PASSWORD_DESCRIPTION)
+        .implementation(new AuthPasswordEqualityMatchingRule())
+        .addToSchema();
+  }
 }
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/schema/UserPasswordEqualityMatchingRule.java b/opendj-server-legacy/src/main/java/org/opends/server/schema/UserPasswordEqualityMatchingRule.java
index 37704c2..5f0865b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/schema/UserPasswordEqualityMatchingRule.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/schema/UserPasswordEqualityMatchingRule.java
@@ -16,10 +16,13 @@
  */
 package org.opends.server.schema;
 
+import static org.opends.server.schema.SchemaConstants.*;
+
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.ldap.ByteSequence;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ConditionResult;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
 import org.opends.server.api.PasswordStorageScheme;
 
 import static org.opends.server.core.DirectoryServer.*;
@@ -31,7 +34,7 @@
  * This matching rule serves a similar purpose to the equivalent
  * AuthPasswordEqualityMatchingRule defined in RFC 3112 (http://tools.ietf.org/html/rfc3112).
  */
-class UserPasswordEqualityMatchingRule extends AbstractPasswordEqualityMatchingRuleImpl
+public class UserPasswordEqualityMatchingRule extends AbstractPasswordEqualityMatchingRuleImpl
 {
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
@@ -66,4 +69,19 @@
         storageScheme.passwordMatches(assertionValue, ByteString.valueOfUtf8(userPWComponents[1])));
   }
 
+  /**
+   * Adds the user password equality matching rule to the provided schema builder.
+   *
+   * @param builder
+   *          where to add the matching rule
+   */
+  public static void addUserPasswordEqualityMatchingRule(SchemaBuilder builder)
+  {
+    builder.buildMatchingRule(EMR_USER_PASSWORD_OID)
+      .names(EMR_USER_PASSWORD_NAME)
+      .syntaxOID(SYNTAX_OCTET_STRING_OID).description(EMR_USER_PASSWORD_DESCRIPTION)
+      .implementation(new UserPasswordEqualityMatchingRule())
+      .addToSchema();
+  }
+
 }

--
Gitblit v1.10.0