From 6cbfdb7b0cf38f41d16df60ef427db7d629f5965 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 01 Feb 2016 12:48:05 +0000
Subject: [PATCH] OPENDJ-2650 No more task log (detail or error) when running tools in online mode (import, backup,...)

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java |   79 ++++++++++++++++++++-------------------
 1 files changed, 41 insertions(+), 38 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java
index ca15c5b..6f51d7d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/Task.java
@@ -44,12 +44,20 @@
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ModificationType;
+import org.forgerock.opendj.ldap.schema.AttributeType;
 import org.opends.messages.Severity;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ServerContext;
-import org.forgerock.opendj.ldap.schema.AttributeType;
-import org.opends.server.types.*;
+import org.opends.server.types.Attribute;
+import org.opends.server.types.AttributeBuilder;
+import org.opends.server.types.Attributes;
+import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.Entry;
+import org.opends.server.types.InitializationException;
 import org.opends.server.types.LockManager.DNLock;
+import org.opends.server.types.Modification;
+import org.opends.server.types.Operation;
 import org.opends.server.util.EMailMessage;
 import org.opends.server.util.StaticUtils;
 import org.opends.server.util.TimeThread;
@@ -820,44 +828,14 @@
     }
     try
     {
-      StringBuilder buffer = new StringBuilder();
-      buffer.append("[");
-      buffer.append(TimeThread.getLocalTime());
-      buffer.append("] severity=\"");
-      buffer.append(severity.name());
-      buffer.append("\" msgCount=");
-      buffer.append(logMessageCounter++);
-      buffer.append(" msgID=");
-      buffer.append(message.resourceName());
-      buffer.append("-");
-      buffer.append(message.ordinal());
-      buffer.append(" message=\"");
-      buffer.append(message);
-      buffer.append("\"");
-      if (exception != null)
-      {
-        buffer.append(" exception=\"");
-        buffer.append(StaticUtils.stackTraceToSingleLineString(exception));
-        buffer.append("\"");
-      }
-
-      String messageString = buffer.toString();
+      String messageString = buildLogMessage(severity, message, exception);
       logMessages.add(messageString);
 
-      AttributeType type = DirectoryServer.getAttributeType(ATTR_TASK_LOG_MESSAGES);
-
-      final List<Attribute> attrList = taskEntry.getAttribute(type);
-      ByteString value = ByteString.valueOfUtf8(messageString);
-      if (attrList.isEmpty())
-      {
-        taskEntry.putAttribute(type, newArrayList(Attributes.create(type, value)));
-      }
-      else
-      {
-        AttributeBuilder builder = new AttributeBuilder(attrList.get(0));
-        builder.add(value);
-        attrList.set(0, builder.toAttribute());
-      }
+      final AttributeType type = DirectoryServer.getAttributeType(ATTR_TASK_LOG_MESSAGES);
+      final Attribute attr = taskEntry.getExactAttribute(type, Collections.<String> emptySet());
+      final AttributeBuilder builder = attr != null ? new AttributeBuilder(attr) : new AttributeBuilder(type);
+      builder.add(messageString);
+      taskEntry.putAttribute(type, builder.toAttributeList());
     }
     finally
     {
@@ -868,6 +846,31 @@
     }
   }
 
+  private String buildLogMessage(Severity severity, LocalizableMessage message, Throwable exception)
+  {
+    StringBuilder buffer = new StringBuilder();
+    buffer.append("[");
+    buffer.append(TimeThread.getLocalTime());
+    buffer.append("] severity=\"");
+    buffer.append(severity.name());
+    buffer.append("\" msgCount=");
+    buffer.append(logMessageCounter++);
+    buffer.append(" msgID=");
+    buffer.append(message.resourceName());
+    buffer.append("-");
+    buffer.append(message.ordinal());
+    buffer.append(" message=\"");
+    buffer.append(message);
+    buffer.append("\"");
+    if (exception != null)
+    {
+      buffer.append(" exception=\"");
+      buffer.append(StaticUtils.stackTraceToSingleLineString(exception));
+      buffer.append("\"");
+    }
+    return buffer.toString();
+  }
+
   /**
    * Compares this task with the provided task for the purposes of ordering in a
    * sorted list.  Any completed task will always be ordered before an

--
Gitblit v1.10.0