From 19f32e8b95817bcc2ef0a73bbcb4be16e101c989 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Mon, 02 Dec 2013 11:07:17 +0000
Subject: [PATCH] OpenDJ 3 : config framework

---
 opendj-admin/src/main/java/org/opends/server/admin/client/ManagementContext.java |  846 +++++++++++++++++++++++++------------------------------
 1 files changed, 387 insertions(+), 459 deletions(-)

diff --git a/opendj-admin/src/main/java/org/opends/server/admin/client/ManagementContext.java b/opendj-admin/src/main/java/org/opends/server/admin/client/ManagementContext.java
index 0a1d047..b3517d9 100644
--- a/opendj-admin/src/main/java/org/opends/server/admin/client/ManagementContext.java
+++ b/opendj-admin/src/main/java/org/opends/server/admin/client/ManagementContext.java
@@ -27,11 +27,10 @@
 
 package org.opends.server.admin.client;
 
-
-
 import java.util.Set;
 import java.util.SortedSet;
 
+import org.forgerock.opendj.admin.client.RootCfgClient;
 import org.opends.server.admin.AbstractManagedObjectDefinition;
 import org.opends.server.admin.Configuration;
 import org.opends.server.admin.ConfigurationClient;
@@ -44,485 +43,414 @@
 import org.opends.server.admin.PropertyException;
 import org.opends.server.admin.SetRelationDefinition;
 import org.opends.server.admin.client.spi.Driver;
