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/06/23 15:34:39 UTC

svn commit: r1138872 - /jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java

Author: mduerig
Date: Thu Jun 23 13:34:39 2011
New Revision: 1138872

URL: http://svn.apache.org/viewvc?rev=1138872&view=rev
Log:
spi2microkernel prototype (WIP)
observation (WIP): setPorperty, removeProperty

Modified:
    jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java

Modified: jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java?rev=1138872&r1=1138871&r2=1138872&view=diff
==============================================================================
--- jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java (original)
+++ jackrabbit/sandbox/spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/SubscriptionImpl.java Thu Jun 23 13:34:39 2011
@@ -302,8 +302,26 @@ public class SubscriptionImpl implements
         }
 
         private void setProperty(JsopTokenizer jsopTokenizer, EventTemplate eventTemplate, Collection<Event> events) {
-            // todo implement setProperty
-            // Event#PROPERTY_REMOVED} Event#PROPERTY_CHANGED}
+            Path path = Paths.stringToPath(jsopTokenizer.readString());
+            NodeId parentId = createNodeId(getParent(path));
+
+            EventTemplate setPropertyEvent = eventTemplate.copy();
+            setPropertyEvent.setPath(path);
+            setPropertyEvent.setParentId(parentId);
+            setPropertyEvent.setItemId(createNodeId(path));
+            // todo set primaryType, mixinTypes this needs context in the journal
+            // fixme it seems type based filtering does not respect the type hierarchy (see JCR-2542)
+
+            jsopTokenizer.read(':');
+            if (jsopTokenizer.read() == JsopTokenizer.NULL) {
+                setPropertyEvent.setType(Event.PROPERTY_REMOVED);
+            }
+            else {
+                setPropertyEvent.setType(Event.PROPERTY_CHANGED);
+            }
+
+            events.add(setPropertyEvent.buildEvent());
+            // todo consider ways to generate events of (large) sub tree
         }
 
         private void moveNode(JsopTokenizer jsopTokenizer, EventTemplate eventTemplate, Collection<Event> events) {