You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2009/05/13 05:05:01 UTC

svn commit: r774178 - in /ofbiz/trunk/framework/service/src/org/ofbiz/service/mail: JavaMailContainer.java MimeMessageWrapper.java

Author: jaz
Date: Wed May 13 03:05:00 2009
New Revision: 774178

URL: http://svn.apache.org/viewvc?rev=774178&view=rev
Log:
more improvements to the message wrapper logic for getting attachments and reading multipart messages; added methods to get headers; mail container now marks messages which are too big to process (the max size setting) as read (but never deleted) so they are not always being checked but remain in the mailbox for human review

Modified:
    ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java
    ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/MimeMessageWrapper.java

Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java?rev=774178&r1=774177&r2=774178&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java Wed May 13 03:05:00 2009
@@ -305,17 +305,22 @@
                     long messageSize = message.getSize();
                     if (message instanceof MimeMessage && messageSize >= maxSize) {
                         Debug.logWarning("Message from: " + message.getFrom()[0] + "not received, too big, size:" + messageSize + " cannot be more than " + maxSize + " bytes", module);
+                        
+                        // set the message as read so it doesn't continue to try to process; but don't delete it
+                        message.setFlag(Flags.Flag.SEEN, true);
                     } else {
                         this.processMessage(message, session);
                         if (Debug.verboseOn()) Debug.logVerbose("Message from " + UtilMisc.toListArray(message.getFrom()) + " with subject [" + message.getSubject() + "]  has been processed." , module);
                         message.setFlag(Flags.Flag.SEEN, true);
                         if (Debug.verboseOn()) Debug.logVerbose("Message [" + message.getSubject() + "] is marked seen", module);
+                        
+                        // delete the message after processing
+                        if (deleteMail) {
+                            if (Debug.verboseOn()) Debug.logVerbose("Message [" + message.getSubject() + "] is being deleted", module);
+                            message.setFlag(Flags.Flag.DELETED, true);
+                        }
                     }
-                }
-                if (deleteMail) {
-                    if (Debug.verboseOn()) Debug.logVerbose("Message [" + message.getSubject() + "] is being deleted", module);
-                    message.setFlag(Flags.Flag.DELETED, true);
-                }
+                }                
             }
 
             // expunge and close the folder

Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/MimeMessageWrapper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/MimeMessageWrapper.java?rev=774178&r1=774177&r2=774178&view=diff
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/MimeMessageWrapper.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/MimeMessageWrapper.java Wed May 13 03:05:00 2009
@@ -122,6 +122,24 @@
         return message;
     }
     
