mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

matthew_swift
19.47.2007 980147a25e6e1d817e24c0fa7ebe173313dce27d
opends/src/server/org/opends/server/admin/server/ServerManagedObject.java
@@ -720,10 +720,19 @@
    validateRelationDefinition(d);
    DN baseDN = DNBuilder.create(path, d);
    ConfigEntry configEntry = getListenerConfigEntry(baseDN);
    ConfigEntry relationEntry = getListenerConfigEntry(baseDN);
    ConfigAddListener adaptor = new ConfigAddListenerAdaptor<M>(path,
        d, listener);
    configEntry.registerAddListener(adaptor);
    if (relationEntry != null) {
      relationEntry.registerAddListener(adaptor);
    } else {
      // The relation entry does not exist yet so register a delayed
      // add listener.
      ConfigAddListener delayedListener = new DelayedConfigAddListener(
          configEntry.getDN(), baseDN, adaptor);
      configEntry.registerAddListener(delayedListener);
    }
  }
@@ -795,11 +804,19 @@
    validateRelationDefinition(d);
    DN baseDN = DNBuilder.create(path, d);
    ConfigEntry configEntry = getListenerConfigEntry(baseDN);
    ConfigEntry relationEntry = getListenerConfigEntry(baseDN);
    ConfigDeleteListener adaptor = new ConfigDeleteListenerAdaptor<M>(
        path, d, listener);
    configEntry.registerDeleteListener(adaptor);
    if (relationEntry != null) {
      relationEntry.registerDeleteListener(adaptor);
    } else {
      // The relation entry does not exist yet so register a delayed
      // add listener.
      ConfigAddListener delayedListener = new DelayedConfigAddListener(
          configEntry.getDN(), baseDN, adaptor);
      configEntry.registerAddListener(delayedListener);
    }
  }
@@ -851,11 +868,13 @@
      DN baseDN, ConfigurationAddListener<M> listener) {
    try {
      ConfigEntry configEntry = getListenerConfigEntry(baseDN);
      for (ConfigAddListener l : configEntry.getAddListeners()) {
        if (l instanceof ConfigAddListenerAdaptor) {
          ConfigAddListenerAdaptor adaptor = (ConfigAddListenerAdaptor) l;
          if (adaptor.getConfigurationAddListener() == listener) {
            configEntry.deregisterAddListener(adaptor);
      if (configEntry != null) {
        for (ConfigAddListener l : configEntry.getAddListeners()) {
          if (l instanceof ConfigAddListenerAdaptor) {
            ConfigAddListenerAdaptor adaptor = (ConfigAddListenerAdaptor) l;
            if (adaptor.getConfigurationAddListener() == listener) {
              configEntry.deregisterAddListener(adaptor);
            }
          }
        }
      }
@@ -875,11 +894,15 @@
      ConfigurationDeleteListener<M> listener) {
    try {
      ConfigEntry configEntry = getListenerConfigEntry(baseDN);
      for (ConfigDeleteListener l : configEntry.getDeleteListeners()) {
        if (l instanceof ConfigDeleteListenerAdaptor) {
          ConfigDeleteListenerAdaptor adaptor = (ConfigDeleteListenerAdaptor) l;
          if (adaptor.getConfigurationDeleteListener() == listener) {
            configEntry.deregisterDeleteListener(adaptor);
      if (configEntry != null) {
        for (ConfigDeleteListener l : configEntry
            .getDeleteListeners()) {
          if (l instanceof ConfigDeleteListenerAdaptor) {
            ConfigDeleteListenerAdaptor adaptor =
              (ConfigDeleteListenerAdaptor) l;
            if (adaptor.getConfigurationDeleteListener() == listener) {
              configEntry.deregisterDeleteListener(adaptor);
            }
          }
        }
      }
@@ -915,7 +938,7 @@
  // Gets a config entry required for a listener and throws a config
  // exception on failure.
  // exception on failure or returns null if the entry does not exist.
  private ConfigEntry getListenerConfigEntry(DN dn)
      throws ConfigException {
    // Attempt to retrieve the listener base entry.
@@ -934,14 +957,6 @@
      throw new ConfigException(msgID, message, e);
    }
    // The configuration handler is free to return null indicating
    // that the entry does not exist.
    if (configEntry == null) {
      int msgID = AdminMessages.MSGID_ADMIN_LISTENER_BASE_DOES_NOT_EXIST;
      String message = getMessage(msgID, String.valueOf(dn));
      throw new ConfigException(msgID, message);
    }
    return configEntry;
  }