From 9529c418255af8de0cceb952afd006b60b9927a1 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 04 Aug 2016 15:02:54 +0000
Subject: [PATCH] Make CustomSearchResult closer to SDK's Entry
---
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java | 5 ++
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/ModifyEntryTask.java | 3 +
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/DuplicateEntryPanel.java | 3 +
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java | 19 +++------
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LDIFViewEntryPanel.java | 14 ++++--
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java | 6 +-
opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java | 3 +
opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java | 22 ++--------
8 files changed, 35 insertions(+), 40 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java b/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java
index 245096d..82ad403 100644
--- a/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java
+++ b/opendj-server-legacy/src/main/java/org/opends/admin/ads/util/ConnectionUtils.java
@@ -41,6 +41,7 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.DN;
+import org.forgerock.opendj.ldap.Entry;
import org.forgerock.opendj.ldap.responses.SearchResultEntry;
import org.opends.server.replication.plugin.EntryHistorical;
import org.opends.server.schema.SchemaConstants;
@@ -555,7 +556,7 @@
* the attribute description
* @return The first attribute value in this attribute decoded as a UTF-8 string.
*/
- public static String firstValueAsString(SearchResultEntry sr, String attrDesc)
+ public static String firstValueAsString(Entry sr, String attrDesc)
{
org.forgerock.opendj.ldap.Attribute attr = sr.getAttribute(attrDesc);
return (attr != null && !attr.isEmpty()) ? attr.firstValueAsString() : null;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java
index 6d798a7..9d9f7a7 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/browser/BrowserController.java
@@ -25,7 +25,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
-import java.util.List;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -48,8 +47,8 @@
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
-import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.DN;
+import org.forgerock.opendj.ldap.Entry;
import org.forgerock.opendj.ldap.responses.SearchResultEntry;
import org.opends.admin.ads.ADSContext;
import org.opends.admin.ads.util.ConnectionWrapper;
@@ -1756,11 +1755,10 @@
* Get the value of the numSubordinates attribute.
* If numSubordinates is not present, returns 0.
* @param entry the entry to analyze.
- * @throws NamingException if an error occurs.
* @return the value of the numSubordinates attribute. 0 if the attribute
* could not be found.
*/
- private static int getNumSubOrdinates(SearchResultEntry entry) throws NamingException
+ private static int getNumSubOrdinates(Entry entry)
{
return toInt(firstValueAsString(entry, NUMSUBORDINATES_ATTR));
}
@@ -1769,13 +1767,11 @@
* Returns whether the entry has subordinates or not. It uses an algorithm
* based in hasSubordinates and numSubordinates attributes.
* @param entry the entry to analyze.
- * @throws NamingException if an error occurs.
* @return {@code true} if the entry has subordinates according to the values
* of hasSubordinates and numSubordinates, returns {@code false} if none of
* the attributes could be found.
*/
- public static boolean getHasSubOrdinates(SearchResultEntry entry)
- throws NamingException
+ public static boolean getHasSubOrdinates(Entry entry)
{
String v = firstValueAsString(entry, HASSUBORDINATES_ATTR);
if (v != null) {
@@ -1793,9 +1789,7 @@
*/
private static int getNumSubOrdinates(CustomSearchResult entry)
{
- List<ByteString> vs = entry.getAttributeValues(NUMSUBORDINATES_ATTR);
- String v = !vs.isEmpty() ? vs.get(0).toString() : null;
- return toInt(v);
+ return getNumSubOrdinates(entry.getSdkEntry());
}
private static int toInt(String v)
@@ -1824,13 +1818,7 @@
*/
public static boolean getHasSubOrdinates(CustomSearchResult entry)
{
- List<ByteString> vs = entry.getAttributeValues(HASSUBORDINATES_ATTR);
- String v = !vs.isEmpty() ? vs.get(0).toString() : null;
- if (v != null)
- {
- return "true".equalsIgnoreCase(v);
- }
- return getNumSubOrdinates(entry) > 0;
+ return getHasSubOrdinates(entry.getSdkEntry());
}
/**
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java
index 280284a..9cc008b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/CustomSearchResult.java
@@ -112,6 +112,11 @@
return entry.getAllAttributes();
}
+ public Entry getSdkEntry()
+ {
+ return entry;
+ }
+
/**
* Returns all the attribute names of the entry.
* @return the attribute names of the entry.
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 a46bab4..4b5a030 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
@@ -454,7 +454,8 @@
{
for (AVA ava : rdn)
{
- if (entry.getAttributeValues(ava.getAttributeName()).isEmpty())
+ org.forgerock.opendj.ldap.Attribute attr = entry.getAttribute(ava.getAttributeName());
+ if (attr == null || attr.isEmpty())
{
return false;
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/DuplicateEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/DuplicateEntryPanel.java
index aebb0fb..cc575a0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/DuplicateEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/DuplicateEntryPanel.java
@@ -475,7 +475,8 @@
rdnAttribute = sr.getName().rdn().getFirstAVA().getAttributeType().getNameOrOID();
updateDNValue();
- boolean hasPassword = !sr.getAttributeValues(ATTR_USER_PASSWORD).isEmpty();
+ Attribute userPwdAttr = sr.getAttribute(ATTR_USER_PASSWORD);
+ boolean hasPassword = userPwdAttr != null && !userPwdAttr.isEmpty();
lPassword.setVisible(hasPassword);
password.setVisible(hasPassword);
lconfirmPassword.setVisible(hasPassword);
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 ad2ccbb..8c2529f 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
@@ -208,14 +208,18 @@
sb = new StringBuilder();
for (String attrName : schemaReadOnlyAttributes)
{
- for (ByteString v : sr.getAttributeValues(attrName))
+ Attribute attr = sr.getAttribute(attrName);
+ if (attr != null)
{
- if (oneLineAdded)
+ for (ByteString v : attr)
{
- sb.append("\n");
+ if (oneLineAdded)
+ {
+ sb.append("\n");
+ }
+ oneLineAdded = true;
+ sb.append(getLDIFLine(attrName, v));
}
- oneLineAdded = true;
- sb.append(getLDIFLine(attrName, v));
}
}
final Point p2 = sameEntry ?
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 45548a3..932cedf 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
@@ -676,11 +676,9 @@
// Put first the attributes associated with the objectclass in hmOrderedAttrNames
LinkedHashSet<String> attrNames = new LinkedHashSet<>();
- List<ByteString> values = sr.getAttributeValues(OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
- for (ByteString oc : values)
+ for (ByteString ocName : sr.getAttribute(OBJECTCLASS_ATTRIBUTE_TYPE_NAME))
{
- String ocName = oc.toString();
- String[] attrs = hmOrdereredAttrNames.get(ocName.toLowerCase());
+ String[] attrs = hmOrdereredAttrNames.get(ocName.toString().toLowerCase());
if (attrs != null)
{
for (String attr : attrs)
@@ -718,10 +716,9 @@
if (schema != null)
{
- List<ByteString> ocs = sr.getAttributeValues(OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
- for (ByteString oc : ocs)
+ for (ByteString ocName : sr.getAttribute(OBJECTCLASS_ATTRIBUTE_TYPE_NAME))
{
- ObjectClass objectClass = schema.getObjectClass(oc.toString());
+ ObjectClass objectClass = schema.getObjectClass(ocName.toString());
if (!objectClass.isPlaceHolder())
{
for (AttributeType attr : objectClass.getRequiredAttributes())
@@ -1147,8 +1144,7 @@
AttributeType attrType = attrDesc.getAttributeType();
if (!attrType.isPlaceHolder())
{
- List<ByteString> ocs = sr.getAttributeValues(OBJECTCLASS_ATTRIBUTE_TYPE_NAME);
- for (ByteString oc : ocs)
+ for (ByteString oc : sr.getAttribute(OBJECTCLASS_ATTRIBUTE_TYPE_NAME))
{
ObjectClass objectClass = schema.getObjectClass(oc.toString());
if (!objectClass.isPlaceHolder() && objectClass.isRequired(attrType))
@@ -1340,10 +1336,9 @@
private boolean isAttrName(String attrName, CustomSearchResult sr)
{
- for (ByteString v : sr.getAttributeValues(OBJECTCLASS_ATTRIBUTE_TYPE_NAME))
+ for (ByteString ocName : sr.getAttribute(OBJECTCLASS_ATTRIBUTE_TYPE_NAME))
{
- String ocName = v.toString();
- String attr = hmNameAttrNames.get(ocName.toLowerCase());
+ String attr = hmNameAttrNames.get(ocName.toString().toLowerCase());
if (attr != null && attr.equalsIgnoreCase(attrName))
{
return true;
diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java
index 2fa2073..3274251 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/util/Utilities.java
@@ -2420,10 +2420,10 @@
{
if (sr != null)
{
- final List<ByteString> values = sr.getAttributeValues(attrName);
- if (!values.isEmpty())
+ final Attribute attr = sr.getAttribute(attrName);
+ if (attr != null && !attr.isEmpty())
{
- final ByteString v = values.get(0);
+ final ByteString v = attr.iterator().next();
if (v != null)
{
return v.toString();
--
Gitblit v1.10.0