You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2013/08/02 23:11:35 UTC

svn commit: r1509863 - /cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java

Author: sergeyb
Date: Fri Aug  2 21:11:34 2013
New Revision: 1509863

URL: http://svn.apache.org/r1509863
Log:
Protecting a bit against the spec requirement to auto-close Response original stream if the requested entity is not InputStream

Modified:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java?rev=1509863&r1=1509862&r2=1509863&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseImpl.java Fri Aug  2 21:11:34 2013
@@ -56,6 +56,7 @@ import org.apache.cxf.jaxrs.utils.HttpUt
 import org.apache.cxf.jaxrs.utils.InjectionUtils;
 import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageUtils;
 
 public final class ResponseImpl extends Response {
     private int status;
@@ -355,7 +356,9 @@ public final class ResponseImpl extends 
                                                                            InputStream.class.cast(entity), 
                                                                            mediaType, 
                                                                            responseMessage);
-                    InputStream.class.cast(entity).close();
+                    if (responseStreamCanBeClosed(cls)) {
+                        InputStream.class.cast(entity).close();
+                    }
                     entity = newEntity;
                     entityBufferred = true;
                     
@@ -369,6 +372,10 @@ public final class ResponseImpl extends 
         
     }
     
+    protected boolean responseStreamCanBeClosed(Class<?> cls) {
+        return cls != InputStream.class
+            && MessageUtils.isTrue(responseMessage.getContextualProperty("response.stream.auto.close"));
+    }
     
     public boolean bufferEntity() throws ProcessingException {
         checkEntityIsClosed();