# HG changeset patch # User Felix Wolfsteller # Date 1380098399 -7200 # Node ID 30b7ca3951c7a52cd632bdc85e74915d85c89cd6 # Parent fcbfc6c597b1e4641e67c5bd1a479655553b7e3c issue1494: Add collectionOutEnc(inStream,outStream) function to handle encoding for output-stream of collectionOut action. diff -r fcbfc6c597b1 -r 30b7ca3951c7 src/main/java/org/dive4elements/artifacts/httpclient/http/HttpClientImpl.java --- a/src/main/java/org/dive4elements/artifacts/httpclient/http/HttpClientImpl.java Wed Sep 25 10:38:54 2013 +0200 +++ b/src/main/java/org/dive4elements/artifacts/httpclient/http/HttpClientImpl.java Wed Sep 25 10:39:59 2013 +0200 @@ -7,7 +7,10 @@ */ package org.dive4elements.artifacts.httpclient.http; +import java.io.BufferedReader; +import java.io.BufferedWriter; import java.io.InputStream; +import java.io.InputStreamReader; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; @@ -436,6 +439,43 @@ /** + * Write out() operation of a Collection to out, using buffered + * reading and writing and a charset. + * + * @param in collection out to read from. + * @param out The OutputStream to write transcoded answer to. + */ + private void collectionOutEnc( + InputStream in, + OutputStream out) + throws ConnectionException + { + try { + BufferedReader reader = + new BufferedReader(new InputStreamReader(in)); + + BufferedWriter writer = + new BufferedWriter(new OutputStreamWriter(out, this.charset)); + + try { + char[] c = new char[4096]; + int i; + while ((i = reader.read(c)) >= 0) { + writer.write(c, 0, i); + } + } + finally { + writer.flush(); + in.close(); + } + } + catch (IOException ioe) { + throw new ConnectionException(ioe.getMessage(), ioe); + } + } + + + /** * Write out() operation of a Collection to out. * * @param doc The request document for the out() operation.