From 85f51e5a07aa823b2b363304007ed812c73ecc59 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 19 Apr 2016 12:59:38 +0000
Subject: [PATCH] Changed Backend.getBaseDNs() return type from DN[] to Set<DN>

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java |   62 ++++++++++++++-----------------
 1 files changed, 28 insertions(+), 34 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java
index ae26019..8013a55 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java
@@ -53,6 +53,7 @@
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.config.server.ConfigChangeResult;
 import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.config.server.ConfigurationChangeListener;
 import org.forgerock.opendj.ldap.AVA;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ConditionResult;
@@ -61,9 +62,8 @@
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.SearchScope;
 import org.forgerock.opendj.ldap.schema.AttributeType;
-import org.forgerock.util.Reject;
-import org.forgerock.opendj.config.server.ConfigurationChangeListener;
 import org.forgerock.opendj.server.config.server.TrustStoreBackendCfg;
+import org.forgerock.util.Reject;
 import org.opends.server.api.Backend;
 import org.opends.server.core.AddOperation;
 import org.opends.server.core.DeleteOperation;
@@ -106,11 +106,8 @@
   /** The current configuration state. */
   private TrustStoreBackendCfg configuration;
 
-  /** The DN for the base entry. */
-  private DN baseDN;
-
   /** The set of base DNs for this backend. */
-  private DN[] baseDNs;
+  private SortedSet<DN> baseDNs;
 
   /** The base entry. */
   private Entry baseEntry;
@@ -141,7 +138,11 @@
     // Perform all initialization in initializeBackend.
   }
 
-  /** {@inheritDoc} */
+  private DN getBaseDN()
+  {
+    return baseDNs.first();
+  }
+
   @Override
   public void configureBackend(TrustStoreBackendCfg config, ServerContext serverContext) throws ConfigException
   {
@@ -149,7 +150,6 @@
     configuration = config;
   }
 
-  /** {@inheritDoc} */
   @Override
   public void openBackend() throws ConfigException, InitializationException
   {
@@ -162,15 +162,12 @@
     {
       throw new InitializationException(ERR_TRUSTSTORE_REQUIRES_ONE_BASE_DN.get(configEntryDN));
     }
-    baseDN = baseDNSet.first();
-    baseDNs = new DN[] {baseDN};
+    baseDNs = baseDNSet;
 
     // Get the path to the trust store file.
     trustStoreFile = configuration.getTrustStoreFile();
 
-
-    // Get the trust store type.  If none is specified, then use the default
-    // type.
+    // Get the trust store type. If none is specified, then use the default type.
     trustStoreType = configuration.getTrustStoreType();
     if (trustStoreType == null)
     {
@@ -308,13 +305,13 @@
     objectClasses.put(branchOC, "ds-cfg-branch");
 
     LinkedHashMap<AttributeType,List<Attribute>> userAttrs = new LinkedHashMap<>(1);
-    for (AVA ava : baseDN.rdn())
+    for (AVA ava : getBaseDN().rdn())
     {
       AttributeType attrType = ava.getAttributeType();
       userAttrs.put(attrType, Attributes.createAsList(attrType, ava.getAttributeValue()));
     }
 
-    baseEntry = new Entry(baseDN, objectClasses, userAttrs, null);
+    baseEntry = new Entry(getBaseDN(), objectClasses, userAttrs, null);
 
     // Register this as a change listener.
     configuration.addTrustStoreChangeListener(this);
@@ -323,12 +320,12 @@
     // Register the trust store base as a private suffix.
     try
     {
-      DirectoryServer.registerBaseDN(baseDN, this, true);
+      DirectoryServer.registerBaseDN(getBaseDN(), this, true);
     }
     catch (Exception e)
     {
       logger.traceException(e);
-      throw new InitializationException(ERR_BACKEND_CANNOT_REGISTER_BASEDN.get(baseDN, e), e);
+      throw new InitializationException(ERR_BACKEND_CANNOT_REGISTER_BASEDN.get(getBaseDN(), e), e);
     }
   }
 
@@ -340,7 +337,7 @@
 
     try
     {
-      DirectoryServer.deregisterBaseDN(baseDN);
+      DirectoryServer.deregisterBaseDN(getBaseDN());
     }
     catch (Exception e)
     {
@@ -348,14 +345,12 @@
     }
   }
 
-  /** {@inheritDoc} */
   @Override