-import org.opends.server.admin.std.client.RootCfgClient;
-
-
 
 /**
  * Client management connection context.
  */
 public abstract class ManagementContext {
 
-  /**
-   * Creates a new management context.
-   */
-  protected ManagementContext() {
-    // No implementation required.
-  }
-
-
-
-  /**
-   * Deletes the named instantiable child managed object from the
-   * named parent managed object.
-   *
-   * @param <C>
-   *          The type of client managed object configuration that the
-   *          relation definition refers to.
-   * @param <S>
-   *          The type of server managed object configuration that the
-   *          relation definition refers to.
-   * @param parent
-   *          The path of the parent managed object.
-   * @param rd
-   *          The instantiable relation definition.
-   * @param name
-   *          The name of the child managed object to be removed.
-   * @return Returns <code>true</code> if the named instantiable
-   *         child managed object was found, or <code>false</code>
-   *         if it was not found.
-   * @throws IllegalArgumentException
-   *           If the relation definition is not associated with the
-   *           parent managed object's definition.
-   * @throws ManagedObjectNotFoundException
-   *           If the parent managed object could not be found.
-   * @throws OperationRejectedException
-   *           If the managed object cannot be removed due to some
-   *           client-side or server-side constraint which cannot be
-   *           satisfied (for example, if it is referenced by another
-   *           managed object).
-   * @throws AuthorizationException
-   *           If the server refuses to remove the managed objects
-   *           because the client does not have the correct
-   *           privileges.
-   * @throws CommunicationException
-   *           If the client cannot contact the server due to an
-   *           underlying communication problem.
-   */
-  public final <C extends ConfigurationClient, S extends Configuration>
-  boolean deleteManagedObject(
-      ManagedObjectPath<?, ?> parent, InstantiableRelationDefinition<C, S> rd,
-      String name) throws IllegalArgumentException,
-      ManagedObjectNotFoundException, OperationRejectedException,
-      AuthorizationException, CommunicationException {
-    return getDriver().deleteManagedObject(parent, rd, name);
-  }
-
-
-
-  /**
-   * Deletes the optional child managed object from the named parent
-   * managed object.
-   *
-   * @param <C>
-   *          The type of client managed object configuration that the
-   *          relation definition refers to.
-   * @param <S>
-   *          The type of server managed object configuration that the
-   *          relation definition refers to.
-   * @param parent
-   *          The path of the parent managed object.
-   * @param rd
-   *          The optional relation definition.
-   * @return Returns <code>true</code> if the optional child managed
-   *         object was found, or <code>false</code> if it was not
-   *         found.
-   * @throws IllegalArgumentException
-   *           If the relation definition is not associated with the
-   *           parent managed object's definition.
-   * @throws ManagedObjectNotFoundException
-   *           If the parent managed object could not be found.
-   * @throws OperationRejectedException
-   *           If the managed object cannot be removed due to some
-   *           client-side or server-side constraint which cannot be
-   *           satisfied (for example, if it is referenced by another
-   *           managed object).
-   * @throws AuthorizationException
-   *           If the server refuses to remove the managed objects
-   *           because the client does not have the correct
-   *           privileges.
-   * @throws CommunicationException
-   *           If the client cannot contact the server due to an
-   *           underlying communication problem.
-   */
-  public final <C extends ConfigurationClient, S extends Configuration>
-  boolean deleteManagedObject(
-      ManagedObjectPath<?, ?> parent, OptionalRelationDefinition<C, S> rd)
-      throws IllegalArgumentException, ManagedObjectNotFoundException,
-      OperationRejectedException, AuthorizationException,
-      CommunicationException {
-    return getDriver().deleteManagedObject(parent, rd);
-  }
-
-
-
-  /**
-   * Deletes s set child managed object from the
-   * named parent managed object.
-   *
-   * @param <C>
-   *          The type of client managed object configuration that the
-   *          relation definition refers to.
-   * @param <S>
-   *          The type of server managed object configuration that the
-   *          relation definition refers to.
-   * @param parent
-   *          The path of the parent managed object.
-   * @param rd
-   *          The set relation definition.
-   * @param name
-   *          The name of the child managed object to be removed.
-   * @return Returns <code>true</code> if the set
-   *         child managed object was found, or <code>false</code>
-   *         if it was not found.
-   * @throws IllegalArgumentException
-   *           If the relation definition is not associated with the
-   *           parent managed object's definition.
-   * @throws ManagedObjectNotFoundException
-   *           If the parent managed object could not be found.
-   * @throws OperationRejectedException
-   *           If the managed object cannot be removed due to some
-   *           client-side or server-side constraint which cannot be
-   *           satisfied (for example, if it is referenced by another
-   *           managed object).
-   * @throws AuthorizationException
-   *           If the server refuses to remove the managed objects
-   *           because the client does not have the correct
-   *           privileges.
-   * @throws CommunicationException
-   *           If the client cannot contact the server due to an
-   *           underlying communication problem.
-   */
-  public final <C extends ConfigurationClient, S extends Configuration>
-  boolean deleteManagedObject(
-      ManagedObjectPath<?, ?> parent, SetRelationDefinition<C, S> rd,
-      String name) throws IllegalArgumentException,
-      ManagedObjectNotFoundException, OperationRejectedException,
-      AuthorizationException, CommunicationException {
-    return getDriver().deleteManagedObject(parent, rd, name);
-  }
-
-
-
-  /**
-   * Gets the named managed object.
-   *
-   * @param <C>
-   *          The type of client managed object configuration that the
-   *          path definition refers to.
-   * @param <S>
-   *          The type of server managed object configuration that the
-   *          path definition refers to.
-   * @param path
-   *          The path of the managed object.
-   * @return Returns the named managed object.
-   * @throws DefinitionDecodingException
-   *           If the managed object was found but its type could not
-   *           be determined.
-   * @throws ManagedObjectDecodingException
-   *           If the managed object was found but one or more of its
-   *           properties could not be decoded.
-   * @throws ManagedObjectNotFoundException
-   *           If the requested managed object could not be found on
-   *           the server.
-   * @throws AuthorizationException
-   *           If the server refuses to retrieve the managed object
-   *           because the client does not have the correct
-   *           privileges.
-   * @throws CommunicationException
-   *           If the client cannot contact the server due to an
-   *           underlying communication problem.
-   */
-  @SuppressWarnings("unchecked")
-  public final <C extends ConfigurationClient, S extends Configuration>
-  ManagedObject<? extends C> getManagedObject(
-      ManagedObjectPath<C, S> path) throws DefinitionDecodingException,
-      ManagedObjectDecodingException, ManagedObjectNotFoundException,
-      AuthorizationException, CommunicationException {
-    // Be careful to handle the root configuration.
-    if (path.isEmpty()) {
-      return (ManagedObject<C>) getRootConfigurationManagedObject();
+    /**
+     * Creates a new management context.
+     */
+    protected ManagementContext() {
+        // No implementation required.
     }
 
-    return getDriver().getManagedObject(path);
-  }
-
-
-
-  /**
-   * Gets the effective value of a property in the named managed
-   * object.
-   *
-   * @param <PD>
-   *          The type of the property to be retrieved.
-   * @param path
-   *          The path of the managed object containing the property.
-   * @param pd
-   *          The property to be retrieved.
-   * @return Returns the property's effective value, or
-   *         <code>null</code> if there are no values defined.
-   * @throws IllegalArgumentException
-   *           If the property definition is not associated with the
-   *           referenced managed object's definition.
-   * @throws DefinitionDecodingException
-   *           If the managed object was found but its type could not
-   *           be determined.
-   * @throws PropertyException
-   *           If the managed object was found but the requested
-   *           property could not be decoded.
-   * @throws ManagedObjectNotFoundException
-   *           If the requested managed object could not be found on
-   *           the server.
-   * @throws AuthorizationException
-   *           If the server refuses to retrieve the managed object
-   *           because the client does not have the correct
-   *           privileges.
-   * @throws CommunicationException
-   *           If the client cannot contact the server due to an
-   *           underlying communication problem.
-   */
-  public final <PD> PD getPropertyValue(ManagedObjectPath<?, ?> path,
-      PropertyDefinition<PD> pd) throws IllegalArgumentException,
-      DefinitionDecodingException, AuthorizationException,
-      ManagedObjectNotFoundException, CommunicationException,
-      PropertyException {
-    Set<PD> values = getPropertyValues(path, pd);
-    if (values.isEmpty()) {
-      return null;
-    } else {
-      return values.iterator().next();
+    /**
+     * Deletes the named instantiable child managed object from the named parent
+     * managed object.
+     *
+     * @param <C>
+     *            The type of client managed object configuration that the
+     *            relation definition refers to.
+     * @param <S>
+     *            The type of server managed object configuration that the
+     *            relation definition refers to.
+     * @param parent
+     *            The path of the parent managed object.
+     * @param rd
+     *            The instantiable relation definition.
+     * @param name
+     *            The name of the child managed object to be removed.
+     * @return Returns <code>true</code> if the named instantiable child managed
+     *         object was found, or <code>false</code> if it was not found.
+     * @throws IllegalArgumentException
+     *             If the relation definition is not associated with the parent
+     *             managed object's definition.
+     * @throws ManagedObjectNotFoundException
+     *             If the parent managed object could not be found.
+     * @throws OperationRejectedException
+     *             If the managed object cannot be removed due to some
+     *             client-side or server-side constraint which cannot be
+     *             satisfied (for example, if it is referenced by another
+     *             managed object).
+     * @throws AuthorizationException
+     *             If the server refuses to remove the managed objects because
+     *             the client does not have the correct privileges.
+     * @throws CommunicationException
+     *             If the client cannot contact the server due to an underlying
+     *             communication problem.
+     */
+    public final <C extends ConfigurationClient, S extends Configuration> boolean deleteManagedObject(
+            ManagedObjectPath<?, ?> parent, InstantiableRelationDefinition<C, S> rd, String name)
+            throws IllegalArgumentException, ManagedObjectNotFoundException, OperationRejectedException,
+            AuthorizationException, CommunicationException {
+        return getDriver().deleteManagedObject(parent, rd, name);
     }
-  }
 
+    /**
+     * Deletes the optional child managed object from the named parent managed
+     * object.
+     *
+     * @param <C>
+     *            The type of client managed object configuration that the
+     *            relation definition refers to.
+     * @param <S>
+     *            The type of server managed object configuration that the
+     *            relation definition refers to.
+     * @param parent
+     *            The path of the parent managed object.
+     * @param rd
+     *            The optional relation definition.
+     * @return Returns <code>true</code> if the optional child managed object
+     *         was found, or <code>false</code> if it was not found.
+     * @throws IllegalArgumentException
+     *             If the relation definition is not associated with the parent
+     *             managed object's definition.
+     * @throws ManagedObjectNotFoundException
+     *             If the parent managed object could not be found.
+     * @throws OperationRejectedException
+     *             If the managed object cannot be removed due to some
+     *             client-side or server-side constraint which cannot be
+     *             satisfied (for example, if it is referenced by another
+     *             managed object).
+     * @throws AuthorizationException
+     *             If the server refuses to remove the managed objects because
+     *             the client does not have the correct privileges.
+     * @throws CommunicationException
+     *             If the client cannot contact the server due to an underlying
+     *             communication problem.
+     */
+    public final <C extends ConfigurationClient, S extends Configuration> boolean deleteManagedObject(
+            ManagedObjectPath<?, ?> parent, OptionalRelationDefinition<C, S> rd) throws IllegalArgumentException,
+            ManagedObjectNotFoundException, OperationRejectedException, AuthorizationException, CommunicationException {
+        return getDriver().deleteManagedObject(parent, rd);
+    }
 
+    /**
+     * Deletes s set child managed object from the named parent managed object.
+     *
+     * @param <C>
+     *            The type of client managed object configuration that the
+     *            relation definition refers to.
+     * @param <S>
+     *            The type of server managed object configuration that the
+     *            relation definition refers to.
+     * @param parent
+     *            The path of the parent managed object.
+     * @param rd
+     *            The set relation definition.
+     * @param name
+     *            The name of the child managed object to be removed.
+     * @return Returns <code>true</code> if the set child managed object was
+     *         found, or <code>false</code> if it was not found.
+     * @throws IllegalArgumentException
+     *             If the relation definition is not associated with the parent
+     *             managed object's definition.
+     * @throws ManagedObjectNotFoundException
+     *             If the parent managed object could not be found.
+     * @throws OperationRejectedException
+     *             If the managed object cannot be removed due to some
+     *             client-side or server-side constraint which cannot be
+     *             satisfied (for example, if it is referenced by another
+     *             managed object).
+     * @throws AuthorizationException
+     *             If the server refuses to remove the managed objects because
+     *             the client does not have the correct privileges.
+     * @throws CommunicationException
+     *             If the client cannot contact the server due to an underlying
+     *             communication problem.
+     */
+    public final <C extends ConfigurationClient, S extends Configuration> boolean deleteManagedObject(
+            ManagedObjectPath<?, ?> parent, SetRelationDefinition<C, S> rd, String name)
+            throws IllegalArgumentException, ManagedObjectNotFoundException, OperationRejectedException,
+            AuthorizationException, CommunicationException {
+        return getDriver().deleteManagedObject(parent, rd, name);
+    }
 
-  /**
-   * Gets the effective values of a property in the named managed
-   * object.
-   *
-   * @param <PD>
-   *          The type of the property to be retrieved.
-   * @param path
-   *          The path of the managed object containing the property.
-   * @param pd
-   *          The property to be retrieved.
-   * @return Returns the property's effective values, or an empty set
-   *         if there are no values defined.
-   * @throws IllegalArgumentException
-   *           If the property definition is not associated with the
-   *           referenced managed object's definition.
-   * @throws DefinitionDecodingException
-   *           If the managed object was found but its type could not
-   *           be determined.
-   * @throws PropertyException
-   *           If the managed object was found but the requested
-   *           property could not be decoded.
-   * @throws ManagedObjectNotFoundException
-   *           If the requested managed object could not be found on
-   *           the server.
-   * @throws AuthorizationException
-   *           If the server refuses to retrieve the managed object
-   *           because the client does not have the correct
-   *           privileges.
-   * @throws CommunicationException
-   *           If the client cannot contact the server due to an
-   *           underlying communication problem.
-   */
-  public final <PD> SortedSet<PD> getPropertyValues(
-      ManagedObjectPath<?, ?> path, PropertyDefinition<PD> pd)
-      throws IllegalArgumentException, DefinitionDecodingException,
-      AuthorizationException, ManagedObjectNotFoundException,
-      CommunicationException, PropertyException {
-    return getDriver().getPropertyValues(path, pd);
-  }
+    /**
+     * Gets the named managed object.
+     *
+     * @param <C>
+     *            The type of client managed object configuration that the path
+     *            definition refers to.
+     * @param <S>
+     *            The type of server managed object configuration that the path
+     *            definition refers to.
+     * @param path
+     *            The path of the managed object.
+     * @return Returns the named managed object.
+     * @throws DefinitionDecodingException
+     *             If the managed object was found but its type could not be
+     *             determined.
+     * @throws ManagedObjectDecodingException
+     *             If the managed object was found but one or more of its
+     *             properties could not be decoded.
+     * @throws ManagedObjectNotFoundException
+     *             If the requested managed object could not be found on the
+     *             server.
+     * @throws AuthorizationException
+     *             If the server refuses to retrieve the managed object because
+     *             the client does not have the correct privileges.
+     * @throws CommunicationException
+     *             If the client cannot contact the server due to an underlying
+     *             communication problem.
+     */
+    @SuppressWarnings("unchecked")
+    public final <C extends ConfigurationClient, S extends Configuration> ManagedObject<? extends C> getManagedObject(
+            ManagedObjectPath<C, S> path) throws DefinitionDecodingException, ManagedObjectDecodingException,
+            ManagedObjectNotFoundException, AuthorizationException, CommunicationException {
+        // Be careful to handle the root configuration.
+        if (path.isEmpty()) {
+            return (ManagedObject<C>) getRootConfigurationManagedObject();
+        }
 
+        return getDriver().getManagedObject(path);
+    }
 
+    /**
+     * Gets the effective value of a property in the named managed object.
+     *
+     * @param <PD>
+     *            The type of the property to be retrieved.
+     * @param path
+     *            The path of the managed object containing the property.
+     * @param pd
+     *            The property to be retrieved.
+     * @return Returns the property's effective value, or <code>null</code> if
+     *         there are no values defined.
+     * @throws IllegalArgumentException
+     *             If the property definition is not associated with the
+     *             referenced managed object's definition.
+     * @throws DefinitionDecodingException
+     *             If the managed object was found but its type could not be
+     *             determined.
+     * @throws PropertyException
+     *             If the managed object was found but the requested property
+     *             could not be decoded.
+     * @throws ManagedObjectNotFoundException
+     *             If the requested managed object could not be found on the
+     *             server.
+     * @throws AuthorizationException
+     *             If the server refuses to retrieve the managed object because
+     *             the client does not have the correct privileges.
+     * @throws CommunicationException
+     *             If the client cannot contact the server due to an underlying
+     *             communication problem.
+     */
+    public final <PD> PD getPropertyValue(ManagedObjectPath<?, ?> path, PropertyDefinition<PD> pd)
+            throws IllegalArgumentException, DefinitionDecodingException, AuthorizationException,
+            ManagedObjectNotFoundException, CommunicationException, PropertyException {
+        Set<PD> values = getPropertyValues(path, pd);
+        if (values.isEmpty()) {
+            return null;
+        } else {
+            return values.iterator().next();
+        }
+    }
 
-  /**
-   * Gets the root configuration client associated with this
-   * management context.
-   *
-   * @return Returns the root configuration client associated with
-   *         this management context.
-   */
-  public final RootCfgClient getRootConfiguration() {
-    return getRootConfigurationManagedObject().getConfiguration();
-  }
+    /**
+     * Gets the effective values of a property in the named managed object.
+     *
+     * @param <PD>
+     *            The type of the property to be retrieved.
+     * @param path
+     *            The path of the managed object containing the property.
+     * @param pd
+     *            The property to be retrieved.
+     * @return Returns the property's effective values, or an empty set if there
+     *         are no values defined.
+     * @throws IllegalArgumentException
+     *             If the property definition is not associated with the
+     *             referenced managed object's definition.
+     * @throws DefinitionDecodingException
+     *             If the managed object was found but its type could not be
+     *             determined.
+     * @throws PropertyException
+     *             If the managed object was found but the requested property
+     *             could not be decoded.
+     * @throws ManagedObjectNotFoundException
+     *             If the requested managed object could not be found on the
+     *             server.
+     * @throws AuthorizationException
+     *             If the server refuses to retrieve the managed object because
+     *             the client does not have the correct privileges.
+     * @throws CommunicationException
+     *             If the client cannot contact the server due to an underlying
+     *             communication problem.
+     */
+    public final <PD> SortedSet<PD> getPropertyValues(ManagedObjectPath<?, ?> path, PropertyDefinition<PD> pd)
+            throws IllegalArgumentException, DefinitionDecodingException, AuthorizationException,
+            ManagedObjectNotFoundException, CommunicationException, PropertyException {
+        return getDriver().getPropertyValues(path, pd);
+    }
 
+    /**
+     * Gets the root configuration client associated with this management
+     * context.
+     *
+     * @return Returns the root configuration client associated with this
+     *         management context.
+     */
+    public final RootCfgClient getRootConfiguration() {
+        return getRootConfigurationManagedObject().getConfiguration();
+    }
 
+    /**
+     * Gets the root configuration managed object associated with this
+     * management context.
+     *
+     * @return Returns the root configuration managed object associated with
+     *         this management context.
+     */
+    public final ManagedObject<RootCfgClient> getRootConfigurationManagedObject() {
+        return getDriver().getRootConfigurationManagedObject();
+    }
 
-  /**
-   * Gets the root configuration managed object associated with this
-   * management context.
-   *
-   * @return Returns the root configuration managed object associated
-   *         with this management context.
-   */
-  public final
-  ManagedObject<RootCfgClient> getRootConfigurationManagedObject() {
-    return getDriver().getRootConfigurationManagedObject();
-  }
+    /**
+     * Lists the child managed objects of the named parent managed object.
+     *
+     * @param <C>
+     *            The type of client managed object configuration that the
+     *            relation definition refers to.
+     * @param <S>
+     *            The type of server managed object configuration that the
+     *            relation definition refers to.
+     * @param parent
+     *            The path of the parent managed object.
+     * @param rd
+     *            The instantiable relation definition.
+     * @return Returns the names of the child managed objects.
+     * @throws IllegalArgumentException
+     *             If the relation definition is not associated with the parent
+     *             managed object's definition.
+     * @throws ManagedObjectNotFoundException
+     *             If the parent managed object could not be found.
+     * @throws AuthorizationException
+     *             If the server refuses to list the managed objects because the
+     *             client does not have the correct privileges.
+     * @throws CommunicationException
+     *             If the client cannot contact the server due to an underlying
+     *             communication problem.
+     */
+    public final <C extends ConfigurationClient, S extends Configuration> String[] listManagedObjects(
+            ManagedObjectPath<?, ?> parent, InstantiableRelationDefinition<C, S> rd) throws IllegalArgumentException,
+            ManagedObjectNotFoundException, AuthorizationException, CommunicationException {
+        return listManagedObjects(parent, rd, rd.getChildDefinition());
+    }
 
+    /**
+     * Lists the child managed objects of the named parent managed object which
+     * are a sub-type of the specified managed object definition.
+     *
+     * @param <C>
+     *            The type of client managed object configuration that the
+     *            relation definition refers to.
+     * @param <S>
+     *            The type of server managed object configuration that the
+     *            relation definition refers to.
+     * @param parent
+     *            The path of the parent managed object.
+     * @param rd
+     *            The instantiable relation definition.
+     * @param d
+     *            The managed object definition.
+     * @return Returns the names of the child managed objects which are a
+     *         sub-type of the specified managed object definition.
+     * @throws IllegalArgumentException
+     *             If the relation definition is not associated with the parent
+     *             managed object's definition.
+     * @throws ManagedObjectNotFoundException
+     *             If the parent managed object could not be found.
+     * @throws AuthorizationException
+     *             If the server refuses to list the managed objects because the
+     *             client does not have the correct privileges.
+     * @throws CommunicationException
+     *             If the client cannot contact the server due to an underlying
+     *             communication problem.
+     */
+    public final <C extends ConfigurationClient, S extends Configuration> String[] listManagedObjects(
+            ManagedObjectPath<?, ?> parent, InstantiableRelationDefinition<C, S> rd,
+            AbstractManagedObjectDefinition<? extends C, ? extends S> d) throws IllegalArgumentException,
+            ManagedObjectNotFoundException, AuthorizationException, CommunicationException {
+        return getDriver().listManagedObjects(parent, rd, d);
+    }
 
+    /**
+     * Lists the child managed objects of the named parent managed object.
+     *
+     * @param <C>
+     *            The type of client managed object configuration that the
+     *            relation definition refers to.
+     * @param <S>
+     *            The type of server managed object configuration that the
+     *            relation definition refers to.
+     * @param parent
+     *            The path of the parent managed object.
+     * @param rd
+     *            The set relation definition.
+     * @return Returns the names of the child managed objects.
+     * @throws IllegalArgumentException
+     *             If the relation definition is not associated with the parent
+     *             managed object's definition.
+     * @throws ManagedObjectNotFoundException
+     *             If the parent managed object could not be found.
+     * @throws AuthorizationException
+     *             If the server refuses to list the managed objects because the
+     *             client does not have the correct privileges.
+     * @throws CommunicationException
+     *             If the client cannot contact the server due to an underlying
+     *             communication problem.
+     */
+    public final <C extends ConfigurationClient, S extends Configuration> String[] listManagedObjects(
+            ManagedObjectPath<?, ?> parent, SetRelationDefinition<C, S> rd) throws IllegalArgumentException,
+            ManagedObjectNotFoundException, AuthorizationException, CommunicationException {
+        return getDriver().listManagedObjects(parent, rd, rd.getChildDefinition());
+    }
 
-  /**
-   * Lists the child managed objects of the named parent managed
-   * object.
-   *
-   * @param <C>
-   *          The type of client managed object configuration that the
-   *          relation definition refers to.
-   * @param <S>
-   *          The type of server managed object configuration that the
-   *          relation definition refers to.
-   * @param parent
-   *          The path of the parent managed object.
-   * @param rd
-   *          The instantiable relation definition.
-   * @return Returns the names of the child managed objects.
-   * @throws IllegalArgumentException
-   *           If the relation definition is not associated with the
-   *           parent managed object's definition.
-   * @throws ManagedObjectNotFoundException
-   *           If the parent managed object could not be found.
-   * @throws AuthorizationException
-   *           If the server refuses to list the managed objects
-   *           because the client does not have the correct
-   *           privileges.
-   * @throws CommunicationException
-   *           If the client cannot contact the server due to an
-   *           underlying communication problem.
-   */
-  public final <C extends ConfigurationClient, S extends Configuration>
-  String[] listManagedObjects(
-      ManagedObjectPath<?, ?> parent, InstantiableRelationDefinition<C, S> rd)
-      throws IllegalArgumentException, ManagedObjectNotFoundException,
-      AuthorizationException, CommunicationException {
-    return listManagedObjects(parent, rd, rd.getChildDefinition());
-  }
+    /**
+     * Determines whether or not the named managed object exists.
+     *
+     * @param path
+     *            The path of the named managed object.
+     * @return Returns <code>true</code> if the named managed object exists,
+     *         <code>false</code> otherwise.
+     * @throws ManagedObjectNotFoundException
+     *             If the parent managed object could not be found.
+     * @throws AuthorizationException
+     *             If the server refuses to make the determination because the
+     *             client does not have the correct privileges.
+     * @throws CommunicationException
+     *             If the client cannot contact the server due to an underlying
+     *             communication problem.
+     */
+    public final boolean managedObjectExists(ManagedObjectPath<?, ?> path) throws ManagedObjectNotFoundException,
+            AuthorizationException, CommunicationException {
+        return getDriver().managedObjectExists(path);
+    }
 
+    /**
+     * Gets the driver associated with this management context.
+     *
+     * @return Returns the driver associated with this management context.
+     */
+    protected abstract Driver getDriver();
 
-
-  /**
-   * Lists the child managed objects of the named parent managed
-   * object which are a sub-type of the specified managed object
-   * definition.
-   *
-   * @param <C>
-   *          The type of client managed object configuration that the
-   *          relation definition refers to.
-   * @param <S>
-   *          The type of server managed object configuration that the
-   *          relation definition refers to.
-   * @param parent
-   *          The path of the parent managed object.
-   * @param rd
-   *          The instantiable relation definition.
-   * @param d
-   *          The managed object definition.
-   * @return Returns the names of the child managed objects which are
-   *         a sub-type of the specified managed object definition.
-   * @throws IllegalArgumentException
-   *           If the relation definition is not associated with the
-   *           parent managed object's definition.
-   * @throws ManagedObjectNotFoundException
-   *           If the parent managed object could not be found.
-   * @throws AuthorizationException
-   *           If the server refuses to list the managed objects
-   *           because the client does not have the correct
-   *           privileges.
-   * @throws CommunicationException
-   *           If the client cannot contact the server due to an
-   *           underlying communication problem.
-   */
-  public final <C extends ConfigurationClient, S extends Configuration>
-  String[] listManagedObjects(
-      ManagedObjectPath<?, ?> parent, InstantiableRelationDefinition<C, S> rd,
-      AbstractManagedObjectDefinition<? extends C, ? extends S> d)
-      throws IllegalArgumentException, ManagedObjectNotFoundException,
-      AuthorizationException, CommunicationException {
-    return getDriver().listManagedObjects(parent, rd, d);
-  }
-
-
-
-  /**
-   * Lists the child managed objects of the named parent managed
-   * object.
-   *
-   * @param <C>
-   *          The type of client managed object configuration that the
-   *          relation definition refers to.
-   * @param <S>
-   *          The type of server managed object configuration that the
-   *          relation definition refers to.
-   * @param parent
-   *          The path of the parent managed object.
-   * @param rd
-   *          The set relation definition.
-   * @return Returns the names of the child managed objects.
-   * @throws IllegalArgumentException
-   *           If the relation definition is not associated with the
-   *           parent managed object's definition.
-   * @throws ManagedObjectNotFoundException
-   *           If the parent managed object could not be found.
-   * @throws AuthorizationException
-   *           If the server refuses to list the managed objects
-   *           because the client does not have the correct
-   *           privileges.
-   * @throws CommunicationException
-   *           If the client cannot contact the server due to an
-   *           underlying communication problem.
-   */
-  public final <C extends ConfigurationClient, S extends Configuration>
-  String[] listManagedObjects(
-      ManagedObjectPath<?, ?> parent, SetRelationDefinition<C, S> rd)
-      throws IllegalArgumentException, ManagedObjectNotFoundException,
-      AuthorizationException, CommunicationException {
-    return getDriver().listManagedObjects(parent, rd, rd.getChildDefinition());
-  }
-
-
-
-  /**
-   * Determines whether or not the named managed object exists.
-   *
-   * @param path
-   *          The path of the named managed object.
-   * @return Returns <code>true</code> if the named managed object
-   *         exists, <code>false</code> otherwise.
-   * @throws ManagedObjectNotFoundException
-   *           If the parent managed object could not be found.
-   * @throws AuthorizationException
-   *           If the server refuses to make the determination because
-   *           the client does not have the correct privileges.
-   * @throws CommunicationException
-   *           If the client cannot contact the server due to an
-   *           underlying communication problem.
-   */
-  public final boolean managedObjectExists(ManagedObjectPath<?, ?> path)
-      throws ManagedObjectNotFoundException, AuthorizationException,
-      CommunicationException {
-    return getDriver().managedObjectExists(path);
-  }
-
-
-
-  /**
-   * Gets the driver associated with this management context.
-   *
-   * @return Returns the driver associated with this management
-   *         context.
-   */
-  protected abstract Driver getDriver();
-
-
-
-  /**
-   * Closes this management context.
-   */
-  public final void close() {
-    this.getDriver().close();
-  }
+    /**
+     * Closes this management context.
+     */
+    public final void close() {
+        this.getDriver().close();
+    }
 
 }

--
Gitblit v1.10.0