[camel] branch master updated: CAMEL-12590: Fixed Type converter confusion when camel-cxf and camel-mail are in same classpath. SortTerm should not be a type converter there is no such need, just call it directly from the mail component like we do for search term.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[camel] branch master updated: CAMEL-12590: Fixed Type converter confusion when camel-cxf and camel-mail are in same classpath. SortTerm should not be a type converter there is no such need, just call it directly from the mail component like we do for search term.

davsclaus-2
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 129f9ab  CAMEL-12590: Fixed Type converter confusion when camel-cxf and camel-mail are in same classpath. SortTerm should not be a type converter there is no such need, just call it directly from the mail component like we do for search term.
129f9ab is described below

commit 129f9abf911b081743cf33f5d2fff227c2f03b97
Author: Claus Ibsen <[hidden email]>
AuthorDate: Tue Aug 7 13:14:23 2018 +0200

    CAMEL-12590: Fixed Type converter confusion when camel-cxf and camel-mail are in same classpath. SortTerm should not be a type converter there is no such need, just call it directly from the mail component like we do for search term.
---
 .../org/apache/camel/component/mail/MailComponent.java   | 16 ++++++++++++++++
 .../org/apache/camel/component/mail/MailConverters.java  |  9 +++++++--
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java
index 2a51481..21b28d0 100644
--- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java
+++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java
@@ -22,6 +22,7 @@ import java.util.Map;
 import java.util.Set;
 import javax.mail.search.SearchTerm;
 
+import com.sun.mail.imap.SortTerm;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.SSLContextParametersAware;
@@ -83,6 +84,21 @@ public class MailComponent extends UriEndpointComponent implements SSLContextPar
             endpoint.setSearchTerm(st);
         }
 
+        // special for sort term
+        Object sortTerm = getAndRemoveOrResolveReferenceParameter(parameters, "sortTerm", Object.class);
+        if (sortTerm != null) {
+            SortTerm[] st;
+            if (sortTerm instanceof String) {
+                // okay its a String then lets convert that to SortTerm
+                st = MailConverters.toSortTerm((String) sortTerm);
+            } else if (sortTerm instanceof SortTerm[]) {
+                st = (SortTerm[]) sortTerm;
+            } else {
+                throw new IllegalArgumentException("SortTerm must either be SortTerm[] or a String value");
+            }
+            endpoint.setSortTerm(st);
+        }
+
         endpoint.setContentTypeResolver(contentTypeResolver);
         setProperties(endpoint.getConfiguration(), parameters);
         setProperties(endpoint, parameters);
diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConverters.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConverters.java
index de1a56f..33c28fd 100644
--- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConverters.java
+++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConverters.java
@@ -141,6 +141,11 @@ public final class MailConverters {
         return null;
     }
 
+    /**
+     * Converters the simple search term builder to search term.
+     *
+     * This should not be a @Converter method
+     */
     public static SearchTerm toSearchTerm(SimpleSearchTerm simple, TypeConverter typeConverter) throws ParseException, NoTypeConversionAvailableException {
         SearchTermBuilder builder = new SearchTermBuilder();
         if (simple.isUnseen()) {
@@ -214,9 +219,9 @@ public final class MailConverters {
     }
 
     /*
-     * Converts from comma separated list of sort terms to SortTerm obj array
+     * Converts from comma separated list of sort terms to SortTerm obj array.
+     * This should not be a @Converter method
      */
-    @Converter
     public static SortTerm[] toSortTerm(String sortTerm) {
         ArrayList<SortTerm> result = new ArrayList<>();