From 6e7a584808039d13a79c957e968b580176357153 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Thu, 05 Jul 2007 16:07:24 +0000
Subject: [PATCH] Eliminate the ConfigurableComponent interface, as it is no longer needed and has been replaced by the ConfigurationChangeListener interface.

---
 opends/src/server/org/opends/server/config/JMXMBean.java |  380 +----------------------------------------------------
 1 files changed, 10 insertions(+), 370 deletions(-)

diff --git a/opends/src/server/org/opends/server/config/JMXMBean.java b/opends/src/server/org/opends/server/config/JMXMBean.java
index 1754572..239dc9f 100644
--- a/opends/src/server/org/opends/server/config/JMXMBean.java
+++ b/opends/src/server/org/opends/server/config/JMXMBean.java
@@ -50,7 +50,6 @@
 
 import org.opends.server.admin.std.server.MonitorProviderCfg;
 import org.opends.server.api.AlertGenerator;
-import org.opends.server.api.ConfigurableComponent;
 import org.opends.server.api.DirectoryServerMBean;
 import org.opends.server.api.InvokableComponent;
 import org.opends.server.api.MonitorProvider;
@@ -64,7 +63,6 @@
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
 import org.opends.server.types.InvokableMethod;
-import org.opends.server.types.RawModification;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchScope;
 
@@ -75,16 +73,11 @@
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.*;
-import static org.opends.server.config.ConfigConstants.OPTION_PENDING_VALUES;
 import org.opends.server.protocols.jmx.JmxClientConnection;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.ldap.LDAPFilter;
-import org.opends.server.protocols.ldap.LDAPModification;
-import org.opends.server.protocols.ldap.LDAPAttribute ;
 import org.opends.server.protocols.internal.InternalSearchOperation ;
-import org.opends.server.core.ModifyOperationBasis ;
 import org.opends.server.types.LDAPException;
-import org.opends.server.types.ModificationType;
 
 
 
@@ -112,9 +105,6 @@
   // The set of alert generators for this MBean.
   private CopyOnWriteArrayList<AlertGenerator> alertGenerators;
 
-  // The set of configurable components for this MBean.
-  private CopyOnWriteArrayList<ConfigurableComponent> configurableComponents;
-
   // The set of invokable components for this MBean.
   private CopyOnWriteArrayList<InvokableComponent> invokableComponents;
 
@@ -205,8 +195,6 @@
         this.configEntryDN = configEntryDN;
 
         alertGenerators = new CopyOnWriteArrayList<AlertGenerator>();
-        configurableComponents =
-                           new CopyOnWriteArrayList<ConfigurableComponent>();
         invokableComponents = new CopyOnWriteArrayList<InvokableComponent>();
         monitorProviders =
              new CopyOnWriteArrayList<MonitorProvider<
@@ -319,59 +307,6 @@
 
 
   /**
-   * Retrieves the set of configurable components associated with this JMX
-   * MBean.
-   *
-   * @return  The set of configurable components associated with this JMX MBean.
-   */
-  public CopyOnWriteArrayList<ConfigurableComponent> getConfigurableComponents()
-  {
-    return configurableComponents;
-  }
-
-
-
-  /**
-   * Adds the provided configurable component to the set of components
-   * associated with this JMX MBean.
-   *
-   * @param  component  The component to add to the set of configurable
-   *                    components for this JMX MBean.
-   */
-  public void addConfigurableComponent(ConfigurableComponent component)
-  {
-    synchronized (configurableComponents)
-    {
-      if (! configurableComponents.contains(component))
-      {
-        configurableComponents.add(component);
-      }
-    }
-  }
-
-
-
-  /**
-   * Removes the provided configurable component from the set of components
-   * associated with this JMX MBean.
-   *
-   * @param  component  The component to remove from the set of configurable
-   *                    components for this JMX MBean.
-   *
-   * @return  <CODE>true</CODE> if the specified component was successfully
-   *          removed, or <CODE>false</CODE> if not.
-   */
-  public boolean removeConfigurableComponent(ConfigurableComponent component)
-  {
-    synchronized (configurableComponents)
-    {
-      return configurableComponents.remove(component);
-    }
-  }
-
-
-
-  /**
    * Retrieves the set of invokable components associated with this JMX MBean.
    *
    * @return  The set of invokable components associated with this JMX MBean.
@@ -485,69 +420,10 @@
    * @return  The specified configuration attribute, or <CODE>null</CODE> if
    *          there is no such attribute.
    */
