From c46ff78c545272ec2fc5679b22c39eae239636c6 Mon Sep 17 00:00:00 2001
From: lutoff <lutoff@localhost>
Date: Thu, 24 Jan 2008 09:09:54 +0000
Subject: [PATCH] FIx for issue #2602 (index creation should not be required when changing objects configuration)

---
 opends/src/server/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java |   58 +++++++++---------
 opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java                     |   52 +++++++++--------
 opends/src/server/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java        |   11 ++-
 opends/src/messages/messages/extension.properties                                                    |    2 
 4 files changed, 63 insertions(+), 60 deletions(-)

diff --git a/opends/src/messages/messages/extension.properties b/opends/src/messages/messages/extension.properties
index f024d0a..09d3156 100644
--- a/opends/src/messages/messages/extension.properties
+++ b/opends/src/messages/messages/extension.properties
@@ -1622,7 +1622,7 @@
 SEVERE_ERR_FCM_ATTR_UNINDEXED_567=The fingerprint certificate mapper defined \
  in configuration entry %s references attribute type %s which is does not \
  have an equality index defined in backend %s
-SEVERE_ERR_SATUACM_ATTR_UNINDEXED_568=The subject attribute to user attribute \
+SEVERE_WARN_SATUACM_ATTR_UNINDEXED_568=The subject attribute to user attribute \
  certificate mapper defined in configuration entry %s references attribute \
  type %s which is does not have an equality index defined in backend %s
 SEVERE_ERR_SDTUACM_ATTR_UNINDEXED_569=The subject DN to user attribute \
diff --git a/opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java b/opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java
index 3c57872..f5d18dd 100644
--- a/opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java
+++ b/opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Portions Copyright 2007 Sun Microsystems, Inc.
+ *      Portions Copyright 2007-2008 Sun Microsystems, Inc.
  */
 package org.opends.server.extensions;
 
@@ -45,6 +45,7 @@
 import org.opends.server.api.CertificateMapper;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
+import org.opends.server.loggers.ErrorLogger;
 import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
@@ -148,9 +149,10 @@
       Backend b = DirectoryServer.getBackend(baseDN);
       if ((b != null) && (! b.isIndexed(t, IndexType.EQUALITY)))
       {
-        throw new ConfigException(ERR_FCM_ATTR_UNINDEXED.get(
-                                       configuration.dn().toString(),
-                                       t.getNameOrOID(), b.getBackendID()));
+        Message message = WARN_SATUACM_ATTR_UNINDEXED.get(
+            configuration.dn().toString(),
+            t.getNameOrOID(), b.getBackendID());
+        ErrorLogger.logError(message);
       }
     }
   }
@@ -301,27 +303,6 @@
   {
     boolean configAcceptable = true;
 
-    // Make sure that the fingerprint attribute is configured for equality in
-    // all appropriate backends.
-    Set<DN> cfgBaseDNs = configuration.getUserBaseDN();
-    if ((cfgBaseDNs == null) || cfgBaseDNs.isEmpty())
-    {
-      cfgBaseDNs = DirectoryServer.getPublicNamingContexts().keySet();
-    }
-
-    AttributeType t = configuration.getFingerprintAttribute();
-    for (DN baseDN : cfgBaseDNs)
-    {
-      Backend b = DirectoryServer.getBackend(baseDN);
-      if ((b != null) && (! b.isIndexed(t, IndexType.EQUALITY)))
-      {
-        configAcceptable = false;
-        unacceptableReasons.add(ERR_FCM_ATTR_UNINDEXED.get(
-                                     configuration.dn().toString(),
-                                     t.getNameOrOID(), b.getBackendID()));
-      }
-    }
-
     return configAcceptable;
   }
 
@@ -357,6 +338,27 @@
       currentConfig        = configuration;
     }
 
+    // Make sure that the fingerprint attribute is configured for equality in
+    // all appropriate backends.
+    Set<DN> cfgBaseDNs = configuration.getUserBaseDN();
+    if ((cfgBaseDNs == null) || cfgBaseDNs.isEmpty())
+    {
+      cfgBaseDNs = DirectoryServer.getPublicNamingContexts().keySet();
+    }
+
+    AttributeType t = configuration.getFingerprintAttribute();
+    for (DN baseDN : cfgBaseDNs)
+    {
+      Backend b = DirectoryServer.getBackend(baseDN);
+      if ((b != null) && (! b.isIndexed(t, IndexType.EQUALITY)))
+      {
+        Message message = WARN_SATUACM_ATTR_UNINDEXED.get(
+            configuration.dn().toString(),
+            t.getNameOrOID(), b.getBackendID());
+        messages.add(message);
+        ErrorLogger.logError(message);
+      }
+    }
 
    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
   }
