remm        01/04/18 14:05:42

  Modified:    src/webdav/client/src/org/apache/webdav/lib
                        RequestOutputStream.java ResponseInputStream.java
                        WebdavClient.java
  Log:
  - Allow to register only one interceptor of each type. That makes the code
    simpler.
  - Start calling the hooks in conection interceptor.
  
  Revision  Changes    Path
  1.6       +14 -18    
jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/RequestOutputStream.java
  
  Index: RequestOutputStream.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/RequestOutputStream.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- RequestOutputStream.java  2001/04/13 01:39:17     1.5
  +++ RequestOutputStream.java  2001/04/18 21:05:40     1.6
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/RequestOutputStream.java,v
 1.5 2001/04/13 01:39:17 remm Exp $
  - * $Revision: 1.5 $
  - * $Date: 2001/04/13 01:39:17 $
  + * $Header: 
/home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/RequestOutputStream.java,v
 1.6 2001/04/18 21:05:40 remm Exp $
  + * $Revision: 1.6 $
  + * $Date: 2001/04/18 21:05:40 $
    *
    * ====================================================================
    *
  @@ -74,7 +74,7 @@
    * Socket output stream wrapper.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Remy Maucherat</a>
  - * @version $Revision: 1.5 $ $Date: 2001/04/13 01:39:17 $
  + * @version $Revision: 1.6 $ $Date: 2001/04/18 21:05:40 $
    */
   
   public class RequestOutputStream
  @@ -104,7 +104,7 @@
       /**
        * Stream interceptors.
        */
  -    protected StreamInterceptor[] interceptors = null;
  +    protected StreamInterceptor interceptor = null;
   
   
       /**
  @@ -175,10 +175,10 @@
   
   
       /**
  -     * Get stream interceptors.
  +     * Get stream interceptor.
        */
  -    public void setInterceptors(StreamInterceptor[] interceptors) {
  -        this.interceptors = interceptors;
  +    public void setInterceptor(StreamInterceptor interceptor) {
  +        this.interceptor = interceptor;
       }
   
   
  @@ -241,11 +241,9 @@
       public void write(int b)
           throws IOException {
   
  -        // Invoke all interceptors
  -        if (interceptors != null) {
  -            for (int i = 0; i < interceptors.length; i++) {
  -                interceptors[i].bytesWrite(null, b, 1);
  -            }
  +        // Invoke interceptor
  +        if (interceptor != null) {
  +            interceptor.bytesWrite(null, b, 1);
           }
   
           if (useChunking) {
  @@ -265,11 +263,9 @@
       public void write(byte[] b, int off, int len)
           throws IOException {
   
  -        // Invoke all interceptors
  -        if (interceptors != null) {
  -            for (int i = 0; i < interceptors.length; i++) {
  -                interceptors[i].bytesWrite(b, off, len);
  -            }
  +        // Invoke interceptor
  +        if (interceptor != null) {
  +            interceptor.bytesWrite(b, off, len);
           }
   
           if (useChunking) {
  
  
  
  1.9       +11 -13    
jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/ResponseInputStream.java
  
  Index: ResponseInputStream.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/ResponseInputStream.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ResponseInputStream.java  2001/04/14 02:11:38     1.8
  +++ ResponseInputStream.java  2001/04/18 21:05:41     1.9
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/ResponseInputStream.java,v
 1.8 2001/04/14 02:11:38 remm Exp $
  - * $Revision: 1.8 $
  - * $Date: 2001/04/14 02:11:38 $
  + * $Header: 
/home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/ResponseInputStream.java,v
 1.9 2001/04/18 21:05:41 remm Exp $
  + * $Revision: 1.9 $
  + * $Date: 2001/04/18 21:05:41 $
    *
    * ====================================================================
    *
  @@ -74,7 +74,7 @@
    * Socket input stream wrapper.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Remy Maucherat</a>
  - * @version $Revision: 1.8 $ $Date: 2001/04/14 02:11:38 $
  + * @version $Revision: 1.9 $ $Date: 2001/04/18 21:05:41 $
    */
   
   public class ResponseInputStream
  @@ -122,9 +122,9 @@
   
   
       /**
  -     * Stream interceptors.
  +     * Stream interceptor.
        */
  -    protected StreamInterceptor[] interceptors = null;
  +    protected StreamInterceptor interceptor = null;
   
   
       /**
  @@ -186,10 +186,10 @@
   
   
       /**
  -     * Get stream interceptors.
  +     * Get stream interceptor.
        */
  -    public void setInterceptors(StreamInterceptor[] interceptors) {
  -        this.interceptors = interceptors;
  +    public void setInterceptor(StreamInterceptor interceptor) {
  +        this.interceptor = interceptor;
       }
   
   
  @@ -378,10 +378,8 @@
   
           }
           
  -        if (interceptors != null) {
  -            for (int i = 0; i < interceptors.length; i++) {
  -                interceptors[i].bytesRead(buffer, 0, length);
  -            }
  +        if (interceptor != null) {
  +            interceptor.bytesRead(buffer, 0, length);
           }
   
           return true;
  
  
  
  1.38      +48 -37    
jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/WebdavClient.java
  
  Index: WebdavClient.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/WebdavClient.java,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- WebdavClient.java 2001/04/18 18:12:35     1.37
  +++ WebdavClient.java 2001/04/18 21:05:41     1.38
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/WebdavClient.java,v
 1.37 2001/04/18 18:12:35 remm Exp $
  - * $Revision: 1.37 $
  - * $Date: 2001/04/18 18:12:35 $
  + * $Header: 
/home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/WebdavClient.java,v
 1.38 2001/04/18 21:05:41 remm Exp $
  + * $Revision: 1.38 $
  + * $Date: 2001/04/18 21:05:41 $
    *
    * ====================================================================
    *
  @@ -186,15 +186,13 @@
       /**
        * Stream interceptors.
        */
  -    protected StreamInterceptor[] streamInterceptors = 
  -        new StreamInterceptor[0];
  +    protected StreamInterceptor streamInterceptor = null;
   
   
       /**
        * Connection interceptors.
        */
  -    protected ConnectionInterceptor[] connectionInterceptors = 
  -        new ConnectionInterceptor[0];
  +    protected ConnectionInterceptor connectionInterceptor = null;
   
   
       /**
  @@ -271,49 +269,36 @@
   
   
       /**
  -     * Add stream interceptor.
  +     * Set stream interceptor.
        */
  -    public synchronized void addStreamInterceptor
  +    public void setStreamInterceptor
           (StreamInterceptor streamInterceptor) {
  -        StreamInterceptor[] newStreamInterceptors =
  -            new StreamInterceptor[streamInterceptors.length + 1];
  -        for (int i = 0; i < streamInterceptors.length; i++) {
  -            newStreamInterceptors[i] = streamInterceptors[i];
  -        }
  -        newStreamInterceptors[streamInterceptors.length] = streamInterceptor;
  -        streamInterceptors = newStreamInterceptors;
  +        this.streamInterceptor = streamInterceptor;
       }
   
   
       /**
  -     * Get stream interceptors.
  +     * Get stream interceptor.
        */
  -    StreamInterceptor[] getStreamInterceptors() {
  -        return streamInterceptors;
  +    StreamInterceptor getStreamInterceptor() {
  +        return streamInterceptor;
       }
   
   
       /**
  -     * Add connector interceptor.
  +     * Set connection interceptor.
        */
  -    public synchronized void addConnectionInterceptor
  +    public void setConnectionInterceptor
           (ConnectionInterceptor connectionInterceptor) {
  -        ConnectionInterceptor[] newConnectionInterceptors =
  -            new ConnectionInterceptor[connectionInterceptors.length + 1];
  -        for (int i = 0; i < connectionInterceptors.length; i++) {
  -            newConnectionInterceptors[i] = connectionInterceptors[i];
  -        }
  -        newConnectionInterceptors[connectionInterceptors.length] = 
  -            connectionInterceptor;
  -        connectionInterceptors = newConnectionInterceptors;
  +        this.connectionInterceptor = connectionInterceptor;
       }
   
   
       /**
  -     * Get connection interceptors.
  +     * Get connection interceptor.
        */
  -    ConnectionInterceptor[] getConnectionInterceptors() {
  -        return connectionInterceptors;
  +    ConnectionInterceptor getConnectionInterceptor() {
  +        return connectionInterceptor;
       }
   
   
  @@ -444,14 +429,20 @@
                       methodProcessed = true;
                   } else {
                       if (!methodProcessed) {
  +
  +                        if (connectionInterceptor != null) {
  +                            connectionInterceptor.retry
  +                                (method.getStatusCode());
  +                        }
  +
                           // Consume bytes returned (if any)
                           method.processResponseHeaders(responseHeaders);
                           ResponseInputStream responseInputStream =
                               new ResponseInputStream(input, responseHeaders);
                           // FIXME : Really set the interceptors here ?
                           // The content is meant to be discarded
  -                        //responseInputStream.setInterceptors
  -                        //    (streamInterceptors);
  +                        //responseInputStream.setInterceptor
  +                        //    (streamInterceptor);
                           responseInputStream.close();
                           if (closeOutput ||
                               needToCloseConnection(method, responseHeaders)) {
  @@ -463,6 +454,9 @@
                   }
   
               } catch (IOException e) {
  +                if (connectionInterceptor != null) {
  +                    connectionInterceptor.error(method.getStatusCode(), e);
  +                }
                   if (debug > 1)
                       e.printStackTrace();
                   // If something goes wrong, disconnect, then reconnect
  @@ -473,6 +467,9 @@
                   }
                   openConnection();
               } catch (WebdavException e) {
  +                if (connectionInterceptor != null) {
  +                    connectionInterceptor.error(e.getStatusCode(), e);
  +                }
                   // During communication, save the status code.
                   if (e.getStatusCode() > 0)
                       method.setStatusCode(e.getStatusCode());
  @@ -501,7 +498,7 @@
           // Parse response
           ResponseInputStream responseInputStream = 
               new ResponseInputStream(input, responseHeaders);
  -        responseInputStream.setInterceptors(streamInterceptors);
  +        responseInputStream.setInterceptor(streamInterceptor);
   
           method.parseResponse(responseInputStream);
   
  @@ -575,11 +572,16 @@
               input = socket.getInputStream();
               output = socket.getOutputStream();
           } catch (IOException e) {
  +
  +            if (connectionInterceptor != null) {
  +                connectionInterceptor.error(-1, e);
  +            }
  +
               // Connection is probably half closed
               // Closing the connection and trying again
               if (socket != null)
                   socket.close();
  -
  +            
               if (debug > 0)
                   System.out.println("Reopen connection after IOException: Host:"
                       + sessionHost + " Port:" + sessionPort);
  @@ -588,6 +590,10 @@
               output = socket.getOutputStream();
           }
   
  +        if (connectionInterceptor != null) {
  +            connectionInterceptor.connect();
  +        }
  +
       }
   
   
  @@ -606,11 +612,16 @@
           if (socket != null)
               socket.close();
           socket = null;
  +
           try {
               Thread.sleep(1);
           } catch (Exception ex) {
           }
   
  +        if (connectionInterceptor != null) {
  +            connectionInterceptor.disconnect();
  +        }
  +
       }
   
   
  @@ -718,7 +729,7 @@
   
           RequestOutputStream requestOutputStream = 
               new RequestOutputStream(output);
  -        requestOutputStream.setInterceptors(streamInterceptors);
  +        requestOutputStream.setInterceptor(streamInterceptor);
   
           if (method.isStreamedQuery()) {
               if ((http11) && (method.getHeader("Content-Length") == null)) {
  
  
  

Reply via email to