-  private ConfigAttribute getConfigAttribute(String name)
-  {
-    for (ConfigurableComponent component : configurableComponents)
-    {
-      for (ConfigAttribute attr : component.getConfigurationAttributes())
-      {
-        if (attr.getName().equalsIgnoreCase(name))
-        {
-          return attr;
-        }
-      }
-    }
-
-    return null;
-  }
-
-
-
-  /**
-   * Retrieves the specified configuration attribute.
-   *
-   * @param  name  The name of the configuration attribute to retrieve.
-   *
-   * @return  The specified configuration attribute, or <CODE>null</CODE> if
-   *          there is no such attribute.
-   */
   private Attribute getJmxAttribute(String name)
   {
-    String attributeName ;
-    String pendingString = ";" + OPTION_PENDING_VALUES ;
-    boolean pending = false ;
-    if (name.endsWith(pendingString ))
-    {
-        int index = name.indexOf(pendingString) ;
-        attributeName = name.substring(0,index) ;
-        pending = true ;
-    }
-    else
-    {
-        attributeName = name ;
-    }
-
-    for (ConfigurableComponent component : configurableComponents)
-    {
-      for (ConfigAttribute attr : component.getConfigurationAttributes())
-      {
-        if (attr.getName().equalsIgnoreCase(attributeName))
-        {
-          if (pending)
-          {
-            return attr.toJMXAttributePending();
-          }
-          else
-          {
-            return attr.toJMXAttribute() ;
-          }
-        }
-      }
-    }
-
-    //
-    // It's possible that this is a monitor attribute rather than a
-    // configurable one. Check all of those.
+    // It's possible that this is a monitor attribute rather than a configurable
+    // one. Check all of those.
     AttributeType attrType =
       DirectoryServer.getAttributeType(name.toLowerCase());
     if (attrType == null)
@@ -683,89 +559,10 @@
     }
   }
 