+    public String getFirstHeader(String header) {
+        String[] headers = getHeader(header);
+        if (headers != null && headers.length > 0) {
+            return headers[0];
+        } else {
+            return null;
+        }
+    }
+    public String[] getHeader(String header) {
+        MimeMessage message = getMessage();
+        try {
+            return message.getHeader(header);
+        } catch (MessagingException e) {
+            Debug.logError(e, module);
+            return null;
+        }
+    }
+    
     public Address[] getFrom() {
         MimeMessage message = getMessage();
         try {
@@ -235,14 +253,16 @@
                 String idx = Integer.toString(i);
                 if (subPartCount > 0) {
                     for (int si = 0; si < subPartCount; si++) {
-                        String sidx = idx + "." + Integer.toString(si);
-                        if (getPartDisposition(sidx) != null && getPartDisposition(sidx).equals(Part.ATTACHMENT)) {
-                            attachments.add(sidx);
+                        String sidx = idx + "." + Integer.toString(si);                        
+                        if (getPartDisposition(sidx) != null && (getPartDisposition(sidx).equals(Part.ATTACHMENT) ||
+                                getPartDisposition(sidx).equals(Part.INLINE))) {
+                            attachments.add(sidx);                        
                         }
                     }
-                } else {
-                    if (getPartDisposition(idx) != null && getPartDisposition(idx).equals(Part.ATTACHMENT)) {
-                        attachments.add(idx);
+                } else {                    
+                    if (getPartDisposition(idx) != null && (getPartDisposition(idx).equals(Part.ATTACHMENT) ||
+                            getPartDisposition(idx).equals(Part.INLINE))) {
+                        attachments.add(idx);                    
                     }
                 }
             }
@@ -268,8 +288,10 @@
                 if (subPartCount > 0) {
                     for (int si = 0; si < subPartCount; si++) {
                         String sidx = idx + "." + Integer.toString(si);
-                        if (getPartDisposition(sidx) == null || getPartDisposition(sidx).equals(Part.INLINE)) {
-                            body.append(getPartText(sidx)).append("\n");    
+                        if (getPartContentType(sidx) != null && getPartContentType(sidx).toLowerCase().startsWith("text")) {
+                            if (getPartDisposition(sidx) == null || getPartDisposition(sidx).equals(Part.INLINE)) {
+                                body.append(getPartText(sidx)).append("\n");    
+                            }
                         }
                     }
                 } else {
@@ -285,6 +307,36 @@
         }        
     }
     
+    public String getMessageBodyContentType() {
+        String contentType = getContentType();
+        if (contentType != null && contentType.toLowerCase().startsWith("text")) {
+            return contentType;
+        } else {
+            for (int i = 0; i < getMainPartCount(); i++) {
+                int subPartCount = getSubPartCount(i);
+                String idx = Integer.toString(i);
+                if (subPartCount > 0) {
+                    for (int si = 0; si < subPartCount; si++) {
+                        String sidx = idx + "." + Integer.toString(si);
+                        if (getPartContentType(sidx) != null && getPartContentType(sidx).toLowerCase().startsWith("text")) {
+                            if (getPartDisposition(sidx) == null || getPartDisposition(sidx).equals(Part.INLINE)) {
+                                return getPartContentType(sidx);  
+                            }
+                        }
+                    }
+                } else {
+                    if (getPartContentType(idx) != null && getPartContentType(idx).toLowerCase().startsWith("text")) {
+                        // make sure the part isn't an attachment
+                        if (getPartDisposition(idx) == null || getPartDisposition(idx).equals(Part.INLINE)) {
+                            return getPartContentType(idx);                      
+                        }
+                    }
+                }
+            }
+        }
+        return "text/html";
+    }
+    
     public String getMessageRawText() {
         MimeMessage message = getMessage();
         try {
@@ -482,7 +534,7 @@
         byte[] buffer = new byte[4096];
         try {            
             for (int n; (n = stream.read(buffer)) != -1;) {
-                baos.write(n);
+                baos.write(buffer, 0, n);
             }
         } catch (IOException e) {
             Debug.logError(e, module);



Re: svn commit: r774178 - in /ofbiz/trunk/framework/service/src/org/ofbiz/service/mail: JavaMailContainer.java MimeMessageWrapper.java

Posted by Andrew Zeneski <an...@hotwaxmedia.com>.
My pleasure Hans! Just doing some refactoring so we can better track  
the status of a communication event. You can now embed $ 
{communicationEventId} inside the email message. This should help with  
opt-out and other types of tracking.

Andrew

On May 12, 2009, at 11:12 PM, Hans Bakker wrote:

> Hi Andrew,
>
> excellent improvements here in the email section of the ofbiz system,
> thanks for your help in this area.
>
> Regards,
> Hans
>
>
> On Wed, 2009-05-13 at 03:05 +0000, jaz@apache.org wrote:
>> Author: jaz
>> Date: Wed May 13 03:05:00 2009
>> New Revision: 774178
>>
>> URL: http://svn.apache.org/viewvc?rev=774178&view=rev
>> Log:
>> more improvements to the message wrapper logic for getting  
>> attachments and reading multipart messages; added methods to get  
>> headers; mail container now marks messages which are too big to  
>> process (the max size setting) as read (but never deleted) so they  
>> are not always being checked but remain in the mailbox for human  
>> review
>>
>> Modified:
>>    ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/ 
>> JavaMailContainer.java
>>    ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/ 
>> MimeMessageWrapper.java
>>
>> Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/ 
>> JavaMailContainer.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java?rev=774178&r1=774177&r2=774178&view=diff
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> =====================================================================
>> --- ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/ 
>> JavaMailContainer.java (original)
>> +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/ 
>> JavaMailContainer.java Wed May 13 03:05:00 2009
>> @@ -305,17 +305,22 @@
>>                     long messageSize = message.getSize();
>>                     if (message instanceof MimeMessage &&  
>> messageSize >= maxSize) {
>>                         Debug.logWarning("Message from: " +  
>> message.getFrom()[0] + "not received, too big, size:" + messageSize  
>> + " cannot be more than " + maxSize + " bytes", module);
>> +
>> +                        // set the message as read so it doesn't  
>> continue to try to process; but don't delete it
>> +                        message.setFlag(Flags.Flag.SEEN, true);
>>                     } else {
>>                         this.processMessage(message, session);
>>                         if (Debug.verboseOn())  
>> Debug.logVerbose("Message from " +  
>> UtilMisc.toListArray(message.getFrom()) + " with subject [" +  
>> message.getSubject() + "]  has been processed." , module);
>>                         message.setFlag(Flags.Flag.SEEN, true);
>>                         if (Debug.verboseOn())  
>> Debug.logVerbose("Message [" + message.getSubject() + "] is marked  
>> seen", module);
>> +
>> +                        // delete the message after processing
>> +                        if (deleteMail) {
>> +                            if (Debug.verboseOn())  
>> Debug.logVerbose("Message [" + message.getSubject() + "] is being  
>> deleted", module);
>> +                            message.setFlag(Flags.Flag.DELETED,  
>> true);
>> +                        }
>>                     }
>> -                }
>> -                if (deleteMail) {
>> -                    if (Debug.verboseOn())  
>> Debug.logVerbose("Message [" + message.getSubject() + "] is being  
>> deleted", module);
>> -                    message.setFlag(Flags.Flag.DELETED, true);
>> -                }
>> +                }
>>             }
>>
>>             // expunge and close the folder
>>
>> Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/ 
>> MimeMessageWrapper.java
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/MimeMessageWrapper.java?rev=774178&r1=774177&r2=774178&view=diff
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> =====================================================================
>> --- ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/ 
>> MimeMessageWrapper.java (original)
>> +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/ 
>> MimeMessageWrapper.java Wed May 13 03:05:00 2009
>> @@ -122,6 +122,24 @@
>>         return message;
>>     }
>>
>> +    public String getFirstHeader(String header) {
>> +        String[] headers = getHeader(header);
>> +        if (headers != null && headers.length > 0) {
>> +            return headers[0];
>> +        } else {
>> +            return null;
>> +        }
>> +    }
>> +    public String[] getHeader(String header) {
>> +        MimeMessage message = getMessage();
>> +        try {
>> +            return message.getHeader(header);
>> +        } catch (MessagingException e) {
>> +            Debug.logError(e, module);
>> +            return null;
>> +        }
>> +    }
>> +
>>     public Address[] getFrom() {
>>         MimeMessage message = getMessage();
>>         try {
>> @@ -235,14 +253,16 @@
>>                 String idx = Integer.toString(i);
>>                 if (subPartCount > 0) {
>>                     for (int si = 0; si < subPartCount; si++) {
>> -                        String sidx = idx + "." +  
>> Integer.toString(si);
>> -                        if (getPartDisposition(sidx) != null &&  
>> getPartDisposition(sidx).equals(Part.ATTACHMENT)) {
>> -                            attachments.add(sidx);
>> +                        String sidx = idx + "." +  
>> Integer.toString(si);
>> +                        if (getPartDisposition(sidx) != null &&  
>> (getPartDisposition(sidx).equals(Part.ATTACHMENT) ||
>> +                                 
>> getPartDisposition(sidx).equals(Part.INLINE))) {
>> +                            attachments.add(sidx);
>>                         }
>>                     }
>> -                } else {
>> -                    if (getPartDisposition(idx) != null &&  
>> getPartDisposition(idx).equals(Part.ATTACHMENT)) {
>> -                        attachments.add(idx);
>> +                } else {
>> +                    if (getPartDisposition(idx) != null &&  
>> (getPartDisposition(idx).equals(Part.ATTACHMENT) ||
>> +                             
>> getPartDisposition(idx).equals(Part.INLINE))) {
>> +                        attachments.add(idx);
>>                     }
>>                 }
>>             }
>> @@ -268,8 +288,10 @@
>>                 if (subPartCount > 0) {
>>                     for (int si = 0; si < subPartCount; si++) {
>>                         String sidx = idx + "." +  
>> Integer.toString(si);
>> -                        if (getPartDisposition(sidx) == null ||  
>> getPartDisposition(sidx).equals(Part.INLINE)) {
>> -                             
>> body.append(getPartText(sidx)).append("\n");
>> +                        if (getPartContentType(sidx) != null &&  
>> getPartContentType(sidx).toLowerCase().startsWith("text")) {
>> +                            if (getPartDisposition(sidx) == null  
>> || getPartDisposition(sidx).equals(Part.INLINE)) {
>> +                                 
>> body.append(getPartText(sidx)).append("\n");
>> +                            }
>>                         }
>>                     }
>>                 } else {
>> @@ -285,6 +307,36 @@
>>         }
>>     }
>>
>> +    public String getMessageBodyContentType() {
>> +        String contentType = getContentType();
>> +        if (contentType != null &&  
>> contentType.toLowerCase().startsWith("text")) {
>> +            return contentType;
>> +        } else {
>> +            for (int i = 0; i < getMainPartCount(); i++) {
>> +                int subPartCount = getSubPartCount(i);
>> +                String idx = Integer.toString(i);
>> +                if (subPartCount > 0) {
>> +                    for (int si = 0; si < subPartCount; si++) {
>> +                        String sidx = idx + "." +  
>> Integer.toString(si);
>> +                        if (getPartContentType(sidx) != null &&  
>> getPartContentType(sidx).toLowerCase().startsWith("text")) {
>> +                            if (getPartDisposition(sidx) == null  
>> || getPartDisposition(sidx).equals(Part.INLINE)) {
>> +                                return getPartContentType(sidx);
>> +                            }
>> +                        }
>> +                    }
>> +                } else {
>> +                    if (getPartContentType(idx) != null &&  
>> getPartContentType(idx).toLowerCase().startsWith("text")) {
>> +                        // make sure the part isn't an attachment
>> +                        if (getPartDisposition(idx) == null ||  
>> getPartDisposition(idx).equals(Part.INLINE)) {
>> +                            return getPartContentType(idx);
>> +                        }
>> +                    }
>> +                }
>> +            }
>> +        }
>> +        return "text/html";
>> +    }
>> +
>>     public String getMessageRawText() {
>>         MimeMessage message = getMessage();
>>         try {
>> @@ -482,7 +534,7 @@
>>         byte[] buffer = new byte[4096];
>>         try {
>>             for (int n; (n = stream.read(buffer)) != -1;) {
>> -                baos.write(n);
>> +                baos.write(buffer, 0, n);
>>             }
>>         } catch (IOException e) {
>>             Debug.logError(e, module);
>>
>>
> -- 
> Antwebsystems.com: Quality OFBiz services for competitive rates
>


Re: svn commit: r774178 - in /ofbiz/trunk/framework/service/src/org/ofbiz/service/mail: JavaMailContainer.java MimeMessageWrapper.java

Posted by Hans Bakker <ma...@antwebsystems.com>.
Hi Andrew,

excellent improvements here in the email section of the ofbiz system,
thanks for your help in this area.

Regards,
Hans


On Wed, 2009-05-13 at 03:05 +0000, jaz@apache.org wrote:
> Author: jaz
> Date: Wed May 13 03:05:00 2009
> New Revision: 774178
> 
> URL: http://svn.apache.org/viewvc?rev=774178&view=rev
> Log:
> more improvements to the message wrapper logic for getting attachments and reading multipart messages; added methods to get headers; mail container now marks messages which are too big to process (the max size setting) as read (but never deleted) so they are not always being checked but remain in the mailbox for human review
> 
> Modified:
>     ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java
>     ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/MimeMessageWrapper.java
> 
> Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java?rev=774178&r1=774177&r2=774178&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java (original)
> +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/JavaMailContainer.java Wed May 13 03:05:00 2009
> @@ -305,17 +305,22 @@
>                      long messageSize = message.getSize();
>                      if (message instanceof MimeMessage && messageSize >= maxSize) {
>                          Debug.logWarning("Message from: " + message.getFrom()[0] + "not received, too big, size:" + messageSize + " cannot be more than " + maxSize + " bytes", module);
> +                        
> +                        // set the message as read so it doesn't continue to try to process; but don't delete it
> +                        message.setFlag(Flags.Flag.SEEN, true);
>                      } else {
>                          this.processMessage(message, session);
>                          if (Debug.verboseOn()) Debug.logVerbose("Message from " + UtilMisc.toListArray(message.getFrom()) + " with subject [" + message.getSubject() + "]  has been processed." , module);
>                          message.setFlag(Flags.Flag.SEEN, true);
>                          if (Debug.verboseOn()) Debug.logVerbose("Message [" + message.getSubject() + "] is marked seen", module);
> +                        
> +                        // delete the message after processing
> +                        if (deleteMail) {
> +                            if (Debug.verboseOn()) Debug.logVerbose("Message [" + message.getSubject() + "] is being deleted", module);
> +                            message.setFlag(Flags.Flag.DELETED, true);
> +                        }
>                      }
> -                }
> -                if (deleteMail) {
> -                    if (Debug.verboseOn()) Debug.logVerbose("Message [" + message.getSubject() + "] is being deleted", module);
> -                    message.setFlag(Flags.Flag.DELETED, true);
> -                }
> +                }                
>              }
>  
>              // expunge and close the folder
> 
> Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/MimeMessageWrapper.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/MimeMessageWrapper.java?rev=774178&r1=774177&r2=774178&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/MimeMessageWrapper.java (original)
> +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/mail/MimeMessageWrapper.java Wed May 13 03:05:00 2009
> @@ -122,6 +122,24 @@
>          return message;
>      }
>      
> +    public String getFirstHeader(String header) {
> +        String[] headers = getHeader(header);
> +        if (headers != null && headers.length > 0) {
> +            return headers[0];
> +        } else {
> +            return null;
> +        }
> +    }
> +    public String[] getHeader(String header) {
> +        MimeMessage message = getMessage();
> +        try {
> +            return message.getHeader(header);
> +        } catch (MessagingException e) {
> +            Debug.logError(e, module);
> +            return null;
> +        }
> +    }
> +    
>      public Address[] getFrom() {
>          MimeMessage message = getMessage();
>          try {
> @@ -235,14 +253,16 @@
>                  String idx = Integer.toString(i);
>                  if (subPartCount > 0) {
>                      for (int si = 0; si < subPartCount; si++) {
> -                        String sidx = idx + "." + Integer.toString(si);
> -                        if (getPartDisposition(sidx) != null && getPartDisposition(sidx).equals(Part.ATTACHMENT)) {
> -                            attachments.add(sidx);
> +                        String sidx = idx + "." + Integer.toString(si);                        
> +                        if (getPartDisposition(sidx) != null && (getPartDisposition(sidx).equals(Part.ATTACHMENT) ||
> +                                getPartDisposition(sidx).equals(Part.INLINE))) {
> +                            attachments.add(sidx);                        
>                          }
>                      }
> -                } else {
> -                    if (getPartDisposition(idx) != null && getPartDisposition(idx).equals(Part.ATTACHMENT)) {
> -                        attachments.add(idx);
> +                } else {                    
> +                    if (getPartDisposition(idx) != null && (getPartDisposition(idx).equals(Part.ATTACHMENT) ||
> +                            getPartDisposition(idx).equals(Part.INLINE))) {
> +                        attachments.add(idx);                    
>                      }
>                  }
>              }
> @@ -268,8 +288,10 @@
>                  if (subPartCount > 0) {
>                      for (int si = 0; si < subPartCount; si++) {
>                          String sidx = idx + "." + Integer.toString(si);
> -                        if (getPartDisposition(sidx) == null || getPartDisposition(sidx).equals(Part.INLINE)) {
> -                            body.append(getPartText(sidx)).append("\n");    
> +                        if (getPartContentType(sidx) != null && getPartContentType(sidx).toLowerCase().startsWith("text")) {
> +                            if (getPartDisposition(sidx) == null || getPartDisposition(sidx).equals(Part.INLINE)) {
> +                                body.append(getPartText(sidx)).append("\n");    
> +                            }
>                          }
>                      }
>                  } else {
> @@ -285,6 +307,36 @@
>          }        
>      }
>      
> +    public String getMessageBodyContentType() {
> +        String contentType = getContentType();
> +        if (contentType != null && contentType.toLowerCase().startsWith("text")) {
> +            return contentType;
> +        } else {
> +            for (int i = 0; i < getMainPartCount(); i++) {
> +                int subPartCount = getSubPartCount(i);
> +                String idx = Integer.toString(i);
> +                if (subPartCount > 0) {
> +                    for (int si = 0; si < subPartCount; si++) {
> +                        String sidx = idx + "." + Integer.toString(si);
> +                        if (getPartContentType(sidx) != null && getPartContentType(sidx).toLowerCase().startsWith("text")) {
> +                            if (getPartDisposition(sidx) == null || getPartDisposition(sidx).equals(Part.INLINE)) {
> +                                return getPartContentType(sidx);  
> +                            }
> +                        }
> +                    }
> +                } else {
> +                    if (getPartContentType(idx) != null && getPartContentType(idx).toLowerCase().startsWith("text")) {
> +                        // make sure the part isn't an attachment
> +                        if (getPartDisposition(idx) == null || getPartDisposition(idx).equals(Part.INLINE)) {
> +                            return getPartContentType(idx);                      
> +                        }
> +                    }
> +                }
> +            }
> +        }
> +        return "text/html";
> +    }
> +    
>      public String getMessageRawText() {
>          MimeMessage message = getMessage();
>          try {
> @@ -482,7 +534,7 @@
>          byte[] buffer = new byte[4096];
>          try {            
>              for (int n; (n = stream.read(buffer)) != -1;) {
> -                baos.write(n);
> +                baos.write(buffer, 0, n);
>              }
>          } catch (IOException e) {
>              Debug.logError(e, module);
> 
> 
-- 
Antwebsystems.com: Quality OFBiz services for competitive rates