You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by lu...@apache.org on 2004/07/06 19:03:56 UTC
cvs commit: jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods SubscribeMethod.java UnsubscribeMethod.java
luetzkendorf 2004/07/06 10:03:56
Added: webdavclient/clientlib/src/java/org/apache/webdav/lib/methods
SubscribeMethod.java UnsubscribeMethod.java
Log:
first methods for notification support added
Revision Changes Path
1.1 jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/SubscribeMethod.java
Index: SubscribeMethod.java
===================================================================
/*
* $Header: /home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/SubscribeMethod.java,v 1.1 2004/07/06 17:03:56 luetzkendorf Exp $
* $Revision: 1.1 $
* $Date: 2004/07/06 17:03:56 $
*
* ====================================================================
*
* Copyright 1999-2002 The Apache Software Foundation
*
* Licensed 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.webdav.lib.methods;
import java.io.IOException;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpConnection;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpState;
/**
* Implements the SUBSCRIBE method.
*
* @author Stefan L�tzkendorf
* @see <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/e2k3/e2k3/_webdav_subscribe.asp">Reference</a>
*/
public class SubscribeMethod extends XMLResponseMethodBase
implements DepthSupport
{
private static final String HEADER_SUBSCRIPTION_ID = "Subscription-Id";
private static final String HEADER_SUBSCRIPTION_LIFETIME = "Subscription-Lifetime";
private static final String HEADER_NOTIFICATION_TYPE = "Notification-Type";
private static final String HEADER_NOTIFICATION_DELAY = "Notification-Delay";
private static final String HEADER_DEPTH = "Depth";
private static final String HEADER_CALL_BACK = "Call-Back";
public static final String TYPE_UPDATE = "update";
public static final String TYPE_UPDATE_NEW_MEMBER = "update/newmember";
public static final String TYPE_DELETE = "delete";
public static final String TYPE_MOVE = "move";
private String callback = null;
private String notificationType = null;
private int depth = -1;
private long subsciptionLifetime = -1;
private long subscriptionId = -1;
private long notificationDelay = -1;
private long responsedSubscriptionLifetime = -1;
private long responsedSubscriptionId = -1;
public String getCallback()
{
return callback;
}
/**
* Sets the URI tha's to be notified if the subscribed event does occur.
*/
public void setCallback(String callback)
{
this.callback = callback;
}
public String getNotificationType()
{
return notificationType;
}
/**
* Sets the notification type, i.e. determines the events that are
* subscribed.
* @see {@link #TYPE_DELETE}, {@link #TYPE_MOVE},
* {@link #TYPE_UPDATE}, {@link #TYPE_UPDATE_NEW_MEMBER}
*/
public void setNotificationType(String notificationType)
{
this.notificationType = notificationType;
}
public long getSubsciptionLifetime()
{
return subsciptionLifetime;
}
/**
* Sets the duration of the subscription in seconds.
*/
public void setSubsciptionLifetime(long subsciptionLifetime)
{
this.subsciptionLifetime = subsciptionLifetime;
}
public long getSubscriptionId()
{
return subscriptionId;
}
/**
* Sets the ID of a subscription to be refreshed.
* @param subscriptionId
*/
public void setSubscriptionId(long subscriptionId)
{
this.subscriptionId = subscriptionId;
}
/**
* Sets the notification delay in seconds.
*/
public void setNotificationDelay(long delay) {
this.notificationDelay = delay;
}
public long getNotificationDelay() {
return this.notificationDelay;
}
public int getDepth()
{
return this.depth;
}
/**
* Sets the depth.
*/
public void setDepth(int depth)
{
switch(depth) {
case DEPTH_0:
case DEPTH_1:
case DEPTH_INFINITY:
this.depth = depth;
break;
default:
throw new IllegalArgumentException(
"Depth must be 0, 1 or "+DEPTH_INFINITY+".");
}
}
/**
* Returns the subscription ID responsed from the server.
* @return -1 if no subscription id was in the response
*/
public long getResponsedSubscriptionId() {
checkUsed();
return this.responsedSubscriptionId;
}
/**
* Returns the subscription lifetime responsed from the server.
* @return -1 if no subscription lifetime was given in the response
*/
public long getResponsedSubscriptionLifetime() {
checkUsed();
return this.responsedSubscriptionLifetime;
}
// --------------------------------------------------- WebdavMethod Methods
public String getName()
{
return "SUBSCRIBE";
}
public void recycle()
{
super.recycle();
this.callback = null;
this.depth = -1;
this.notificationDelay = -1;
this.notificationType = null;
this.responsedSubscriptionId = -1;
this.responsedSubscriptionLifetime = -1;
this.subsciptionLifetime = -1;
this.subscriptionId = -1;
}
protected void addRequestHeaders(HttpState state, HttpConnection conn)
throws IOException, HttpException
{
super.addRequestHeaders(state, conn);
if (this.callback != null) {
super.setRequestHeader(HEADER_CALL_BACK, this.callback);
}
if (this.depth > -1) {
super.setRequestHeader(HEADER_DEPTH, Integer.toString(this.depth));
}
if (this.notificationType != null) {
super.setRequestHeader(HEADER_NOTIFICATION_TYPE, this.notificationType);
}
if (this.subsciptionLifetime > -1) {
super.setRequestHeader(HEADER_SUBSCRIPTION_LIFETIME,
Long.toString(this.subsciptionLifetime));
}
if (this.subscriptionId > -1) {
super.setRequestHeader(HEADER_SUBSCRIPTION_ID, Long.toString(
this.subscriptionId));
}
if (this.notificationDelay > -1) {
super.setRequestHeader(HEADER_NOTIFICATION_DELAY, Long.toString(
this.notificationDelay));
}
}
/**
* Adds special checking of header values of the SUBSCRIBE method to
* the super class implementation.
*/
public void setRequestHeader(String headerName, String headerValue)
{
try {
if (headerName.equalsIgnoreCase(HEADER_DEPTH)){
setDepth(Integer.parseInt(headerValue));
}
else if(headerName.equals(HEADER_SUBSCRIPTION_ID)) {
setSubscriptionId(Long.parseLong(headerValue));
}
else if(headerName.equals(HEADER_SUBSCRIPTION_LIFETIME)) {
setSubscriptionId(Long.parseLong(headerValue));
}
else if(headerName.equals(HEADER_NOTIFICATION_DELAY)) {
setNotificationDelay(Long.parseLong(headerValue));
}
else {
super.setRequestHeader(headerName, headerValue);
}
} catch (NumberFormatException e) {
throw new IllegalArgumentException("Invalid header value '" +
headerValue + "' for header " + headerName + "!");
}
}
protected void processResponseHeaders(HttpState state, HttpConnection conn)
{
super.processResponseHeaders(state, conn);
Header header;
header = getResponseHeader(HEADER_SUBSCRIPTION_ID);
if (header != null) {
this.responsedSubscriptionId = Long.parseLong(header.getValue());
}
header = getRequestHeader(HEADER_SUBSCRIPTION_LIFETIME);
if (header != null) {
this.responsedSubscriptionLifetime = Long.parseLong(header.getValue());
}
}
}
1.1 jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/UnsubscribeMethod.java
Index: UnsubscribeMethod.java
===================================================================
// vi: set ts=3 sw=3:
package org.apache.webdav.lib.methods;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
import org.apache.commons.httpclient.HttpConnection;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpState;
/**
* Implements the UNSUBSCRIBE method.
*
* @author Stefan L�tzkendorf
* @see <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/e2k3/e2k3/_webdav_unsubscribe.asp">Reference</a>
*/
public class UnsubscribeMethod extends XMLResponseMethodBase
{
private static final String HEADER_SUBSCRIPTION_ID = "Subscription-Id";
private List subscriptionIds = new ArrayList();
/**
* Adds an ID for a subscription that is to be withdrawn.
*/
public void addSubscriptionId(long id) {
this.subscriptionIds.add(new Long(id));
}
// --------------------------------------------------- WebdavMethod Methods
public String getName()
{
return "UNSUBSCRIBE";
}
public void recycle()
{
this.subscriptionIds.clear();
}
protected void addRequestHeaders(HttpState state, HttpConnection conn)
throws IOException, HttpException
{
super.addRequestHeaders(state, conn);
if (this.subscriptionIds.size() > 0) {
StringBuffer b = new StringBuffer();
boolean first = true;
for (Iterator i = this.subscriptionIds.iterator(); i.hasNext();) {
if (first) first = false; else b.append(", ");
b.append(i.next());
}
super.addRequestHeader(HEADER_SUBSCRIPTION_ID, b.toString());
}
}
/**
* Adds special checking of header values of the UNSUBSCRIBE method to
* the super class implementation.
*/
public void setRequestHeader(String headerName, String headerValue)
{
if (headerName.equalsIgnoreCase(HEADER_SUBSCRIPTION_ID)){
StringTokenizer t = new StringTokenizer(headerValue, ", ");
try {
for(;t.hasMoreTokens();) {
addSubscriptionId(Long.parseLong(t.nextToken()));
}
} catch (NumberFormatException e) {
throw new IllegalArgumentException("Invalid header value '" +
headerValue + "' for header " + headerName + "!");
}
} else {
super.setRequestHeader(headerName, headerValue);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org
Re: cvs commit: jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods
SubscribeMethod.java UnsubscribeMethod.java
Posted by Oliver Zeigermann <ol...@zeigermann.de>.
Cool :)
Oliver
luetzkendorf@apache.org wrote:
> luetzkendorf 2004/07/06 10:03:56
>
> Added: webdavclient/clientlib/src/java/org/apache/webdav/lib/methods
> SubscribeMethod.java UnsubscribeMethod.java
> Log:
> first methods for notification support added
>
> Revision Changes Path
> 1.1 jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/SubscribeMethod.java
>
> Index: SubscribeMethod.java
> ===================================================================
> /*
> * $Header: /home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/SubscribeMethod.java,v 1.1 2004/07/06 17:03:56 luetzkendorf Exp $
> * $Revision: 1.1 $
> * $Date: 2004/07/06 17:03:56 $
> *
> * ====================================================================
> *
> * Copyright 1999-2002 The Apache Software Foundation
> *
> * Licensed 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.webdav.lib.methods;
>
> import java.io.IOException;
>
> import org.apache.commons.httpclient.Header;
> import org.apache.commons.httpclient.HttpConnection;
> import org.apache.commons.httpclient.HttpException;
> import org.apache.commons.httpclient.HttpState;
>
> /**
> * Implements the SUBSCRIBE method.
> *
> * @author Stefan Lützkendorf
> * @see <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/e2k3/e2k3/_webdav_subscribe.asp">Reference</a>
> */
> public class SubscribeMethod extends XMLResponseMethodBase
> implements DepthSupport
> {
>
> private static final String HEADER_SUBSCRIPTION_ID = "Subscription-Id";
> private static final String HEADER_SUBSCRIPTION_LIFETIME = "Subscription-Lifetime";
> private static final String HEADER_NOTIFICATION_TYPE = "Notification-Type";
> private static final String HEADER_NOTIFICATION_DELAY = "Notification-Delay";
> private static final String HEADER_DEPTH = "Depth";
> private static final String HEADER_CALL_BACK = "Call-Back";
>
> public static final String TYPE_UPDATE = "update";
> public static final String TYPE_UPDATE_NEW_MEMBER = "update/newmember";
> public static final String TYPE_DELETE = "delete";
> public static final String TYPE_MOVE = "move";
>
> private String callback = null;
> private String notificationType = null;
> private int depth = -1;
> private long subsciptionLifetime = -1;
> private long subscriptionId = -1;
> private long notificationDelay = -1;
>
> private long responsedSubscriptionLifetime = -1;
> private long responsedSubscriptionId = -1;
>
>
> public String getCallback()
> {
> return callback;
> }
> /**
> * Sets the URI tha's to be notified if the subscribed event does occur.
> */
> public void setCallback(String callback)
> {
> this.callback = callback;
> }
> public String getNotificationType()
> {
> return notificationType;
> }
> /**
> * Sets the notification type, i.e. determines the events that are
> * subscribed.
> * @see {@link #TYPE_DELETE}, {@link #TYPE_MOVE},
> * {@link #TYPE_UPDATE}, {@link #TYPE_UPDATE_NEW_MEMBER}
> */
> public void setNotificationType(String notificationType)
> {
> this.notificationType = notificationType;
> }
> public long getSubsciptionLifetime()
> {
> return subsciptionLifetime;
> }
> /**
> * Sets the duration of the subscription in seconds.
> */
> public void setSubsciptionLifetime(long subsciptionLifetime)
> {
> this.subsciptionLifetime = subsciptionLifetime;
> }
> public long getSubscriptionId()
> {
> return subscriptionId;
> }
> /**
> * Sets the ID of a subscription to be refreshed.
> * @param subscriptionId
> */
> public void setSubscriptionId(long subscriptionId)
> {
> this.subscriptionId = subscriptionId;
> }
> /**
> * Sets the notification delay in seconds.
> */
> public void setNotificationDelay(long delay) {
> this.notificationDelay = delay;
> }
> public long getNotificationDelay() {
> return this.notificationDelay;
> }
> public int getDepth()
> {
> return this.depth;
> }
> /**
> * Sets the depth.
> */
> public void setDepth(int depth)
> {
> switch(depth) {
> case DEPTH_0:
> case DEPTH_1:
> case DEPTH_INFINITY:
> this.depth = depth;
> break;
> default:
> throw new IllegalArgumentException(
> "Depth must be 0, 1 or "+DEPTH_INFINITY+".");
> }
> }
>
> /**
> * Returns the subscription ID responsed from the server.
> * @return -1 if no subscription id was in the response
> */
> public long getResponsedSubscriptionId() {
> checkUsed();
> return this.responsedSubscriptionId;
> }
> /**
> * Returns the subscription lifetime responsed from the server.
> * @return -1 if no subscription lifetime was given in the response
> */
> public long getResponsedSubscriptionLifetime() {
> checkUsed();
> return this.responsedSubscriptionLifetime;
> }
> // --------------------------------------------------- WebdavMethod Methods
>
> public String getName()
> {
> return "SUBSCRIBE";
> }
>
> public void recycle()
> {
> super.recycle();
> this.callback = null;
> this.depth = -1;
> this.notificationDelay = -1;
> this.notificationType = null;
> this.responsedSubscriptionId = -1;
> this.responsedSubscriptionLifetime = -1;
> this.subsciptionLifetime = -1;
> this.subscriptionId = -1;
> }
> protected void addRequestHeaders(HttpState state, HttpConnection conn)
> throws IOException, HttpException
> {
> super.addRequestHeaders(state, conn);
>
> if (this.callback != null) {
> super.setRequestHeader(HEADER_CALL_BACK, this.callback);
> }
> if (this.depth > -1) {
> super.setRequestHeader(HEADER_DEPTH, Integer.toString(this.depth));
> }
> if (this.notificationType != null) {
> super.setRequestHeader(HEADER_NOTIFICATION_TYPE, this.notificationType);
> }
> if (this.subsciptionLifetime > -1) {
> super.setRequestHeader(HEADER_SUBSCRIPTION_LIFETIME,
> Long.toString(this.subsciptionLifetime));
> }
> if (this.subscriptionId > -1) {
> super.setRequestHeader(HEADER_SUBSCRIPTION_ID, Long.toString(
> this.subscriptionId));
> }
> if (this.notificationDelay > -1) {
> super.setRequestHeader(HEADER_NOTIFICATION_DELAY, Long.toString(
> this.notificationDelay));
> }
> }
>
> /**
> * Adds special checking of header values of the SUBSCRIBE method to
> * the super class implementation.
> */
> public void setRequestHeader(String headerName, String headerValue)
> {
> try {
> if (headerName.equalsIgnoreCase(HEADER_DEPTH)){
> setDepth(Integer.parseInt(headerValue));
> }
> else if(headerName.equals(HEADER_SUBSCRIPTION_ID)) {
> setSubscriptionId(Long.parseLong(headerValue));
> }
> else if(headerName.equals(HEADER_SUBSCRIPTION_LIFETIME)) {
> setSubscriptionId(Long.parseLong(headerValue));
> }
> else if(headerName.equals(HEADER_NOTIFICATION_DELAY)) {
> setNotificationDelay(Long.parseLong(headerValue));
> }
> else {
> super.setRequestHeader(headerName, headerValue);
> }
> } catch (NumberFormatException e) {
> throw new IllegalArgumentException("Invalid header value '" +
> headerValue + "' for header " + headerName + "!");
> }
> }
>
> protected void processResponseHeaders(HttpState state, HttpConnection conn)
> {
> super.processResponseHeaders(state, conn);
>
> Header header;
>
> header = getResponseHeader(HEADER_SUBSCRIPTION_ID);
> if (header != null) {
> this.responsedSubscriptionId = Long.parseLong(header.getValue());
> }
>
> header = getRequestHeader(HEADER_SUBSCRIPTION_LIFETIME);
> if (header != null) {
> this.responsedSubscriptionLifetime = Long.parseLong(header.getValue());
> }
> }
> }
>
>
>
> 1.1 jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/UnsubscribeMethod.java
>
> Index: UnsubscribeMethod.java
> ===================================================================
> // vi: set ts=3 sw=3:
> package org.apache.webdav.lib.methods;
>
> import java.io.IOException;
> import java.util.ArrayList;
> import java.util.Iterator;
> import java.util.List;
> import java.util.StringTokenizer;
>
> import org.apache.commons.httpclient.HttpConnection;
> import org.apache.commons.httpclient.HttpException;
> import org.apache.commons.httpclient.HttpState;
>
>
> /**
> * Implements the UNSUBSCRIBE method.
> *
> * @author Stefan Lützkendorf
> * @see <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/e2k3/e2k3/_webdav_unsubscribe.asp">Reference</a>
> */
> public class UnsubscribeMethod extends XMLResponseMethodBase
> {
> private static final String HEADER_SUBSCRIPTION_ID = "Subscription-Id";
>
> private List subscriptionIds = new ArrayList();
>
> /**
> * Adds an ID for a subscription that is to be withdrawn.
> */
> public void addSubscriptionId(long id) {
> this.subscriptionIds.add(new Long(id));
> }
>
> // --------------------------------------------------- WebdavMethod Methods
>
> public String getName()
> {
> return "UNSUBSCRIBE";
> }
>
> public void recycle()
> {
> this.subscriptionIds.clear();
> }
>
> protected void addRequestHeaders(HttpState state, HttpConnection conn)
> throws IOException, HttpException
> {
> super.addRequestHeaders(state, conn);
> if (this.subscriptionIds.size() > 0) {
> StringBuffer b = new StringBuffer();
> boolean first = true;
> for (Iterator i = this.subscriptionIds.iterator(); i.hasNext();) {
> if (first) first = false; else b.append(", ");
> b.append(i.next());
> }
> super.addRequestHeader(HEADER_SUBSCRIPTION_ID, b.toString());
> }
> }
>
> /**
> * Adds special checking of header values of the UNSUBSCRIBE method to
> * the super class implementation.
> */
> public void setRequestHeader(String headerName, String headerValue)
> {
> if (headerName.equalsIgnoreCase(HEADER_SUBSCRIPTION_ID)){
> StringTokenizer t = new StringTokenizer(headerValue, ", ");
> try {
> for(;t.hasMoreTokens();) {
> addSubscriptionId(Long.parseLong(t.nextToken()));
> }
> } catch (NumberFormatException e) {
> throw new IllegalArgumentException("Invalid header value '" +
> headerValue + "' for header " + headerName + "!");
> }
> } else {
> super.setRequestHeader(headerName, headerValue);
> }
> }
> }
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: slide-dev-help@jakarta.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org