-
   /**
-   * Convert an JMX attribute into an LDAP attribute.
-   *
-   * @param attribute
-   *        The JMX attribute which needs to be converted into an LDAP
-   *        attribute
-   * @param configEntry
-   *        The associated ConfigEntry
-   * @return The converted LDAP attribute
-   * @throws AttributeNotFoundException
-   * @throws InvalidAttributeValueException
-   */
-private LDAPAttribute getLdapAttributeFromJmx(
-      javax.management.Attribute attribute, ConfigEntry configEntry)
-      throws AttributeNotFoundException, InvalidAttributeValueException
-  {
-    String name = attribute.getName() ;
-    //
-    // Get a duplicated version of the config attribute
-    ConfigAttribute configAttribute;
-    try
-    {
-      configAttribute = getConfigAttribute(name).duplicate();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_CONFIG_JMX_ATTR_NO_ATTR;
-      String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  String.valueOf(name));
-
-      logError(
-          ErrorLogCategory.CONFIGURATION,
-          ErrorLogSeverity.MILD_ERROR, message, msgID);
-      throw new AttributeNotFoundException(message);
-    }
-
-    //
-    // Update the config Attribute value
-    try
-    {
-      configAttribute.setValue(attribute);
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
-      }
-      logError(
-          ErrorLogCategory.CONFIGURATION,
-          ErrorLogSeverity.MILD_ERROR,
-          MSGID_CONFIG_JMX_ATTR_INVALID_VALUE,
-          configEntryDN.toString(),
-          String.valueOf(e));
-      throw new InvalidAttributeValueException();
-    }
-
-    //
-    // Update the config entry (and the entry)
-    configEntry.putConfigAttribute(configAttribute);
-
-    //
-    // Get the Ldap attribute associated with this name
-    AttributeType attrType =
-         DirectoryServer.getAttributeType(name.toLowerCase());
-    if (attrType == null)
-    {
-      attrType = DirectoryServer.getDefaultAttributeType(name, configAttribute
-          .getSyntax());
-    }
-
-    return new LDAPAttribute(configEntry.getEntry().getAttribute(attrType).get(
-        0));
-  }
-
-  /**
-   * Set the value of a specific attribute of the Dynamic MBean.
+   * Set the value of a specific attribute of the Dynamic MBean.  In this case,
+   * it will always throw {@code InvalidAttributeValueException} because setting
+   * attribute values over JMX is currently not allowed.
    *
    * @param  attribute  The identification of the attribute to be set and the
    *                    value it is to be set to.
@@ -779,69 +576,7 @@
   public void setAttribute(javax.management.Attribute attribute)
          throws AttributeNotFoundException, InvalidAttributeValueException
   {
-    ConfigEntry configEntry;
-    ConfigEntry newConfigEntry ;
-
-    //
-    // Get the associated ConfigEntry, and duplicate it
-    try
-    {
-      configEntry = DirectoryServer.getConfigHandler().getConfigEntry(
-          configEntryDN);
-      newConfigEntry = configEntry.duplicate();
-    } catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_CONFIG_JMX_CANNOT_GET_CONFIG_ENTRY;
-      String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  String.valueOf(e));
-
-      logError(
-          ErrorLogCategory.CONFIGURATION,
-          ErrorLogSeverity.MILD_ERROR, message, msgID);
-      throw new AttributeNotFoundException(message);
-    }
-
-    //
-    // Get the jmx Client connection
-    JmxClientConnection jmxClientConnection = getClientConnection();
-    if (jmxClientConnection == null)
-    {
-      int    msgID   = MSGID_CONFIG_JMX_SET_ATTR_NO_CONNECTION;
-      String message = getMessage(msgID, attribute.getName(),
-                                  String.valueOf(configEntry.getDN()));
-      throw new AttributeNotFoundException(message);
-    }
-
-    //
-    // prepare the ldap modify
-    LDAPModification ldapModification = new LDAPModification(
-        ModificationType.REPLACE, getLdapAttributeFromJmx(
-            attribute,
-            newConfigEntry));
-    ArrayList<RawModification> ldapModList = new ArrayList<RawModification>();
-    ldapModList.add(ldapModification);
-
-    //
-    // Process the modify
-    ModifyOperationBasis op = jmxClientConnection.processModify(
-          new ASN1OctetString(configEntryDN.toString()),
-          ldapModList);
-
-    ResultCode rc = op.getResultCode();
-    if (rc != ResultCode.SUCCESS)
-    {
-      jmxClientConnection = null ;
-      throw new InvalidAttributeValueException();
-    }
-    //
-    // return part
-    jmxClientConnection = null ;
-    return ;
+    throw new InvalidAttributeValueException();
   }
 
   /**
@@ -973,100 +708,13 @@
    *                     attributes to be set and the values they are to be set
    *                     to.
    *
-   * @return  The list of attributes that were set with their new values.
+   * @return  The list of attributes that were set with their new values.  In
+   *          this case, the list will always be empty because we do not support
+   *          setting attribute values over JMX.
    */
   public AttributeList setAttributes(AttributeList attributes)
   {
-    AttributeList setAttrs = new AttributeList();
-
-    //
-    ConfigEntry configEntry;
-    ConfigEntry newConfigEntry ;
-
-    //
-    // Get the associated ConfigEntry, and duplicate it
-    try
-    {
-      configEntry = DirectoryServer.getConfigHandler().getConfigEntry(
-          configEntryDN);
-      newConfigEntry = configEntry.duplicate();
-    } catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        TRACER.debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      logError(
-          ErrorLogCategory.CONFIGURATION,
-          ErrorLogSeverity.MILD_ERROR,
-          MSGID_CONFIG_JMX_CANNOT_GET_CONFIG_ENTRY,
-          configEntryDN.toString(),
-          String.valueOf(e));
-      return setAttrs;
-    }
-
-    //
-    // Get the jmx Client connection
-    JmxClientConnection jmxClientConnection = getClientConnection();
-    if (jmxClientConnection == null)
-    {
-      return setAttrs;
-    }
-
-    //
-    // prepare the ldap modify
-    ArrayList<RawModification> ldapModList = new ArrayList<RawModification>();
-    for (Object o : attributes)
-    {
-      Attribute attribute = (Attribute) o;
-      try
-      {
-        LDAPModification ldapModification = new LDAPModification(
-            ModificationType.REPLACE, getLdapAttributeFromJmx(
-                attribute, newConfigEntry));
-                ldapModList.add(ldapModification);
-      }
-      catch (Exception e)
-      {
-        continue ;
-      }
-    }
-
-    //
-    // Process the modify
-    // TODO What about the return code?
-
-    jmxClientConnection.processModify(
-        new ASN1OctetString(configEntryDN.toString()),
-        ldapModList);
-
-    //
-    // return part
-    jmxClientConnection = null ;
-    for (Object o : attributes)
-    {
-      Attribute attribute = (Attribute) o;
-      ConfigAttribute configAttribute;
-      try
-      {
-        configAttribute = getConfigAttribute(attribute.getName());
-      }
-      catch (Exception e)
-      {
-        if (debugEnabled())
-        {
-          TRACER.debugCaught(DebugLogLevel.ERROR, e);
-        }
-
-        logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.MILD_ERROR,
-                 MSGID_CONFIG_JMX_ATTR_NO_ATTR, configEntryDN.toString(),
-                 attribute.getName());
-        continue;
-      }
-      configAttribute.toJMXAttribute(setAttrs);
-    }
-    return setAttrs;
+    return new AttributeList();
   }
 
 
@@ -1169,14 +817,6 @@
     }
 
     ArrayList<MBeanAttributeInfo> attrs = new ArrayList<MBeanAttributeInfo>();
-    for (ConfigurableComponent component : configurableComponents)
-    {
-      for (ConfigAttribute attr : component.getConfigurationAttributes())
-      {
-        attr.toJMXAttributeInfo(attrs);
-      }
-    }
-
     for (MonitorProvider<? extends MonitorProviderCfg> monitor :
          monitorProviders)
     {

--
Gitblit v1.10.0