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 re...@apache.org on 2001/04/13 03:39:17 UTC

cvs commit: jakarta-slide/src/webdav/client/src/org/apache/webdav/util WebdavSession.java

remm        01/04/12 18:39:17

  Modified:    src/webdav/client/src/org/apache/webdav/lib
                        RequestOutputStream.java ResponseInputStream.java
                        WebdavClient.java
               src/webdav/client/src/org/apache/webdav/util
                        WebdavSession.java
  Removed:     src/webdav/client/src/org/apache/webdav/lib
                        ProgressEvent.java ProgressListener.java
                        ProgressUtil.java
  Log:
  - Use the new interceptors. They are more lightweight than the old event-based
    mechanism (which is critical here, since the notifications happen each time
    bytes are read or written), but less flexible, as it is not as easy to forward events.
  
  Revision  Changes    Path
  1.5       +34 -20    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.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- RequestOutputStream.java	2001/04/11 16:02:01	1.4
  +++ RequestOutputStream.java	2001/04/13 01:39:17	1.5
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/RequestOutputStream.java,v 1.4 2001/04/11 16:02:01 jericho Exp $
  - * $Revision: 1.4 $
  - * $Date: 2001/04/11 16:02:01 $
  + * $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 $
    *
    * ====================================================================
    *
  @@ -74,7 +74,7 @@
    * Socket output stream wrapper.
    *
    * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
  - * @version $Revision: 1.4 $ $Date: 2001/04/11 16:02:01 $
  + * @version $Revision: 1.5 $ $Date: 2001/04/13 01:39:17 $
    */
   
   public class RequestOutputStream
  @@ -102,6 +102,12 @@
   
   
       /**
  +     * Stream interceptors.
  +     */
  +    protected StreamInterceptor[] interceptors = null;
  +
  +
  +    /**
        * Has this stream been closed?
        */
       protected boolean closed = false;
  @@ -149,12 +155,6 @@
       private byte one[] = "1".getBytes();
   
   
  -    /**
  -     * The utility of the process event and listener.
  -     */
  -    private ProgressUtil streamProgress = new ProgressUtil();
  -
  -
       // ------------------------------------------------------------- Properties
   
   
  @@ -174,6 +174,14 @@
       }
   
   
  +    /**
  +     * Get stream interceptors.
  +     */
  +    public void setInterceptors(StreamInterceptor[] interceptors) {
  +        this.interceptors = interceptors;
  +    }
  +
  +
       // --------------------------------------------------------- Public Methods
   
   
  @@ -232,6 +240,14 @@
        */
       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);
  +            }
  +        }
  +
           if (useChunking) {
               stream.write(one, 0, one.length);
               stream.write(crlf, 0, crlf.length);
  @@ -248,18 +264,22 @@
        */
       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);
  +            }
  +        }
  +
           if (useChunking) {
               byte chunkHeader[] =
                   (Integer.toHexString(len) + "\r\n").getBytes();
               stream.write(chunkHeader, 0, chunkHeader.length);
               stream.write(b, off, len);
               stream.write(endChunk, 0, endChunk.length);
  -            // Make the progress event.
  -            streamProgress.fireProgress(ProgressEvent.PUT_ACTION, (long) len);
           } else {
               stream.write(b, off, len);
  -            // Make the progress event.
  -            streamProgress.fireProgress(ProgressEvent.REQUEST, (long) len);
           }
       }
   
  @@ -281,10 +301,4 @@
       }
   
   
  -    /**
  -     * Get the utility of this progress event and listener.
  -     */
  -    public ProgressUtil getProgressUtil() {
  -        return streamProgress;
  -    }
   }
  
  
  
  1.7       +30 -18    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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ResponseInputStream.java	2001/04/11 16:02:01	1.6
  +++ ResponseInputStream.java	2001/04/13 01:39:17	1.7
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/ResponseInputStream.java,v 1.6 2001/04/11 16:02:01 jericho Exp $
  - * $Revision: 1.6 $
  - * $Date: 2001/04/11 16:02:01 $
  + * $Header: /home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/ResponseInputStream.java,v 1.7 2001/04/13 01:39:17 remm Exp $
  + * $Revision: 1.7 $
  + * $Date: 2001/04/13 01:39:17 $
    *
    * ====================================================================
    *
  @@ -74,7 +74,7 @@
    * Socket input stream wrapper.
    *
    * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
  - * @version $Revision: 1.6 $ $Date: 2001/04/11 16:02:01 $
  + * @version $Revision: 1.7 $ $Date: 2001/04/13 01:39:17 $
    */
   
   public class ResponseInputStream
  @@ -121,6 +121,12 @@
   
   
       /**
  +     * Stream interceptors.
  +     */
  +    protected StreamInterceptor[] interceptors = null;
  +
  +
  +    /**
        * Has this stream been closed?
        */
       protected boolean closed = false;
  @@ -175,10 +181,15 @@
       protected InputStream stream = null;
   
   
  +    // ------------------------------------------------------------- Properties
  +
  +
       /**
  -     * The utility of the process event and listener.
  +     * Get stream interceptors.
        */
  -    private ProgressUtil streamProgress = new ProgressUtil();
  +    public void setInterceptors(StreamInterceptor[] interceptors) {
  +        this.interceptors = interceptors;
  +    }
   
   
       // --------------------------------------------------------- Public Methods
  @@ -285,12 +296,15 @@
                           if (currentRead == -1)
                               throw new IOException("Unexpected end of stream");
                           nbRead += currentRead;
  -                        // Make the progress event.
  -                        streamProgress.fireProgress(ProgressEvent.RESPONSE,
  -                                                    (long) chunkLength-nbRead,
  -                                                    (long) chunkLength);
                       }
   
  +                    if (interceptors != null) {
  +                        for (int i = 0; i < interceptors.length; i++) {
  +                            interceptors[i].bytesRead
  +                                (chunkBuffer, 0, chunkLength);
  +                        }
  +                    }
  +
                       // Skipping the CRLF
                       stream.read();
                       stream.read();
  @@ -309,9 +323,13 @@
   
               // Read and count the next byte, then return it
               int b = stream.read();
  +
  +            if (interceptors != null) {
  +                for (int i = 0; i < interceptors.length; i++) {
  +                    interceptors[i].bytesRead(null, b, 1);
  +                }
  +            }
   
  -            // Make the progress event.
  -            streamProgress.fireProgress(ProgressEvent.GET_ACTION, (long) b);
               if (b >= 0)
                   count++;
               return (b);
  @@ -358,10 +376,4 @@
       }
   
   
  -    /**
  -     * Get the utility of this progress event and listener.
  -     */
  -    public ProgressUtil getProgressUtil() {
  -        return streamProgress;
  -    }
   }
  
  
  
  1.33      +82 -54    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.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- WebdavClient.java	2001/04/11 16:02:00	1.32
  +++ WebdavClient.java	2001/04/13 01:39:17	1.33
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/WebdavClient.java,v 1.32 2001/04/11 16:02:00 jericho Exp $
  - * $Revision: 1.32 $
  - * $Date: 2001/04/11 16:02:00 $
  + * $Header: /home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/WebdavClient.java,v 1.33 2001/04/13 01:39:17 remm Exp $
  + * $Revision: 1.33 $
  + * $Date: 2001/04/13 01:39:17 $
    *
    * ====================================================================
    *
  @@ -80,11 +80,11 @@
   import org.apache.webdav.lib.methods.*;
   
   /**
  - * WebDAV client.
  + * HTTP client main class.
    *
    * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
    */
  -public class WebdavClient implements ProgressListener {
  +public class WebdavClient {
   
   
       // -------------------------------------------------------------- Constants
  @@ -100,7 +100,7 @@
        * User Agent.
        */
       public static final Header USER_AGENT =
  -        new Header("User-Agent", "org.apache.webdav.lib.WebdavClient");
  +        new Header("User-Agent", "Jakarta HTTP Client/1.0");
   
   
       /**
  @@ -184,15 +184,17 @@
   
   
       /**
  -     * The utility of the process event and listener.
  +     * Stream interceptors.
        */
  -    private ProgressUtil streamProgress;
  +    protected StreamInterceptor[] streamInterceptors = 
  +        new StreamInterceptor[0];
   
   
       /**
  -     * The utility of the process event and listener.
  +     * Connection interceptors.
        */
  -    private ProgressUtil clientProgress = new ProgressUtil();
  +    protected ConnectionInterceptor[] connectionInterceptors = 
  +        new ConnectionInterceptor[0];
   
   
       /**
  @@ -268,6 +270,53 @@
       }
   
   
  +    /**
  +     * Add stream interceptor.
  +     */
  +    public synchronized void addStreamInterceptor
  +        (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;
  +    }
  +
  +
  +    /**
  +     * Get stream interceptors.
  +     */
  +    StreamInterceptor[] getStreamInterceptors() {
  +        return streamInterceptors;
  +    }
  +
  +
  +    /**
  +     * Add connector interceptor.
  +     */
  +    public synchronized void addConnectionInterceptor
  +        (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;
  +    }
  +
  +
  +    /**
  +     * Get connection interceptors.
  +     */
  +    ConnectionInterceptor[] getConnectionInterceptors() {
  +        return connectionInterceptors;
  +    }
  +
  +
       // --------------------------------------------------------- Public Methods
   
   
  @@ -370,6 +419,10 @@
                           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.close();
                           if (closeOutput ||
                               needToCloseConnection(method, responseHeaders)) {
  @@ -416,17 +469,13 @@
   
           method.processResponseHeaders(responseHeaders);
           // Parse response
  -        ResponseInputStream responseInputStream =
  +        ResponseInputStream responseInputStream = 
               new ResponseInputStream(input, responseHeaders);
  -
  -        // Add the progress listener.
  -        streamProgress = responseInputStream.getProgressUtil();
  -        streamProgress.addProgressListener((ProgressListener) this);
  +        responseInputStream.setInterceptors(streamInterceptors);
   
           method.parseResponse(responseInputStream);
           method.setUsed();
   
  -        streamProgress.removeProgressListener((ProgressListener) this);
           responseInputStream.close();
   
           if (needToCloseConnection(method, responseHeaders)) {
  @@ -619,13 +668,10 @@
   
           // Writing request body
   
  -        RequestOutputStream requestOutputStream =
  +        RequestOutputStream requestOutputStream = 
               new RequestOutputStream(output);
  +        requestOutputStream.setInterceptors(streamInterceptors);
   
  -        // Add the progress listener.
  -        streamProgress = requestOutputStream.getProgressUtil();
  -        streamProgress.addProgressListener((ProgressListener) this);
  -        
           if (method.isStreamedQuery()) {
               if ((http11) && (method.getHeader("Content-Length") == null)) {
                   requestOutputStream.setUseChunking(true);
  @@ -635,9 +681,6 @@
               requestOutputStream.write(query.getBytes());
           }
   
  -        // Remove the progress listener.
  -        streamProgress.removeProgressListener(this);
  -
           // Closing wrapped output stream
           requestOutputStream.close();
   
  @@ -657,21 +700,21 @@
       protected String readLine(InputStream input)
           throws IOException {
   
  -    StringBuffer sb = new StringBuffer();
  -    while (true) {
  -        int ch = input.read();
  -        if (ch < 0) {
  -        if (sb.length() == 0) {
  -            return (null);
  -        } else {
  -            break;
  -        }
  -        } else if (ch == '\r') {
  -        continue;
  -        } else if (ch == '\n') {
  -        break;
  -        }
  -        sb.append((char) ch);
  +        StringBuffer sb = new StringBuffer();
  +        while (true) {
  +            int ch = input.read();
  +            if (ch < 0) {
  +                if (sb.length() == 0) {
  +                    return (null);
  +                } else {
  +                    break;
  +                }
  +            } else if (ch == '\r') {
  +                continue;
  +            } else if (ch == '\n') {
  +                break;
  +            }
  +            sb.append((char) ch);
           }
           if (debug > 1)
               System.out.println(sb.toString());
  @@ -839,20 +882,5 @@
               return false;
       }
   
  -
  -    /**
  -     * Progressing something by the progress event.
  -     */
  -    public void progressing(ProgressEvent pe) {
  -        getProgressUtil().fireProgress(pe);
  -    }
  -
  -
  -    /**
  -     * Get the utility of this progress event and listener.
  -     */
  -    public ProgressUtil getProgressUtil() {
  -        return clientProgress;
  -    }
   
   }
  
  
  
  1.4       +13 -11    jakarta-slide/src/webdav/client/src/org/apache/webdav/util/WebdavSession.java
  
  Index: WebdavSession.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/util/WebdavSession.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- WebdavSession.java	2001/04/12 17:39:15	1.3
  +++ WebdavSession.java	2001/04/13 01:39:17	1.4
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/util/WebdavSession.java,v 1.3 2001/04/12 17:39:15 jericho Exp $
  - * $Revision: 1.3 $
  - * $Date: 2001/04/12 17:39:15 $
  + * $Header: /home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/util/WebdavSession.java,v 1.4 2001/04/13 01:39:17 remm Exp $
  + * $Revision: 1.4 $
  + * $Date: 2001/04/13 01:39:17 $
    *
    * ====================================================================
    *
  @@ -70,9 +70,7 @@
   import java.net.MalformedURLException;
   import org.apache.webdav.lib.WebdavClient;
   import org.apache.webdav.lib.Credentials;
  -import org.apache.webdav.lib.ProgressUtil;
  -import org.apache.webdav.lib.ProgressEvent;
  -import org.apache.webdav.lib.ProgressListener;
  +import org.apache.webdav.lib.StreamInterceptor;
   
   /**
    *
  @@ -81,7 +79,7 @@
    *
    * @author <a href="mailto:jericho@thinkfree.com">Park, Sung-Gu</a>
    */
  -public class WebdavSession implements ProgressListener {
  +public class WebdavSession {
   
       // ---------------------------------------------------- Instance Variables
   
  @@ -95,7 +93,7 @@
       /**
        * The session progress.
        */
  -    private ProgressUtil sessionProgress = new ProgressUtil();
  +    //private ProgressUtil sessionProgress = new ProgressUtil();
   
   
       /**
  @@ -142,7 +140,7 @@
                   client.setCredentials(new Credentials(userName, password));
               }
           }
  -        client.getProgressUtil().addProgressListener(this);
  +        //client.getProgressUtil().addProgressListener(this);
           setSession(httpURL, client);
   
           return client;
  @@ -306,7 +304,7 @@
           // in case of aleady not unset.
           if (webdavClient != null) {
               // Remove the progress listener.
  -            webdavClient.getProgressUtil().removeProgressListener(this);
  +            //webdavClient.getProgressUtil().addProgressListener(this);
   
               webdavClient.endSession();
               clientInfo.remove(authority);
  @@ -327,7 +325,7 @@
               WebdavClient webdavClient = seekSession(authority);
               if (webdavClient != null) {
                   // Remove the progress listener.
  -                webdavClient.getProgressUtil().removeProgressListener(this);
  +                //webdavClient.getProgressUtil().removeProgressListener(this);
   
                   webdavClient.endSession();
                   clientInfo.remove(authority);
  @@ -341,6 +339,7 @@
        *
        * @param pe The progress event.
        */
  +    /*
       public void progressing(ProgressEvent pe) {
           if (debug > 3)
               System.err.println("[EVENT/WebdavSession] " +
  @@ -352,6 +351,7 @@
                                  ", total:" + pe.getTotalSize());
           getProgressUtil().fireProgress(pe);
       }
  +    */
   
   
       /**
  @@ -359,7 +359,9 @@
        *
        * @return ProgressUtil
        */
  +    /*
       public ProgressUtil getProgressUtil() {
           return sessionProgress;
       }
  +    */
   }