From 2861a1aad527dae9aea800386d58fc7416233ae5 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 23 Mar 2007 14:26:04 +0000
Subject: [PATCH] Merge admin framework from config-prototype-branch onto trunk.

---
 opendj-sdk/opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java |  568 +++++++-------------------------------------------------
 1 files changed, 76 insertions(+), 492 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java
index 48601e9..35417b3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java
@@ -33,19 +33,13 @@
 import java.security.cert.X509Certificate;
 import javax.security.auth.x500.X500Principal;
 import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
+import java.util.Collection;
 import java.util.List;
-import java.util.Set;
 
+import org.opends.server.admin.server.ConfigurationChangeListener;
+import org.opends.server.admin.std.server.FingerprintCertificateMapperCfg;
 import org.opends.server.api.CertificateMapper;
-import org.opends.server.api.ConfigurableComponent;
-import org.opends.server.config.ConfigAttribute;
-import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
-import org.opends.server.config.DNConfigAttribute;
-import org.opends.server.config.MultiChoiceConfigAttribute;
-import org.opends.server.config.StringConfigAttribute;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
@@ -61,7 +55,6 @@
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.SearchScope;
 
-import static org.opends.server.config.ConfigConstants.*;
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import org.opends.server.types.DebugLogLevel;
@@ -78,43 +71,24 @@
  * exactly one matching user entry for the mapping to be successful.
  */
 public class FingerprintCertificateMapper
-       extends CertificateMapper
-       implements ConfigurableComponent
+       extends CertificateMapper<FingerprintCertificateMapperCfg>
+       implements ConfigurationChangeListener<
+                       FingerprintCertificateMapperCfg>
 {
-
-
-
-  /**
-   * The set of allowed fingerprint algorithms.
-   */
-  private static final Set<String> FINGERPRINT_ALGORITHMS;
-
-
-
   // The attribute type that will be used to map the certificate's fingerprint.
   private AttributeType fingerprintAttributeType;
 
   // The DN of the configuration entry for this certificate mapper.
   private DN configEntryDN;
 
-  // The set of base DNs below which the search will be performed.
-  private DN[] baseDNs;
+  // The current configuration for this certificate mapper.
+  private FingerprintCertificateMapperCfg currentConfig;
 
   // The algorithm that will be used to generate the fingerprint.
   private String fingerprintAlgorithm;
 
 
 
-  static
-  {
-    LinkedHashSet<String> algorithmSet = new LinkedHashSet<String>(2);
-    algorithmSet.add("md5");
-    algorithmSet.add("sha1");
-    FINGERPRINT_ALGORITHMS = algorithmSet;
-  }
-
-
-
   /**
    * Creates a new instance of this certificate mapper.  Note that all actual
    * initialization should be done in the
@@ -123,7 +97,6 @@
   public FingerprintCertificateMapper()
   {
     super();
-
   }
 
 
@@ -131,128 +104,39 @@
   /**
    * {@inheritDoc}
    */
-  public void initializeCertificateMapper(ConfigEntry configEntry)
+  public void initializeCertificateMapper(
+                   FingerprintCertificateMapperCfg configuration)
          throws ConfigException, InitializationException
   {
-    this.configEntryDN = configEntry.getDN();
+    configuration.addFingerprintChangeListener(this);
+
+    currentConfig = configuration;
+    configEntryDN = configuration.dn();
+
 
     // Get the attribute type that will be used to hold the fingerprint.
-    int msgID = MSGID_FCM_DESCRIPTION_FINGERPRINT_ATTR;
-    StringConfigAttribute attrStub =
-         new StringConfigAttribute(ATTR_CERTIFICATE_FINGERPRINT_ATTR,
-                                   getMessage(msgID), true, false, false);
-    try
+    String attrName = configuration.getFingerprintAttribute();
+    fingerprintAttributeType =
+         DirectoryServer.getAttributeType(toLowerCase(attrName), false);
+    if (fingerprintAttributeType == null)
     {
-      StringConfigAttribute attrAttr =
-           (StringConfigAttribute) configEntry.getConfigAttribute(attrStub);
-      if (attrAttr == null)
-      {
-        msgID = MSGID_FCM_NO_FINGERPRINT_ATTR;
-        String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    ATTR_CERTIFICATE_FINGERPRINT_ATTR);
-        throw new ConfigException(msgID, message);
-      }
-      else
-      {
-        String attrName  = attrAttr.pendingValue();
-        String lowerName = toLowerCase(attrName);
-        fingerprintAttributeType =
-             DirectoryServer.getAttributeType(lowerName, false);
-        if (fingerprintAttributeType == null)
-        {
-          msgID = MSGID_FCM_NO_SUCH_ATTR;
-          String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                      attrName);
-          throw new ConfigException(msgID, message);
-        }
-      }
-    }
-    catch (ConfigException ce)
-    {
-      throw ce;
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      msgID = MSGID_FCM_CANNOT_GET_FINGERPRINT_ATTR;
+      int    msgID   = MSGID_FCM_NO_SUCH_ATTR;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
-      throw new InitializationException(msgID, message, e);
+                                  attrName);
+      throw new ConfigException(msgID, message);
     }
 
 
