Repository: olingo-odata4 Updated Branches: refs/heads/master 002161cd4 -> c93b648b0
[OLINGO-266] Fix response sending Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/c93b648b Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/c93b648b Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/c93b648b Branch: refs/heads/master Commit: c93b648b0b62746d6e32fb850cf7a758505121dd Parents: 002161c Author: Christian Amend <[email protected]> Authored: Mon May 19 17:16:57 2014 +0200 Committer: Christian Amend <[email protected]> Committed: Mon May 19 17:16:57 2014 +0200 ---------------------------------------------------------------------- .../apache/olingo/server/core/ODataHandler.java | 3 +-- .../server/core/ODataHttpHandlerImpl.java | 23 ++++++++++---------- .../core/serializer/ODataXmlSerializerImpl.java | 1 + .../xml/MetadataDocumentXmlSerializer.java | 1 - 4 files changed, 13 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c93b648b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java index d9e1e1f..de8ef23 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java @@ -53,7 +53,6 @@ public class ODataHandler { case metadata: serializer = server.createSerializer(ODataFormat.XML); responseEntity = serializer.metadataDocument(edm); - response.setStatusCode(200); response.setHeader("Content-Type", "application/xml"); response.setContent(responseEntity); @@ -61,7 +60,7 @@ public class ODataHandler { case service: serializer = server.createSerializer(ODataFormat.JSON); responseEntity = serializer.serviceDocument(edm, odRequest.getRawBaseUri()); - + response.setStatusCode(200); response.setHeader("Content-Type", "application/json"); response.setContent(responseEntity); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c93b648b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java index 09983b1..be61a2b 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java @@ -20,6 +20,7 @@ package org.apache.olingo.server.core; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; @@ -33,8 +34,8 @@ import javax.servlet.http.HttpServletResponse; import org.apache.olingo.commons.api.ODataRuntimeException; import org.apache.olingo.commons.api.edm.Edm; import org.apache.olingo.commons.api.http.HttpMethod; -import org.apache.olingo.server.api.ODataHttpHandler; import org.apache.olingo.server.api.OData; +import org.apache.olingo.server.api.ODataHttpHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -67,24 +68,22 @@ public class ODataHttpHandlerImpl implements ODataHttpHandler { response.setHeader(entry.getKey(), entry.getValue()); } - InputStream in = odResponse.getContent(); + InputStream input = odResponse.getContent(); + OutputStream output; try { + output = response.getOutputStream(); byte[] buffer = new byte[1024]; - int bytesRead = 0; - - do { - bytesRead = in.read(buffer, 0, buffer.length); - response.getOutputStream().write(buffer, 0, bytesRead); - } while (bytesRead == buffer.length); - - response.getOutputStream().flush(); + int n = 0; + while (-1 != (n = input.read(buffer))) { + output.write(buffer, 0, n); + } } catch (IOException e) { LOG.error(e.getMessage(), e); throw new ODataRuntimeException(e); } finally { - if (in != null) { + if (input != null) { try { - in.close(); + input.close(); } catch (IOException e) { throw new ODataRuntimeException(e); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c93b648b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java index 49f8831..a8a943f 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/ODataXmlSerializerImpl.java @@ -52,6 +52,7 @@ public class ODataXmlSerializerImpl implements ODataSerializer { xmlStreamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(buffer.getOutputStream(), DEFAULT_CHARSET); MetadataDocumentXmlSerializer serializer = new MetadataDocumentXmlSerializer(edm); serializer.writeMetadataDocument(xmlStreamWriter); + xmlStreamWriter.flush(); xmlStreamWriter.close(); return buffer.getInputStream(); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/c93b648b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java index 61e7af7..a8629d8 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java @@ -118,7 +118,6 @@ public class MetadataDocumentXmlSerializer { appendDataServices(writer); writer.writeEndDocument(); - } private void appendDataServices(final XMLStreamWriter writer) throws XMLStreamException {
