From 8ca638034127ea5c5911ebcd13ff33e742e06784 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 04 Aug 2016 13:23:02 +0000
Subject: [PATCH] Partial OPENDJ-2625 Convert all code that uses JNDI to use the SDK instead

---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java |   83 ++++++++++++++++++++++-------------------
 1 files changed, 45 insertions(+), 38 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
index 3e92d2c..6bde156 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java
@@ -18,6 +18,7 @@
 
 import static org.opends.messages.AdminToolMessages.*;
 import static org.opends.server.util.CollectionUtils.*;
+import static org.opends.server.util.ServerConstants.*;
 
 import java.awt.Container;
 import java.awt.GridBagConstraints;
@@ -55,7 +56,6 @@
 import org.opends.server.types.OpenDsException;
 import org.opends.server.types.Schema;
 import org.opends.server.util.Base64;
-import org.opends.server.util.ServerConstants;
 
 /**
  * Abstract class containing code shared by the different LDAP entry view
@@ -203,8 +203,7 @@
       title.setIcon(null);
     }
 
-    List<Object> ocs =
-      sr.getAttributeValues(ServerConstants.OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
+    List<ByteString> ocs = sr.getAttributeValues(OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
     Schema schema = getInfo().getServerDescriptor().getSchema();
     if (!ocs.isEmpty() && schema != null)
     {
@@ -240,14 +239,13 @@
    * @return an object class value representing all the object class values of
    * the entry.
    */
-  protected ObjectClassValue getObjectClassDescriptor(List<Object> ocValues,
-      Schema schema)
+  protected ObjectClassValue getObjectClassDescriptor(List<ByteString> ocValues, Schema schema)
   {
     ObjectClass structuralObjectClass = null;
     SortedSet<String> auxiliaryClasses = new TreeSet<>();
-    for (Object o : ocValues)
+    for (ByteString oc : ocValues)
     {
-      ObjectClass objectClass = schema.getObjectClass(((String) o));
+      ObjectClass objectClass = schema.getObjectClass(oc.toString());
       if (!objectClass.isPlaceHolder())
       {
         if (objectClass.getObjectClassType() == ObjectClassType.STRUCTURAL)
@@ -357,60 +355,61 @@
       ObjectClassValue ocValue = (ObjectClassValue)value;
       if (ocValue.getStructural() != null)
       {
-        sb.append("\n");
-        sb.append(attrName).append(": ").append(ocValue.getStructural());
+        appendPlain(sb, attrName, ocValue.getStructural());
+
         Schema schema = getInfo().getServerDescriptor().getSchema();
         if (schema != null)
         {
           ObjectClass oc = schema.getObjectClass(ocValue.getStructural());
           if (!oc.isPlaceHolder())
           {
-            Set<String> names = getObjectClassSuperiorValues(oc);
-            for (String name : names)
+            for (String name : getObjectClassSuperiorValues(oc))
             {
-              sb.append("\n");
-              sb.append(attrName).append(": ").append(name);
+              appendPlain(sb, attrName, name);
             }
           }
         }
       }
       for (String v : ocValue.getAuxiliary())
       {
-        sb.append("\n");
-        sb.append(attrName).append(": ").append(v);
+        appendPlain(sb, attrName, v);
+      }
+    }
+    else if (value instanceof ByteString)
+    {
+      ByteString v = (ByteString) value;
+      if (v.length() > 0)
+      {
+        appendBase64(sb, attrName, Base64.encode(v.toByteArray()));
       }
     }
     else if (value instanceof byte[])
     {
       if (((byte[])value).length > 0)
       {
-        sb.append("\n");
-        sb.append(attrName).append(":: ").append(Base64.encode((byte[])value));
+        appendBase64(sb, attrName, Base64.encode((byte[]) value));
       }
     }
     else if (value instanceof BinaryValue)
     {
-      sb.append("\n");
-      sb.append(attrName).append(":: ").append(((BinaryValue)value).getBase64());
+      appendBase64(sb, attrName, ((BinaryValue) value).getBase64());
     }
     else if (String.valueOf(value).trim().length() > 0)
     {
-      sb.append("\n");
-      sb.append(attrName).append(": ").append(value);
+      appendPlain(sb, attrName, value);
     }
   }
 
-  /**
-   * Returns <CODE>true</CODE> if the provided attribute name has binary syntax
-   * and <CODE>false</CODE> otherwise.
-   * @param attrName the attribute name.
-   * @return <CODE>true</CODE> if the provided attribute name has binary syntax
-   * and <CODE>false</CODE> otherwise.
-   */
-  protected boolean isBinary(String attrName)
+  private void appendPlain(StringBuilder sb, String attrName, Object value)
   {
-    Schema schema = getInfo().getServerDescriptor().getSchema();
-    return Utilities.hasBinarySyntax(attrName, schema);
+    sb.append("\n");
+    sb.append(attrName).append(": ").append(value);
+  }
+
+  private void appendBase64(StringBuilder sb, String attrName, String base64Value)
+  {
+    sb.append("\n");
+    sb.append(attrName).append(":: ").append(base64Value);
   }
 
   /**
@@ -443,7 +442,7 @@
   protected void setValues(CustomSearchResult sr, String attrName)
   {
     List<Object> values = getValues(attrName);
-    List<Object> valuesToSet = new ArrayList<>();
+    List<ByteString> valuesToSet = new ArrayList<>();
     for (Object value : values)
     {
       if (value instanceof ObjectClassValue)
@@ -451,28 +450,36 @@
         ObjectClassValue ocValue = (ObjectClassValue)value;
         if (ocValue.getStructural() != null)
         {
-          valuesToSet.add(ocValue.getStructural());
+          valuesToSet.add(ByteString.valueOfUtf8(ocValue.getStructural()));
         }
-        valuesToSet.addAll(ocValue.getAuxiliary());
+        SortedSet<String> auxiliaries = ocValue.getAuxiliary();
+        for (String auxiliary : auxiliaries)
+        {
+          valuesToSet.add(ByteString.valueOfUtf8(auxiliary));
+        }
       }
       else if (value instanceof byte[])
       {
-        valuesToSet.add(value);
+        valuesToSet.add(ByteString.wrap((byte[]) value));
       }
       else if (value instanceof BinaryValue)
       {
         try
         {
-          valuesToSet.add(((BinaryValue)value).getBytes());
+          valuesToSet.add(ByteString.wrap(((BinaryValue) value).getBytes()));
         }
         catch (ParseException pe)
         {
          throw new RuntimeException("Unexpected error: "+pe, pe);
         }
       }
-      else if (String.valueOf(value).trim().length() > 0)
+      else
       {
-        valuesToSet.add(String.valueOf(value));
+        String s = String.valueOf(value);
+        if (s.trim().length() > 0)
+        {
+          valuesToSet.add(ByteString.valueOfUtf8(s));
+        }
       }
     }
     if (!valuesToSet.isEmpty())

--
Gitblit v1.10.0