-  public DN[] getBaseDNs()
+  public Set<DN> getBaseDNs()
   {
     return baseDNs;
   }
 
-  /** {@inheritDoc} */
   @Override
   public long getEntryCount()
   {
@@ -398,7 +393,7 @@
 
 
     // If the requested entry was the backend base entry, then retrieve it.
-    if (entryDN.equals(baseDN))
+    if (entryDN.equals(getBaseDN()))
     {
       return baseEntry.duplicate(true);
     }
@@ -407,7 +402,7 @@
     // See if the requested entry was one level below the backend base entry.
     // If so, then it must point to a trust store entry.
     DN parentDN = DirectoryServer.getParentDNInSuffix(entryDN);
-    if (parentDN != null && parentDN.equals(baseDN))
+    if (parentDN != null && parentDN.equals(getBaseDN()))
     {
       try
       {
@@ -444,7 +439,7 @@
     if (v == null)
     {
       LocalizableMessage message = ERR_TRUSTSTORE_DN_DOES_NOT_SPECIFY_CERTIFICATE.get(entryDN);
-      throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message, baseDN, null);
+      throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message, getBaseDN(), null);
     }
 
     String certAlias = v.toString();
@@ -501,7 +496,7 @@
   {
     DN entryDN = entry.getName();
 
-    if (entryDN.equals(baseDN))
+    if (entryDN.equals(getBaseDN()))
     {
       LocalizableMessage message = ERR_TRUSTSTORE_INVALID_BASE.get(entryDN);
       throw new DirectoryException(ResultCode.ENTRY_ALREADY_EXISTS, message);
@@ -514,7 +509,7 @@
       throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message);
     }
 
-    if (parentDN.equals(baseDN))
+    if (parentDN.equals(getBaseDN()))
     {
       addCertificate(entry);
     }
@@ -530,14 +525,14 @@
   public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
          throws DirectoryException
   {
-    if (entryDN.equals(baseDN))
+    if (entryDN.equals(getBaseDN()))
     {
       LocalizableMessage message = ERR_TRUSTSTORE_INVALID_BASE.get(entryDN);
       throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
     }
 
     DN parentDN = DirectoryServer.getParentDNInSuffix(entryDN);
-    if (parentDN == null || !parentDN.equals(baseDN))
+    if (parentDN == null || !parentDN.equals(getBaseDN()))
     {
       LocalizableMessage message = ERR_TRUSTSTORE_INVALID_BASE.get(entryDN);
       throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message);
@@ -580,7 +575,7 @@
     // trust store entry DN.
     SearchScope  scope  = searchOperation.getScope();
     SearchFilter filter = searchOperation.getFilter();
-    if (this.baseDN.equals(baseDN))
+    if (getBaseDN().equals(baseDN))
     {
       if ((scope == SearchScope.BASE_OBJECT || scope == SearchScope.WHOLE_SUBTREE)
           && filter.matchesEntry(baseEntry))
@@ -608,7 +603,7 @@
         AttributeType certAliasType = DirectoryServer.getAttributeType(ATTR_CRYPTO_KEY_ID);
         for (String alias : aliases)
         {
-          DN certDN = makeChildDN(this.baseDN, certAliasType, alias);
+          DN certDN = makeChildDN(this.getBaseDN(), certAliasType, alias);
 
           Entry certEntry;
           try
@@ -628,7 +623,7 @@
         }
       }
     }
-    else if (this.baseDN.equals(DirectoryServer.getParentDNInSuffix(baseDN)))
+    else if (this.getBaseDN().equals(DirectoryServer.getParentDNInSuffix(baseDN)))
     {
       Entry certEntry = getCertEntry(baseDN);
 
@@ -1193,7 +1188,7 @@
     if (v == null)
     {
       LocalizableMessage message = ERR_TRUSTSTORE_DN_DOES_NOT_SPECIFY_CERTIFICATE.get(entryDN);
-      throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message, baseDN, null);
+      throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message, getBaseDN(), null);
     }
 
     String certAlias = v.toString();
@@ -1320,7 +1315,7 @@
     if (v == null)
     {
       LocalizableMessage message = ERR_TRUSTSTORE_DN_DOES_NOT_SPECIFY_CERTIFICATE.get(entryDN);
-      throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message, baseDN, null);
+      throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message, getBaseDN(), null);
     }
 
     String certAlias = v.toString();
@@ -1490,4 +1485,3 @@
     }
   }
 }
-

--
Gitblit v1.10.0