diff --git a/opends/src/server/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java b/opends/src/server/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java
index 7571da0..5e1c918 100644
--- a/opends/src/server/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java
+++ b/opends/src/server/org/opends/server/extensions/SubjectAttributeToUserAttributeCertificateMapper.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Portions Copyright 2007 Sun Microsystems, Inc.
+ *      Portions Copyright 2007-2008 Sun Microsystems, Inc.
  */
 package org.opends.server.extensions;
 
@@ -47,6 +47,7 @@
 import org.opends.server.api.CertificateMapper;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
+import org.opends.server.loggers.ErrorLogger;
 import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
@@ -192,9 +193,10 @@
         Backend b = DirectoryServer.getBackend(baseDN);
         if ((b != null) && (! b.isIndexed(t, IndexType.EQUALITY)))
         {
-          throw new ConfigException(ERR_SATUACM_ATTR_UNINDEXED.get(
-                                         configuration.dn().toString(),
-                                         t.getNameOrOID(), b.getBackendID()));
+          Message message = WARN_SATUACM_ATTR_UNINDEXED.get(
+              configuration.dn().toString(),
+              t.getNameOrOID(), b.getBackendID());
+          ErrorLogger.logError(message);
         }
       }
     }
@@ -424,31 +426,6 @@
       newAttributeMap.put(certAttrName, userAttrType);
     }
 
-
-    // Make sure that all the user attributes are configured with equality
-    // indexes in all appropriate backends.
-    Set<DN> cfgBaseDNs = configuration.getUserBaseDN();
-    if ((cfgBaseDNs == null) || cfgBaseDNs.isEmpty())
-    {
-      cfgBaseDNs = DirectoryServer.getPublicNamingContexts().keySet();
-    }
-
-    for (DN baseDN : cfgBaseDNs)
-    {
-      for (AttributeType t : newAttributeMap.values())
-      {
-        Backend b = DirectoryServer.getBackend(baseDN);
-        if ((b != null) && (! b.isIndexed(t, IndexType.EQUALITY)))
-        {
-          configAcceptable = false;
-          unacceptableReasons.add(ERR_SATUACM_ATTR_UNINDEXED.get(
-                                       configuration.dn().toString(),
-                                       t.getNameOrOID(), b.getBackendID()));
-        }
-      }
-    }
-
-
     return configAcceptable;
   }
 
@@ -552,6 +529,29 @@
       newAttributeMap.put(certAttrName, userAttrType);
     }
 
+    // Make sure that all the user attributes are configured with equality
+    // indexes in all appropriate backends.
+    Set<DN> cfgBaseDNs = configuration.getUserBaseDN();
+    if ((cfgBaseDNs == null) || cfgBaseDNs.isEmpty())
+    {
+      cfgBaseDNs = DirectoryServer.getPublicNamingContexts().keySet();
+    }
+
+    for (DN baseDN : cfgBaseDNs)
+    {
+      for (AttributeType t : newAttributeMap.values())
+      {
+        Backend b = DirectoryServer.getBackend(baseDN);
+        if ((b != null) && (! b.isIndexed(t, IndexType.EQUALITY)))
+        {
+          Message message = WARN_SATUACM_ATTR_UNINDEXED.get(
+              configuration.dn().toString(),
+              t.getNameOrOID(), b.getBackendID());
+          messages.add(message);
+          ErrorLogger.logError(message);
+        }
+      }
+    }
 
     if (resultCode == ResultCode.SUCCESS)
     {
diff --git a/opends/src/server/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java b/opends/src/server/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java
index a618f49..504bc5f 100644
--- a/opends/src/server/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java
+++ b/opends/src/server/org/opends/server/extensions/SubjectDNToUserAttributeCertificateMapper.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Portions Copyright 2007 Sun Microsystems, Inc.
+ *      Portions Copyright 2007-2008 Sun Microsystems, Inc.
  */
 package org.opends.server.extensions;
 
@@ -44,6 +44,7 @@
 import org.opends.server.api.CertificateMapper;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
+import org.opends.server.loggers.ErrorLogger;
 import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
@@ -63,7 +64,6 @@
 
 import static org.opends.messages.ExtensionMessages.*;
 import static org.opends.server.loggers.debug.DebugLogger.*;
-import static org.opends.server.util.StaticUtils.*;
 
 
 
@@ -132,9 +132,10 @@
       Backend b = DirectoryServer.getBackend(baseDN);
       if ((b != null) && (! b.isIndexed(t, IndexType.EQUALITY)))
       {
-        throw new ConfigException(ERR_SDTUACM_ATTR_UNINDEXED.get(
-                                       configuration.dn().toString(),
-                                       t.getNameOrOID(), b.getBackendID()));
+        Message message = WARN_SATUACM_ATTR_UNINDEXED.get(
+            configuration.dn().toString(),
+            t.getNameOrOID(), b.getBackendID());
+        ErrorLogger.logError(message);
       }
     }
   }

--
Gitblit v1.10.0