You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2007/02/13 10:14:21 UTC

svn commit: r506917 - in /jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav: ./ client/methods/ header/ observation/

Author: mreutegg
Date: Tue Feb 13 01:14:16 2007
New Revision: 506917

URL: http://svn.apache.org/viewvc?view=rev&rev=506917
Log:
Add PollTimeout header (required for spi2dav)

Added:
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/header/PollTimeoutHeader.java   (with props)
Modified:
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PollMethod.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/header/TimeoutHeader.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationConstants.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationDavServletRequest.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationResource.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/SubscriptionManager.java

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java?view=diff&rev=506917&r1=506916&r2=506917
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java Tue Feb 13 01:14:16 2007
@@ -22,6 +22,7 @@
 import org.apache.jackrabbit.webdav.header.LabelHeader;
 import org.apache.jackrabbit.webdav.header.OverwriteHeader;
 import org.apache.jackrabbit.webdav.header.TimeoutHeader;
+import org.apache.jackrabbit.webdav.header.PollTimeoutHeader;
 import org.apache.jackrabbit.webdav.lock.LockInfo;
 import org.apache.jackrabbit.webdav.lock.Scope;
 import org.apache.jackrabbit.webdav.lock.Type;
@@ -583,6 +584,13 @@
      */
     public String getSubscriptionId() {
         return CodedUrlHeader.parse(httpRequest, ObservationConstants.HEADER_SUBSCRIPTIONID).getCodedUrl();
+    }
+
+    /**
+     * @see org.apache.jackrabbit.webdav.observation.ObservationDavServletRequest#getPollTimeout()
+     */
+    public long getPollTimeout() {
+        return PollTimeoutHeader.parseHeader(httpRequest, 0).getTimeout();
     }
 
     /**

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PollMethod.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PollMethod.java?view=diff&rev=506917&r1=506916&r2=506917
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PollMethod.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PollMethod.java Tue Feb 13 01:14:16 2007
@@ -20,7 +20,6 @@
 import org.apache.jackrabbit.webdav.DavMethods;
 import org.apache.jackrabbit.webdav.DavServletResponse;
 import org.apache.jackrabbit.webdav.DavException;
-import org.apache.jackrabbit.webdav.DavConstants;
 import org.apache.jackrabbit.webdav.xml.DomUtil;
 import org.apache.jackrabbit.webdav.xml.ElementIterator;
 import org.apache.jackrabbit.webdav.observation.ObservationConstants;
@@ -44,8 +43,16 @@
     private EventDiscovery eventDiscovery;
 
     public PollMethod(String uri, String subscriptionId) {
+        this(uri, subscriptionId, 0);
+    }
+
+    public PollMethod(String uri, String subscriptionId, long timeout) {
         super(uri);
         setRequestHeader(ObservationConstants.HEADER_SUBSCRIPTIONID, subscriptionId);
+        if (timeout > 0) {
+            setRequestHeader(ObservationConstants.HEADER_POLL_TIMEOUT,
+                    String.valueOf(timeout));
+        }
     }
 
     public EventDiscovery getResponseAsEventDiscovery() throws IOException, DavException {

Added: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/header/PollTimeoutHeader.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/header/PollTimeoutHeader.java?view=auto&rev=506917
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/header/PollTimeoutHeader.java (added)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/header/PollTimeoutHeader.java Tue Feb 13 01:14:16 2007
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.webdav.header;
+
+import org.apache.jackrabbit.webdav.observation.ObservationConstants;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <code>PollTimeoutHeader</code> implements a timeout header for subscription
+ * polling.
+ */
+public class PollTimeoutHeader extends TimeoutHeader {
+
+    public PollTimeoutHeader(long timeout) {
+        super(timeout);
+    }
+
+    public String getHeaderName() {
+        return ObservationConstants.HEADER_POLL_TIMEOUT;
+    }
+
+    /**
+     * Parses the request timeout header and converts it into a new
+     * <code>PollTimeoutHeader</code> object.<br>The default value is used as
+     * fallback if the String is not parseable.
+     *
+     * @param request
+     * @param defaultValue
+     * @return a new PollTimeoutHeader object.
+     */
+    public static PollTimeoutHeader parseHeader(HttpServletRequest request, long defaultValue) {
+        String timeoutStr = request.getHeader(ObservationConstants.HEADER_POLL_TIMEOUT);
+        long timeout = parse(timeoutStr, defaultValue);
+        return new PollTimeoutHeader(timeout);
+    }
+}