-    // Get the fingerprint algorithm.
-    msgID = MSGID_FCM_DESCRIPTION_FINGERPRINT_ALGORITHM;
-    MultiChoiceConfigAttribute algorithmStub =
-         new MultiChoiceConfigAttribute(ATTR_CERTIFICATE_FINGERPRINT_ALGORITHM,
-                                        getMessage(msgID), true, false, false,
-                                        FINGERPRINT_ALGORITHMS);
-    try
+    // Get the algorithm that will be used to generate the fingerprint.
+    switch (configuration.getFingerprintAlgorithm())
     {
-      MultiChoiceConfigAttribute algorithmAttr =
-           (MultiChoiceConfigAttribute)
-           configEntry.getConfigAttribute(algorithmStub);
-      if (algorithmAttr == null)
-      {
-        msgID = MSGID_FCM_NO_FINGERPRINT_ALGORITHM;
-        String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    ATTR_CERTIFICATE_FINGERPRINT_ALGORITHM);
-        throw new ConfigException(msgID, message);
-      }
-      else
-      {
-        fingerprintAlgorithm = algorithmAttr.pendingValue();
-      }
+      case MD5:
+        fingerprintAlgorithm = "MD5";
+        break;
+      case SHA1:
+        fingerprintAlgorithm = "SHA1";
+        break;
     }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      msgID = MSGID_FCM_CANNOT_GET_FINGERPRINT_ALGORITHM;
-      String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
-      throw new InitializationException(msgID, message, e);
-    }
-
-
-    // Get the set of base DNs below which to perform the searches.
-    baseDNs = null;
-    msgID = MSGID_FCM_DESCRIPTION_BASE_DN;
-    DNConfigAttribute baseStub =
-         new DNConfigAttribute(ATTR_CERTIFICATE_SUBJECT_BASEDN,
-                               getMessage(msgID), false, true, false);
-    try
-    {
-      DNConfigAttribute baseAttr =
-           (DNConfigAttribute) configEntry.getConfigAttribute(baseStub);
-      if (baseAttr != null)
-      {
-        List<DN> dnList = baseAttr.activeValues();
-        baseDNs = new DN[dnList.size()];
-        dnList.toArray(baseDNs);
-      }
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      msgID = MSGID_FCM_CANNOT_GET_BASE_DN;
-      String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
-      throw new InitializationException(msgID, message, e);
-    }
-
-    DirectoryServer.registerConfigurableComponent(this);
   }
 
 
@@ -262,7 +146,7 @@
    */
   public void finalizeCertificateMapper()
   {
-    DirectoryServer.deregisterConfigurableComponent(this);
+    currentConfig.removeFingerprintChangeListener(this);
   }
 
 
