cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dk...@apache.org
Subject git commit: [CXF-5842] Make sure the cache gets cleaned up if it fails to cache the input
Date Wed, 09 Jul 2014 15:56:45 GMT
Repository: cxf
Updated Branches:
  refs/heads/2.7.x-fixes 22b612ffc -> 9c11b61bc


[CXF-5842] Make sure the cache gets cleaned up if it fails to cache the input


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

Branch: refs/heads/2.7.x-fixes
Commit: 9c11b61bcbc9553a4220a345d7195889c3f697d5
Parents: 22b612f
Author: Daniel Kulp <dkulp@apache.org>
Authored: Wed Jul 9 10:58:33 2014 -0400
Committer: Daniel Kulp <dkulp@apache.org>
Committed: Wed Jul 9 11:55:58 2014 -0400

----------------------------------------------------------------------
 .../cxf/attachment/AttachmentDataSource.java    | 28 +++++++++++++++-----
 .../cxf/jaxrs/ext/MessageContextImpl.java       |  2 +-
 2 files changed, 23 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/9c11b61b/api/src/main/java/org/apache/cxf/attachment/AttachmentDataSource.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/cxf/attachment/AttachmentDataSource.java b/api/src/main/java/org/apache/cxf/attachment/AttachmentDataSource.java
index 42194f5..d1b64b8 100644
--- a/api/src/main/java/org/apache/cxf/attachment/AttachmentDataSource.java
+++ b/api/src/main/java/org/apache/cxf/attachment/AttachmentDataSource.java
@@ -26,6 +26,7 @@ import java.io.OutputStream;
 import javax.activation.DataSource;
 
 import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.io.CacheSizeExceededException;
 import org.apache.cxf.io.CachedOutputStream;
 import org.apache.cxf.message.Message;
 
@@ -49,12 +50,27 @@ public class AttachmentDataSource implements DataSource {
         if (cache == null) {
             cache = new CachedOutputStream();
             AttachmentUtil.setStreamedAttachmentProperties(message, cache);
-            IOUtils.copy(ins, cache);
-            cache.lockOutputStream();  
-            ins.close();
-            ins = null;
-            if (delegate != null) {
-                delegate.setInputStream(cache.getInputStream());
+            try {
+                IOUtils.copy(ins, cache);
+                cache.lockOutputStream();
+                if (delegate != null) {
+                    delegate.setInputStream(cache.getInputStream());
+                }
+            } catch (CacheSizeExceededException cee) {
+                cache.close();
+                cache = null;
+                throw cee;
+            } catch (IOException cee) {
+                cache.close();
+                cache = null;
+                throw cee;
+            } finally {
+                try {
+                    ins.close();                
+                } catch (Exception ex) {
+                    //ignore
+                }
+                ins = null;
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/9c11b61b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java
index 80449f6..f3ed0fd 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/MessageContextImpl.java
@@ -77,7 +77,7 @@ public class MessageContextImpl implements MessageContext {
                 return createAttachments(key.toString());
             } catch (CacheSizeExceededException e) {
                 m.getExchange().put("cxf.io.cacheinput", Boolean.FALSE);
-                throw new WebApplicationException(413);
+                throw new WebApplicationException(e, 413);
             }
         }
         if (keyValue.equals("WRITE-" + Message.ATTACHMENTS)) {


Mime
View raw message