You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2008/07/20 20:29:05 UTC

svn commit: r678300 - /synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/mail/MailUtils.java

Author: veithen
Date: Sun Jul 20 11:29:05 2008
New Revision: 678300

URL: http://svn.apache.org/viewvc?rev=678300&view=rev
Log:
Resolved SYNAPSE-359

Modified:
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/mail/MailUtils.java

Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/mail/MailUtils.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/mail/MailUtils.java?rev=678300&r1=678299&r2=678300&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/mail/MailUtils.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/mail/MailUtils.java Sun Jul 20 11:29:05 2008
@@ -30,6 +30,8 @@
 import javax.mail.Multipart;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeBodyPart;
+
+import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.io.IOException;
 
@@ -105,8 +107,7 @@
     @Override
     public String getMessageTextPayload(Object message) {
         try {
-            return new String(
-                getBytesFromInputStream(getInputStream(message), ((Message) message).getSize()));
+            return new String(getBytesFromInputStream(getInputStream(message)));
         } catch (Exception e) {
             if (log.isDebugEnabled()) {
                 log.debug("Error reading message payload as text for : " +
@@ -119,7 +120,7 @@
     @Override
     public byte[] getMessageBinaryPayload(Object message) {
         try {
-            return getBytesFromInputStream(getInputStream(message), ((Message) message).getSize());
+            return getBytesFromInputStream(getInputStream(message));
         } catch (Exception e) {
             handleException("Error reading message payload as a byte[] for : " +
                 ((Message) message).getMessageNumber(), e);
@@ -127,28 +128,21 @@
         return new byte[0];
     }
 
-    public static byte[] getBytesFromInputStream(InputStream is, int length) throws IOException {
-
-        byte[] bytes = new byte[length];
-        int offset = 0;
-        int numRead = 0;
+    public static byte[] getBytesFromInputStream(InputStream is) throws IOException {
 
         try {
-            while (offset < bytes.length &&
-                (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
-                offset += numRead;
-            }
-
-            // Ensure all the bytes have been read in
-            if (offset < bytes.length) {
-                handleException("Could not completely read the stream to conver to a byte[]");
+            byte[] buffer = new byte[4096];
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            int c;
+            while ((c = is.read(buffer)) != -1) {
+                baos.write(buffer, 0, c);
             }
+            return baos.toByteArray();
         } finally {
             try {
                 is.close();
             } catch (IOException ignore) {}
         }
-        return bytes;
     }
 
 }