Repository: cxf
Updated Branches:
  refs/heads/master 67432aef1 -> eac181502


Updating Binary provider to keep the response input stream opened if requested


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/c36df2aa
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/c36df2aa
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/c36df2aa

Branch: refs/heads/master
Commit: c36df2aab074a1c91af110cb2a91a0b1c9169773
Parents: 08d98fb
Author: Sergey Beryozkin <[email protected]>
Authored: Thu Jul 24 16:56:23 2014 +0300
Committer: Sergey Beryozkin <[email protected]>
Committed: Thu Jul 24 16:56:23 2014 +0300

----------------------------------------------------------------------
 .../apache/cxf/jaxrs/provider/BinaryDataProvider.java   | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/c36df2aa/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/BinaryDataProvider.java
----------------------------------------------------------------------
diff --git 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/BinaryDataProvider.java
 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/BinaryDataProvider.java
index 704ec8e..48bf561 100644
--- 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/BinaryDataProvider.java
+++ 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/BinaryDataProvider.java
@@ -59,7 +59,7 @@ public class BinaryDataProvider<T> extends 
AbstractConfigurableProvider
     
     private static final int BUFFER_SIZE = 4096;
     private boolean reportByteArraySize;
-    
+    private boolean closeResponseInputStream;
     public boolean isReadable(Class<?> type, Type genericType, Annotation[] 
annotations, MediaType mt) {
         return byte[].class.isAssignableFrom(type)
                || InputStream.class.isAssignableFrom(type)
@@ -161,7 +161,11 @@ public class BinaryDataProvider<T> extends 
AbstractConfigurableProvider
             Message inMessage = 
PhaseInterceptorChain.getCurrentMessage().getExchange().getInMessage();
             handleRangeRequest(is, os, new HttpHeadersImpl(inMessage), 
outHeaders);
         } else {
-            IOUtils.copyAndCloseInput(is, os);
+            if (closeResponseInputStream) {
+                IOUtils.copyAndCloseInput(is, os);
+            } else {
+                IOUtils.copy(is, os);
+            }
         }
     }
     
@@ -190,4 +194,8 @@ public class BinaryDataProvider<T> extends 
AbstractConfigurableProvider
     public void setReportByteArraySize(boolean report) {
         this.reportByteArraySize = report;
     }
+
+    public void setCloseResponseInputStream(boolean closeResponseInputStream) {
+        this.closeResponseInputStream = closeResponseInputStream;
+    }
 }

Reply via email to