cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dk...@apache.org
Subject svn commit: r1134145 - in /cxf/branches/2.4.x-fixes: ./ rt/core/src/main/java/org/apache/cxf/attachment/ rt/core/src/test/java/org/apache/cxf/attachment/
Date Fri, 10 Jun 2011 00:42:02 GMT
Author: dkulp
Date: Fri Jun 10 00:42:01 2011
New Revision: 1134145

URL: http://svn.apache.org/viewvc?rev=1134145&view=rev
Log:
Merged revisions 1134142 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1134142 | dkulp | 2011-06-09 20:38:46 -0400 (Thu, 09 Jun 2011) | 2 lines
  
  [CXF-3582] Fix problems trying to find attachments when reading from the
  middle of buffers.
........

Added:
    cxf/branches/2.4.x-fixes/rt/core/src/test/java/org/apache/cxf/attachment/cxf3582.data
      - copied unchanged from r1134142, cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/cxf3582.data
Modified:
    cxf/branches/2.4.x-fixes/   (props changed)
    cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/attachment/MimeBodyPartInputStream.java
    cxf/branches/2.4.x-fixes/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java

Propchange: cxf/branches/2.4.x-fixes/
            ('svn:mergeinfo' removed)

Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Fri Jun 10 00:42:01 2011
@@ -1 +1 @@
-/cxf/trunk:1-1134023
+/cxf/trunk:1-1134023,1134142

Modified: cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/attachment/MimeBodyPartInputStream.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/attachment/MimeBodyPartInputStream.java?rev=1134145&r1=1134144&r2=1134145&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/attachment/MimeBodyPartInputStream.java
(original)
+++ cxf/branches/2.4.x-fixes/rt/core/src/main/java/org/apache/cxf/attachment/MimeBodyPartInputStream.java
Fri Jun 10 00:42:01 2011
@@ -179,7 +179,7 @@ public class MimeBodyPartInputStream ext
 
                 //boundary matched (may or may not be last mime boundary)
                 int processed = initialI - off;
-                if ((len - (i + 2)) > 0) {
+                if ((len - ((i - off) + 2)) > 0) {
                     inStream.unread(buffer, i + 2, len - (i + 2) + off);
                 }
                 return processed;

Modified: cxf/branches/2.4.x-fixes/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java?rev=1134145&r1=1134144&r2=1134145&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java
(original)
+++ cxf/branches/2.4.x-fixes/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java
Fri Jun 10 00:42:01 2011
@@ -495,4 +495,142 @@ public class AttachmentDeserializerTest 
         }
     }
 
