From 2249aa0a04b99d513828d8d60c2a8bd7d936b336 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Mon, 03 Sep 2007 23:45:45 +0000
Subject: [PATCH] Fix issue 1451: constraint and dependency support.

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/admin/server/AdminTestCaseUtils.java |   54 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 51 insertions(+), 3 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/admin/server/AdminTestCaseUtils.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/admin/server/AdminTestCaseUtils.java
index 8526388..b65ad39 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/admin/server/AdminTestCaseUtils.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/admin/server/AdminTestCaseUtils.java
@@ -30,8 +30,13 @@
 
 import org.opends.server.admin.AbstractManagedObjectDefinition;
 import org.opends.server.admin.Configuration;
+import org.opends.server.admin.ConfigurationClient;
 import org.opends.server.admin.DefinitionDecodingException;
+import org.opends.server.admin.LDAPProfile;
 import org.opends.server.admin.ManagedObjectPath;
+import org.opends.server.admin.RelationDefinition;
+import org.opends.server.admin.SingletonRelationDefinition;
+import org.opends.server.admin.std.meta.RootCfgDefn;
 import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.types.Entry;
@@ -44,6 +49,15 @@
  */
 public final class AdminTestCaseUtils {
 
+  // The relation name which will be used for dummy configurations. A
+  // deliberately obfuscated name is chosen to avoid clashes.
+  private static final String DUMMY_TEST_RELATION = "*dummy*test*relation*";
+
+  // Indicates if the dummy relation profile has been registered.
+  private static boolean isProfileRegistered = false;
+
+
+
   // Prevent instantiation.
   private AdminTestCaseUtils() {
     // No implementation required.
@@ -71,9 +85,9 @@
     ConfigEntry configEntry = new ConfigEntry(entry, null);
 
     try {
-      ServerManagedObject<? extends S> mo = ServerManagedObject
-          .decode(ManagedObjectPath.emptyPath(), definition,
-              configEntry);
+      ServerManagementContext context = ServerManagementContext.getInstance();
+      ServerManagedObject<? extends S> mo = context.decode(getPath(definition),
+          configEntry);
       return mo.getConfiguration();
     } catch (DefinitionDecodingException e) {
       throw ConfigExceptionFactory.getInstance()
@@ -83,4 +97,38 @@
           .createDecodingExceptionAdaptor(e);
     }
   }
+
+
+
+  // Construct a dummy path.
+  private synchronized static <C extends ConfigurationClient, S extends Configuration>
+  ManagedObjectPath<C, S> getPath(AbstractManagedObjectDefinition<C, S> d) {
+    if (!isProfileRegistered) {
+      LDAPProfile.Wrapper profile = new LDAPProfile.Wrapper() {
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public String getRelationRDNSequence(RelationDefinition<?, ?> r) {
+          if (r.getName().equals(DUMMY_TEST_RELATION)) {
+            return "cn=dummy configuration,cn=config";
+          } else {
+            return null;
+          }
+        }
+
+      };
+
+      LDAPProfile.getInstance().pushWrapper(profile);
+      isProfileRegistered = true;
+    }
+
+    SingletonRelationDefinition.Builder<C, S> builder =
+      new SingletonRelationDefinition.Builder<C, S>(
+        RootCfgDefn.getInstance(), DUMMY_TEST_RELATION, d);
+    ManagedObjectPath<?, ?> root = ManagedObjectPath.emptyPath();
+    return root.child(builder.getInstance());
+
+  }
 }

--
Gitblit v1.10.0