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)) {