Mercurial > dive4elements > gnv-client
diff gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java @ 678:2943f69e006f
Removed xml parsing from InputStream while exporting an artifact. Just copy the input stream to the output stream.
gnv/trunk@813 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 22 Mar 2010 10:15:33 +0000 |
parents | 707e142e7d44 |
children | 4eccd03394ac |
line wrap: on
line diff
--- a/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java Mon Mar 22 09:49:48 2010 +0000 +++ b/gnv/src/main/java/de/intevation/gnv/artifactdatabase/client/DefaultArtifactDatabaseClient.java Mon Mar 22 10:15:33 2010 +0000 @@ -2,7 +2,9 @@ import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.io.OutputStream; +import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -726,18 +728,41 @@ OutputStream out) throws ArtifactDatabaseClientException { + InputStreamReader reader = null; + OutputStreamWriter writer = null; + try { String url = ((ArtifactFactory) artifactFactory).getDataBaseUrl(); url += "/export/" + currentArtifact.getId(); - Document response = doGetRequest(url); - XMLUtils.toStream(response, out); + Representation response = doGetRequestInternal(url, null); + InputStream in = response.getStream(); + + reader = new InputStreamReader(in); + writer = new OutputStreamWriter(out); + + while (reader.ready()) { + writer.write(reader.read()); + } + } catch (Exception e) { log.error(e, e); throw new ArtifactDatabaseClientException(e); } + finally { + try { + reader.close(); + } catch (IOException ioe) {} + try { + writer.flush(); + } catch (IOException ioe) {} + + try { + writer.close(); + } catch (IOException ioe) {} + } }