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;
}
}