You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2018/06/07 06:39:20 UTC

[camel] 01/02: CAMEL-12547 - Manage labels the right way

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

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

commit a50f44fc729dccc293ce6ac1aa8f35a783e49b87
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Jun 7 08:36:23 2018 +0200

    CAMEL-12547 - Manage labels the right way
---
 .../mail/stream/GoogleMailStreamConsumer.java      | 16 +++++---------
 .../mail/stream/GoogleMailStreamEndpoint.java      | 25 ++++++++++++++++++++--
 2 files changed, 28 insertions(+), 13 deletions(-)

diff --git a/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConsumer.java b/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConsumer.java
index d44f28d..d344193 100644
--- a/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConsumer.java
+++ b/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConsumer.java
@@ -23,13 +23,10 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Queue;
 
-import javax.mail.internet.AddressException;
-
 import com.google.api.services.gmail.Gmail;
 import com.google.api.services.gmail.model.ListMessagesResponse;
 import com.google.api.services.gmail.model.Message;
 import com.google.api.services.gmail.model.ModifyMessageRequest;
-import com.google.common.base.Splitter;
 
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Endpoint;
@@ -49,10 +46,12 @@ public class GoogleMailStreamConsumer extends ScheduledBatchPollingConsumer {
 
     private static final Logger LOG = LoggerFactory.getLogger(GoogleMailStreamConsumer.class);
     private String unreadLabelId;
+    private List labelsIds;
 
-    public GoogleMailStreamConsumer(Endpoint endpoint, Processor processor, String unreadLabelId) {
+    public GoogleMailStreamConsumer(Endpoint endpoint, Processor processor, String unreadLabelId, List labelsIds) {
         super(endpoint, processor);
         this.unreadLabelId = unreadLabelId;
+        this.labelsIds = labelsIds;
     }
 
     protected GoogleMailStreamConfiguration getConfiguration() {
@@ -77,8 +76,8 @@ public class GoogleMailStreamConsumer extends ScheduledBatchPollingConsumer {
         if (ObjectHelper.isNotEmpty(getConfiguration().getMaxResults())) {
             request.setMaxResults(getConfiguration().getMaxResults());
         }
-        if (ObjectHelper.isNotEmpty(getConfiguration().getLabels())) {
-            request.setLabelIds(splitLabels(getConfiguration().getLabels()));
+        if (ObjectHelper.isNotEmpty(labelsIds)) {
+            request.setLabelIds(labelsIds);
         }
 
         Queue<Exchange> answer = new LinkedList<>();
@@ -138,11 +137,6 @@ public class GoogleMailStreamConsumer extends ScheduledBatchPollingConsumer {
         return total;
     }
 
-    private List<String> splitLabels(String labels) throws AddressException {
-        List<String> labelsList = Splitter.on(',').splitToList(getConfiguration().getLabels());
-        return labelsList;
-    }
-
     /**
      * Strategy to delete the message after being processed.
      *
diff --git a/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpoint.java b/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpoint.java
index c2ed119..c695f45 100644
--- a/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpoint.java
+++ b/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpoint.java
@@ -17,13 +17,17 @@
 package org.apache.camel.component.google.mail.stream;
 
 import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
 import java.util.List;
 
+import javax.mail.internet.AddressException;
+
 import com.google.api.client.util.Base64;
 import com.google.api.services.gmail.Gmail;
 import com.google.api.services.gmail.model.Label;
 import com.google.api.services.gmail.model.ListLabelsResponse;
 import com.google.api.services.gmail.model.MessagePartHeader;
+import com.google.common.base.Splitter;
 
 import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
@@ -35,6 +39,7 @@ import org.apache.camel.component.google.mail.GoogleMailClientFactory;
 import org.apache.camel.impl.ScheduledPollEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.util.ObjectHelper;
 
 /**
  * The google-mail component provides access to Google Mail.
@@ -64,7 +69,7 @@ public class GoogleMailStreamEndpoint extends ScheduledPollEndpoint {
     @Override
     public Consumer createConsumer(Processor processor) throws Exception {
         String unreadLabelId = null;
-        String readLabelId = null;
+        List labelsIds = new ArrayList<>();
         ListLabelsResponse listResponse = getClient().users().labels().list("me").execute();
         for (Label label : listResponse.getLabels()) {
             Label countLabel = getClient().users().labels().get("me", label.getId()).execute();
@@ -72,7 +77,18 @@ public class GoogleMailStreamEndpoint extends ScheduledPollEndpoint {
                 unreadLabelId = countLabel.getId();
             }
         }
-        final GoogleMailStreamConsumer consumer = new GoogleMailStreamConsumer(this, processor, unreadLabelId);
+        if (ObjectHelper.isNotEmpty(getConfiguration().getLabels())) {
+            List<String> plainLabels = splitLabels(getConfiguration().getLabels());
+            for (Label label : listResponse.getLabels()) {
+                Label countLabel = getClient().users().labels().get("me", label.getId()).execute();
+                for (String plainLabel : plainLabels) {
+                    if (countLabel.getName().equalsIgnoreCase(plainLabel)) {
+                        labelsIds.add(countLabel.getId());
+                    }
+                }
+            }
+        }
+        final GoogleMailStreamConsumer consumer = new GoogleMailStreamConsumer(this, processor, unreadLabelId, labelsIds);
         configureConsumer(consumer);
         return consumer;
     }
@@ -134,4 +150,9 @@ public class GoogleMailStreamEndpoint extends ScheduledPollEndpoint {
             }
         }
     }
+    
+    private List<String> splitLabels(String labels) throws AddressException {
+        List<String> labelsList = Splitter.on(',').splitToList(getConfiguration().getLabels());
+        return labelsList;
+    }
 }

-- 
To stop receiving notification emails like this one, please contact
acosentino@apache.org.