From e31e221ede36f7e31aa222c21da972ea6fd1b12a Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 14 Oct 2009 11:24:26 +0000
Subject: [PATCH] Fix for issue 4283 (No way to add operational attribute to an entry)

---
 opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/util/LDAPEntryReader.java |   45 ++++++---------------------------------------
 1 files changed, 6 insertions(+), 39 deletions(-)

diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/util/LDAPEntryReader.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/util/LDAPEntryReader.java
index 18df400..6e8ffc8 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/util/LDAPEntryReader.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/controlpanel/util/LDAPEntryReader.java
@@ -22,13 +22,12 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 
 package org.opends.guitools.controlpanel.util;
 
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Set;
 
 import javax.naming.NamingEnumeration;
@@ -40,8 +39,6 @@
 import org.opends.guitools.controlpanel.event.EntryReadErrorEvent;
 import org.opends.guitools.controlpanel.event.EntryReadEvent;
 import org.opends.guitools.controlpanel.event.EntryReadListener;
-import org.opends.server.types.AttributeType;
-import org.opends.server.types.Schema;
 
 /**
  * A class that reads an entry on the background.  This is used in the LDAP
@@ -53,7 +50,6 @@
 {
   private String dn;
   private InitialLdapContext ctx;
-  private Schema schema;
   private Set<EntryReadListener> listeners = new HashSet<EntryReadListener>();
   private boolean isOver;
 
@@ -61,13 +57,11 @@
    * Constructor of the entry reader.
    * @param dn the DN of the entry.
    * @param ctx the connection to the server.
-   * @param schema the schema of the server.
    */
-  public LDAPEntryReader(String dn, InitialLdapContext ctx, Schema schema)
+  public LDAPEntryReader(String dn, InitialLdapContext ctx)
   {
     this.dn = dn;
     this.ctx = ctx;
-    this.schema = schema;
   }
 
   /**
@@ -80,25 +74,16 @@
     {
       SearchControls controls = new SearchControls();
       controls.setCountLimit(1);
-      Set<String> operational = getAllOperationalAttributes();
 
-      String[] attrs = new String[operational.size()+1];
-      Iterator<String> it = operational.iterator();
-      int i = 0;
-      while (it.hasNext())
-      {
-        attrs[i] = it.next();
-        i++;
-      }
-      attrs[attrs.length - 1] = "*";
+      String[] attrs = {"*", "+"};
       controls.setReturningAttributes(attrs);
       controls.setSearchScope(SearchControls.OBJECT_SCOPE);
       final String filter = "(|(objectclass=*)(objectclass=ldapsubentry))";
 
-      NamingEnumeration en = ctx.search(Utilities.getJNDIName(dn), filter,
-          controls);
+      NamingEnumeration<SearchResult> en =
+        ctx.search(Utilities.getJNDIName(dn), filter, controls);
 
-      SearchResult sr = (SearchResult)en.next();
+      SearchResult sr = en.next();
 
       return new CustomSearchResult(sr, dn);
     }
@@ -185,22 +170,4 @@
   {
     listeners.remove(listener);
   }
-
-  private Set<String> getAllOperationalAttributes()
-  {
-    HashSet<String> attrs = new HashSet<String>();
-    // Do a best effort if schema could not be retrieved when creating
-    // this object.
-    if (schema != null)
-    {
-      for (AttributeType attr : schema.getAttributeTypes().values())
-      {
-        if (attr.isOperational())
-        {
-          attrs.add(attr.getNameOrOID());
-        }
-      }
-    }
-    return attrs;
-  }
 }

--
Gitblit v1.10.0