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 {

Reply via email to