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;
}
}