You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2015/05/22 06:06:12 UTC

svn commit: r1680992 - in /webservices/axiom/trunk: modules/axiom-api/src/test/java/org/apache/axiom/blob/suite/ modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/ testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/ t...

Author: veithen
Date: Fri May 22 04:06:11 2015
New Revision: 1680992

URL: http://svn.apache.org/r1680992
Log:
Unify the CloseSensor* and Counting* stream wrappers and define a common interface.

Added:
    webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedInputStream.java
      - copied, changed from r1680148, webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorInputStream.java
    webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedOutputStream.java
      - copied, changed from r1680148, webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorOutputStream.java
    webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedReader.java
      - copied, changed from r1680148, webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorReader.java
    webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedStream.java   (with props)
    webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedWriter.java
      - copied, changed from r1680148, webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorWriter.java
Removed:
    webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorInputStream.java
    webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorOutputStream.java
    webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorReader.java
    webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorWriter.java
Modified:
    webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/blob/suite/TestReadFrom.java
    webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/blob/suite/TestWriteTo.java
    webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestCloseInputStream.java
    webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestCloseReader.java
    webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithInputStream.java
    webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithReader.java
    webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestRootPartStreaming.java
    webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestBuild.java
    webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/sr/TestCloseWithoutCaching.java
    webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestWriteTextTo.java

Modified: webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/blob/suite/TestReadFrom.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/blob/suite/TestReadFrom.java?rev=1680992&r1=1680991&r2=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/blob/suite/TestReadFrom.java (original)
+++ webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/blob/suite/TestReadFrom.java Fri May 22 04:06:11 2015
@@ -26,7 +26,7 @@ import java.util.Random;
 
 import org.apache.axiom.blob.WritableBlob;
 import org.apache.axiom.blob.WritableBlobFactory;
