From 09484dd10bba52e2bc2c7bc2ce742e4a8e58a8be Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 10 Mar 2016 08:40:41 +0000
Subject: [PATCH] Added MonitorData class to simplify writing monitored objects

---
 opendj-server-legacy/src/main/java/org/opends/server/replication/service/ReplicationMonitor.java |  118 ++++++++++++++++++++++-------------------------------------
 1 files changed, 44 insertions(+), 74 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/service/ReplicationMonitor.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/service/ReplicationMonitor.java
index 17b79e3..ed6d4bd 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/service/ReplicationMonitor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/service/ReplicationMonitor.java
@@ -12,21 +12,19 @@
  * information: "Portions Copyright [year] [name of copyright owner]".
  *
  * Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions copyright 2013-2015 ForgeRock AS.
+ * Portions copyright 2013-2016 ForgeRock AS.
  */
 package org.opends.server.replication.service;
 
 import java.util.ArrayList;
-import java.util.List;
+import java.util.Collection;
 import java.util.Map;
 import java.util.Map.Entry;
 
 import org.opends.server.admin.std.server.MonitorProviderCfg;
+import org.opends.server.api.MonitorData;
 import org.opends.server.api.MonitorProvider;
 import org.opends.server.replication.service.ReplicationDomain.ImportExportContext;
-import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.Attributes;
 
 /**
  * Class used to generate monitoring information for the replication.
@@ -66,111 +64,83 @@
         + ",cn=Replication";
   }
 
-  /**
-   * Retrieves a set of attributes containing monitor data that should be
-   * returned to the client if the corresponding monitor entry is requested.
-   *
-   * @return  A set of attributes containing monitor data that should be
-   *          returned to the client if the corresponding monitor entry is
-   *          requested.
-   */
   @Override
