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;
}
+ */
}