You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by md...@apache.org on 2011/10/18 18:01:17 UTC
svn commit: r1185731 - in /jackrabbit/sandbox/jackrabbit-mk:
jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/
jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/
jackrabbit-spi2microkernel/src/test/java/org/ap...
Author: mduerig
Date: Tue Oct 18 16:01:17 2011
New Revision: 1185731
URL: http://svn.apache.org/viewvc?rev=1185731&view=rev
Log:
Microkernel based Jackrabbit prototype (WIP)
increase tolerance for ill formatted commit info
Modified:
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/CommitInfo.java
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/CommitInfoTest.java
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java?rev=1185731&r1=1185730&r2=1185731&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java Tue Oct 18 16:01:17 2011
@@ -999,8 +999,12 @@ public final class WorkspaceManager impl
return null;
} catch (RepositoryException e) {
log.error("Workspace=" + sessionInfo.getWorkspaceName() + ": Exception while retrieving event bundles", e);
+ } catch (Exception e) {
+ log.error("Workspace=" + sessionInfo.getWorkspaceName() + ": Exception while retrieving event bundles", e);
+ throw e;
}
+
if (!Thread.interrupted() && bundles != null && bundles.length > 0) {
onEventReceived(bundles, internalEventListeners);
}
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/CommitInfo.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/CommitInfo.java?rev=1185731&r1=1185730&r2=1185731&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/CommitInfo.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/CommitInfo.java Tue Oct 18 16:01:17 2011
@@ -47,6 +47,14 @@ public class CommitInfo {
jsonObject = new JSONObject();
}
+ public String getMessage() {
+ return getValue("Message");
+ }
+
+ public CommitInfo setMessage(String message) {
+ return setValue("Message", message);
+ }
+
public String getUserId() {
return getValue("UserId");
}
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java?rev=1185731&r1=1185730&r2=1185731&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java Tue Oct 18 16:01:17 2011
@@ -302,11 +302,18 @@ public class SubscriptionImpl implements
private EventBundle createEventBundle(JSONObject jsonObject) throws RepositoryException {
String revisionId = getString(jsonObject, "id", false);
String msg = getString(jsonObject, "msg", true);
- CommitInfo commitInfo = parseCommitMessage(msg);
- if (commitInfo == null) {
- // Skip alien commits
- return null;
+ if (msg == null) {
+ return null; // Skip alien commits
}
+
+ CommitInfo commitInfo;
+ try {
+ commitInfo = CommitInfo.parse(msg);
+ }
+ catch (IllegalArgumentException e) {
+ return null; // Skip alien commits
+ }
+
long timeStamp = getLong(jsonObject, "ts");
String changes = getString(jsonObject, "changes", false);
log.debug("Creating event bundle from changes in revision " + revisionId + " at " + timeStamp);
@@ -338,10 +345,6 @@ public class SubscriptionImpl implements
return new EventBundleImpl(events, isLocal);
}
- private CommitInfo parseCommitMessage(String msg) {
- return msg == null ? null : CommitInfo.parse(msg);
- }
-
private Collection<Event> getEvents(String changes, EventTemplate eventTemplate) throws RepositoryException {
Collection<Event> events = new LinkedList<Event>();
JsopTokenizer jsopTokenizer = new JsopTokenizer(changes);
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/CommitInfoTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/CommitInfoTest.java?rev=1185731&r1=1185730&r2=1185731&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/CommitInfoTest.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/test/java/org/apache/jackrabbit/spi2microkernel/CommitInfoTest.java Tue Oct 18 16:01:17 2011
@@ -3,33 +3,80 @@ package org.apache.jackrabbit.spi2microk
import org.junit.Test;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
public class CommitInfoTest {
@Test
public void testEncode() {
- CommitInfo msg = new CommitInfo().setUserId("user").setUserData("data").setSessionId("session");
- assertEquals("user", msg.getUserId());
- assertEquals("data", msg.getUserData());
- assertEquals("session", msg.getSessionId());
- assertEquals(msg, CommitInfo.parse(msg.toJson()));
-
- msg = new CommitInfo().setUserId("").setUserData("data").setSessionId("session");
- assertEquals("", msg.getUserId());
- assertEquals("data", msg.getUserData());
- assertEquals("session", msg.getSessionId());
- assertEquals(msg, CommitInfo.parse(msg.toJson()));
-
- msg = new CommitInfo().setUserId("user").setUserData("").setSessionId("session");
- assertEquals("user", msg.getUserId());
- assertEquals("", msg.getUserData());
- assertEquals("session", msg.getSessionId());
- assertEquals(msg, CommitInfo.parse(msg.toJson()));
-
- msg = new CommitInfo().setUserId("").setUserData("").setSessionId("session");
- assertEquals("", msg.getUserId());
- assertEquals("", msg.getUserData());
- assertEquals("session", msg.getSessionId());
- assertEquals(msg, CommitInfo.parse(msg.toJson()));
+ CommitInfo info = new CommitInfo()
+ .setUserId("user")
+ .setUserData("data")
+ .setSessionId("session")
+ .setMessage("message")
+ .setValue("foo", "bar");
+
+ assertEquals("user", info.getUserId());
+ assertEquals("data", info.getUserData());
+ assertEquals("session", info.getSessionId());
+ assertEquals("message", info.getMessage());
+ assertEquals("bar", info.getValue("foo"));
+ assertNull(info.getValue("any"));
+ assertEquals(info, CommitInfo.parse(info.toJson()));
+
+ info = new CommitInfo()
+ .setUserData("data")
+ .setSessionId("session")
+ .setMessage("message");
+
+ assertNull(info.getUserId());
+ assertEquals("data", info.getUserData());
+ assertEquals("session", info.getSessionId());
+ assertEquals("message", info.getMessage());
+ assertEquals(info, CommitInfo.parse(info.toJson()));
+
+ info = new CommitInfo()
+ .setUserId("user")
+ .setSessionId("session")
+ .setMessage("message");
+
+ assertEquals("user", info.getUserId());
+ assertNull(info.getUserData());
+ assertEquals("session", info.getSessionId());
+ assertEquals("message", info.getMessage());
+ assertEquals(info, CommitInfo.parse(info.toJson()));
+
+ info = new CommitInfo();
+ assertNull(info.getUserId());
+ assertNull(info.getUserData());
+ assertNull(info.getSessionId());
+ assertNull(info.getMessage());
+ assertEquals(info, CommitInfo.parse(info.toJson()));
+ }
+
+ @Test
+ public void testDecode() {
+ CommitInfo info = CommitInfo.parse("{}");
+ assertEquals(null, info.getUserId());
+ assertEquals(null, info.getUserData());
+ assertEquals(null, info.getSessionId());
+
+ info = CommitInfo.parse('{' +
+ "\"UserId\":\"apache\"," +
+ "\"UserData\":\"jackrabbit\"," +
+ "\"SessionId\":\"none\"," +
+ "\"Message\":\"hello world\"," +
+ "\"foo\":\"bar\"}");
+
+ assertEquals("apache", info.getUserId());
+ assertEquals("jackrabbit", info.getUserData());
+ assertEquals("none", info.getSessionId());
+ assertEquals("hello world", info.getMessage());
+ assertEquals("bar", info.getValue("foo"));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testDecodeInvalid() {
+ CommitInfo.parse("invalid");
}
}