-  public List<Attribute> getMonitorData()
+  public MonitorData getMonitorData()
   {
-    List<Attribute> attributes = new ArrayList<>();
+    final MonitorData attributes = new MonitorData(41);
 
-    addMonitorData(attributes, "domain-name", domain.getBaseDN());
-    addMonitorData(attributes, "connected-to", domain.getReplicationServer());
-    addMonitorData(attributes, "lost-connections", domain.getNumLostConnections());
-    addMonitorData(attributes, "received-updates", domain.getNumRcvdUpdates());
-    addMonitorData(attributes, "sent-updates", domain.getNumSentUpdates());
+    attributes.add("domain-name", domain.getBaseDN());
+    attributes.add("server-id", domain.getServerId());
+    attributes.add("connected-to", domain.getReplicationServer());
+    attributes.add("lost-connections", domain.getNumLostConnections());
 
-    // get number of changes replayed
-    addMonitorData(attributes, "replayed-updates", domain.getNumProcessedUpdates());
-
-    addMonitorData(attributes, "server-id", domain.getServerId());
+    attributes.add("received-updates", domain.getNumRcvdUpdates());
+    attributes.add("sent-updates", domain.getNumSentUpdates());
+    attributes.add("replayed-updates", domain.getNumProcessedUpdates());
 
     // get window information
-    addMonitorData(attributes, "max-rcv-window", domain.getMaxRcvWindow());
-    addMonitorData(attributes, "current-rcv-window", domain.getCurrentRcvWindow());
-    addMonitorData(attributes, "max-send-window", domain.getMaxSendWindow());
-    addMonitorData(attributes, "current-send-window", domain.getCurrentSendWindow());
+    attributes.add("max-rcv-window", domain.getMaxRcvWindow());
+    attributes.add("current-rcv-window", domain.getCurrentRcvWindow());
+    attributes.add("max-send-window", domain.getMaxSendWindow());
+    attributes.add("current-send-window", domain.getCurrentSendWindow());
 
-    // get the Server State
-    final String ATTR_SERVER_STATE = "server-state";
-    AttributeBuilder builder = new AttributeBuilder(ATTR_SERVER_STATE);
-    builder.addAllStrings(domain.getServerState().toStringSet());
-    attributes.add(builder.toAttribute());
-
-    addMonitorData(attributes, "ssl-encryption", domain.isSessionEncrypted());
-    addMonitorData(attributes, "generation-id", domain.getGenerationID());
+    attributes.add("server-state", domain.getServerState().toStringSet());
+    attributes.add("ssl-encryption", domain.isSessionEncrypted());
+    attributes.add("generation-id", domain.getGenerationID());
 
     // Add import/export monitoring attributes
     final ImportExportContext ieContext = domain.getImportExportContext();
     if (ieContext != null)
     {
-      addMonitorData(attributes, "total-update", ieContext.importInProgress() ? "import" : "export");
-      addMonitorData(attributes, "total-update-entry-count", ieContext.getTotalEntryCount());
-      addMonitorData(attributes, "total-update-entry-left", ieContext.getLeftEntryCount());
+      attributes.add("total-update", ieContext.importInProgress() ? "import" : "export");
+      attributes.add("total-update-entry-count", ieContext.getTotalEntryCount());
+      attributes.add("total-update-entry-left", ieContext.getLeftEntryCount());
     }
 
 
     // Add the concrete Domain attributes
-    attributes.addAll(domain.getAdditionalMonitoring());
+    domain.addAdditionalMonitoring(attributes);
 
     /*
      * Add assured replication related monitoring fields
      * (see domain.getXXX() method comment for field meaning)
      */
-    addMonitorData(attributes, "assured-sr-sent-updates", domain.getAssuredSrSentUpdates());
-    addMonitorData(attributes, "assured-sr-acknowledged-updates", domain.getAssuredSrAcknowledgedUpdates());
-    addMonitorData(attributes, "assured-sr-not-acknowledged-updates", domain.getAssuredSrNotAcknowledgedUpdates());
-    addMonitorData(attributes, "assured-sr-timeout-updates", domain.getAssuredSrTimeoutUpdates());
-    addMonitorData(attributes, "assured-sr-wrong-status-updates", domain.getAssuredSrWrongStatusUpdates());
-    addMonitorData(attributes, "assured-sr-replay-error-updates", domain.getAssuredSrReplayErrorUpdates());
-    addMonitorData(attributes, "assured-sr-server-not-acknowledged-updates", domain
-        .getAssuredSrServerNotAcknowledgedUpdates());
-    addMonitorData(attributes, "assured-sr-received-updates", domain.getAssuredSrReceivedUpdates());
-    addMonitorData(attributes, "assured-sr-received-updates-acked", domain.getAssuredSrReceivedUpdatesAcked());
-    addMonitorData(attributes, "assured-sr-received-updates-not-acked", domain.getAssuredSrReceivedUpdatesNotAcked());
-    addMonitorData(attributes, "assured-sd-sent-updates", domain.getAssuredSdSentUpdates());
-    addMonitorData(attributes, "assured-sd-acknowledged-updates", domain.getAssuredSdAcknowledgedUpdates());
-    addMonitorData(attributes, "assured-sd-timeout-updates", domain.getAssuredSdTimeoutUpdates());
+    attributes.add("assured-sr-sent-updates", domain.getAssuredSrSentUpdates());
+    attributes.add("assured-sr-acknowledged-updates", domain.getAssuredSrAcknowledgedUpdates());
+    attributes.add("assured-sr-not-acknowledged-updates", domain.getAssuredSrNotAcknowledgedUpdates());
+    attributes.add("assured-sr-timeout-updates", domain.getAssuredSrTimeoutUpdates());
+    attributes.add("assured-sr-wrong-status-updates", domain.getAssuredSrWrongStatusUpdates());
+    attributes.add("assured-sr-replay-error-updates", domain.getAssuredSrReplayErrorUpdates());
+    addMonitorData(attributes,
+        "assured-sr-server-not-acknowledged-updates",
+        domain.getAssuredSrServerNotAcknowledgedUpdates());
+    attributes.add("assured-sr-received-updates", domain.getAssuredSrReceivedUpdates());
+    attributes.add("assured-sr-received-updates-acked", domain.getAssuredSrReceivedUpdatesAcked());
+    attributes.add("assured-sr-received-updates-not-acked", domain.getAssuredSrReceivedUpdatesNotAcked());
+    attributes.add("assured-sd-sent-updates", domain.getAssuredSdSentUpdates());
+    attributes.add("assured-sd-acknowledged-updates", domain.getAssuredSdAcknowledgedUpdates());
+    attributes.add("assured-sd-timeout-updates", domain.getAssuredSdTimeoutUpdates());
     addMonitorData(attributes, "assured-sd-server-timeout-updates", domain.getAssuredSdServerTimeoutUpdates());
 
     // Status related monitoring fields
-    addMonitorData(attributes, "last-status-change-date", domain.getLastStatusChangeDate());
-
-    addMonitorData(attributes, "status", domain.getStatus());
+    attributes.add("last-status-change-date", domain.getLastStatusChangeDate());
+    attributes.add("status", domain.getStatus());
 
     return attributes;
   }
 
-  private void addMonitorData(List<Attribute> attributes, String attrName,
-      Map<Integer, Integer> serverIdToNb)
+  private void addMonitorData(MonitorData attributes, String attrName, Map<Integer, Integer> serverIdToNb)
   {
     if (!serverIdToNb.isEmpty())
     {
-      final AttributeBuilder builder = new AttributeBuilder(attrName);
+      Collection<String> values = new ArrayList<>();
       for (Entry<Integer, Integer> entry : serverIdToNb.entrySet())
       {
         final Integer serverId = entry.getKey();
         final Integer nb = entry.getValue();
-        builder.add(serverId + ":" + nb);
+        values.add(serverId + ":" + nb);
       }
-      attributes.add(builder.toAttribute());
+      attributes.add(attrName, values);
     }
   }
-
-  /**
-   * Adds an attribute with a value to the list of monitoring attributes.
-   *
-   * @param attributes the list of monitoring attributes
-   * @param attrName the name of the attribute to add.
-   * @param value The value of he attribute to add.
-   */
-  public static void addMonitorData(List<Attribute> attributes, String attrName, Object value)
-  {
-    attributes.add(Attributes.create(attrName, String.valueOf(value)));
-  }
 }

--
Gitblit v1.10.0