Propchange: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/header/PollTimeoutHeader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/header/TimeoutHeader.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/header/TimeoutHeader.java?view=diff&rev=506917&r1=506916&r2=506917
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/header/TimeoutHeader.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/header/TimeoutHeader.java Tue Feb 13 01:14:16 2007
@@ -67,7 +67,7 @@
      * into a long indicating the number of milliseconds until expiration time
      * is reached.<br>
      * NOTE: If the timeout String equals to {@link #TIMEOUT_INFINITE 'infinite'}
-     * {@link Long.MAX_VALUE} is returned. If the Sting is invalid or is in an
+     * {@link Long#MAX_VALUE} is returned. If the Sting is invalid or is in an
      * invalid format that cannot be parsed, the default value is returned.
      *
      * @param timeoutStr

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?view=diff&rev=506917&r1=506916&r2=506917
==============================================================================
--- 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 Tue Feb 13 01:14:16 2007
@@ -38,6 +38,11 @@
      */
     public static final String HEADER_SUBSCRIPTIONID = "SubscriptionId";
 
+    /**
+     * The PollTimeout request header.
+     */
+    public static final String HEADER_POLL_TIMEOUT = "PollTimeout";
+
     //---< XML Element, Attribute Names >---------------------------------------
     /**
      * subscription Xml element<br>

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationDavServletRequest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationDavServletRequest.java?view=diff&rev=506917&r1=506916&r2=506917
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationDavServletRequest.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationDavServletRequest.java Tue Feb 13 01:14:16 2007
@@ -34,6 +34,14 @@
     public String getSubscriptionId();
 
     /**
+     * Returns the {@link ObservationConstants#HEADER_POLL_TIMEOUT PollTimeout header}
+     * or 0 (zero) if no such header is present.
+     *
+     * @return milliseconds indicating length of the poll timeout.
+     */
+    public long getPollTimeout();
+
+    /**
      * Return a {@link SubscriptionInfo} object representing the subscription
      * info present in the SUBSCRIBE request body or <code>null</code> if
      * retrieving the subscription info fails.

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationResource.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationResource.java?view=diff&rev=506917&r1=506916&r2=506917
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationResource.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/ObservationResource.java Tue Feb 13 01:14:16 2007
@@ -64,7 +64,10 @@
      *
      * @param subscriptionId as present in the
      * {@link ObservationConstants#HEADER_SUBSCRIPTIONID SubscriptionId} header.
+     * @param timeout as present in the
+     * {@link ObservationConstants#HEADER_POLL_TIMEOUT} header or 0 (zero) if
+     * none is present.
      * @return <code>EventDiscovery</code> object
      */
-    public EventDiscovery poll(String subscriptionId) throws DavException;
+    public EventDiscovery poll(String subscriptionId, long timeout) throws DavException;
 }

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/SubscriptionManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/SubscriptionManager.java?view=diff&rev=506917&r1=506916&r2=506917
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/SubscriptionManager.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/observation/SubscriptionManager.java Tue Feb 13 01:14:16 2007
@@ -59,9 +59,11 @@
      * Retrieve the list of events that occured since the last poll.
      *
      * @param subscriptionId indentifier for the subscription
+     * @param timeout        the time in milliseconds to wait at most for events
+     *                       if none is present currently.
      * @param resource
      * @return
      */
-    public EventDiscovery poll(String subscriptionId, ObservationResource resource)
+    public EventDiscovery poll(String subscriptionId, long timeout, ObservationResource resource)
             throws DavException;
 }