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 pn...@apache.org on 2005/03/04 19:14:32 UTC

cvs commit: jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav ControllableFolderWebdavAccessor.java ControllableResourceWebdavAccessor.java FolderWebdavAccessor.java PrincipalWebdavAccessor.java PrivilegeWebdavAccessor.java ResourceWebdavAccessor.java WebdavAccessor.java WorkspaceWebdavAccessor.java

pnever      2005/03/04 10:14:32

  Modified:    proposals/wvcm/src/org/apache/wvcm/store/webdav
                        ControllableFolderWebdavAccessor.java
                        ControllableResourceWebdavAccessor.java
                        FolderWebdavAccessor.java
                        PrincipalWebdavAccessor.java
                        PrivilegeWebdavAccessor.java
                        ResourceWebdavAccessor.java WebdavAccessor.java
                        WorkspaceWebdavAccessor.java
  Log:
  Merged RetryHandler from WVCM_1_0_BRANCH
  
  Revision  Changes    Path
  1.6       +5 -5      jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/ControllableFolderWebdavAccessor.java
  
  Index: ControllableFolderWebdavAccessor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/ControllableFolderWebdavAccessor.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ControllableFolderWebdavAccessor.java	30 Jul 2004 06:52:28 -0000	1.5
  +++ ControllableFolderWebdavAccessor.java	4 Mar 2005 18:14:31 -0000	1.6
  @@ -107,7 +107,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (MkcolMethod)retryHandler().executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  
  
  
  1.16      +11 -11    jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/ControllableResourceWebdavAccessor.java
  
  Index: ControllableResourceWebdavAccessor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/ControllableResourceWebdavAccessor.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- ControllableResourceWebdavAccessor.java	30 Jul 2004 06:52:28 -0000	1.15
  +++ ControllableResourceWebdavAccessor.java	4 Mar 2005 18:14:31 -0000	1.16
  @@ -126,7 +126,7 @@
           addLockTokens(method);
   
           try {
  -            client().executeMethod( method );
  +            method = (PutMethod)retryHandler().executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -183,7 +183,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (CheckoutMethod)retryHandler(req.reqBodyAsString()).executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -239,7 +239,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (CheckinMethod)retryHandler(req.reqBodyAsString()).executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -285,7 +285,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (UncheckoutMethod)retryHandler().executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -332,7 +332,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (VersionControlMethod)retryHandler().executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -387,7 +387,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (UpdateMethod)retryHandler(req.reqBodyAsString()).executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -444,7 +444,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (VersionControlMethod)retryHandler(req.reqBodyAsString()).executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  
  
  
  1.17      +7 -7      jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/FolderWebdavAccessor.java
  
  Index: FolderWebdavAccessor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/FolderWebdavAccessor.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- FolderWebdavAccessor.java	8 Sep 2004 12:27:40 -0000	1.16
  +++ FolderWebdavAccessor.java	4 Mar 2005 18:14:31 -0000	1.17
  @@ -188,7 +188,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (BindMethod)retryHandler(req.reqBodyAsString()).executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -251,7 +251,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (UnbindMethod)retryHandler(req.reqBodyAsString()).executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -316,7 +316,7 @@
           method.addRequestHeader( "Overwrite", (overwrite ? "T" : "F") );
           
           try {
  -            client().executeMethod( method );
  +            method = (RebindMethod)retryHandler(req.reqBodyAsString()).executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  
  
  
  1.4       +5 -5      jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/PrincipalWebdavAccessor.java
  
  Index: PrincipalWebdavAccessor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/PrincipalWebdavAccessor.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PrincipalWebdavAccessor.java	30 Jul 2004 06:52:28 -0000	1.3
  +++ PrincipalWebdavAccessor.java	4 Mar 2005 18:14:31 -0000	1.4
  @@ -106,7 +106,7 @@
           method.addRequestHeader( "Content-Length", "0" );
           
           try {
  -            client().executeMethod( method );
  +            method = (MkcolMethod)retryHandler().executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  
  
  
  1.4       +5 -5      jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/PrivilegeWebdavAccessor.java
  
  Index: PrivilegeWebdavAccessor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/PrivilegeWebdavAccessor.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PrivilegeWebdavAccessor.java	30 Jul 2004 06:52:28 -0000	1.3
  +++ PrivilegeWebdavAccessor.java	4 Mar 2005 18:14:31 -0000	1.4
  @@ -106,7 +106,7 @@
           method.addRequestHeader( "Content-Length", "0" );
           
           try {
  -            client().executeMethod( method );
  +            method = (MkcolMethod)retryHandler().executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  
  
  
  1.18      +126 -13   jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/ResourceWebdavAccessor.java
  
  Index: ResourceWebdavAccessor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/ResourceWebdavAccessor.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- ResourceWebdavAccessor.java	8 Sep 2004 12:27:40 -0000	1.17
  +++ ResourceWebdavAccessor.java	4 Mar 2005 18:14:31 -0000	1.18
  @@ -66,8 +66,10 @@
   import org.apache.wvcm.store.webdav.request.*;
   import org.apache.wvcm.store.webdav.response.*;
   
  +import java.io.IOException;
   import java.io.InputStream;
   import java.io.OutputStream;
  +import java.lang.reflect.Constructor;
   import java.util.HashMap;
   import java.util.Iterator;
   import java.util.List;
  @@ -81,6 +83,8 @@
   import javax.wvcm.SearchToken;
   import javax.wvcm.WvcmException;
   import javax.wvcm.WvcmException.ReasonCode;
  +import org.apache.commons.httpclient.Header;
  +import org.apache.commons.httpclient.HttpException;
   import org.apache.commons.httpclient.HttpMethod;
   import org.apache.commons.httpclient.HttpStatus;
   import org.apache.commons.httpclient.methods.EntityEnclosingMethod;
  @@ -136,6 +140,18 @@
           return getHttpClient( providerImpl, hostname, port );
       }
       
  +    protected RetryHandler retryHandler(InputStream content) {
  +        return new RetryHandler(content);
  +    }
  +    
  +    protected RetryHandler retryHandler(String content) {
  +        return new RetryHandler(content);
  +    }
  +    
  +    protected RetryHandler retryHandler() {
  +        return retryHandler((String)null);
  +    }
  +    
       /**
        * Return a new resource proxy at the location of the associated resource containing
        * the wanted properties. The exact resource type of the resulting resource proxy
  @@ -332,7 +348,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (PutMethod)retryHandler(content).executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -384,7 +400,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (ProppatchMethod)retryHandler(req.reqBodyAsString()).executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -455,7 +471,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (DeleteMethod)retryHandler().executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -541,7 +557,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (MoveMethod)retryHandler().executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -592,7 +608,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (CopyMethod)retryHandler().executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -796,7 +812,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (LabelMethod)retryHandler(req.reqBodyAsString()).executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -908,7 +924,7 @@
           addLockTokens(method);
           
           try {
  -            client().executeMethod( method );
  +            method = (AclMethod)retryHandler(req.reqBodyAsString()).executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -990,7 +1006,7 @@
               method.addRequestHeader( "Depth", "0" );
           
           try {
  -            client().executeMethod( method );
  +            method = (LockMethod)retryHandler(req.reqBodyAsString()).executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -1037,7 +1053,7 @@
           method.addRequestHeader( "Lock-Token", "<"+((LockTokenImpl)lockToken).getLockId()+">" );
           
           try {
  -            client().executeMethod( method );
  +            method = (UnlockMethod)retryHandler().executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  @@ -1067,6 +1083,103 @@
               method.releaseConnection();
           }
       }
  +    
  +    protected class RetryHandler {
  +        private int retryMax = 5;
  +        private long retryTimeout = 5000;
  +        private long retrySleep = 500;
  +        private InputStream content;
  +        private String contentAsStr;
  +        
  +        private int tries = 0;
  +        private int rc = -1;
  +        private long start = System.currentTimeMillis();
  +        
  +        public RetryHandler(InputStream content) {
  +            this.content = content;
  +            init();
  +        }
  +        
  +        public RetryHandler(String content) {
  +            this.contentAsStr = content;
  +            init();
  +        }
  +
  +        private void init() {
  +            try { this.retryMax = Integer.parseInt( (String)providerImpl.initParameter("retryMax") ); }
  +            catch (NumberFormatException e) {}
  +            try { this.retryTimeout = Integer.parseInt( (String)providerImpl.initParameter("retryTimeout") ); }
  +            catch (NumberFormatException e) {}
  +            try { this.retrySleep = Integer.parseInt( (String)providerImpl.initParameter("retrySleep") ); }
  +            catch (NumberFormatException e) {}
  +        }
  +        
  +        public boolean canRetry() {
  +            return (System.currentTimeMillis() - start) < retryTimeout &&
  +                tries < retryMax &&
  +                (rc == -1 || rc == HttpStatus.SC_CONFLICT);
  +        }
  +        
  +        public HttpMethod executeMethod(HttpMethod method) throws IOException, HttpException {
  +            while (canRetry()) {
  +                if (rc > 0) {
  +                    try {
  +                        Thread.currentThread().sleep(retrySleep);
  +                    } catch (InterruptedException e) {}
  +                    
  +                    // recycle method
  +                    Header[] headers = method.getRequestHeaders();
  +                    String resourcePath = method.getPath();
  +                    Class mclass = method.getClass();
  +                    Constructor mc = null;
  +                    HttpMethod newMethod = null;
  +                    try {
  +                        mc = mclass.getConstructor(new Class[]{String.class});
  +                        newMethod = (HttpMethod)mc.newInstance(new Object[]{resourcePath});
  +                        for (int i = 0; i < headers.length; i++) {
  +                            newMethod.setRequestHeader(headers[i]);
  +                        }
  +                        if (newMethod instanceof EntityEnclosingMethod) {
  +                            if (content != null) {
  +                                content.reset();
  +                                ((EntityEnclosingMethod)newMethod).setRequestBody(content);
  +                            }
  +                            else if (contentAsStr != null) {
  +                                ((EntityEnclosingMethod)newMethod).setRequestBody(contentAsStr);
  +                            }
  +                        }
  +                    }
  +                    catch (Exception e) {
  +                        e.printStackTrace();
  +                        //System.out.println("["+Thread.currentThread().getName()+"] RETRY FAILED tries="+tries+", max tries="+maxtries+", elapsed="+(System.currentTimeMillis() - start)+", timeout="+timeout);
  +                        return method;
  +                    }
  +                    method.releaseConnection();
  +                    method = newMethod;
  +                }
  +                rc = client().executeMethod(method);
  +                //System.out.println("["+Thread.currentThread().getName()+"] rc="+rc);
  +                tries++;
  +            }
  +            if (tries > 1) {
  +                if (rc != HttpStatus.SC_CONFLICT) {
  +                    //System.out.println("["+Thread.currentThread().getName()+"] RETRY SUCCESSFUL tries="+tries+", max tries="+retryMax+", elapsed="+(System.currentTimeMillis() - start)+", timeout="+retryTimeout);
  +                }
  +                else {
  +                    System.out.println("["+Thread.currentThread().getName()+"] RETRY FAILED tries="+tries+", max tries="+retryMax+", elapsed="+(System.currentTimeMillis() - start)+", timeout="+retryTimeout);
  +                }
  +            }
  +            else {
  +                if (rc != HttpStatus.SC_CONFLICT) {
  +                    //System.out.println("["+Thread.currentThread().getName()+"] FIRST TRY OK");
  +                }
  +                else {
  +                    System.out.println("["+Thread.currentThread().getName()+"] FIRST TRY FAILED tries="+tries+", max tries="+retryMax+", elapsed="+(System.currentTimeMillis() - start)+", timeout="+retryTimeout);
  +                }
  +            }
  +            return method;
  +        }
  +    }
   }
   
   
  
  
  
  1.15      +43 -51    jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/WebdavAccessor.java
  
  Index: WebdavAccessor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/WebdavAccessor.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- WebdavAccessor.java	30 Jul 2004 06:52:28 -0000	1.14
  +++ WebdavAccessor.java	4 Mar 2005 18:14:31 -0000	1.15
  @@ -62,13 +62,10 @@
    */
   
   package org.apache.wvcm.store.webdav;
  +import java.util.*;
  +import org.apache.commons.httpclient.*;
  +
   import java.io.IOException;
  -import java.util.Collections;
  -import java.util.Enumeration;
  -import java.util.HashMap;
  -import java.util.Hashtable;
  -import java.util.List;
  -import java.util.Map;
   import javax.wvcm.PropertyNameList;
   import javax.wvcm.PropertyNameList.PropertyName;
   import javax.wvcm.Provider;
  @@ -76,12 +73,6 @@
   import javax.wvcm.ProviderFactory.Callback.Authentication;
   import javax.wvcm.WvcmException;
   import javax.wvcm.WvcmException.ReasonCode;
  -import org.apache.commons.httpclient.HttpClient;
  -import org.apache.commons.httpclient.HttpException;
  -import org.apache.commons.httpclient.HttpMethod;
  -import org.apache.commons.httpclient.HttpState;
  -import org.apache.commons.httpclient.HttpStatus;
  -import org.apache.commons.httpclient.UsernamePasswordCredentials;
   import org.apache.webdav.methods.OptionsMethod;
   import org.apache.wvcm.ProviderImpl;
   import org.apache.wvcm.store.Accessor;
  @@ -96,30 +87,31 @@
    * @version $Revision$
    */
   public class WebdavAccessor implements Accessor {
  -
  +    
  +    // provider -> HttpClientWrapper
       private static Map httpclients = Collections.synchronizedMap( new HashMap() );
  -
  +    
       protected ProviderImpl providerImpl;
  -
  +    
       private String hostname = null;
       private int port = 0;
       private String defaultContext = null;
       private Hashtable headers = null;
  -
  +    
       // caches
       private String defaultContextPath = null;
  -
  +    
       static {
           // do preemptive authentication
           System.setProperty( "httpclient.authentication.preemptive", "true" );
       }
  -
  +    
       /**
        * Dummy constructor
        */
       public WebdavAccessor() {
       }
  -
  +    
       /**
        * Constructor.
        */
  @@ -136,7 +128,7 @@
           }
           initialize( hostname, port );
       }
  -
  +    
       /**
        * Return a list of {@link Folder} objects that identify folders
        * on the server that contain workspaces for the Provider of this accessor.
  @@ -147,14 +139,14 @@
       public List serverWorkspaceFolderList(PropertyNameList wantedPropertyList) throws WvcmException {
           PropertyName[] wsfollist = {PropertyName.WORKSPACE_FOLDER_LIST};
           OptionsRequest req = new OptionsRequest( new PropertyNameList(wsfollist) );
  -
  +        
           // TODO: prio=h, effort=0.5, descr=(switch to live property workspace-collection-set when implemeneted in server)
  -
  +        
           String resourcepath = defaultContextPath();
           OptionsMethod method = new OptionsMethod( resourcepath );
           method.setRequestBody( req.reqBodyAsString() );
           method.addRequestHeader( "Content-Type", "text/xml; charset=\"utf-8\"" );
  -
  +        
           try {
               client().executeMethod( method );
               int sc = method.getStatusCode();
  @@ -176,20 +168,20 @@
               throw new WvcmException(
                   "Read failed", resourcepath, ReasonCode.READ_FAILED, new Exception[]{e});
           }
  -
  +        
       }
  -
  +    
       // -------------------------------------------------------------------------
       // Non-interface methods
       // -------------------------------------------------------------------------
  -
  +    
       protected void initialize( String hostname, int port ) throws IllegalStateException {
           this.hostname = hostname;
           this.port = port;
           this.defaultContext = (String)providerImpl.initParameter( "context" );
           this.headers = (Hashtable)providerImpl.initParameter( "headers" );
       }
  -
  +    
       /**
        * Get the HttpClient of this accessor.
        *
  @@ -198,7 +190,7 @@
       protected HttpClientWrapper client() {
           return getHttpClient( providerImpl, hostname, port );
       }
  -
  +    
       /**
        * HttpClient factory.
        */
  @@ -206,7 +198,7 @@
           Host host = new Host( hostname, port );
           HttpClientWrapper result = (HttpClientWrapper)httpclients.get( host );
           HttpClient httpclient = null;
  -
  +        
           if( result == null ) {
               httpclient = new HttpClient();
               httpclient.getHostConfiguration().setHost( hostname, port, "http" );
  @@ -216,11 +208,11 @@
           else {
               httpclient = result.getClient();
           }
  -
  +        
           getAuthentication( hostname, result );
           return result;
       }
  -
  +    
       private void getAuthentication(String hostname, HttpClientWrapper httpclientWrapper) {
           String username = null;
           String password = null;
  @@ -231,7 +223,7 @@
               Authentication authentication = cb.getAuthentication(realm, new Integer(0));
               username = authentication.loginName();
               password = authentication.password();
  -
  +            
               if( authenticationChanged(hostname, realm, username, password, httpclientWrapper.getClient()) ) {
                   HttpState state = new HttpState();
                   state.setCredentials(
  @@ -240,7 +232,7 @@
               }
           }
       }
  -
  +    
       private boolean authenticationChanged( String hostname, String realm, String username, String password, HttpClient httpclient ) {
           boolean sameUsername = false;
           boolean samePassword = false;
  @@ -248,20 +240,20 @@
           UsernamePasswordCredentials currentCredentials = (currentState != null ? (UsernamePasswordCredentials)currentState.getCredentials(realm, hostname) : null);
           String currentUsername = (currentCredentials != null ? currentCredentials.getUserName() : null);
           String currentPassword = (currentCredentials != null ? currentCredentials.getPassword() : null);
  -
  +        
           if( username == null )
               sameUsername = (currentUsername == null);
           else
               sameUsername = username.equals( currentUsername );
  -
  +        
           if( password == null )
               samePassword = (currentPassword == null);
           else
               samePassword = password.equals( currentPassword );
  -
  +        
           return !(sameUsername && samePassword);
       }
  -
  +    
       /**
        * Get context path
        *
  @@ -276,7 +268,7 @@
           }
           return defaultContextPath;
       }
  -
  +    
       /**
        * Host class
        */
  @@ -284,21 +276,21 @@
           String host;
           int port;
           String thread;
  -
  +        
           Host( String host, int port ) {
               this.host = host;
               this.port = port;
               this.thread = Thread.currentThread().getName();
           }
  -
  +        
           public int hashCode() {
               return port;
           }
  -
  +        
           public boolean equals( Object o ) {
               if( !(o instanceof Host) )
                   return false;
  -
  +            
               Host a = (Host)o;
               if( host != null && !host.equals(a.host) || host == null && a.host != null )
                   return false;
  @@ -309,15 +301,15 @@
               return true;
           }
       }
  -
  +    
       /**
        * Wrapper for HttpClient
        */
       protected static class HttpClientWrapper {
  -
  +        
           private HttpClient client;
           private Provider provider;
  -
  +        
           /**
            * Constructor
            *
  @@ -327,7 +319,7 @@
               this.client = client;
               this.provider = provider;
           }
  -
  +        
           public int executeMethod(HttpMethod method) throws IOException, HttpException {
               ProviderImpl p = (ProviderImpl)provider;
               method.addRequestHeader("User-Agent", "wvcm");
  @@ -342,7 +334,7 @@
               }
               return client.executeMethod(method);
           }
  -
  +        
           public HttpClient getClient() {
               return client;
           }
  
  
  
  1.16      +5 -5      jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/WorkspaceWebdavAccessor.java
  
  Index: WorkspaceWebdavAccessor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/wvcm/src/org/apache/wvcm/store/webdav/WorkspaceWebdavAccessor.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- WorkspaceWebdavAccessor.java	30 Jul 2004 06:52:28 -0000	1.15
  +++ WorkspaceWebdavAccessor.java	4 Mar 2005 18:14:31 -0000	1.16
  @@ -105,7 +105,7 @@
           method.addRequestHeader( "Content-Length", "0" );
           
           try {
  -            client().executeMethod( method );
  +            method = (MkworkspaceMethod)retryHandler().executeMethod( method );
               int sc = method.getStatusCode();
               String st = method.getStatusText();
               switch( sc ) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org