-import org.apache.axiom.testutils.io.CloseSensorInputStream;
+import org.apache.axiom.testutils.io.InstrumentedInputStream;
 import org.apache.commons.io.IOUtils;
 
 public class TestReadFrom extends SizeSensitiveWritableBlobTestCase {
@@ -39,7 +39,7 @@ public class TestReadFrom extends SizeSe
         Random random = new Random();
         byte[] data = new byte[size];
         random.nextBytes(data);
-        CloseSensorInputStream in = new CloseSensorInputStream(new ByteArrayInputStream(data));
+        InstrumentedInputStream in = new InstrumentedInputStream(new ByteArrayInputStream(data));
         assertThat(blob.readFrom(in)).isEqualTo(size);
         assertThat(in.isClosed()).isFalse();
         InputStream in2 = blob.getInputStream();

Modified: webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/blob/suite/TestWriteTo.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/blob/suite/TestWriteTo.java?rev=1680992&r1=1680991&r2=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/blob/suite/TestWriteTo.java (original)
+++ webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/blob/suite/TestWriteTo.java Fri May 22 04:06:11 2015
@@ -25,7 +25,7 @@ import java.util.Random;
 
 import org.apache.axiom.blob.WritableBlob;
 import org.apache.axiom.blob.WritableBlobFactory;
-import org.apache.axiom.testutils.io.CloseSensorOutputStream;
+import org.apache.axiom.testutils.io.InstrumentedOutputStream;
 
 public class TestWriteTo extends SizeSensitiveWritableBlobTestCase {
     private final boolean usesReadFromSupport;
@@ -44,7 +44,7 @@ public class TestWriteTo extends SizeSen
         out.write(data);
         out.close();
         ByteArrayOutputStreamWithReadFromSupport baos = new ByteArrayOutputStreamWithReadFromSupport();
-        CloseSensorOutputStream closeSensor = new CloseSensorOutputStream(baos);
+        InstrumentedOutputStream closeSensor = new InstrumentedOutputStream(baos);
         blob.writeTo(baos);
         assertThat(closeSensor.isClosed()).isFalse();
         assertThat(baos.toByteArray()).isEqualTo(data);

Modified: webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestCloseInputStream.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestCloseInputStream.java?rev=1680992&r1=1680991&r2=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestCloseInputStream.java (original)
+++ webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestCloseInputStream.java Fri May 22 04:06:11 2015
@@ -23,7 +23,7 @@ import java.io.InputStream;
 
 import javax.xml.stream.XMLStreamReader;
 
-import org.apache.axiom.testutils.io.CloseSensorInputStream;
+import org.apache.axiom.testutils.io.InstrumentedInputStream;
 
 /**
  * Tests that {@link XMLStreamReader#close()} doesn't close the underlying {@link InputStream}.
@@ -34,7 +34,7 @@ public class TestCloseInputStream extend
     }
 
     protected void runTest() throws Throwable {
-        CloseSensorInputStream in = new CloseSensorInputStream(new ByteArrayInputStream("<root/>".getBytes("UTF-8")));
+        InstrumentedInputStream in = new InstrumentedInputStream(new ByteArrayInputStream("<root/>".getBytes("UTF-8")));
         XMLStreamReader reader = staxImpl.newNormalizedXMLInputFactory().createXMLStreamReader(in);
         reader.close();
         assertFalse(in.isClosed());

Modified: webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestCloseReader.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestCloseReader.java?rev=1680992&r1=1680991&r2=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestCloseReader.java (original)
+++ webservices/axiom/trunk/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestCloseReader.java Fri May 22 04:06:11 2015
@@ -23,7 +23,7 @@ import java.io.StringReader;
 
 import javax.xml.stream.XMLStreamReader;
 
-import org.apache.axiom.testutils.io.CloseSensorReader;
+import org.apache.axiom.testutils.io.InstrumentedReader;
 
 /**
  * Tests that {@link XMLStreamReader#close()} doesn't close the underlying {@link Reader}.
@@ -34,7 +34,7 @@ public class TestCloseReader extends Dia
     }
 
     protected void runTest() throws Throwable {
-        CloseSensorReader in = new CloseSensorReader(new StringReader("<root/>"));
+        InstrumentedReader in = new InstrumentedReader(new StringReader("<root/>"));
         XMLStreamReader reader = staxImpl.newNormalizedXMLInputFactory().createXMLStreamReader(in);
         reader.close();
         assertFalse(in.isClosed());

Modified: webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithInputStream.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithInputStream.java?rev=1680992&r1=1680991&r2=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithInputStream.java (original)
+++ webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithInputStream.java Fri May 22 04:06:11 2015
@@ -21,7 +21,7 @@ package org.apache.axiom.ts.om.builder;
 import org.apache.axiom.om.OMMetaFactory;
 import org.apache.axiom.om.OMXMLBuilderFactory;
 import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.testutils.io.CloseSensorInputStream;
+import org.apache.axiom.testutils.io.InstrumentedInputStream;
 import org.apache.axiom.ts.AxiomTestCase;
 import org.apache.axiom.ts.xml.XMLSample;
 
@@ -31,7 +31,7 @@ public class TestCloseWithInputStream ex
     }
 
     protected void runTest() throws Throwable {
-        CloseSensorInputStream in = new CloseSensorInputStream(XMLSample.SIMPLE.getAsStream());
+        InstrumentedInputStream in = new InstrumentedInputStream(XMLSample.SIMPLE.getAsStream());
         try {
             OMXMLParserWrapper builder = OMXMLBuilderFactory.createOMBuilder(metaFactory.getOMFactory(), in);
             builder.getDocument().build();

Modified: webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithReader.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithReader.java?rev=1680992&r1=1680991&r2=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithReader.java (original)
+++ webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestCloseWithReader.java Fri May 22 04:06:11 2015
@@ -23,7 +23,7 @@ import java.io.StringReader;
 import org.apache.axiom.om.OMMetaFactory;
 import org.apache.axiom.om.OMXMLBuilderFactory;
 import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.testutils.io.CloseSensorReader;
+import org.apache.axiom.testutils.io.InstrumentedReader;
 import org.apache.axiom.ts.AxiomTestCase;
 
 public class TestCloseWithReader extends AxiomTestCase {
@@ -32,7 +32,7 @@ public class TestCloseWithReader extends
     }
 
     protected void runTest() throws Throwable {
-        CloseSensorReader in = new CloseSensorReader(new StringReader("<root><child/></root>"));
+        InstrumentedReader in = new InstrumentedReader(new StringReader("<root><child/></root>"));
         try {
             OMXMLParserWrapper builder = OMXMLBuilderFactory.createOMBuilder(metaFactory.getOMFactory(), in);
             builder.getDocument().build();

Modified: webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestRootPartStreaming.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestRootPartStreaming.java?rev=1680992&r1=1680991&r2=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestRootPartStreaming.java (original)
+++ webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestRootPartStreaming.java Fri May 22 04:06:11 2015
@@ -31,8 +31,8 @@ import org.apache.axiom.om.OMOutputForma
 import org.apache.axiom.om.OMXMLBuilderFactory;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.util.StAXParserConfiguration;
+import org.apache.axiom.testutils.io.InstrumentedInputStream;
 import org.apache.axiom.ts.AxiomTestCase;
-import org.apache.commons.io.input.CountingInputStream;
 
 /**
  * Tests that the content of the root part of an XOP/MTOM message is not buffered (i.e. read
@@ -60,17 +60,17 @@ public class TestRootPartStreaming exten
         orgRoot.serialize(baos, format);
         
         // Parse the message and monitor the number of bytes read
-        CountingInputStream in = new CountingInputStream(new ByteArrayInputStream(baos.toByteArray()));
+        InstrumentedInputStream in = new InstrumentedInputStream(new ByteArrayInputStream(baos.toByteArray()));
         OMXMLParserWrapper builder = OMXMLBuilderFactory.createOMBuilder(factory,
                 StAXParserConfiguration.DEFAULT,
                 new Attachments(in, format.getContentType()));
         OMElement root = builder.getDocumentElement();
-        int count1 = in.getCount();
+        long count1 = in.getCount();
         XMLStreamReader reader = root.getXMLStreamReader(false);
         while (reader.hasNext()) {
             reader.next();
         }
-        int count2 = in.getCount();
+        long count2 = in.getCount();
         
         // We expect that after requesting the document element, only a small part (corresponding to
         // the size of the parser buffer) should have been read:

Modified: webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestBuild.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestBuild.java?rev=1680992&r1=1680991&r2=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestBuild.java (original)
+++ webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestBuild.java Fri May 22 04:06:11 2015
@@ -22,9 +22,9 @@ import org.apache.axiom.om.OMDocument;
 import org.apache.axiom.om.OMMetaFactory;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMXMLBuilderFactory;
+import org.apache.axiom.testutils.io.InstrumentedInputStream;
 import org.apache.axiom.ts.AxiomTestCase;
 import org.apache.axiom.ts.xml.XMLSample;
-import org.apache.commons.io.input.CountingInputStream;
 
 public class TestBuild extends AxiomTestCase {
     public TestBuild(OMMetaFactory metaFactory) {
@@ -33,13 +33,13 @@ public class TestBuild extends AxiomTest
 
     @Override
     protected void runTest() throws Throwable {
-        CountingInputStream in = new CountingInputStream(XMLSample.LARGE.getAsStream());
+        InstrumentedInputStream in = new InstrumentedInputStream(XMLSample.LARGE.getAsStream());
         OMDocument doc = OMXMLBuilderFactory.createOMBuilder(metaFactory.getOMFactory(), in).getDocument();
         assertFalse(doc.isComplete());
-        int countBeforeBuild = in.getCount();
+        long countBeforeBuild = in.getCount();
         doc.build();
         assertTrue(doc.isComplete());
-        int countAfterBuild = in.getCount();
+        long countAfterBuild = in.getCount();
         assertTrue(countAfterBuild > countBeforeBuild);
         OMNode node = doc.getFirstOMChild();
         while (node != null) {

Modified: webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/sr/TestCloseWithoutCaching.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/sr/TestCloseWithoutCaching.java?rev=1680992&r1=1680991&r2=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/sr/TestCloseWithoutCaching.java (original)
+++ webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/sr/TestCloseWithoutCaching.java Fri May 22 04:06:11 2015
@@ -29,8 +29,8 @@ import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMDocument;
 import org.apache.axiom.om.OMMetaFactory;
 import org.apache.axiom.om.OMXMLBuilderFactory;
+import org.apache.axiom.testutils.io.InstrumentedInputStream;
 import org.apache.axiom.ts.AxiomTestCase;
-import org.apache.commons.io.input.CountingInputStream;
 
 /**
  * Tests the behavior of {@link XMLStreamReader#close()} on the {@link XMLStreamReader} returned by
@@ -52,12 +52,12 @@ public class TestCloseWithoutCaching ext
         }
         writer.write("</a></root>");
         writer.close();
-        CountingInputStream in = new CountingInputStream(new ByteArrayInputStream(baos.toByteArray()));
+        InstrumentedInputStream in = new InstrumentedInputStream(new ByteArrayInputStream(baos.toByteArray()));
         OMDocument doc = OMXMLBuilderFactory.createOMBuilder(metaFactory.getOMFactory(), in).getDocument();
         XMLStreamReader reader = doc.getXMLStreamReaderWithoutCaching();
         reader.next();
         reader.next();
-        int count = in.getCount();
+        long count = in.getCount();
         reader.close();
         assertEquals(count, in.getCount());
     }

Modified: webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestWriteTextTo.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestWriteTextTo.java?rev=1680992&r1=1680991&r2=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestWriteTextTo.java (original)
+++ webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestWriteTextTo.java Fri May 22 04:06:11 2015
@@ -27,7 +27,7 @@ import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMMetaFactory;
 import org.apache.axiom.om.OMText;
-import org.apache.axiom.testutils.io.CloseSensorWriter;
+import org.apache.axiom.testutils.io.InstrumentedWriter;
 import org.apache.axiom.ts.AxiomTestCase;
 
 /**
@@ -45,7 +45,7 @@ public class TestWriteTextTo extends Axi
         OMElement element = factory.createOMElement(new QName("a"));
         factory.createOMText(element, "test");
         StringWriter sw = new StringWriter();
-        CloseSensorWriter out = new CloseSensorWriter(sw);
+        InstrumentedWriter out = new InstrumentedWriter(sw);
         element.writeTextTo(out, true);
         assertEquals(element.getText(), sw.toString());
         assertFalse(out.isClosed());

Copied: webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedInputStream.java (from r1680148, webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorInputStream.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedInputStream.java?p2=webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedInputStream.java&p1=webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorInputStream.java&r1=1680148&r2=1680992&rev=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorInputStream.java (original)
+++ webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedInputStream.java Fri May 22 04:06:11 2015
@@ -24,15 +24,27 @@ import java.io.InputStream;
 import org.apache.commons.io.input.ProxyInputStream;
 
 /**
- * {@link InputStream} wrapper that remembers if {@link InputStream#close()} has been called.
+ * {@link InputStream} wrapper that implements {@link InstrumentedStream}.
  */
-public class CloseSensorInputStream extends ProxyInputStream {
+public final class InstrumentedInputStream extends ProxyInputStream implements InstrumentedStream {
+    private long count;
     private boolean closed;
     
-    public CloseSensorInputStream(InputStream parent) {
+    public InstrumentedInputStream(InputStream parent) {
         super(parent);
     }
 
+    @Override
+    protected void afterRead(int n) {
+        if (n != -1) {
+            count += n;
+        }
+    }
+    
+    public long getCount() {
+        return count;
+    }
+
     public void close() throws IOException {
         closed = true;
         super.close();

Copied: webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedOutputStream.java (from r1680148, webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorOutputStream.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedOutputStream.java?p2=webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedOutputStream.java&p1=webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorOutputStream.java&r1=1680148&r2=1680992&rev=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorOutputStream.java (original)
+++ webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedOutputStream.java Fri May 22 04:06:11 2015
@@ -23,13 +23,26 @@ import java.io.OutputStream;
 
 import org.apache.commons.io.output.ProxyOutputStream;
 
-public class CloseSensorOutputStream extends ProxyOutputStream {
+/**
+ * {@link OutputStream} wrapper that implements {@link InstrumentedStream}.
+ */
+public final class InstrumentedOutputStream extends ProxyOutputStream implements InstrumentedStream {
+    private long count;
     private boolean closed;
     
-    public CloseSensorOutputStream(OutputStream proxy) {
+    public InstrumentedOutputStream(OutputStream proxy) {
         super(proxy);
     }
 
+    @Override
+    protected void beforeWrite(int n) {
+        count += n;
+    }
+    
+    public long getCount() {
+        return count;
+    }
+
     public void close() throws IOException {
         closed = true;
         super.close();

Copied: webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedReader.java (from r1680148, webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorReader.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedReader.java?p2=webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedReader.java&p1=webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorReader.java&r1=1680148&r2=1680992&rev=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorReader.java (original)
+++ webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedReader.java Fri May 22 04:06:11 2015
@@ -24,15 +24,27 @@ import java.io.Reader;
 import org.apache.commons.io.input.ProxyReader;
 
 /**
- * {@link Reader} wrapper that remembers if {@link Reader#close()} has been called.
+ * {@link Reader} wrapper that implements {@link InstrumentedStream}.
  */
-public class CloseSensorReader extends ProxyReader {
+public final class InstrumentedReader extends ProxyReader implements InstrumentedStream {
+    private long count;
     private boolean closed;
     
-    public CloseSensorReader(Reader parent) {
+    public InstrumentedReader(Reader parent) {
         super(parent);
     }
 
+    @Override
+    protected void afterRead(int n) {
+        if (n != -1) {
+            count += n;
+        }
+    }
+    
+    public long getCount() {
+        return count;
+    }
+
     public void close() throws IOException {
         closed = true;
         super.close();

Added: webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedStream.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedStream.java?rev=1680992&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedStream.java (added)
+++ webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedStream.java Fri May 22 04:06:11 2015
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axiom.testutils.io;
+
+import java.io.Closeable;
+
+/**
+ * Stream that counts the number of bytes/characters read/written and that remembers if
+ * {@link Closeable#close()} has been called.
+ */
+public interface InstrumentedStream extends Closeable {
+    long getCount();
+    boolean isClosed();
+}

Propchange: webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedStream.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedWriter.java (from r1680148, webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorWriter.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedWriter.java?p2=webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedWriter.java&p1=webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorWriter.java&r1=1680148&r2=1680992&rev=1680992&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/CloseSensorWriter.java (original)
+++ webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/io/InstrumentedWriter.java Fri May 22 04:06:11 2015
@@ -24,15 +24,25 @@ import java.io.Writer;
 import org.apache.commons.io.output.ProxyWriter;
 
 /**
- * {@link Writer} wrapper that remembers if {@link Writer#close()} has been called.
+ * {@link Writer} wrapper that implements {@link InstrumentedStream}.
  */
-public class CloseSensorWriter extends ProxyWriter {
+public final class InstrumentedWriter extends ProxyWriter implements InstrumentedStream {
+    private long count;
     private boolean closed;
     
-    public CloseSensorWriter(Writer parent) {
+    public InstrumentedWriter(Writer parent) {
         super(parent);
     }
 
+    @Override
+    protected void beforeWrite(int n) {
+        count += n;
+    }
+    
+    public long getCount() {
+        return count;
+    }
+
     public void close() throws IOException {
         closed = true;
         super.close();