From 595b0d2a712585e169ccde6476818e72c2c75630 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 01 Apr 2016 10:15:43 +0000
Subject: [PATCH] Removed all uses of AttributeType.getNormalizedNameOrOID()

---
 opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskEntry.java |   92 +++++++++++++---------------------------------
 1 files changed, 26 insertions(+), 66 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskEntry.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskEntry.java
index 5f04b8d..a45495d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskEntry.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskEntry.java
@@ -16,31 +16,31 @@
  */
 package org.opends.server.tools.tasks;
 
-import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.opendj.ldap.ByteString;
-import org.forgerock.opendj.ldap.schema.AttributeType;
-import org.opends.server.backends.task.FailedDependencyAction;
-import org.opends.server.backends.task.Task;
-import org.opends.server.backends.task.TaskState;
-import org.opends.server.types.Attribute;
-import org.forgerock.opendj.ldap.DN;
-import org.opends.server.types.Entry;
+import static org.opends.server.util.ServerConstants.*;
 
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.TimeZone;
-import java.lang.reflect.Method;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
 
-import static org.opends.server.util.ServerConstants.*;
+import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.DN;
+import org.forgerock.opendj.ldap.schema.AttributeType;
+import org.opends.server.backends.task.FailedDependencyAction;
+import org.opends.server.backends.task.Task;
+import org.opends.server.backends.task.TaskState;
+import org.opends.server.core.DirectoryServer;
+import org.opends.server.types.Attribute;
+import org.opends.server.types.Entry;
+import org.opends.server.types.ObjectClass;
+import org.opends.server.util.StaticUtils;
 
 /**
  * Processes information from a task entry from the directory and
@@ -54,27 +54,6 @@
 
   private int hashCode;
 
-  /**
-   * These attributes associated with the ds-task object
-   * class are all handled explicitly below in the constructor.
-   */
-  private static Set<String> supAttrNames = new HashSet<>();
-  static {
-    supAttrNames.add("ds-task-id");
-    supAttrNames.add("ds-task-class-name");
-    supAttrNames.add("ds-task-state");
-    supAttrNames.add("ds-task-scheduled-start-time");
-    supAttrNames.add("ds-task-actual-start-time");
-    supAttrNames.add("ds-task-completion-time");
-    supAttrNames.add("ds-task-dependency-id");
-    supAttrNames.add("ds-task-failed-dependency-action");
-    supAttrNames.add("ds-task-log-message");
-    supAttrNames.add("ds-task-notify-on-completion");
-    supAttrNames.add("ds-task-notify-on-error");
-    supAttrNames.add("ds-recurring-task-id");
-    supAttrNames.add("ds-recurring-task-schedule");
-  }
-
   private String id;
   private String className;
   private String state;
@@ -119,17 +98,12 @@
     notifyComp = getMultiStringValue(entry,  p + "notify-on-completion");
     schedTab =   getSingleStringValue(entry, "ds-recurring-task-schedule");
 
-
-    // Build a map of non-superior attribute value pairs for display
-    Map<AttributeType, List<Attribute>> attrMap = entry.getUserAttributes();
-    for (AttributeType type : attrMap.keySet()) {
-      String typeName = type.getNormalizedNameOrOID();
-
-      // See if we've handled it already above
-      if (!supAttrNames.contains(typeName)) {
-        LocalizableMessage attrTypeName = getAttributeDisplayName(typeName);
-        List<Attribute> attrList = entry.getUserAttribute(type);
-        for (Attribute attr : attrList) {
+    final ObjectClass dsTask = DirectoryServer.getObjectClass("ds-task");
+    final ObjectClass dsRecurringTask = DirectoryServer.getObjectClass("ds-recurring-task");
+    for (AttributeType attrType : entry.getUserAttributes().keySet()) {
+      if (!dsTask.isRequiredOrOptional(attrType) && !dsRecurringTask.isRequiredOrOptional(attrType)) {
+        LocalizableMessage attrTypeName = getAttributeDisplayName(attrType);
+        for (Attribute attr : entry.getUserAttribute(attrType)) {
           for (ByteString av : attr) {
             List<String> valueList = taskSpecificAttrValues.get(attrTypeName);
             if (valueList == null) {
@@ -156,18 +130,12 @@
     hashCode += taskSpecificAttrValues.hashCode();
   }
 
-  /**
-   * Retrieves a hash code for this task entry.
-   *
-   * @return  The hash code for this task entry.
-   */
   @Override
   public int hashCode()
   {
     return hashCode;
   }
 
-  /** {@inheritDoc} */
   @Override
   public boolean equals(Object o)
   {
@@ -175,12 +143,6 @@
     {
       return true;
     }
-
-    if (o == null)
-    {
-      return false;
-    }
-
     if (! (o instanceof TaskEntry))
     {
       return false;
@@ -440,16 +402,15 @@
     return valuesList;
   }
 
-  private LocalizableMessage getAttributeDisplayName(String attrName) {
+  private LocalizableMessage getAttributeDisplayName(AttributeType attrType) {
+    final String attrName = StaticUtils.toLowerCase(attrType.getNameOrOID());
     LocalizableMessage name = mapAttrToDisplayName.get(attrName);
     if (name == null) {
       Task task = getTask();
       if (task != null) {
         try {
-          Method m = Task.class.getMethod(
-                  "getAttributeDisplayName", String.class);
-          Object o = m.invoke(task, attrName);
-          if (o != null && LocalizableMessage.class.isAssignableFrom(o.getClass())) {
+          Object o = task.getAttributeDisplayName(attrName);
+          if (o instanceof LocalizableMessage) {
             name= (LocalizableMessage)o;
             mapAttrToDisplayName.put(attrName, name);
           }
@@ -507,5 +468,4 @@
     }
     return task;
   }
-
 }

--
Gitblit v1.10.0