From 56159257192f85039e301f0e445e156576bd05be Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Sat, 06 Aug 2016 10:25:44 +0000
Subject: [PATCH] control-panel: Replace server's Entry by SDK's Entry

---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyEntryTask.java        |   31 +++++++--------
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDAPEntryPanel.java           |    9 ++--
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/event/LDAPEntryChangedEvent.java |    8 +--
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java |   13 +++---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDIFViewEntryPanel.java       |   11 ++---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java      |   13 +++---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/ViewEntryPanel.java           |   12 +++---
 7 files changed, 45 insertions(+), 52 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/event/LDAPEntryChangedEvent.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/event/LDAPEntryChangedEvent.java
index 343b0a3..48b53b6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/event/LDAPEntryChangedEvent.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/event/LDAPEntryChangedEvent.java
@@ -12,16 +12,14 @@
  * information: "Portions Copyright [year] [name of copyright owner]".
  *
  * Copyright 2008 Sun Microsystems, Inc.
+ * Portions Copyright 2016 ForgeRock AS.
  */
-
 package org.opends.guitools.controlpanel.event;
 
-import org.opends.server.types.Entry;
+import org.forgerock.opendj.ldap.Entry;
 
 /**
- * Method that describes that an entry has changed.  This is used by the LDAP
- * entry editors.
- *
+ * Method that describes that an entry has changed. This is used by the LDAP entry editors.
  */
 public class LDAPEntryChangedEvent
 {
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyEntryTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyEntryTask.java
index 5ca6fdf..f22c65c 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyEntryTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyEntryTask.java
@@ -33,9 +33,11 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.ldap.AVA;
+import org.forgerock.opendj.ldap.Attribute;
 import org.forgerock.opendj.ldap.AttributeDescription;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.DN;
+import org.forgerock.opendj.ldap.Entry;
 import org.forgerock.opendj.ldap.LdapException;
 import org.forgerock.opendj.ldap.LinkedAttribute;
 import org.forgerock.opendj.ldap.Modification;
@@ -56,7 +58,6 @@
 import org.opends.guitools.controlpanel.ui.nodes.BasicNode;
 import org.opends.guitools.controlpanel.util.Utilities;
 import org.opends.messages.AdminToolMessages;
-import org.opends.server.types.Entry;
 import org.opends.server.types.Schema;
 
 /** The task that is called when we must modify an entry. */
@@ -65,7 +66,7 @@
   private Set<String> backendSet;
   private boolean mustRename;
   private boolean hasModifications;
-  private org.forgerock.opendj.ldap.Entry oldEntry;
+  private Entry oldEntry;
   private DN oldDn;
   private List<Modification> modifications;
   private Modification passwordModification;
@@ -85,7 +86,7 @@
    * want to modify.
    */
   public ModifyEntryTask(ControlPanelInfo info, ProgressDialog dlg,
-      Entry newEntry, org.forgerock.opendj.ldap.Entry oldEntry,
+      Entry newEntry, Entry oldEntry,
       BrowserController controller, TreePath path)
   {
     super(info, dlg);
@@ -296,7 +297,7 @@
    * @throws LdapException if an error performing the modification occurs.
    */
   private void modifyAndRename(ConnectionWithControls conn, final DN oldDN,
-      org.forgerock.opendj.ldap.Entry originalEntry,
+      Entry originalEntry,
       final Entry newEntry, final List<Modification> originalMods)
       throws CannotRenameException, LdapException
   {
@@ -430,11 +431,11 @@
     return false;
   }
 
-  private boolean entryContainsRdnTypes(org.forgerock.opendj.ldap.Entry entry, RDN rdn)
+  private boolean entryContainsRdnTypes(Entry entry, RDN rdn)
   {
     for (AVA ava : rdn)
     {
-      org.forgerock.opendj.ldap.Attribute attr = entry.getAttribute(ava.getAttributeName());
+      Attribute attr = entry.getAttribute(ava.getAttributeName());
       if (attr == null || attr.isEmpty())
       {
         return false;
@@ -450,14 +451,12 @@
    * @param info the ControlPanelInfo, used to retrieve the schema for instance.
    * @return the modifications to apply between two entries.
    */
-  public static List<Modification> getModifications(Entry newEntry,
-      org.forgerock.opendj.ldap.Entry oldEntry, ControlPanelInfo info) {
+  public static List<Modification> getModifications(Entry newEntry, Entry oldEntry, ControlPanelInfo info)
+  {
     List<Modification> modifications = new ArrayList<>();
     Schema schema = info.getServerDescriptor().getSchema();
 
-    List<org.opends.server.types.Attribute> newAttrs = newEntry.getAttributes();
-    newAttrs.add(newEntry.getObjectClassAttribute());
-    for (org.opends.server.types.Attribute attr : newAttrs)
+    for (Attribute attr : newEntry.getAllAttributes())
     {
       AttributeDescription attrDesc = attr.getAttributeDescription();
       if (!ViewEntryPanel.isEditable(attrDesc, schema))
@@ -469,7 +468,7 @@
       {
         newValues.add(v);
       }
-      org.forgerock.opendj.ldap.Attribute oldAttr = oldEntry.getAttribute(attrDesc);
+      Attribute oldAttr = oldEntry.getAttribute(attrDesc);
 
       ByteString rdnValue = null;
       for (AVA ava : newEntry.getName().rdn())
@@ -563,16 +562,16 @@
     }
 
     /* Check if there are attributes to delete */
-    for (org.forgerock.opendj.ldap.Attribute attr : oldEntry.getAllAttributes())
+    for (Attribute attr : oldEntry.getAllAttributes())
     {
       AttributeDescription attrDesc = attr.getAttributeDescription();
       if (!ViewEntryPanel.isEditable(attrDesc, schema))
       {
         continue;
       }
-      org.forgerock.opendj.ldap.Attribute oldAttr = oldEntry.getAttribute(attrDesc);
+      Attribute oldAttr = oldEntry.getAttribute(attrDesc);
 
-      if (!newEntry.hasAttribute(AttributeDescription.valueOf(attrDesc.getNameOrOID())) && !oldAttr.isEmpty())
+      if (!newEntry.containsAttribute(attrDesc.getNameOrOID()) && !oldAttr.isEmpty())
       {
         modifications.add(newModification(DELETE, attrDesc));
       }
@@ -591,7 +590,7 @@
     return new Modification(modType, new LinkedAttribute(attrDesc, values));
   }
 
-  private static List<ByteString> toList(org.forgerock.opendj.ldap.Attribute oldAttr)
+  private static List<ByteString> toList(Attribute oldAttr)
   {
     List<ByteString> results = new ArrayList<>();
     for (ByteString v : oldAttr)
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDAPEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDAPEntryPanel.java
index 61609f2..440e585 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDAPEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDAPEntryPanel.java
@@ -182,7 +182,8 @@
             !authenticationRequired(getInfo().getServerDescriptor());
         if (enable)
         {
-          if (ev.getEntry() == null)
+          Entry entry = ev .getEntry();
+          if (entry == null)
           {
             // Something changed that is wrong: assume the entry has been
             // modified, when the user tries to save we will inform of the
@@ -191,8 +192,8 @@
           }
           else
           {
-            boolean modified = !ev.getEntry().getName().equals(searchResult.getName())
-                || !ModifyEntryTask.getModifications(ev .getEntry(), searchResult, getInfo()).isEmpty();
+            boolean modified = !entry.getName().equals(searchResult.getName())
+                || !ModifyEntryTask.getModifications(entry, searchResult, getInfo()).isEmpty();
             enable = modified;
           }
         }
@@ -497,7 +498,7 @@
           Utilities.getFrame(this),
           INFO_CTRL_PANEL_MODIFYING_ENTRY_CHANGES_TITLE.get(), getInfo());
       dlg.setModal(modal);
-      org.opends.server.types.Entry entry = displayedEntryPanel.getEntry();
+      Entry entry = displayedEntryPanel.getEntry();
       newTask = new ModifyEntryTask(getInfo(), dlg, entry, searchResult, controller, treePath);
       for (Task task : getInfo().getTasks())
       {
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDIFViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDIFViewEntryPanel.java
index 75a575f..506491e 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDIFViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDIFViewEntryPanel.java
@@ -22,7 +22,6 @@
 import java.awt.GridBagConstraints;
 import java.awt.Point;
 import java.io.IOException;
-import java.io.StringReader;
 import java.util.List;
 
 import javax.swing.JLabel;
@@ -37,11 +36,10 @@
 import org.forgerock.opendj.ldap.Attribute;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.Entry;
+import org.forgerock.opendj.ldif.LDIFEntryReader;
 import org.opends.guitools.controlpanel.task.OfflineUpdateException;
 import org.opends.guitools.controlpanel.util.Utilities;
-import org.opends.server.types.LDIFImportConfig;
 import org.opends.server.types.OpenDsException;
-import org.opends.server.util.LDIFReader;
 
 /** The panel displaying an LDIF view of an entry. */
 public class LDIFViewEntryPanel extends ViewEntryPanel
@@ -258,13 +256,12 @@
   }
 
   @Override
-  public org.opends.server.types.Entry getEntry() throws OpenDsException
+  public Entry getEntry() throws OpenDsException
   {
     String ldif = getLDIF();
-    try (LDIFImportConfig ldifImportConfig = new LDIFImportConfig(new StringReader(ldif));
-        LDIFReader reader = new LDIFReader(ldifImportConfig))
+    try (LDIFEntryReader reader = new LDIFEntryReader(ldif))
     {
-      org.opends.server.types.Entry entry = reader.readEntry(checkSchema());
+      Entry entry = reader.readEntry();
       addValuesInRDN(entry);
       return entry;
     }
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
index 3e847a8..79e5e80 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
@@ -18,6 +18,7 @@
 
 import static com.forgerock.opendj.cli.Utils.*;
 
+import static org.forgerock.opendj.ldap.schema.SchemaValidationPolicy.*;
 import static org.opends.messages.AdminToolMessages.*;
 import static org.opends.server.util.CollectionUtils.*;
 import static org.opends.server.util.ServerConstants.*;
@@ -38,7 +39,6 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.IOException;
-import java.io.StringReader;
 import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -84,6 +84,7 @@
 import org.forgerock.opendj.ldap.schema.AttributeType;
 import org.forgerock.opendj.ldap.schema.ObjectClass;
 import org.forgerock.opendj.ldap.schema.Syntax;
+import org.forgerock.opendj.ldif.LDIFEntryReader;
 import org.opends.guitools.controlpanel.datamodel.BinaryValue;
 import org.opends.guitools.controlpanel.datamodel.CheckEntrySyntaxException;
 import org.opends.guitools.controlpanel.datamodel.ObjectClassValue;
@@ -95,10 +96,8 @@
 import org.opends.guitools.controlpanel.ui.nodes.DndBrowserNodes;
 import org.opends.guitools.controlpanel.util.Utilities;
 import org.opends.server.schema.SchemaConstants;
-import org.opends.server.types.LDIFImportConfig;
 import org.opends.server.types.OpenDsException;
 import org.opends.server.types.Schema;
-import org.opends.server.util.LDIFReader;
 
 /** The panel displaying a simplified view of an entry. */
 class SimplifiedViewEntryPanel extends ViewEntryPanel
@@ -1166,7 +1165,7 @@
   }
 
   @Override
-  public org.opends.server.types.Entry getEntry() throws OpenDsException
+  public Entry getEntry() throws OpenDsException
   {
     final List<LocalizableMessage> errors = new ArrayList<>();
 
@@ -1215,10 +1214,10 @@
     }
 
     final String ldif = getLDIF();
-    try (LDIFImportConfig ldifImportConfig = new LDIFImportConfig(new StringReader(ldif));
-        LDIFReader reader = new LDIFReader(ldifImportConfig))
+    try (LDIFEntryReader reader = new LDIFEntryReader(ldif)
+        .setSchemaValidationPolicy(checkSchema() ? defaultPolicy():ignoreAll()))
     {
-      final org.opends.server.types.Entry entry = reader.readEntry(checkSchema());
+      final Entry entry = reader.readEntry();
       addValuesInRDN(entry);
       return entry;
     }
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
index 6e7f1dd..4bf56f8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
@@ -17,6 +17,7 @@
 package org.opends.guitools.controlpanel.ui;
 
 import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
+import static org.forgerock.opendj.ldap.schema.SchemaValidationPolicy.*;
 import static org.opends.messages.AdminToolMessages.*;
 
 import java.awt.Component;
@@ -26,7 +27,6 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.IOException;
-import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Comparator;
@@ -57,6 +57,7 @@
 import org.forgerock.opendj.ldap.RDN;
 import org.forgerock.opendj.ldap.schema.AttributeType;
 import org.forgerock.opendj.ldap.schema.ObjectClass;
+import org.forgerock.opendj.ldif.LDIFEntryReader;
 import org.opends.guitools.controlpanel.datamodel.BinaryValue;
 import org.opends.guitools.controlpanel.datamodel.ObjectClassValue;
 import org.opends.guitools.controlpanel.datamodel.SortableTableModel;
@@ -64,10 +65,8 @@
 import org.opends.guitools.controlpanel.ui.renderer.AttributeCellEditor;
 import org.opends.guitools.controlpanel.ui.renderer.LDAPEntryTableCellRenderer;
 import org.opends.guitools.controlpanel.util.Utilities;
-import org.opends.server.types.LDIFImportConfig;
 import org.opends.server.types.OpenDsException;
 import org.opends.server.types.Schema;
-import org.opends.server.util.LDIFReader;
 import org.opends.server.util.ServerConstants;
 
 /** The panel displaying a table view of an LDAP entry. */
@@ -200,7 +199,7 @@
   }
 
   @Override
-  public org.opends.server.types.Entry getEntry() throws OpenDsException
+  public Entry getEntry() throws OpenDsException
   {
     if (SwingUtilities.isEventDispatchThread())
     {
@@ -225,10 +224,10 @@
       }
     }
     String ldif = getLDIF();
-    try (LDIFImportConfig ldifImportConfig = new LDIFImportConfig(new StringReader(ldif));
-        LDIFReader reader = new LDIFReader(ldifImportConfig))
+    try (LDIFEntryReader reader = new LDIFEntryReader(ldif)
+        .setSchemaValidationPolicy(checkSchema() ? defaultPolicy() : ignoreAll()))
     {
-      org.opends.server.types.Entry entry = reader.readEntry(checkSchema());
+      Entry entry = reader.readEntry();
       addValuesInRDN(entry);
       return entry;
     }
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 5ead6ff..99a6d01 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
@@ -53,7 +53,6 @@
 import org.opends.guitools.controlpanel.ui.nodes.BasicNode;
 import org.opends.guitools.controlpanel.util.Utilities;
 import org.opends.server.schema.SchemaConstants;
-import org.opends.server.types.Attributes;
 import org.opends.server.types.OpenDsException;
 import org.opends.server.types.Schema;
 import org.opends.server.util.Base64;
@@ -93,7 +92,7 @@
    * @throws OpenDsException if the entry cannot be generated (in particular if
    * the user provided invalid data).
    */
-  public abstract org.opends.server.types.Entry getEntry() throws OpenDsException;
+  public abstract Entry getEntry() throws OpenDsException;
 
   /**
    * Updates the contents of the panel.
@@ -274,7 +273,7 @@
    * Adds the values in the RDN to the entry definition.
    * @param entry the entry to be updated.
    */
-  protected void addValuesInRDN(org.opends.server.types.Entry entry)
+  protected void addValuesInRDN(Entry entry)
   {
     // Add the values in the RDN if they are not there
     for (AVA ava : entry.getName().rdn())
@@ -282,7 +281,7 @@
       String attrName = ava.getAttributeName();
       ByteString value = ava.getAttributeValue();
       boolean done = false;
-      for (org.opends.server.types.Attribute attr : entry.getAttribute(attrName))
+      for (Attribute attr : entry.getAllAttributes(attrName))
       {
         // TODO JNR use Entry.getAttribute(AttributeDescription) instead?
         if (attr.getAttributeDescription().toString().equals(attrName))
@@ -296,12 +295,13 @@
       }
       if (!done)
       {
-        entry.addAttribute(Attributes.create(ava.getAttributeType(), value), newArrayList(value));
+        AttributeDescription attrDesc = AttributeDescription.create(ava.getAttributeType());
+        entry.addAttribute(new LinkedAttribute(attrDesc, value), newArrayList(value));
       }
     }
   }
 
-  private List<ByteString> getValues(org.opends.server.types.Attribute attr)
+  private List<ByteString> getValues(Attribute attr)
   {
     List<ByteString> newValues = new ArrayList<>();
     Iterator<ByteString> it = attr.iterator();

--
Gitblit v1.10.0