From 9be9796ea612b8b8892c9304aef737bf2b89be8a Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 17 Mar 2016 08:48:01 +0000
Subject: [PATCH] Converters.java: fixed bad conversion from SDK entry to server Entry

---
 opendj-server-legacy/src/main/java/org/forgerock/opendj/adapter/server3x/Converters.java |   33 ++++++++++++++++++++++-----------
 1 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/forgerock/opendj/adapter/server3x/Converters.java b/opendj-server-legacy/src/main/java/org/forgerock/opendj/adapter/server3x/Converters.java
index 908271d..e6cd414 100644
--- a/opendj-server-legacy/src/main/java/org/forgerock/opendj/adapter/server3x/Converters.java
+++ b/opendj-server-legacy/src/main/java/org/forgerock/opendj/adapter/server3x/Converters.java
@@ -50,6 +50,7 @@
 import org.forgerock.util.Reject;
 import org.opends.server.core.BindOperation;
 import org.opends.server.core.CompareOperation;
+import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ExtendedOperation;
 import org.opends.server.protocols.ldap.LDAPAttribute;
 import org.opends.server.protocols.ldap.LDAPControl;
@@ -58,6 +59,7 @@
 import org.opends.server.types.AttributeBuilder;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.LDAPException;
+import org.opends.server.types.ObjectClass;
 import org.opends.server.types.Operation;
 import org.opends.server.types.SearchFilter;
 import org.opends.server.util.ServerConstants;
@@ -85,7 +87,22 @@
                 new org.opends.server.types.Entry(sdkEntry.getName(), null, null, null);
             List<ByteString> duplicateValues = new ArrayList<>();
             for (org.opends.server.types.Attribute attribute : toAttributes(sdkEntry.getAllAttributes())) {
-                entry.addAttribute(attribute, duplicateValues);
+                if (attribute.getAttributeDescription().getAttributeType().isObjectClass()) {
+                    for (ByteString attrName : attribute) {
+                        try {
+                            final String ocName = attrName.toString();
+                            ObjectClass oc = DirectoryServer.getObjectClass(ocName);
+                            if (oc == null) {
+                                oc = DirectoryServer.getDefaultObjectClass(ocName);
+                            }
+                            entry.addObjectClass(oc);
+                        } catch (DirectoryException e) {
+                            throw new IllegalStateException(e.getMessage(), e);
+                        }
+                    }
+                } else {
+                    entry.addAttribute(attribute, duplicateValues);
+                }
             }
             return entry;
         }
@@ -125,13 +142,11 @@
      * @return the converted value
      */
     public static org.opends.server.types.RawFilter to(final org.forgerock.opendj.ldap.Filter filter) {
-        org.opends.server.protocols.ldap.LDAPFilter ldapFilter = null;
         try {
-            ldapFilter = LDAPFilter.decode(filter.toString());
+            return LDAPFilter.decode(filter.toString());
         } catch (LDAPException e) {
             throw new IllegalStateException(e);
         }
-        return ldapFilter;
     }
 
     /**
@@ -143,13 +158,11 @@
      * @return the converted value
      */
     public static SearchFilter toSearchFilter(final org.forgerock.opendj.ldap.Filter filter) {
-        SearchFilter ldapFilter = null;
         try {
-            ldapFilter = SearchFilter.createFilterFromString(filter.toString());
+            return SearchFilter.createFilterFromString(filter.toString());
         } catch (DirectoryException e) {
             throw new IllegalStateException(e.getMessage(), e);
         }
-        return ldapFilter;
     }
 
     /**
@@ -633,17 +646,15 @@
      */
     public static ByteString getCredentials(final byte[] authenticationValue) {
         final ASN1Reader reader = ASN1.getReader(authenticationValue);
-        ByteString saslCred = ByteString.empty();
         try {
             reader.readOctetStringAsString(); // Reads SASL Mechanism - RFC 4511 4.2
             if (reader.hasNextElement()) {
-                saslCred = reader.readOctetString(); // Reads credentials.
+                return reader.readOctetString().toByteString();
             }
         } catch (IOException e) {
             // Nothing to do.
         }
-
-        return saslCred.toByteString();
+        return ByteString.empty();
     }
 
     /**

--
Gitblit v1.10.0