@@ -273,6 +157,10 @@
   public Entry mapCertificateToUser(Certificate[] certificateChain)
          throws DirectoryException
   {
+    FingerprintCertificateMapperCfg config = currentConfig;
+    AttributeType fingerprintAttributeType = this.fingerprintAttributeType;
+    String fingerprintAlgorithm = this.fingerprintAlgorithm;
+
     // Make sure that a peer certificate was provided.
     if ((certificateChain == null) || (certificateChain.length == 0))
     {
@@ -340,11 +228,10 @@
 
     // If we have an explicit set of base DNs, then use it.  Otherwise, use the
     // set of public naming contexts in the server.
-    DN[] bases = baseDNs;
-    if (bases == null)
+    Collection<DN> baseDNs = config.getUserBaseDN();
+    if ((baseDNs == null) || baseDNs.isEmpty())
     {
-      bases = new DN[0];
-      bases = DirectoryServer.getPublicNamingContexts().keySet().toArray(bases);
+      baseDNs = DirectoryServer.getPublicNamingContexts().keySet();
     }
 
 
@@ -353,7 +240,7 @@
     Entry userEntry = null;
     InternalClientConnection conn =
          InternalClientConnection.getRootConnection();
-    for (DN baseDN : bases)
+    for (DN baseDN : baseDNs)
     {
       InternalSearchOperation searchOperation =
            conn.processSearch(baseDN, SearchScope.WHOLE_SUBTREE, filter);
@@ -384,201 +271,24 @@
 
 
   /**
-   * Retrieves the DN of the configuration entry with which this
-   * component is associated.
-   *
-   * @return  The DN of the configuration entry with which this
-   *          component is associated.
+   * {@inheritDoc}
    */
-  public DN getConfigurableComponentEntryDN()
+  public boolean isConfigurationChangeAcceptable(
+                      FingerprintCertificateMapperCfg configuration,
+                      List<String> unacceptableReasons)
   {
-    return configEntryDN;
-  }
-
-
-
-  /**
-   * Retrieves the set of configuration attributes that are associated
-   * with this configurable component.
-   *
-   * @return  The set of configuration attributes that are associated
-   *          with this configurable component.
-   */
-  public List<ConfigAttribute> getConfigurationAttributes()
-  {
-    LinkedList<ConfigAttribute> attrList = new LinkedList<ConfigAttribute>();
-
-    int msgID = MSGID_FCM_DESCRIPTION_FINGERPRINT_ATTR;
-    attrList.add(new StringConfigAttribute(ATTR_CERTIFICATE_SUBJECT_ATTR,
-                          getMessage(msgID), true, false, false,
-                          fingerprintAttributeType.getNameOrOID()));
-
-    msgID = MSGID_FCM_DESCRIPTION_FINGERPRINT_ALGORITHM;
-    attrList.add(new MultiChoiceConfigAttribute(
-                          ATTR_CERTIFICATE_FINGERPRINT_ALGORITHM,
-                          getMessage(msgID), true, false, false,
-                          FINGERPRINT_ALGORITHMS, fingerprintAlgorithm));
-
-    LinkedList<DN> dnList = new LinkedList<DN>();
-    if (baseDNs != null)
-    {
-      for (DN baseDN : baseDNs)
-      {
-        dnList.add(baseDN);
-      }
-    }
-
-    msgID = MSGID_FCM_DESCRIPTION_BASE_DN;
-    attrList.add(new DNConfigAttribute(ATTR_CERTIFICATE_SUBJECT_BASEDN,
-                                       getMessage(msgID), false, true, false,
-                                       dnList));
-
-    return attrList;
-  }
-
-
-
-  /**
-   * Indicates whether the provided configuration entry has an
-   * acceptable configuration for this component.  If it does not,
-   * then detailed information about the problem(s) should be added to
-   * the provided list.
-   *
-   * @param  configEntry          The configuration entry for which to
-   *                              make the determination.
-   * @param  unacceptableReasons  A list that can be used to hold
-   *                              messages about why the provided
-   *                              entry does not have an acceptable
-   *                              configuration.
-   *
-   * @return  <CODE>true</CODE> if the provided entry has an
-   *          acceptable configuration for this component, or
-   *          <CODE>false</CODE> if not.
-   */
-  public boolean hasAcceptableConfiguration(ConfigEntry configEntry,
-                                            List<String> unacceptableReasons)
-  {
-    DN configEntryDN = configEntry.getDN();
     boolean configAcceptable = true;
 
-
-    // Get the attribute type that will be used to hold the fingerprint.
-    AttributeType newFingerprintType = null;
-    int msgID = MSGID_FCM_DESCRIPTION_FINGERPRINT_ATTR;
-    StringConfigAttribute attrStub =
-         new StringConfigAttribute(ATTR_CERTIFICATE_FINGERPRINT_ATTR,
-                                   getMessage(msgID), true, false, false);
-    try
+    // Make sure that the fingerprint attribute is defined in the server schema.
+    String attrName = configuration.getFingerprintAttribute();
+    AttributeType newFingerprintType =
+                       DirectoryServer.getAttributeType(toLowerCase(attrName),
+                                       false);
+    if (newFingerprintType == null)
     {
-      StringConfigAttribute attrAttr =
-           (StringConfigAttribute) configEntry.getConfigAttribute(attrStub);
-      if (attrAttr == null)
-      {
-        msgID = MSGID_FCM_NO_FINGERPRINT_ATTR;
-        String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    ATTR_CERTIFICATE_FINGERPRINT_ATTR);
-        unacceptableReasons.add(message);
-        configAcceptable = false;
-      }
-      else
-      {
-        String attrName  = attrAttr.pendingValue();
-        String lowerName = toLowerCase(attrName);
-        newFingerprintType =
-             DirectoryServer.getAttributeType(lowerName, false);
-        if (newFingerprintType == null)
-        {
-          msgID = MSGID_FCM_NO_SUCH_ATTR;
-          String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                      attrName);
-        unacceptableReasons.add(message);
-        configAcceptable = false;
-        }
-      }
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      msgID = MSGID_FCM_CANNOT_GET_FINGERPRINT_ATTR;
-      String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
-      unacceptableReasons.add(message);
-      configAcceptable = false;
-    }
-
-
-    // Get the fingerprint algorithm.
-    String newFingerprintAlgorithm = null;
-    msgID = MSGID_FCM_DESCRIPTION_FINGERPRINT_ALGORITHM;
-    MultiChoiceConfigAttribute algorithmStub =
-         new MultiChoiceConfigAttribute(ATTR_CERTIFICATE_FINGERPRINT_ALGORITHM,
-                                        getMessage(msgID), true, false, false,
-                                        FINGERPRINT_ALGORITHMS);
-    try
-    {
-      MultiChoiceConfigAttribute algorithmAttr =
-           (MultiChoiceConfigAttribute)
-           configEntry.getConfigAttribute(algorithmStub);
-      if (algorithmAttr == null)
-      {
-        msgID = MSGID_FCM_NO_FINGERPRINT_ALGORITHM;
-        String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    ATTR_CERTIFICATE_FINGERPRINT_ALGORITHM);
-        unacceptableReasons.add(message);
-        configAcceptable = false;
-      }
-      else
-      {
-        newFingerprintAlgorithm = algorithmAttr.pendingValue();
-      }
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      msgID = MSGID_FCM_CANNOT_GET_FINGERPRINT_ALGORITHM;
-      String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
-      unacceptableReasons.add(message);
-      configAcceptable = false;
-    }
-
-
-    // Get the set of base DNs below which to perform the searches.
-    DN[] newBaseDNs = null;
-    msgID = MSGID_FCM_DESCRIPTION_BASE_DN;
-    DNConfigAttribute baseStub =
-         new DNConfigAttribute(ATTR_CERTIFICATE_SUBJECT_BASEDN,
-                               getMessage(msgID), false, true, false);
-    try
-    {
-      DNConfigAttribute baseAttr =
-           (DNConfigAttribute) configEntry.getConfigAttribute(baseStub);
-      if (baseAttr != null)
-      {
-        List<DN> dnList = baseAttr.activeValues();
-        newBaseDNs = new DN[dnList.size()];
-        dnList.toArray(newBaseDNs);
-      }
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      msgID = MSGID_FCM_CANNOT_GET_BASE_DN;
-      String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
-      unacceptableReasons.add(message);
+      unacceptableReasons.add(getMessage(MSGID_FCM_NO_SUCH_ATTR,
+                                         String.valueOf(configEntryDN),
+                                         attrName));
       configAcceptable = false;
     }
 
@@ -589,170 +299,43 @@
 
 
   /**
-   * Makes a best-effort attempt to apply the configuration contained
-   * in the provided entry.  Information about the result of this
-   * processing should be added to the provided message list.
-   * Information should always be added to this list if a
-   * configuration change could not be applied.  If detailed results
-   * are requested, then information about the changes applied
-   * successfully (and optionally about parameters that were not
-   * changed) should also be included.
-   *
-   * @param  configEntry      The entry containing the new
-   *                          configuration to apply for this
-   *                          component.
-   * @param  detailedResults  Indicates whether detailed information
-   *                          about the processing should be added to
-   *                          the list.
-   *
-   * @return  Information about the result of the configuration
-   *          update.
+   * {@inheritDoc}
    */
-  public ConfigChangeResult applyNewConfiguration(ConfigEntry configEntry,
-                                                  boolean detailedResults)
+  public ConfigChangeResult applyConfigurationChange(
+              FingerprintCertificateMapperCfg configuration)
   {
-    DN                configEntryDN       = configEntry.getDN();
     ResultCode        resultCode          = ResultCode.SUCCESS;
-    ArrayList<String> messages            = new ArrayList<String>();
     boolean           adminActionRequired = false;
+    ArrayList<String> messages            = new ArrayList<String>();
 
 
-    // Get the attribute type that will be used to hold the fingerprint.
-    AttributeType newFingerprintType = null;
-    int msgID = MSGID_FCM_DESCRIPTION_FINGERPRINT_ATTR;
-    StringConfigAttribute attrStub =
-         new StringConfigAttribute(ATTR_CERTIFICATE_FINGERPRINT_ATTR,
-                                   getMessage(msgID), true, false, false);
-    try
+    // Make sure that the fingerprint attribute is defined in the server schema.
+    String attrName = configuration.getFingerprintAttribute();
+    AttributeType newFingerprintType =
+                       DirectoryServer.getAttributeType(toLowerCase(attrName),
+                                       false);
+    if (newFingerprintType == null)
     {
-      StringConfigAttribute attrAttr =
-           (StringConfigAttribute) configEntry.getConfigAttribute(attrStub);
-      if (attrAttr == null)
-      {
-        if (resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = ResultCode.OBJECTCLASS_VIOLATION;
-        }
-
-        msgID = MSGID_FCM_NO_FINGERPRINT_ATTR;
-        messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                ATTR_CERTIFICATE_FINGERPRINT_ATTR));
-      }
-      else
-      {
-        String attrName  = attrAttr.pendingValue();
-        String lowerName = toLowerCase(attrName);
-        newFingerprintType =
-             DirectoryServer.getAttributeType(lowerName, false);
-        if (newFingerprintType == null)
-        {
-          if (resultCode == ResultCode.SUCCESS)
-          {
-            resultCode = ResultCode.NO_SUCH_ATTRIBUTE;
-          }
-
-          msgID = MSGID_FCM_NO_SUCH_ATTR;
-          messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                  attrName));
-        }
-      }
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
       if (resultCode == ResultCode.SUCCESS)
       {
-        resultCode = DirectoryServer.getServerErrorResultCode();
+        resultCode = ResultCode.NO_SUCH_ATTRIBUTE;
       }
 
