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 <anco...@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 acosent...@apache.org.