From 4d488857c1e78805224dcb1eab91e47586ceba5b Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Mon, 14 Jan 2008 10:43:58 +0000
Subject: [PATCH] Partial fix for issue 2661 - public APIs must not reference private classes.
---
opendj-sdk/opends/src/server/org/opends/server/admin/server/ServerManagedObject.java | 323 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 319 insertions(+), 4 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/admin/server/ServerManagedObject.java b/opendj-sdk/opends/src/server/org/opends/server/admin/server/ServerManagedObject.java
index 2b970a4..3a270d5 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/admin/server/ServerManagedObject.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/admin/server/ServerManagedObject.java
@@ -149,6 +149,31 @@
/**
+ * Deregisters an existing server managed object add listener.
+ *
+ * @param <M>
+ * The type of the child server configuration object.
+ * @param d
+ * The instantiable relation definition.
+ * @param listener
+ * The server managed object add listener.
+ * @throws IllegalArgumentException
+ * If the instantiable relation definition is not
+ * associated with this managed object's definition.
+ */
+ public <M extends Configuration> void deregisterAddListener(
+ InstantiableRelationDefinition<?, M> d,
+ ServerManagedObjectAddListener<M> listener)
+ throws IllegalArgumentException {
+ validateRelationDefinition(d);
+
+ DN baseDN = DNBuilder.create(path, d);
+ deregisterAddListener(baseDN, listener);
+ }
+
+
+
+ /**
* Deregisters an existing configuration add listener.
*
* @param <M>
@@ -173,6 +198,31 @@
/**
+ * Deregisters an existing server managed object add listener.
+ *
+ * @param <M>
+ * The type of the child server configuration object.
+ * @param d
+ * The optional relation definition.
+ * @param listener
+ * The server managed object add listener.
+ * @throws IllegalArgumentException
+ * If the optional relation definition is not associated
+ * with this managed object's definition.
+ */
+ public <M extends Configuration> void deregisterAddListener(
+ OptionalRelationDefinition<?, M> d,
+ ServerManagedObjectAddListener<M> listener)
+ throws IllegalArgumentException {
+ validateRelationDefinition(d);
+
+ DN baseDN = DNBuilder.create(path, d).getParent();
+ deregisterAddListener(baseDN, listener);
+ }
+
+
+
+ /**
* Deregisters an existing configuration change listener.
*
* @param listener
@@ -184,7 +234,35 @@
if (l instanceof ConfigChangeListenerAdaptor) {
ConfigChangeListenerAdaptor<?> adaptor =
(ConfigChangeListenerAdaptor<?>) l;
- if (adaptor.getConfigurationChangeListener() == listener) {
+ ServerManagedObjectChangeListener<?> l2 = adaptor
+ .getServerManagedObjectChangeListener();
+ if (l2 instanceof ServerManagedObjectChangeListenerAdaptor<?>) {
+ ServerManagedObjectChangeListenerAdaptor<?> adaptor2 =
+ (ServerManagedObjectChangeListenerAdaptor<?>) l2;
+ if (adaptor2.getConfigurationChangeListener() == listener) {
+ adaptor.finalizeChangeListener();
+ configEntry.deregisterChangeListener(adaptor);
+ }
+ }
+ }
+ }
+ }
+
+
+
+ /**
+ * Deregisters an existing server managed object change listener.
+ *
+ * @param listener
+ * The server managed object change listener.
+ */
+ public void deregisterChangeListener(
+ ServerManagedObjectChangeListener<? super S> listener) {
+ for (ConfigChangeListener l : configEntry.getChangeListeners()) {
+ if (l instanceof ConfigChangeListenerAdaptor) {
+ ConfigChangeListenerAdaptor<?> adaptor =
+ (ConfigChangeListenerAdaptor<?>) l;
+ if (adaptor.getServerManagedObjectChangeListener() == listener) {
adaptor.finalizeChangeListener();
configEntry.deregisterChangeListener(adaptor);
}
@@ -219,6 +297,31 @@
/**
+ * Deregisters an existing server managed object delete listener.
+ *
+ * @param <M>
+ * The type of the child server configuration object.
+ * @param d
+ * The instantiable relation definition.
+ * @param listener
+ * The server managed object delete listener.
+ * @throws IllegalArgumentException
+ * If the instantiable relation definition is not
+ * associated with this managed object's definition.
+ */
+ public <M extends Configuration> void deregisterDeleteListener(
+ InstantiableRelationDefinition<?, M> d,
+ ServerManagedObjectDeleteListener<M> listener)
+ throws IllegalArgumentException {
+ validateRelationDefinition(d);
+
+ DN baseDN = DNBuilder.create(path, d);
+ deregisterDeleteListener(baseDN, listener);
+ }
+
+
+
+ /**
* Deregisters an existing configuration delete listener.
*
* @param <M>
@@ -243,6 +346,31 @@
/**
+ * Deregisters an existing server managed object delete listener.
+ *
+ * @param <M>
+ * The type of the child server configuration object.
+ * @param d
+ * The optional relation definition.
+ * @param listener
+ * The server managed object delete listener.
+ * @throws IllegalArgumentException
+ * If the optional relation definition is not associated
+ * with this managed object's definition.
+ */
+ public <M extends Configuration> void deregisterDeleteListener(
+ OptionalRelationDefinition<?, M> d,
+ ServerManagedObjectDeleteListener<M> listener)
+ throws IllegalArgumentException {
+ validateRelationDefinition(d);
+
+ DN baseDN = DNBuilder.create(path, d).getParent();
+ deregisterDeleteListener(baseDN, listener);
+ }
+
+
+
+ /**
* Retrieve an instantiable child managed object.
*
* @param <M>
@@ -491,6 +619,33 @@
InstantiableRelationDefinition<?, M> d,
ConfigurationAddListener<M> listener) throws IllegalArgumentException,
ConfigException {
+ registerAddListener(d, new ServerManagedObjectAddListenerAdaptor<M>(
+ listener));
+ }
+
+
+
+ /**
+ * Register to be notified when new child server managed object are
+ * added beneath an instantiable relation.
+ *
+ * @param <M>
+ * The type of the child server configuration object.
+ * @param d
+ * The instantiable relation definition.
+ * @param listener
+ * The server managed object add listener.
+ * @throws IllegalArgumentException
+ * If the instantiable relation definition is not
+ * associated with this managed object's definition.
+ * @throws ConfigException
+ * If the configuration entry associated with the
+ * instantiable relation could not be retrieved.
+ */
+ public <M extends Configuration> void registerAddListener(
+ InstantiableRelationDefinition<?, M> d,
+ ServerManagedObjectAddListener<M> listener)
+ throws IllegalArgumentException, ConfigException {
validateRelationDefinition(d);
DN baseDN = DNBuilder.create(path, d);
ConfigAddListener adaptor = new ConfigAddListenerAdaptor<M>(path, d,
@@ -520,6 +675,33 @@
public <M extends Configuration> void registerAddListener(
OptionalRelationDefinition<?, M> d, ConfigurationAddListener<M> listener)
throws IllegalArgumentException, ConfigException {
+ registerAddListener(d, new ServerManagedObjectAddListenerAdaptor<M>(
+ listener));
+ }
+
+
+
+ /**
+ * Register to be notified when a new child server managed object is
+ * added beneath an optional relation.
+ *
+ * @param <M>
+ * The type of the child server configuration object.
+ * @param d
+ * The optional relation definition.
+ * @param listener
+ * The server managed object add listener.
+ * @throws IllegalArgumentException
+ * If the optional relation definition is not associated
+ * with this managed object's definition.
+ * @throws ConfigException
+ * If the configuration entry associated with the optional
+ * relation could not be retrieved.
+ */
+ public <M extends Configuration> void registerAddListener(
+ OptionalRelationDefinition<?, M> d,
+ ServerManagedObjectAddListener<M> listener)
+ throws IllegalArgumentException, ConfigException {
validateRelationDefinition(d);
DN baseDN = DNBuilder.create(path, d).getParent();
ConfigAddListener adaptor = new ConfigAddListenerAdaptor<M>(path, d,
@@ -538,6 +720,21 @@
*/
public void registerChangeListener(
ConfigurationChangeListener<? super S> listener) {
+ registerChangeListener(new ServerManagedObjectChangeListenerAdaptor<S>(
+ listener));
+ }
+
+
+
+ /**
+ * Register to be notified when this server managed object is
+ * changed.
+ *
+ * @param listener
+ * The server managed object change listener.
+ */
+ public void registerChangeListener(
+ ServerManagedObjectChangeListener<? super S> listener) {
ConfigChangeListener adaptor = new ConfigChangeListenerAdaptor<S>(path,
listener);
configEntry.registerChangeListener(adaptor);
@@ -585,6 +782,33 @@
InstantiableRelationDefinition<?, M> d,
ConfigurationDeleteListener<M> listener) throws IllegalArgumentException,
ConfigException {
+ registerDeleteListener(d, new ServerManagedObjectDeleteListenerAdaptor<M>(
+ listener));
+ }
+
+
+
+ /**
+ * Register to be notified when existing child server managed
+ * objects are deleted beneath an instantiable relation.
+ *
+ * @param <M>
+ * The type of the child server configuration object.
+ * @param d
+ * The instantiable relation definition.
+ * @param listener
+ * The server managed objects delete listener.
+ * @throws IllegalArgumentException
+ * If the instantiable relation definition is not
+ * associated with this managed object's definition.
+ * @throws ConfigException
+ * If the configuration entry associated with the
+ * instantiable relation could not be retrieved.
+ */
+ public <M extends Configuration> void registerDeleteListener(
+ InstantiableRelationDefinition<?, M> d,
+ ServerManagedObjectDeleteListener<M> listener)
+ throws IllegalArgumentException, ConfigException {
validateRelationDefinition(d);
DN baseDN = DNBuilder.create(path, d);
ConfigDeleteListener adaptor = new ConfigDeleteListenerAdaptor<M>(path, d,
@@ -615,6 +839,33 @@
OptionalRelationDefinition<?, M> d,
ConfigurationDeleteListener<M> listener) throws IllegalArgumentException,
ConfigException {
+ registerDeleteListener(d, new ServerManagedObjectDeleteListenerAdaptor<M>(
+ listener));
+ }
+
+
+
+ /**
+ * Register to be notified when an existing child server managed
+ * object is deleted beneath an optional relation.
+ *
+ * @param <M>
+ * The type of the child server configuration object.
+ * @param d
+ * The optional relation definition.
+ * @param listener
+ * The server managed object delete listener.
+ * @throws IllegalArgumentException
+ * If the optional relation definition is not associated
+ * with this managed object's definition.
+ * @throws ConfigException
+ * If the configuration entry associated with the optional
+ * relation could not be retrieved.
+ */
+ public <M extends Configuration> void registerDeleteListener(
+ OptionalRelationDefinition<?, M> d,
+ ServerManagedObjectDeleteListener<M> listener)
+ throws IllegalArgumentException, ConfigException {
validateRelationDefinition(d);
DN baseDN = DNBuilder.create(path, d).getParent();
ConfigDeleteListener adaptor = new ConfigDeleteListenerAdaptor<M>(path, d,
@@ -710,7 +961,39 @@
if (l instanceof ConfigAddListenerAdaptor) {
ConfigAddListenerAdaptor<?> adaptor =
(ConfigAddListenerAdaptor<?>) l;
- if (adaptor.getConfigurationAddListener() == listener) {
+ ServerManagedObjectAddListener<?> l2 = adaptor
+ .getServerManagedObjectAddListener();
+ if (l2 instanceof ServerManagedObjectAddListenerAdaptor<?>) {
+ ServerManagedObjectAddListenerAdaptor<?> adaptor2 =
+ (ServerManagedObjectAddListenerAdaptor<?>) l2;
+ if (adaptor2.getConfigurationAddListener() == listener) {
+ configEntry.deregisterAddListener(adaptor);
+ }
+ }
+ }
+ }
+ }
+ } catch (ConfigException e) {
+ // Ignore the exception since this implies deregistration.
+ if (debugEnabled()) {
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
+ }
+ }
+ }
+
+
+
+ // Deregister an add listener.
+ private <M extends Configuration> void deregisterAddListener(DN baseDN,
+ ServerManagedObjectAddListener<M> listener) {
+ try {
+ ConfigEntry configEntry = getListenerConfigEntry(baseDN);
+ if (configEntry != null) {
+ for (ConfigAddListener l : configEntry.getAddListeners()) {
+ if (l instanceof ConfigAddListenerAdaptor) {
+ ConfigAddListenerAdaptor<?> adaptor =
+ (ConfigAddListenerAdaptor<?>) l;
+ if (adaptor.getServerManagedObjectAddListener() == listener) {
configEntry.deregisterAddListener(adaptor);
}
}
@@ -727,7 +1010,7 @@
// Deregister a delete listener.
- private <M> void deregisterDeleteListener(DN baseDN,
+ private <M extends Configuration> void deregisterDeleteListener(DN baseDN,
ConfigurationDeleteListener<M> listener) {
try {
ConfigEntry configEntry = getListenerConfigEntry(baseDN);
@@ -736,7 +1019,39 @@
if (l instanceof ConfigDeleteListenerAdaptor) {
ConfigDeleteListenerAdaptor<?> adaptor =
(ConfigDeleteListenerAdaptor<?>) l;
- if (adaptor.getConfigurationDeleteListener() == listener) {
+ ServerManagedObjectDeleteListener<?> l2 = adaptor
+ .getServerManagedObjectDeleteListener();
+ if (l2 instanceof ServerManagedObjectDeleteListenerAdaptor<?>) {
+ ServerManagedObjectDeleteListenerAdaptor<?> adaptor2 =
+ (ServerManagedObjectDeleteListenerAdaptor<?>) l2;
+ if (adaptor2.getConfigurationDeleteListener() == listener) {
+ configEntry.deregisterDeleteListener(adaptor);
+ }
+ }
+ }
+ }
+ }
+ } catch (ConfigException e) {
+ // Ignore the exception since this implies deregistration.
+ if (debugEnabled()) {
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
+ }
+ }
+ }
+
+
+
+ // Deregister a delete listener.
+ private <M extends Configuration> void deregisterDeleteListener(DN baseDN,
+ ServerManagedObjectDeleteListener<M> listener) {
+ try {
+ ConfigEntry configEntry = getListenerConfigEntry(baseDN);
+ if (configEntry != null) {
+ for (ConfigDeleteListener l : configEntry.getDeleteListeners()) {
+ if (l instanceof ConfigDeleteListenerAdaptor) {
+ ConfigDeleteListenerAdaptor<?> adaptor =
+ (ConfigDeleteListenerAdaptor<?>) l;
+ if (adaptor.getServerManagedObjectDeleteListener() == listener) {
configEntry.deregisterDeleteListener(adaptor);
}
}
--
Gitblit v1.10.0