-      msgID = MSGID_FCM_CANNOT_GET_FINGERPRINT_ATTR;
-      messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+      messages.add(getMessage(MSGID_FCM_NO_SUCH_ATTR,
+                              String.valueOf(configEntryDN), attrName));
     }
 
 
-    // Get the fingerprint algorithm.
+    // Get the algorithm that will be used to generate the fingerprint.
     String newFingerprintAlgorithm = null;
-    msgID = MSGID_FCM_DESCRIPTION_FINGERPRINT_ALGORITHM;
-    MultiChoiceConfigAttribute algorithmStub =
-         new MultiChoiceConfigAttribute(ATTR_CERTIFICATE_FINGERPRINT_ALGORITHM,
-                                        getMessage(msgID), true, false, false,
-                                        FINGERPRINT_ALGORITHMS);
-    try
+    switch (configuration.getFingerprintAlgorithm())
     {
-      MultiChoiceConfigAttribute algorithmAttr =
-           (MultiChoiceConfigAttribute)
-           configEntry.getConfigAttribute(algorithmStub);
-      if (algorithmAttr == null)
-      {
-        if (resultCode == ResultCode.SUCCESS)
-        {
-          resultCode = ResultCode.OBJECTCLASS_VIOLATION;
-        }
-
-        msgID = MSGID_FCM_NO_FINGERPRINT_ALGORITHM;
-        messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                ATTR_CERTIFICATE_FINGERPRINT_ALGORITHM));
-      }
-      else
-      {
-        newFingerprintAlgorithm = algorithmAttr.pendingValue();
-      }
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      msgID = MSGID_FCM_CANNOT_GET_FINGERPRINT_ALGORITHM;
-      messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
-    }
-
-
-    // Get the set of base DNs below which to perform the searches.
-    DN[] newBaseDNs = null;
-    msgID = MSGID_FCM_DESCRIPTION_BASE_DN;
-    DNConfigAttribute baseStub =
-         new DNConfigAttribute(ATTR_CERTIFICATE_SUBJECT_BASEDN,
-                               getMessage(msgID), false, true, false);
-    try
-    {
-      DNConfigAttribute baseAttr =
-           (DNConfigAttribute) configEntry.getConfigAttribute(baseStub);
-      if (baseAttr != null)
-      {
-        List<DN> dnList = baseAttr.activeValues();
-        newBaseDNs = new DN[dnList.size()];
-        dnList.toArray(newBaseDNs);
-      }
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      if (resultCode == ResultCode.SUCCESS)
-      {
-        resultCode = DirectoryServer.getServerErrorResultCode();
-      }
-
-      msgID = MSGID_FCM_CANNOT_GET_BASE_DN;
-      messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+      case MD5:
+        newFingerprintAlgorithm = "MD5";
+        break;
+      case SHA1:
+        newFingerprintAlgorithm = "SHA1";
+        break;
     }
 
 
@@ -760,10 +343,11 @@
     {
       fingerprintAttributeType = newFingerprintType;
       fingerprintAlgorithm     = newFingerprintAlgorithm;
-      baseDNs                  = newBaseDNs;
+      currentConfig            = configuration;
     }
 
-    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+
+   return new ConfigChangeResult(resultCode, adminActionRequired, messages);
   }
 }
 

--
Gitblit v1.10.0