-}
\ No newline at end of file
+    
+    @Test
+    public void testCXF3582() throws Exception {
+        String contentType = "multipart/related; type=\"application/xop+xml\"; "
+            + "boundary=\"uuid:906fa67b-85f9-4ef5-8e3d-52416022d463\"; "
+            + "start=\"<root.message@cxf.apache.org>\"; start-info=\"text/xml\"";
+            
+            
+        Message message = new MessageImpl();
+        message.put(Message.CONTENT_TYPE, contentType);
+        message.setContent(InputStream.class, getClass().getResourceAsStream("cxf3582.data"));
+        message.put(AttachmentDeserializer.ATTACHMENT_DIRECTORY, System
+                .getProperty("java.io.tmpdir"));
+        message.put(AttachmentDeserializer.ATTACHMENT_MEMORY_THRESHOLD, String
+                .valueOf(AttachmentDeserializer.THRESHOLD));
+
+
+        AttachmentDeserializer ad 
+            = new AttachmentDeserializer(message, 
+                                         Collections.singletonList("multipart/related"));
+        
+        ad.initializeAttachments();
+        
+        String cid = "1a66bb35-67fc-4e89-9f33-48af417bf9fe-1@apache.org";
+        DataSource ds = AttachmentUtil.getAttachmentDataSource(cid, message.getAttachments());
+        byte bts[] = new byte[1024];
+        InputStream ins = ds.getInputStream();
+        int count = ins.read(bts, 0, bts.length);
+        assertEquals(500, count);
+        assertEquals(-1, ins.read(new byte[1000], 500, 500));
+
+        cid = "1a66bb35-67fc-4e89-9f33-48af417bf9fe-2@apache.org";
+        ds = AttachmentUtil.getAttachmentDataSource(cid, message.getAttachments());
+        bts = new byte[1024];
+        ins = ds.getInputStream();
+        count = ins.read(bts, 0, bts.length);
+        assertEquals(1024, count);
+        assertEquals(225, ins.read(new byte[1000], 500, 500));
+        assertEquals(-1, ins.read(new byte[1000], 500, 500));
+    }
+
+    @Test
+    public void testCXF3582b() throws Exception {
+        String contentType = "multipart/related; type=\"application/xop+xml\"; "
+            + "boundary=\"uuid:906fa67b-85f9-4ef5-8e3d-52416022d463\"; "
+            + "start=\"<root.message@cxf.apache.org>\"; start-info=\"text/xml\"";
+            
+            
+        Message message = new MessageImpl();
+        message.put(Message.CONTENT_TYPE, contentType);
+        message.setContent(InputStream.class, getClass().getResourceAsStream("cxf3582.data"));
+        message.put(AttachmentDeserializer.ATTACHMENT_DIRECTORY, System
+                .getProperty("java.io.tmpdir"));
+        message.put(AttachmentDeserializer.ATTACHMENT_MEMORY_THRESHOLD, String
+                .valueOf(AttachmentDeserializer.THRESHOLD));
+
+
+        AttachmentDeserializer ad 
+            = new AttachmentDeserializer(message, 
+                                         Collections.singletonList("multipart/related"));
+        
+        ad.initializeAttachments();
+        
+        String cid = "1a66bb35-67fc-4e89-9f33-48af417bf9fe-1@apache.org";
+        DataSource ds = AttachmentUtil.getAttachmentDataSource(cid, message.getAttachments());
+        byte bts[] = new byte[1024];
+        InputStream ins = ds.getInputStream();
+        int count = 0;
+        int x = ins.read(bts, 500, 200);
+        while (x != -1) {
+            count += x;
+            x = ins.read(bts, 500, 200);
+        }
+        assertEquals(500, count);
+        assertEquals(-1, ins.read(new byte[1000], 500, 500));
+
+        cid = "1a66bb35-67fc-4e89-9f33-48af417bf9fe-2@apache.org";
+        ds = AttachmentUtil.getAttachmentDataSource(cid, message.getAttachments());
+        bts = new byte[1024];
+        ins = ds.getInputStream();
+        count = 0;
+        x = ins.read(bts, 500, 200);
+        while (x != -1) {
+            count += x;
+            x = ins.read(bts, 500, 200);
+        }
+        assertEquals(1249, count);
+        assertEquals(-1, ins.read(new byte[1000], 500, 500));
+    }
+    @Test
+    public void testCXF3582c() throws Exception {
+        String contentType = "multipart/related; type=\"application/xop+xml\"; "
+            + "boundary=\"uuid:906fa67b-85f9-4ef5-8e3d-52416022d463\"; "
+            + "start=\"<root.message@cxf.apache.org>\"; start-info=\"text/xml\"";
+            
+            
+        Message message = new MessageImpl();
+        message.put(Message.CONTENT_TYPE, contentType);
+        message.setContent(InputStream.class, getClass().getResourceAsStream("cxf3582.data"));
+        message.put(AttachmentDeserializer.ATTACHMENT_DIRECTORY, System
+                .getProperty("java.io.tmpdir"));
+        message.put(AttachmentDeserializer.ATTACHMENT_MEMORY_THRESHOLD, String
+                .valueOf(AttachmentDeserializer.THRESHOLD));
+
+
+        AttachmentDeserializer ad 
+            = new AttachmentDeserializer(message, 
+                                         Collections.singletonList("multipart/related"));
+        
+        ad.initializeAttachments();
+        
+        String cid = "1a66bb35-67fc-4e89-9f33-48af417bf9fe-1@apache.org";
+        DataSource ds = AttachmentUtil.getAttachmentDataSource(cid, message.getAttachments());
+        byte bts[] = new byte[1024];
+        InputStream ins = ds.getInputStream();
+        int count = 0;
+        int x = ins.read(bts, 100, 600);
+        while (x != -1) {
+            count += x;
+            x = ins.read(bts, 100, 600);
+        }
+        assertEquals(500, count);
+        assertEquals(-1, ins.read(new byte[1000], 100, 600));
+
+        cid = "1a66bb35-67fc-4e89-9f33-48af417bf9fe-2@apache.org";
+        ds = AttachmentUtil.getAttachmentDataSource(cid, message.getAttachments());
+        bts = new byte[1024];
+        ins = ds.getInputStream();
+        count = 0;
+        x = ins.read(bts, 100, 600);
+        while (x != -1) {
+            count += x;
+            x = ins.read(bts, 100, 600);
+        }
+        assertEquals(1249, count);
+        assertEquals(-1, ins.read(new byte[1000], 100, 600));
+    }
+}
+



Mime
View raw message