You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2009/06/03 10:25:16 UTC

svn commit: r781295 - in /jackrabbit/trunk: jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/ jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/ jackrabbit-webdav/src/main/java/org/apache/jackrabbit/we...

Author: angela
Date: Wed Jun  3 08:25:16 2009
New Revision: 781295

URL: http://svn.apache.org/viewvc?rev=781295&view=rev
Log:
JCR-2108: JSR 283 Observation   (work in progress)

- adjust jcr-server

Modified:
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationConstants.java

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java?rev=781295&r1=781294&r2=781295&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java Wed Jun  3 08:25:16 2009
@@ -736,7 +736,13 @@
      */
     class EListener implements EventListener {
 
-        private static final int ALL_EVENTS = Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED | Event.PROPERTY_CHANGED | Event.PROPERTY_REMOVED;
+        private static final int ALL_EVENTS = Event.NODE_ADDED
+                | Event.NODE_REMOVED
+                | Event.PROPERTY_ADDED
+                | Event.PROPERTY_CHANGED
+                | Event.PROPERTY_REMOVED
+                | Event.NODE_MOVED
+                | Event.PERSIST;
 
         private final DavPropertyNameSet propNameSet;
         private MultiStatus ms;

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java?rev=781295&r1=781294&r2=781295&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/observation/SubscriptionImpl.java Wed Jun  3 08:25:16 2009
@@ -34,6 +34,7 @@
 import org.apache.jackrabbit.webdav.observation.SubscriptionInfo;
 import org.apache.jackrabbit.webdav.observation.DefaultEventType;
 import org.apache.jackrabbit.webdav.xml.DomUtil;
+import org.apache.jackrabbit.webdav.xml.Namespace;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
@@ -48,6 +49,7 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 /**
  * The <code>Subscription</code> class encapsulates a single subscription with
@@ -92,6 +94,18 @@
      */
     private static final String EVENT_PROPERTYCHANGED = "propertychanged";
 
+    /**
+     * Element representing the 'nodemoved' event type.
+     * @see javax.jcr.observation.Event#NODE_MOVED
+     */
+    private static final String EVENT_NODEMOVED = "nodemoved";
+
+    /**
+     * Element representing the 'persist' event type.
+     * @see javax.jcr.observation.Event#PERSIST
+     */
+    private static final String EVENT_PERSIST = "persist";
+
     private SubscriptionInfo info;
     private long expirationTime;
 
@@ -383,6 +397,8 @@
      * <li>{@link Event#PROPERTY_ADDED}</li>
      * <li>{@link Event#PROPERTY_REMOVED}</li>
      * <li>{@link Event#PROPERTY_CHANGED}</li>
+     * <li>{@link Event#NODE_MOVED}</li>
+     * <li>{@link Event#PERSIST}</li>
      * </ul>
      */
     public static EventType getEventType(int jcrEventType) {
@@ -403,6 +419,12 @@
             case Event.PROPERTY_REMOVED:
                 localName = EVENT_PROPERTYREMOVED;
                 break;
+            case Event.NODE_MOVED:
+                localName = EVENT_NODEMOVED;
+                break;
+            case Event.PERSIST:
+                localName = EVENT_PERSIST;
+                break;
             default: // no default
                 throw new IllegalArgumentException("Invalid JCR event type: " + jcrEventType);
         }
@@ -423,6 +445,8 @@
      * <li>{@link Event#PROPERTY_ADDED}</li>
      * <li>{@link Event#PROPERTY_REMOVED}</li>
      * <li>{@link Event#PROPERTY_CHANGED}</li>
+     * <li>{@link Event#NODE_MOVED}</li>
+     * <li>{@link Event#PERSIST}</li>
      * </ul>
      * @throws DavException if the given event type does not define a valid
      * JCR event type, such as returned by {@link #getEventType(int)}.
@@ -443,6 +467,10 @@
             eType = Event.PROPERTY_CHANGED;
         } else if (EVENT_PROPERTYREMOVED.equals(eventName)) {
             eType = Event.PROPERTY_REMOVED;
+        } else if (EVENT_NODEMOVED.equals(eventName)) {
+            eType = Event.NODE_MOVED;
+        } else if (EVENT_PERSIST.equals(eventName)) {
+            eType = Event.PERSIST;
         } else {
             throw new DavException(DavServletResponse.SC_UNPROCESSABLE_ENTITY, "Invalid event type: "+eventName);
         }
@@ -495,6 +523,42 @@
                 eType.appendChild(getEventType(event.getType()).toXml(document));
                 // user id
                 DomUtil.addChildElement(eventElem, XML_EVENTUSERID, NAMESPACE, event.getUserID());
+
+                // Additional JCR 2.0 event information
+                // userdata
+                try {
+                    DomUtil.addChildElement(eventElem, XML_EVENTUSERDATA, NAMESPACE, event.getUserData());
+                } catch (RepositoryException e) {
+                    log.error("Internal error while retrieving event user data.", e.getMessage());
+                }
+                // timestamp
+                try {
+                    DomUtil.addChildElement(eventElem, XML_EVENTDATE, NAMESPACE, String.valueOf(event.getDate()));
+                } catch (RepositoryException e) {
+                    log.error("Internal error while retrieving event date.", e.getMessage());
+                }
+                // identifier
+                try {
+                    DomUtil.addChildElement(eventElem, XML_EVENTIDENTIFIER, NAMESPACE, event.getIdentifier());
+                } catch (RepositoryException e) {
+                    log.error("Internal error while retrieving event identifier.", e.getMessage());
+                }
+                // info
+                Element info = DomUtil.addChildElement(eventElem, XML_EVENTINFO, NAMESPACE);
+                try {
+                    Map m = event.getInfo();
+                    for (Iterator it = m.keySet().iterator(); it.hasNext();) {
+                        String key = it.next().toString();
+                        Object value = m.get(key);
+                        if (value != null) {
+                            DomUtil.addChildElement(info, key, Namespace.EMPTY_NAMESPACE, value.toString());
+                        } else {
+                            DomUtil.addChildElement(info, key, Namespace.EMPTY_NAMESPACE);
+                        }
+                    }
+                } catch (RepositoryException e) {
+                    log.error("Internal error while retrieving event info.", e.getMessage());
+                }
             }
             return bundle;
         }

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationConstants.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationConstants.java?rev=781295&r1=781294&r2=781295&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationConstants.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationConstants.java Wed Jun  3 08:25:16 2009
@@ -69,7 +69,11 @@
     public static final String XML_EVENT_TRANSACTION_ID = "transactionid";
     public static final String XML_EVENT = "event";
     public static final String XML_EVENTUSERID = "eventuserid";
-
+    public static final String XML_EVENTUSERDATA = "eventuserdata";
+    public static final String XML_EVENTDATE = "eventdate";
+    public static final String XML_EVENTIDENTIFIER = "eventidentifier";
+    public static final String XML_EVENTINFO = "eventinfo";
+    
     //---< Property Names >-----------------------------------------------------
     /**
      * The protected subscription discovery property is used to find out about