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 1d290bdf3a99acf7b029378e27bd1b54e902111c
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Fri Sep 7 13:21:29 2018 +0200

    CAMEL-12784 - Create a Camel-google-calendar-stream component, option to 
set a Calendar to consume from with its summary name
---
 .../docs/google-calendar-stream-component.adoc     |  3 +-
 .../stream/GoogleCalendarStreamConfiguration.java  | 15 +++++++++-
 .../stream/GoogleCalendarStreamConsumer.java       |  6 ++--
 .../stream/GoogleCalendarStreamEndpoint.java       | 32 +++++++++++++++++++---
 ...GoogleCalendarStreamComponentConfiguration.java | 12 ++++++++
 5 files changed, 60 insertions(+), 8 deletions(-)

diff --git 
a/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
 
b/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
index 4530424..a6fdec4 100644
--- 
a/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
+++ 
b/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
@@ -78,7 +78,7 @@ with the following path and query parameters:
 |===
 
 
-==== Query Parameters (27 parameters):
+==== Query Parameters (28 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -87,6 +87,7 @@ with the following path and query parameters:
 | *accessToken* (consumer) | OAuth 2 access token. This typically expires 
after an hour so refreshToken is recommended for long term usage. |  | String
 | *applicationName* (consumer) | Google Calendar application name. Example 
would be camel-google-calendar/1.0 |  | String
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions occurred while the 
consumer is trying to pickup incoming messages, or the likes, will now be 
processed as a message and handled by the routing Error Handler. By default the 
consumer will use the org.apache.camel.spi.ExceptionHandler to deal with 
exceptions, that will be logged at WARN or ERROR level and ignored. | false | 
boolean
+| *calendarSummaryName* (consumer) | Calendar Summary name to use | primary | 
String
 | *clientId* (consumer) | Client ID of the mail application |  | String
 | *clientSecret* (consumer) | Client secret of the mail application |  | String
 | *maxResults* (consumer) | Max results to be returned | 10 | int
diff --git 
a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConfiguration.java
 
b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConfiguration.java
index a7d654a..da8a307 100644
--- 
a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConfiguration.java
+++ 
b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConfiguration.java
@@ -59,6 +59,9 @@ public class GoogleCalendarStreamConfiguration implements 
Cloneable {
 
     @UriParam(defaultValue = "10")
     private int maxResults = 10;
+    
+    @UriParam(defaultValue = "primary")
+    private String calendarSummaryName = "primary";
 
     public String getClientId() {
         return clientId;
@@ -164,10 +167,20 @@ public class GoogleCalendarStreamConfiguration implements 
Cloneable {
         this.maxResults = maxResults;
     }
 
+    public String getCalendarSummaryName() {
+        return calendarSummaryName;
+    }
+
+    /**
+     * Calendar Summary name to use
+     */
+    public void setCalendarSummaryName(String calendarSummaryName) {
+        this.calendarSummaryName = calendarSummaryName;
+    } 
+
     // *************************************************
     //
     // *************************************************
-
     public GoogleCalendarStreamConfiguration copy() {
         try {
             return (GoogleCalendarStreamConfiguration)super.clone();
diff --git 
a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumer.java
 
b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumer.java
index c177f9f..097c0d7 100644
--- 
a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumer.java
+++ 
b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumer.java
@@ -42,9 +42,11 @@ import org.slf4j.LoggerFactory;
 public class GoogleCalendarStreamConsumer extends 
ScheduledBatchPollingConsumer {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(GoogleCalendarStreamConsumer.class);
+    private String calendarId;
 
-    public GoogleCalendarStreamConsumer(Endpoint endpoint, Processor 
processor) {
+    public GoogleCalendarStreamConsumer(Endpoint endpoint, Processor 
processor, String calendarId) {
         super(endpoint, processor);
+        this.calendarId = calendarId;
     }
 
     protected GoogleCalendarStreamConfiguration getConfiguration() {
@@ -63,7 +65,7 @@ public class GoogleCalendarStreamConsumer extends 
ScheduledBatchPollingConsumer
     @Override
     protected int poll() throws Exception {
         Date date = new Date();
-        com.google.api.services.calendar.Calendar.Events.List request = 
getClient().events().list("primary").setOrderBy("updated").setTimeMin(new 
DateTime(date));
+        com.google.api.services.calendar.Calendar.Events.List request = 
getClient().events().list(calendarId).setOrderBy("updated").setTimeMin(new 
DateTime(date));
         if (ObjectHelper.isNotEmpty(getConfiguration().getQuery())) {
             request.setQ(getConfiguration().getQuery());
         }
diff --git 
a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpoint.java
 
b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpoint.java
index 5331601..1b60db5 100644
--- 
a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpoint.java
+++ 
b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpoint.java
@@ -18,9 +18,6 @@ package org.apache.camel.component.google.calendar.stream;
 
 import java.io.UnsupportedEncodingException;
 
-import com.google.api.services.calendar.Calendar;
-import com.google.api.services.calendar.model.Event;
-
 import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
@@ -31,6 +28,13 @@ import 
org.apache.camel.component.google.calendar.GoogleCalendarClientFactory;
 import org.apache.camel.impl.ScheduledPollEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.api.services.calendar.Calendar;
+import com.google.api.services.calendar.model.CalendarListEntry;
+import com.google.api.services.calendar.model.Event;
 
 /**
  * The google-calendar component provides access to Google Calendar in a 
streaming mod.
@@ -43,6 +47,8 @@ import org.apache.camel.spi.UriParam;
              consumerOnly = true,
              label = "api,cloud")
 public class GoogleCalendarStreamEndpoint extends ScheduledPollEndpoint {
+    
+    private static final Logger LOG = 
LoggerFactory.getLogger(GoogleCalendarStreamEndpoint.class);
 
     @UriParam
     private GoogleCalendarStreamConfiguration configuration;
@@ -59,7 +65,25 @@ public class GoogleCalendarStreamEndpoint extends 
ScheduledPollEndpoint {
 
     @Override
     public Consumer createConsumer(Processor processor) throws Exception {
-        final GoogleCalendarStreamConsumer consumer = new 
GoogleCalendarStreamConsumer(this, processor);
+        String calendarId = null;
+        if (getConfiguration().getCalendarSummaryName() != "primary") {
+            com.google.api.services.calendar.model.CalendarList calendars = 
getClient().calendarList().list().execute();
+            if (calendars.getItems() != null) {
+                for (CalendarListEntry entry : calendars.getItems()) {
+                    if 
(getConfiguration().getCalendarSummaryName().equals(entry.getSummary())) {
+                        calendarId = entry.getId();
+                    }
+                }
+            }
+            if (ObjectHelper.isEmpty(calendarId)) {
+                LOG.warn("The calendar {} doesn't exists fallback to primary 
calendar", getConfiguration().getCalendarSummaryName());
+                calendarId = "primary";
+            }
+        } else {
+            LOG.debug("Setting calendarId as primary", 
getConfiguration().getCalendarSummaryName());
+            calendarId = "primary";
+        }
+        final GoogleCalendarStreamConsumer consumer = new 
GoogleCalendarStreamConsumer(this, processor, calendarId);
         configureConsumer(consumer);
         return consumer;
     }
diff --git 
a/platforms/spring-boot/components-starter/camel-google-calendar-starter/src/main/java/org/apache/camel/component/google/calendar/stream/springboot/GoogleCalendarStreamComponentConfiguration.java
 
b/platforms/spring-boot/components-starter/camel-google-calendar-starter/src/main/java/org/apache/camel/component/google/calendar/stream/springboot/GoogleCalendarStreamComponentConfiguration.java
index 598fc40..91b7429 100644
--- 
a/platforms/spring-boot/components-starter/camel-google-calendar-starter/src/main/java/org/apache/camel/component/google/calendar/stream/springboot/GoogleCalendarStreamComponentConfiguration.java
+++ 
b/platforms/spring-boot/components-starter/camel-google-calendar-starter/src/main/java/org/apache/camel/component/google/calendar/stream/springboot/GoogleCalendarStreamComponentConfiguration.java
@@ -125,6 +125,10 @@ public class GoogleCalendarStreamComponentConfiguration
          * Max results to be returned
          */
         private Integer maxResults = 10;
+        /**
+         * Calendar Summary name to use
+         */
+        private String calendarSummaryName = "primary";
 
         public String getClientId() {
             return clientId;
@@ -197,5 +201,13 @@ public class GoogleCalendarStreamComponentConfiguration
         public void setMaxResults(Integer maxResults) {
             this.maxResults = maxResults;
         }
+
+        public String getCalendarSummaryName() {
+            return calendarSummaryName;
+        }
+
+        public void setCalendarSummaryName(String calendarSummaryName) {
+            this.calendarSummaryName = calendarSummaryName;
+        }
     }
 }
\ No newline at end of file

Reply via email to