Author: veithen
Date: Sun Jun 7 12:47:43 2009
New Revision: 782378
URL: http://svn.apache.org/viewvc?rev=782378&view=rev
Log:
Added a method that allows to determine whether a stream filter is read-only or
modifies data in the stream.
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/CharsetDecoderFilter.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/CharsetRecoderFilter.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/ReadOnlyFilterWrapper.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/ReplaceFilter.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/RequestLineExtractor.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/StreamFilter.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/Tee.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/XmlFormatFilter.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/ChunkedEncoder.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/HttpFilter.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/IdentityEncoder.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/mime/MimePartFilter.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/mime/MultipartFilter.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/throttle/Throttle.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/zip/GZIPDecoder.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/zip/GZIPEncoder.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/ui/RawSender.java
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/test/java/org/apache/ws/commons/tcpmon/core/filter/PipelineTest.java
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/CharsetDecoderFilter.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/CharsetDecoderFilter.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/CharsetDecoderFilter.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/CharsetDecoderFilter.java
Sun Jun 7 12:47:43 2009
@@ -44,6 +44,10 @@
this(writer, Charset.forName(charsetName));
}
+ public boolean isReadOnly() {
+ return true;
+ }
+
public void invoke(Stream stream) {
CoderResult coderResult;
do {
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/CharsetRecoderFilter.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/CharsetRecoderFilter.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/CharsetRecoderFilter.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/CharsetRecoderFilter.java
Sun Jun 7 12:47:43 2009
@@ -42,6 +42,10 @@
this(Charset.forName(fromCharset), Charset.forName(toCharset));
}
+ public boolean isReadOnly() {
+ return false;
+ }
+
public void invoke(Stream stream) {
CoderResult inResult;
do {
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/ReadOnlyFilterWrapper.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/ReadOnlyFilterWrapper.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/ReadOnlyFilterWrapper.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/ReadOnlyFilterWrapper.java
Sun Jun 7 12:47:43 2009
@@ -26,6 +26,10 @@
this.parent = parent;
}
+ public boolean isReadOnly() {
+ return true;
+ }
+
public void invoke(Stream stream) {
parent.invoke(new ReadOnlyStream(stream));
}
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/ReplaceFilter.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/ReplaceFilter.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/ReplaceFilter.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/ReplaceFilter.java
Sun Jun 7 12:47:43 2009
@@ -38,6 +38,10 @@
this(pattern.getBytes(charsetName), replacement.getBytes(charsetName));
}
+ public boolean isReadOnly() {
+ return false;
+ }
+
public void invoke(Stream stream) {
int p;
while ((p = StreamUtil.search(stream, patterns)) != -1) {
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/RequestLineExtractor.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/RequestLineExtractor.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/RequestLineExtractor.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/RequestLineExtractor.java
Sun Jun 7 12:47:43 2009
@@ -31,6 +31,10 @@
this.buffer = new byte[maxLength];
}
+ public boolean isReadOnly() {
+ return true;
+ }
+
public void invoke(Stream stream) {
if (done) {
stream.skipAll();
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/StreamFilter.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/StreamFilter.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/StreamFilter.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/StreamFilter.java
Sun Jun 7 12:47:43 2009
@@ -21,6 +21,16 @@
*/
public interface StreamFilter {
/**
+ * Determine whether this filter is read-only. A read-only filter will not
+ * modify any data in the stream and exclusively use the skip operation to
+ * advance in the stream. The information provided by this method may be
+ * used to optimize processing of the stream.
+ *
+ * @return <code>true</code> if this filter is read-only
+ */
+ boolean isReadOnly();
+
+ /**
* Invoke the filter. This method is called by {...@link Pipeline}
* when data is available for processing. The implementation can
* modify the stream by discarding bytes from the stream and
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/Tee.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/Tee.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/Tee.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/Tee.java
Sun Jun 7 12:47:43 2009
@@ -46,6 +46,10 @@
this.out = out;
}
+ public boolean isReadOnly() {
+ return true;
+ }
+
public void invoke(Stream stream) {
if (out != null) {
try {
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/XmlFormatFilter.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/XmlFormatFilter.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/XmlFormatFilter.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/XmlFormatFilter.java
Sun Jun 7 12:47:43 2009
@@ -39,6 +39,10 @@
this.tabWidth = tabWidth;
}
+ public boolean isReadOnly() {
+ return false;
+ }
+
private static boolean isSpace(int b) {
return b == ' ' || b == '\r' || b == '\n' || b == '\t';
}
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/ChunkedEncoder.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/ChunkedEncoder.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/ChunkedEncoder.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/ChunkedEncoder.java
Sun Jun 7 12:47:43 2009
@@ -21,6 +21,10 @@
import org.apache.ws.commons.tcpmon.core.filter.StreamUtil;
public class ChunkedEncoder implements StreamFilter {
+ public boolean isReadOnly() {
+ return false;
+ }
+
public void invoke(Stream stream) {
int av = stream.available();
if (av > 0 || stream.isEndOfStream()) {
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/HttpFilter.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/HttpFilter.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/HttpFilter.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/HttpFilter.java
Sun Jun 7 12:47:43 2009
@@ -59,6 +59,10 @@
return state == STATE_COMPLETE;
}
+ public boolean isReadOnly() {
+ return false;
+ }
+
public void invoke(Stream stream) {
while (stream.available() > 0) {
switch (state) {
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/IdentityEncoder.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/IdentityEncoder.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/IdentityEncoder.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/http/IdentityEncoder.java
Sun Jun 7 12:47:43 2009
@@ -33,6 +33,10 @@
this.headers = headers;
}
+ public boolean isReadOnly() {
+ return false;
+ }
+
public void invoke(Stream stream) {
try {
stream.readAll(buffer);
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/mime/MimePartFilter.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/mime/MimePartFilter.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/mime/MimePartFilter.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/mime/MimePartFilter.java
Sun Jun 7 12:47:43 2009
@@ -38,6 +38,10 @@
this.contentFilterFactory = contentFilterFactory;
}
+ public boolean isReadOnly() {
+ return false;
+ }
+
public void invoke(Stream stream) {
while (stream.available() > 0) {
if (state == HEADERS) {
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/mime/MultipartFilter.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/mime/MultipartFilter.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/mime/MultipartFilter.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/mime/MultipartFilter.java
Sun Jun 7 12:47:43 2009
@@ -52,6 +52,10 @@
}
}
+ public boolean isReadOnly() {
+ return false;
+ }
+
public void invoke(Stream stream) {
if (state == STATE_START) {
if (stream.available() < startBoundaryDelimiter.length) {
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/throttle/Throttle.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/throttle/Throttle.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/throttle/Throttle.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/throttle/Throttle.java
Sun Jun 7 12:47:43 2009
@@ -86,6 +86,10 @@
}
}
+ public boolean isReadOnly() {
+ return true;
+ }
+
public void invoke(Stream stream) {
pump(stream.available());
stream.skipAll();
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/zip/GZIPDecoder.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/zip/GZIPDecoder.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/zip/GZIPDecoder.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/zip/GZIPDecoder.java
Sun Jun 7 12:47:43 2009
@@ -49,6 +49,10 @@
inflater = new Inflater(true);
}
+ public boolean isReadOnly() {
+ return false;
+ }
+
public void invoke(Stream stream) {
switch (state) {
case STATE_HEADER: {
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/zip/GZIPEncoder.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/zip/GZIPEncoder.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/zip/GZIPEncoder.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/zip/GZIPEncoder.java
Sun Jun 7 12:47:43 2009
@@ -36,6 +36,10 @@
this.deflater = new Deflater(Deflater.DEFAULT_COMPRESSION, true);
}
+ public boolean isReadOnly() {
+ return false;
+ }
+
public void invoke(Stream stream) {
if (isStart) {
stream.insert(header, 0, 10);
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/ui/RawSender.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/ui/RawSender.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/ui/RawSender.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/ui/RawSender.java
Sun Jun 7 12:47:43 2009
@@ -56,6 +56,10 @@
}
requestResponse.setState(RequestResponseListener.STATE_ACTIVE);
pipeline.addFilter(new StreamFilter() {
+ public boolean isReadOnly() {
+ return true;
+ }
+
public void invoke(Stream stream) {
stream.skipAll();
if (stream.isEndOfStream()) {
Modified:
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/test/java/org/apache/ws/commons/tcpmon/core/filter/PipelineTest.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/test/java/org/apache/ws/commons/tcpmon/core/filter/PipelineTest.java?rev=782378&r1=782377&r2=782378&view=diff
==============================================================================
---
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/test/java/org/apache/ws/commons/tcpmon/core/filter/PipelineTest.java
(original)
+++
webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/test/java/org/apache/ws/commons/tcpmon/core/filter/PipelineTest.java
Sun Jun 7 12:47:43 2009
@@ -24,6 +24,10 @@
private static class TestFilter implements StreamFilter {
private boolean eos;
+ public boolean isReadOnly() {
+ return true;
+ }
+
public void invoke(Stream stream) {
stream.skipAll();
eos = stream.isEndOfStream();