You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by im...@apache.org on 2006/10/03 21:49:25 UTC
svn commit: r452605 - in
/jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav:
WebdavFileObject.java WebdavMethodRetryHandler.java
Author: imario
Date: Tue Oct 3 12:49:25 2006
New Revision: 452605
URL: http://svn.apache.org/viewvc?view=rev&rev=452605
Log:
VFS-76: implemented retry operation.
Due to the limitation of the used webdavlib only a handful of operations are restartable yet.
Added:
jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav/WebdavMethodRetryHandler.java (with props)
Modified:
jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav/WebdavFileObject.java
Modified: jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav/WebdavFileObject.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav/WebdavFileObject.java?view=diff&rev=452605&r1=452604&r2=452605
==============================================================================
--- jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav/WebdavFileObject.java (original)
+++ jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav/WebdavFileObject.java Tue Oct 3 12:49:25 2006
@@ -16,6 +16,7 @@
package org.apache.commons.vfs.provider.webdav;
import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.HttpMethodBase;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.HttpURL;
import org.apache.commons.vfs.FileObject;
@@ -27,9 +28,9 @@
import org.apache.commons.vfs.provider.AbstractRandomAccessContent;
import org.apache.commons.vfs.provider.GenericFileName;
import org.apache.commons.vfs.provider.URLFileName;
+import org.apache.commons.vfs.util.FileObjectUtils;
import org.apache.commons.vfs.util.MonitorOutputStream;
import org.apache.commons.vfs.util.RandomAccessMode;
-import org.apache.commons.vfs.util.FileObjectUtils;
import org.apache.webdav.lib.BaseProperty;
import org.apache.webdav.lib.WebdavResource;
import org.apache.webdav.lib.methods.DepthSupport;
@@ -134,6 +135,7 @@
/* now fill the dav properties */
String pathEncoded = name.getPathQueryEncoded(urlCharset);
final OptionsMethod optionsMethod = new OptionsMethod(pathEncoded);
+ configureMethod(optionsMethod);
try
{
optionsMethod.setFollowRedirects(true);
@@ -203,6 +205,11 @@
}
}
+ protected void configureMethod(HttpMethodBase httpMethod)
+ {
+ httpMethod.setMethodRetryHandler(WebdavMethodRetryHandler.getInstance());
+ }
+
private void setAllowedMethods(Enumeration allowedMethods)
{
this.allowedMethods = new TreeSet();
@@ -236,6 +243,7 @@
}
final OptionsMethod optionsMethod = new OptionsMethod(getName().getPath());
+ configureMethod(optionsMethod);
try
{
optionsMethod.setFollowRedirects(true);
@@ -549,6 +557,7 @@
}
final OptionsMethod optionsMethod = new OptionsMethod(getName().getPath());
+ configureMethod(optionsMethod);
try
{
optionsMethod.setFollowRedirects(true);
Added: jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav/WebdavMethodRetryHandler.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav/WebdavMethodRetryHandler.java?view=auto&rev=452605
==============================================================================
--- jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav/WebdavMethodRetryHandler.java (added)
+++ jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav/WebdavMethodRetryHandler.java Tue Oct 3 12:49:25 2006
@@ -0,0 +1,43 @@
+package org.apache.commons.vfs.provider.webdav;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpURL;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.MethodRetryHandler;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.HttpConnection;
+import org.apache.commons.httpclient.HttpRecoverableException;
+import org.apache.commons.vfs.FileSystemOptions;
+import org.apache.commons.vfs.FileSystemException;
+import org.apache.commons.vfs.UserAuthenticator;
+import org.apache.commons.vfs.UserAuthenticationData;
+import org.apache.commons.vfs.util.UserAuthenticatorUtils;
+import org.apache.webdav.lib.WebdavResource;
+
+import java.io.IOException;
+
+/**
+ * A retry handler which will retry a failed webdav method one time.<br />
+ * Now that webdavlib didnt support adding a MethodRetryHandler only a few operations are restartable yet.
+ *
+ * @author <a href="mailto:imario@apache.org">Mario Ivankovits</a>
+ * @version $Revision$ $Date$
+ */
+public class WebdavMethodRetryHandler implements MethodRetryHandler
+{
+ private final static WebdavMethodRetryHandler INSTANCE = new WebdavMethodRetryHandler();
+
+ private WebdavMethodRetryHandler()
+ {
+ }
+
+ public static WebdavMethodRetryHandler getInstance()
+ {
+ return INSTANCE;
+ }
+
+ public boolean retryMethod(HttpMethod method, HttpConnection connection, HttpRecoverableException recoverableException, int executionCount, boolean requestSent)
+ {
+ return executionCount < 2;
+ }
+}
Propchange: jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav/WebdavMethodRetryHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav/WebdavMethodRetryHandler.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: jakarta/commons/proper/vfs/trunk/src/java/org/apache/commons/vfs/provider/webdav/WebdavMethodRetryHandler.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org