From 95df5cfdba474acb03076953e992b898fbb277a8 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Mon, 02 Feb 2009 23:37:54 +0000
Subject: [PATCH] Fix issue 3734 - Make network group policies extensible.

---
 opends/src/server/org/opends/server/admin/client/ldap/LDAPDriver.java |   48 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 47 insertions(+), 1 deletions(-)

diff --git a/opends/src/server/org/opends/server/admin/client/ldap/LDAPDriver.java b/opends/src/server/org/opends/server/admin/client/ldap/LDAPDriver.java
index 5e0f300..c979a74 100644
--- a/opends/src/server/org/opends/server/admin/client/ldap/LDAPDriver.java
+++ b/opends/src/server/org/opends/server/admin/client/ldap/LDAPDriver.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.admin.client.ldap;
 
@@ -69,6 +69,7 @@
 import org.opends.server.admin.PropertyOption;
 import org.opends.server.admin.Reference;
 import org.opends.server.admin.RelationDefinition;
+import org.opends.server.admin.SetRelationDefinition;
 import org.opends.server.admin.UnknownPropertyDefinitionException;
 import org.opends.server.admin.DefinitionDecodingException.Reason;
 import org.opends.server.admin.client.AuthorizationException;
@@ -400,6 +401,51 @@
    * {@inheritDoc}
    */
   @Override
+  public <C extends ConfigurationClient, S extends Configuration>
+  String[] listManagedObjects(
+      ManagedObjectPath<?, ?> parent, SetRelationDefinition<C, S> rd,
+      AbstractManagedObjectDefinition<? extends C, ? extends S> d)
+      throws IllegalArgumentException, ManagedObjectNotFoundException,
+      AuthorizationException, CommunicationException {
+    validateRelationDefinition(parent, rd);
+
+    if (!managedObjectExists(parent)) {
+      throw new ManagedObjectNotFoundException();
+    }
+
+    // Get the search base DN.
+    LdapName dn = LDAPNameBuilder.create(parent, rd, profile);
+
+    // Retrieve only those entries which are sub-types of the
+    // specified definition.
+    StringBuilder builder = new StringBuilder();
+    builder.append("(objectclass=");
+    builder.append(profile.getObjectClass(d));
+    builder.append(')');
+    String filter = builder.toString();
+
+    List<String> children = new ArrayList<String>();
+    try {
+      for (LdapName child : connection.listEntries(dn, filter)) {
+        children.add(child.getRdn(child.size() - 1).getValue().toString());
+      }
+    } catch (NameNotFoundException e) {
+      // Ignore this - it means that the base entry does not exist
+      // (which it might not if this managed object has just been
+      // created.
+    } catch (NamingException e) {
+      adaptNamingException(e);
+    }
+
+    return children.toArray(new String[children.size()]);
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
   public boolean managedObjectExists(ManagedObjectPath<?, ?> path)
       throws ManagedObjectNotFoundException, AuthorizationException,
       CommunicationException {

--
Gitblit v1.10.0