You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2014/12/01 18:14:05 UTC

svn commit: r1642715 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak: plugins/document/DocumentCheckpointMBean.java plugins/segment/SegmentCheckpointMBean.java util/AbstractCheckpointMBean.java

Author: mduerig
Date: Mon Dec  1 17:14:05 2014
New Revision: 1642715

URL: http://svn.apache.org/r1642715
Log:
OAK-2291: Associate user defined values with checkpoint
Include user defined properties in CheckpointMBean

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentCheckpointMBean.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCheckpointMBean.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/AbstractCheckpointMBean.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentCheckpointMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentCheckpointMBean.java?rev=1642715&r1=1642714&r2=1642715&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentCheckpointMBean.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentCheckpointMBean.java Mon Dec  1 17:14:05 2014
@@ -50,7 +50,8 @@ public class DocumentCheckpointMBean ext
             String id = checkpoint.getKey().toString();
             Date created = new Date(checkpoint.getKey().getTimestamp());
             Date expires = new Date(Long.parseLong(checkpoint.getValue()));
-            tab.put(id, toCompositeData(id, created.toString(), expires.toString()));
+            tab.put(id, toCompositeData(
+                    id, created.toString(), expires.toString(), store.checkpointInfo(id)));
         }
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCheckpointMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCheckpointMBean.java?rev=1642715&r1=1642714&r2=1642715&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCheckpointMBean.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentCheckpointMBean.java Mon Dec  1 17:14:05 2014
@@ -47,7 +47,7 @@ public class SegmentCheckpointMBean exte
             NodeState checkpoint = cne.getNodeState();
             String created = getDate(checkpoint, "created");
             String expires = getDate(checkpoint, "timestamp");
-            tab.put(id, toCompositeData(id, created, expires));
+            tab.put(id, toCompositeData(id, created, expires, store.checkpointInfo(id)));
         }
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/AbstractCheckpointMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/AbstractCheckpointMBean.java?rev=1642715&r1=1642714&r2=1642715&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/AbstractCheckpointMBean.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/AbstractCheckpointMBean.java Mon Dec  1 17:14:05 2014
@@ -19,11 +19,16 @@
 
 package org.apache.jackrabbit.oak.util;
 
+import static javax.management.openmbean.SimpleType.STRING;
+
+import java.util.Map;
+import java.util.Map.Entry;
+
+import javax.management.openmbean.ArrayType;
 import javax.management.openmbean.CompositeDataSupport;
 import javax.management.openmbean.CompositeType;
 import javax.management.openmbean.OpenDataException;
 import javax.management.openmbean.OpenType;
-import javax.management.openmbean.SimpleType;
 import javax.management.openmbean.TabularData;
 import javax.management.openmbean.TabularDataSupport;
 import javax.management.openmbean.TabularType;
@@ -37,15 +42,23 @@ import org.apache.jackrabbit.oak.plugins
  * into tabular data.
  */
 public abstract class AbstractCheckpointMBean implements CheckpointMBean {
-    private static final String[] FIELD_NAMES = new String[] { "id", "created", "expires"};
+    private static final String[] FIELD_NAMES = new String[] { "id", "created", "expires", "properties"};
     private static final String[] FIELD_DESCRIPTIONS = FIELD_NAMES;
 
     @SuppressWarnings("rawtypes")
     private static final OpenType[] FIELD_TYPES = new OpenType[] {
-            SimpleType.STRING, SimpleType.STRING, SimpleType.STRING };
+            STRING, STRING, STRING, createStringArrayType()};
 
     private static final CompositeType TYPE = createCompositeType();
 
+    private static ArrayType<String> createStringArrayType() {
+        try {
+            return new ArrayType<String>(STRING, false);
+        } catch (OpenDataException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
     private static CompositeType createCompositeType() {
         try {
             return new CompositeType(SegmentCheckpointMBean.class.getName(),
@@ -75,7 +88,6 @@ public abstract class AbstractCheckpoint
                             "Checkpoints", TYPE, new String[] { "id" }));
 
             collectCheckpoints(tab);
-
             return tab;
         } catch (OpenDataException e) {
             throw new IllegalStateException(e);
@@ -93,9 +105,19 @@ public abstract class AbstractCheckpoint
      *                  checkpoint
      * @throws OpenDataException
      */
-    protected static CompositeDataSupport toCompositeData(String id, String created, String expires)
-            throws OpenDataException {
-        return new CompositeDataSupport(TYPE, FIELD_NAMES, new String[] { id, created, expires });
+    protected static CompositeDataSupport toCompositeData(String id, String created, String expires,
+            Map<String, String> properties) throws OpenDataException {
+        return new CompositeDataSupport(TYPE, FIELD_NAMES, new Object[] {
+            id, created, expires, toArray(properties) });
+    }
+
+    private static String[] toArray(Map<String, String> properties) {
+        String[] value = new String[properties.size()];
+        int k = 0;
+        for (Entry<String, String> p : properties.entrySet()) {
+            value[k++] = p.getKey() + '=' + p.getValue();
+        }
+        return value;
     }
 
 }