You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2009/05/27 14:42:54 UTC

svn commit: r779149 - in /camel/branches/camel-1.x: ./ camel-core/src/main/java/org/apache/camel/util/ components/camel-mail/src/main/java/org/apache/camel/component/mail/ components/camel-mail/src/test/java/org/apache/camel/component/mail/

Author: davsclaus
Date: Wed May 27 12:42:53 2009
New Revision: 779149

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

........
  r779143 | davsclaus | 2009-05-27 14:33:50 +0200 (Wed, 27 May 2009) | 1 line
  
  CAMEL-1645: camel-mail. Setting ContentType improved to allow charset, and provided in exchange message header as well.
........

Added:
    camel/branches/camel-1.x/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCustomContentTypeTest.java
      - copied, changed from r779143, camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCustomContentTypeTest.java
Modified:
    camel/branches/camel-1.x/   (props changed)
    camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
    camel/branches/camel-1.x/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java

Propchange: camel/branches/camel-1.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 27 12:42:53 2009
@@ -1 +1 @@
-/camel/trunk:736980,739733,739904,740251,740295,740306,740596,740663,741848,742231,742705,742739,742854,742856,742898,742906,743613,743762,743773,743920,743959-743960,744123,745105,745367,745541,745751,745826,745978,746269,746872,746895,746962,747258,747678-747704,748392,748436,748821,749563-749564,749574,749628-749629,749936,749956,750017,750334,750396,750761,750796,752068,752117,752418,752751-752755,752764-752773,752956,753087,753101,753175,755136,755487,756313,756348,756870,756939,757636,757693,757743,757865,758539,758563,758600,758617,758692,758990,759362,759453,759887,759931,760003,760890,760909,760937,761194,761536,761583,761607,762047,762633,762650,762935,763095,763484,763551,765154,765686,765729,765743,765824,766016,766289,766584,766588,766590,766602,766673,767403,767824,768342,769239,769346,769368,769434,770172,770906,771303,773193,773446,773781,774192,774383,774658-774659,776198,776289,776504,776975,778102,778689-778701,779121
+/camel/trunk:736980,739733,739904,740251,740295,740306,740596,740663,741848,742231,742705,742739,742854,742856,742898,742906,743613,743762,743773,743920,743959-743960,744123,745105,745367,745541,745751,745826,745978,746269,746872,746895,746962,747258,747678-747704,748392,748436,748821,749563-749564,749574,749628-749629,749936,749956,750017,750334,750396,750761,750796,752068,752117,752418,752751-752755,752764-752773,752956,753087,753101,753175,755136,755487,756313,756348,756870,756939,757636,757693,757743,757865,758539,758563,758600,758617,758692,758990,759362,759453,759887,759931,760003,760890,760909,760937,761194,761536,761583,761607,762047,762633,762650,762935,763095,763484,763551,765154,765686,765729,765743,765824,766016,766289,766584,766588,766590,766602,766673,767403,767824,768342,769239,769346,769368,769434,770172,770906,771303,773193,773446,773781,774192,774383,774658-774659,776198,776289,776504,776975,778102,778689-778701,779121,779143

Propchange: camel/branches/camel-1.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java?rev=779149&r1=779148&r2=779149&view=diff
==============================================================================
--- camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java (original)
+++ camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java Wed May 27 12:42:53 2009
@@ -870,4 +870,26 @@
         return sb.toString();
     }
 
+    public static String after(String text, String after) {
+        if (!text.contains(after)) {
+            return null;
+        }
+        return text.substring(text.indexOf(after) + after.length());
+    }
+
+    public static String before(String text, String before) {
+        if (!text.contains(before)) {
+            return null;
+        }
+        return text.substring(0, text.indexOf(before));
+    }
+
+    public static String between(String text, String after, String before) {
+        text = after(text, after);
+        if (text == null) {
+            return null;
+        }
+        return before(text, before);
+    }
+
 }

Modified: camel/branches/camel-1.x/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java?rev=779149&r1=779148&r2=779149&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java (original)
+++ camel/branches/camel-1.x/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java Wed May 27 12:42:53 2009
@@ -41,6 +41,7 @@
 import org.apache.camel.impl.DefaultHeaderFilterStrategy;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.util.CollectionHelper;
+import org.apache.camel.util.ObjectHelper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -101,17 +102,37 @@
             if (exchange.getIn().hasAttachments()) {
                 appendAttachmentsFromCamel(mimeMessage, exchange.getIn(), endpoint.getConfiguration());
             } else {
-                if ("text/html".equals(endpoint.getConfiguration().getContentType())) {                  
-                    DataSource ds = new ByteArrayDataSource(exchange.getIn().getBody(String.class), "text/html");
-                    mimeMessage.setDataHandler(new DataHandler(ds));
-                } else {
-                    // its just text/plain
+                String contentType = populateContentType(endpoint, mimeMessage, exchange);
+                if (contentType == null) {
                     mimeMessage.setText(exchange.getIn().getBody(String.class));
+                } else if (contentType.startsWith("text/plain")) {
+                    String charset = ObjectHelper.after(contentType, "charset=");
+                    if (charset != null) {
+                        mimeMessage.setText(exchange.getIn().getBody(String.class), charset);
+                    } else {
+                        mimeMessage.setText(exchange.getIn().getBody(String.class));
+                    }
+                } else {
+                    // store content in a byte array data store
+                    DataSource ds = new ByteArrayDataSource(exchange.getIn().getBody(String.class), contentType);
+                    mimeMessage.setDataHandler(new DataHandler(ds));
                 }
             }
         }
     }
 
+    protected String populateContentType(MailEndpoint endpoint, MimeMessage mimeMessage, Exchange exchange) throws MessagingException {
+        // see if we got any content type set
+        String contentType = endpoint.getConfiguration().getContentType();
+        if (exchange.getIn().getHeader("contentType") != null) {
+            contentType = exchange.getIn().getHeader("contentType", String.class);
+        }
+        if (contentType != null) {
+            mimeMessage.setHeader("Content-Type", contentType);
+        }
+        return contentType;
+    }
+
     /**
      * Extracts the body from the Mail message
      */

Copied: camel/branches/camel-1.x/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCustomContentTypeTest.java (from r779143, camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCustomContentTypeTest.java)
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCustomContentTypeTest.java?p2=camel/branches/camel-1.x/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCustomContentTypeTest.java&p1=camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCustomContentTypeTest.java&r1=779143&r2=779149&rev=779149&view=diff
==============================================================================
--- camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCustomContentTypeTest.java (original)
+++ camel/branches/camel-1.x/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailCustomContentTypeTest.java Wed May 27 12:42:53 2009
@@ -65,17 +65,6 @@
         assertEquals("Hello World", msg.getContent());
     }
 
-    public void testSendPlainMailContentTypeInHeader2() throws Exception {
-        Mailbox.clearAll();
-
-        template.sendBodyAndHeader("direct:b", "Hello World", Exchange.CONTENT_TYPE, "text/plain;charset=iso-8859-1");
-
-        Mailbox box = Mailbox.get("claus@localhost");
-        Message msg = box.get(0);
-        assertEquals("text/plain; charset=iso-8859-1", msg.getContentType());
-        assertEquals("Hello World", msg.getContent());
-    }
-
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {