This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 076341b Google OAuth2 with service account scenario (2LO OAuth2)
(#6726)
076341b is described below
commit 076341bd04d759f868d9d6f13ca3d1798fa3914d
Author: Vladimir V. Bychkov <[email protected]>
AuthorDate: Thu Jan 13 16:28:36 2022 +0100
Google OAuth2 with service account scenario (2LO OAuth2) (#6726)
* CAMEL-17476: Google OAuth2 for service account
* CAMEL-17476: "Google OAuth2 for service account" - used variable
google-mail-guava-version
* CAMEL-17476: "Google OAuth2 for service account" - variables moved to
parent module
* CAMEL-17476: "Google OAuth2 for service account" - endpoint uri parameter
filename replaced with keyResource
Co-authored-by: Vladimir V. Bychkov <[email protected]>
---
components/camel-google/camel-google-mail/pom.xml | 11 +-
...UsersDraftsEndpointConfigurationConfigurer.java | 30 ++
.../GmailUsersEndpointConfigurationConfigurer.java | 30 ++
...sersHistoryEndpointConfigurationConfigurer.java | 30 ++
.../GmailUsersLabelsEndpointConfiguration.java | 2 +-
...UsersLabelsEndpointConfigurationConfigurer.java | 30 ++
...AttachmentsEndpointConfigurationConfigurer.java | 30 ++
.../GmailUsersMessagesEndpointConfiguration.java | 2 +-
...ersMessagesEndpointConfigurationConfigurer.java | 30 ++
...sersThreadsEndpointConfigurationConfigurer.java | 30 ++
.../google/mail/GoogleMailComponentConfigurer.java | 23 ++
.../mail/GoogleMailConfigurationConfigurer.java | 30 ++
.../google/mail/GoogleMailEndpointConfigurer.java | 16 +
.../google/mail/GoogleMailEndpointUriFactory.java | 5 +-
.../camel/component/google/mail/google-mail.json | 10 +-
.../google/mail/BatchGoogleMailClientFactory.java | 164 ++++----
.../google/mail/GoogleMailClientFactory.java | 5 +
.../component/google/mail/GoogleMailComponent.java | 14 +-
.../mail/GoogleMailComponentVerifierExtension.java | 13 +-
.../google/mail/GoogleMailConfiguration.java | 45 +++
.../google/mail/GmailUsersMessagesIT.java | 432 ++++++++++-----------
.../component/google/mail/GmailUsersThreadsIT.java | 272 ++++++-------
.../dsl/GoogleMailComponentBuilderFactory.java | 47 +++
parent/pom.xml | 5 +-
24 files changed, 872 insertions(+), 434 deletions(-)
diff --git a/components/camel-google/camel-google-mail/pom.xml
b/components/camel-google/camel-google-mail/pom.xml
index e41538b..48b07b0 100644
--- a/components/camel-google/camel-google-mail/pom.xml
+++ b/components/camel-google/camel-google-mail/pom.xml
@@ -48,7 +48,7 @@
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
- <version>${google-api-client-version}</version>
+ <version>${google-mail-api-client-version}</version>
<exclusions>
<exclusion>
<groupId>com.google.code.findbugs</groupId>
@@ -59,7 +59,7 @@
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
- <version>${google-api-client-version}</version>
+ <version>${google-mail-api-client-version}</version>
<exclusions>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
@@ -70,7 +70,7 @@
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client-jackson2</artifactId>
- <version>${google-api-client-version}</version>
+ <version>${google-mail-api-client-version}</version>
<exclusions>
<exclusion>
<groupId>com.google.code.findbugs</groupId>
@@ -83,6 +83,11 @@
<artifactId>google-api-services-gmail</artifactId>
<version>${google-api-services-mail-version}</version>
</dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>${google-mail-guava-version}</version>
+ </dependency>
<dependency>
<groupId>com.sun.mail</groupId>
diff --git
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersDraftsEndpointConfigurationConfigurer.java
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersDraftsEndpointConfigurationConfigurer.java
index d2de446..33a8281 100644
---
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersDraftsEndpointConfigurationConfigurer.java
+++
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersDraftsEndpointConfigurationConfigurer.java
@@ -26,10 +26,13 @@ public class
GmailUsersDraftsEndpointConfigurationConfigurer extends org.apache.
map.put("ClientId", java.lang.String.class);
map.put("ClientSecret", java.lang.String.class);
map.put("Content", com.google.api.services.gmail.model.Draft.class);
+ map.put("Delegate", java.lang.String.class);
map.put("Id", java.lang.String.class);
+ map.put("KeyResource", java.lang.String.class);
map.put("MediaContent",
com.google.api.client.http.AbstractInputStreamContent.class);
map.put("MethodName", java.lang.String.class);
map.put("RefreshToken", java.lang.String.class);
+ map.put("Scopes", java.util.List.class);
map.put("UserId", java.lang.String.class);
ALL_OPTIONS = map;
}
@@ -50,14 +53,20 @@ public class
GmailUsersDraftsEndpointConfigurationConfigurer extends org.apache.
case "ClientSecret": target.setClientSecret(property(camelContext,
java.lang.String.class, value)); return true;
case "content":
case "Content": target.setContent(property(camelContext,
com.google.api.services.gmail.model.Draft.class, value)); return true;
+ case "delegate":
+ case "Delegate": target.setDelegate(property(camelContext,
java.lang.String.class, value)); return true;
case "id":
case "Id": target.setId(property(camelContext, java.lang.String.class,
value)); return true;
+ case "keyresource":
+ case "KeyResource": target.setKeyResource(property(camelContext,
java.lang.String.class, value)); return true;
case "mediacontent":
case "MediaContent": target.setMediaContent(property(camelContext,
com.google.api.client.http.AbstractInputStreamContent.class, value)); return
true;
case "methodname":
case "MethodName": target.setMethodName(property(camelContext,
java.lang.String.class, value)); return true;
case "refreshtoken":
case "RefreshToken": target.setRefreshToken(property(camelContext,
java.lang.String.class, value)); return true;
+ case "scopes":
+ case "Scopes": target.setScopes(property(camelContext,
java.util.List.class, value)); return true;
case "userid":
case "UserId": target.setUserId(property(camelContext,
java.lang.String.class, value)); return true;
default: return false;
@@ -84,14 +93,20 @@ public class
GmailUsersDraftsEndpointConfigurationConfigurer extends org.apache.
case "ClientSecret": return java.lang.String.class;
case "content":
case "Content": return com.google.api.services.gmail.model.Draft.class;
+ case "delegate":
+ case "Delegate": return java.lang.String.class;
case "id":
case "Id": return java.lang.String.class;
+ case "keyresource":
+ case "KeyResource": return java.lang.String.class;
case "mediacontent":
case "MediaContent": return
com.google.api.client.http.AbstractInputStreamContent.class;
case "methodname":
case "MethodName": return java.lang.String.class;
case "refreshtoken":
case "RefreshToken": return java.lang.String.class;
+ case "scopes":
+ case "Scopes": return java.util.List.class;
case "userid":
case "UserId": return java.lang.String.class;
default: return null;
@@ -114,18 +129,33 @@ public class
GmailUsersDraftsEndpointConfigurationConfigurer extends org.apache.
case "ClientSecret": return target.getClientSecret();
case "content":
case "Content": return target.getContent();
+ case "delegate":
+ case "Delegate": return target.getDelegate();
case "id":
case "Id": return target.getId();
+ case "keyresource":
+ case "KeyResource": return target.getKeyResource();
case "mediacontent":
case "MediaContent": return target.getMediaContent();
case "methodname":
case "MethodName": return target.getMethodName();
case "refreshtoken":
case "RefreshToken": return target.getRefreshToken();
+ case "scopes":
+ case "Scopes": return target.getScopes();
case "userid":
case "UserId": return target.getUserId();
default: return null;
}
}
+
+ @Override
+ public Object getCollectionValueType(Object target, String name, boolean
ignoreCase) {
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "scopes":
+ case "Scopes": return java.lang.String.class;
+ default: return null;
+ }
+ }
}
diff --git
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersEndpointConfigurationConfigurer.java
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersEndpointConfigurationConfigurer.java
index 8d3b4ec..deaf323 100644
---
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersEndpointConfigurationConfigurer.java
+++
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersEndpointConfigurationConfigurer.java
@@ -26,8 +26,11 @@ public class GmailUsersEndpointConfigurationConfigurer
extends org.apache.camel.
map.put("ClientId", java.lang.String.class);
map.put("ClientSecret", java.lang.String.class);
map.put("Content",
com.google.api.services.gmail.model.WatchRequest.class);
+ map.put("Delegate", java.lang.String.class);
+ map.put("KeyResource", java.lang.String.class);
map.put("MethodName", java.lang.String.class);
map.put("RefreshToken", java.lang.String.class);
+ map.put("Scopes", java.util.List.class);
map.put("UserId", java.lang.String.class);
ALL_OPTIONS = map;
}
@@ -48,10 +51,16 @@ public class GmailUsersEndpointConfigurationConfigurer
extends org.apache.camel.
case "ClientSecret": target.setClientSecret(property(camelContext,
java.lang.String.class, value)); return true;
case "content":
case "Content": target.setContent(property(camelContext,
com.google.api.services.gmail.model.WatchRequest.class, value)); return true;
+ case "delegate":
+ case "Delegate": target.setDelegate(property(camelContext,
java.lang.String.class, value)); return true;
+ case "keyresource":
+ case "KeyResource": target.setKeyResource(property(camelContext,
java.lang.String.class, value)); return true;
case "methodname":
case "MethodName": target.setMethodName(property(camelContext,
java.lang.String.class, value)); return true;
case "refreshtoken":
case "RefreshToken": target.setRefreshToken(property(camelContext,
java.lang.String.class, value)); return true;
+ case "scopes":
+ case "Scopes": target.setScopes(property(camelContext,
java.util.List.class, value)); return true;
case "userid":
case "UserId": target.setUserId(property(camelContext,
java.lang.String.class, value)); return true;
default: return false;
@@ -78,10 +87,16 @@ public class GmailUsersEndpointConfigurationConfigurer
extends org.apache.camel.
case "ClientSecret": return java.lang.String.class;
case "content":
case "Content": return
com.google.api.services.gmail.model.WatchRequest.class;
+ case "delegate":
+ case "Delegate": return java.lang.String.class;
+ case "keyresource":
+ case "KeyResource": return java.lang.String.class;
case "methodname":
case "MethodName": return java.lang.String.class;
case "refreshtoken":
case "RefreshToken": return java.lang.String.class;
+ case "scopes":
+ case "Scopes": return java.util.List.class;
case "userid":
case "UserId": return java.lang.String.class;
default: return null;
@@ -104,14 +119,29 @@ public class GmailUsersEndpointConfigurationConfigurer
extends org.apache.camel.
case "ClientSecret": return target.getClientSecret();
case "content":
case "Content": return target.getContent();
+ case "delegate":
+ case "Delegate": return target.getDelegate();
+ case "keyresource":
+ case "KeyResource": return target.getKeyResource();
case "methodname":
case "MethodName": return target.getMethodName();
case "refreshtoken":
case "RefreshToken": return target.getRefreshToken();
+ case "scopes":
+ case "Scopes": return target.getScopes();
case "userid":
case "UserId": return target.getUserId();
default: return null;
}
}
+
+ @Override
+ public Object getCollectionValueType(Object target, String name, boolean
ignoreCase) {
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "scopes":
+ case "Scopes": return java.lang.String.class;
+ default: return null;
+ }
+ }
}
diff --git
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersHistoryEndpointConfigurationConfigurer.java
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersHistoryEndpointConfigurationConfigurer.java
index 858e4b7..d72de2f 100644
---
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersHistoryEndpointConfigurationConfigurer.java
+++
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersHistoryEndpointConfigurationConfigurer.java
@@ -25,8 +25,11 @@ public class
GmailUsersHistoryEndpointConfigurationConfigurer extends org.apache
map.put("ApplicationName", java.lang.String.class);
map.put("ClientId", java.lang.String.class);
map.put("ClientSecret", java.lang.String.class);
+ map.put("Delegate", java.lang.String.class);
+ map.put("KeyResource", java.lang.String.class);
map.put("MethodName", java.lang.String.class);
map.put("RefreshToken", java.lang.String.class);
+ map.put("Scopes", java.util.List.class);
map.put("UserId", java.lang.String.class);
ALL_OPTIONS = map;
}
@@ -45,10 +48,16 @@ public class
GmailUsersHistoryEndpointConfigurationConfigurer extends org.apache
case "ClientId": target.setClientId(property(camelContext,
java.lang.String.class, value)); return true;
case "clientsecret":
case "ClientSecret": target.setClientSecret(property(camelContext,
java.lang.String.class, value)); return true;
+ case "delegate":
+ case "Delegate": target.setDelegate(property(camelContext,
java.lang.String.class, value)); return true;
+ case "keyresource":
+ case "KeyResource": target.setKeyResource(property(camelContext,
java.lang.String.class, value)); return true;
case "methodname":
case "MethodName": target.setMethodName(property(camelContext,
java.lang.String.class, value)); return true;
case "refreshtoken":
case "RefreshToken": target.setRefreshToken(property(camelContext,
java.lang.String.class, value)); return true;
+ case "scopes":
+ case "Scopes": target.setScopes(property(camelContext,
java.util.List.class, value)); return true;
case "userid":
case "UserId": target.setUserId(property(camelContext,
java.lang.String.class, value)); return true;
default: return false;
@@ -73,10 +82,16 @@ public class
GmailUsersHistoryEndpointConfigurationConfigurer extends org.apache
case "ClientId": return java.lang.String.class;
case "clientsecret":
case "ClientSecret": return java.lang.String.class;
+ case "delegate":
+ case "Delegate": return java.lang.String.class;
+ case "keyresource":
+ case "KeyResource": return java.lang.String.class;
case "methodname":
case "MethodName": return java.lang.String.class;
case "refreshtoken":
case "RefreshToken": return java.lang.String.class;
+ case "scopes":
+ case "Scopes": return java.util.List.class;
case "userid":
case "UserId": return java.lang.String.class;
default: return null;
@@ -97,14 +112,29 @@ public class
GmailUsersHistoryEndpointConfigurationConfigurer extends org.apache
case "ClientId": return target.getClientId();
case "clientsecret":
case "ClientSecret": return target.getClientSecret();
+ case "delegate":
+ case "Delegate": return target.getDelegate();
+ case "keyresource":
+ case "KeyResource": return target.getKeyResource();
case "methodname":
case "MethodName": return target.getMethodName();
case "refreshtoken":
case "RefreshToken": return target.getRefreshToken();
+ case "scopes":
+ case "Scopes": return target.getScopes();
case "userid":
case "UserId": return target.getUserId();
default: return null;
}
}
+
+ @Override
+ public Object getCollectionValueType(Object target, String name, boolean
ignoreCase) {
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "scopes":
+ case "Scopes": return java.lang.String.class;
+ default: return null;
+ }
+ }
}
diff --git
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfiguration.java
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfiguration.java
index c90a0af..f175d15 100644
---
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfiguration.java
+++
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfiguration.java
@@ -16,7 +16,7 @@ import org.apache.camel.spi.UriParams;
*/
@ApiParams(apiName = "labels",
description = "The labels collection of methods",
- apiMethods = {@ApiMethod(methodName = "create",
description="Creates a new label",
signatures={"com.google.api.services.gmail.Gmail$Users$Labels$Create
create(String userId, com.google.api.services.gmail.model.Label content)"}),
@ApiMethod(methodName = "delete", description="Immediately and permanently
deletes the specified label and removes it from any messages and threads that
it is applied to",
signatures={"com.google.api.services.gmail.Gmail$Users$Labels$Delete
delete(Stri [...]
+ apiMethods = {@ApiMethod(methodName = "create",
description="Creates a new label",
signatures={"com.google.api.services.gmail.Gmail$Users$Labels$Create
create(String userId, com.google.api.services.gmail.model.Label content)"}),
@ApiMethod(methodName = "delete", description="Immediately and permanently
deletes the specified label and removes it from any messages and threads that
it is applied to",
signatures={"com.google.api.services.gmail.Gmail$Users$Labels$Delete
delete(Stri [...]
@UriParams
@Configurer(extended = true)
public final class GmailUsersLabelsEndpointConfiguration extends
GoogleMailConfiguration {
diff --git
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfigurationConfigurer.java
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfigurationConfigurer.java
index 4763529..676ba83 100644
---
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfigurationConfigurer.java
+++
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfigurationConfigurer.java
@@ -26,9 +26,12 @@ public class GmailUsersLabelsEndpointConfigurationConfigurer
extends org.apache.
map.put("ClientId", java.lang.String.class);
map.put("ClientSecret", java.lang.String.class);
map.put("Content", com.google.api.services.gmail.model.Label.class);
+ map.put("Delegate", java.lang.String.class);
map.put("Id", java.lang.String.class);
+ map.put("KeyResource", java.lang.String.class);
map.put("MethodName", java.lang.String.class);
map.put("RefreshToken", java.lang.String.class);
+ map.put("Scopes", java.util.List.class);
map.put("UserId", java.lang.String.class);
ALL_OPTIONS = map;
}
@@ -49,12 +52,18 @@ public class
GmailUsersLabelsEndpointConfigurationConfigurer extends org.apache.
case "ClientSecret": target.setClientSecret(property(camelContext,
java.lang.String.class, value)); return true;
case "content":
case "Content": target.setContent(property(camelContext,
com.google.api.services.gmail.model.Label.class, value)); return true;
+ case "delegate":
+ case "Delegate": target.setDelegate(property(camelContext,
java.lang.String.class, value)); return true;
case "id":
case "Id": target.setId(property(camelContext, java.lang.String.class,
value)); return true;
+ case "keyresource":
+ case "KeyResource": target.setKeyResource(property(camelContext,
java.lang.String.class, value)); return true;
case "methodname":
case "MethodName": target.setMethodName(property(camelContext,
java.lang.String.class, value)); return true;
case "refreshtoken":
case "RefreshToken": target.setRefreshToken(property(camelContext,
java.lang.String.class, value)); return true;
+ case "scopes":
+ case "Scopes": target.setScopes(property(camelContext,
java.util.List.class, value)); return true;
case "userid":
case "UserId": target.setUserId(property(camelContext,
java.lang.String.class, value)); return true;
default: return false;
@@ -81,12 +90,18 @@ public class
GmailUsersLabelsEndpointConfigurationConfigurer extends org.apache.
case "ClientSecret": return java.lang.String.class;
case "content":
case "Content": return com.google.api.services.gmail.model.Label.class;
+ case "delegate":
+ case "Delegate": return java.lang.String.class;
case "id":
case "Id": return java.lang.String.class;
+ case "keyresource":
+ case "KeyResource": return java.lang.String.class;
case "methodname":
case "MethodName": return java.lang.String.class;
case "refreshtoken":
case "RefreshToken": return java.lang.String.class;
+ case "scopes":
+ case "Scopes": return java.util.List.class;
case "userid":
case "UserId": return java.lang.String.class;
default: return null;
@@ -109,16 +124,31 @@ public class
GmailUsersLabelsEndpointConfigurationConfigurer extends org.apache.
case "ClientSecret": return target.getClientSecret();
case "content":
case "Content": return target.getContent();
+ case "delegate":
+ case "Delegate": return target.getDelegate();
case "id":
case "Id": return target.getId();
+ case "keyresource":
+ case "KeyResource": return target.getKeyResource();
case "methodname":
case "MethodName": return target.getMethodName();
case "refreshtoken":
case "RefreshToken": return target.getRefreshToken();
+ case "scopes":
+ case "Scopes": return target.getScopes();
case "userid":
case "UserId": return target.getUserId();
default: return null;
}
}
+
+ @Override
+ public Object getCollectionValueType(Object target, String name, boolean
ignoreCase) {
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "scopes":
+ case "Scopes": return java.lang.String.class;
+ default: return null;
+ }
+ }
}
diff --git
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer.java
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer.java
index 6fac1b0..b800cc2 100644
---
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer.java
+++
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer.java
@@ -25,10 +25,13 @@ public class
GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer extend
map.put("ApplicationName", java.lang.String.class);
map.put("ClientId", java.lang.String.class);
map.put("ClientSecret", java.lang.String.class);
+ map.put("Delegate", java.lang.String.class);
map.put("Id", java.lang.String.class);
+ map.put("KeyResource", java.lang.String.class);
map.put("MessageId", java.lang.String.class);
map.put("MethodName", java.lang.String.class);
map.put("RefreshToken", java.lang.String.class);
+ map.put("Scopes", java.util.List.class);
map.put("UserId", java.lang.String.class);
ALL_OPTIONS = map;
}
@@ -47,14 +50,20 @@ public class
GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer extend
case "ClientId": target.setClientId(property(camelContext,
java.lang.String.class, value)); return true;
case "clientsecret":
case "ClientSecret": target.setClientSecret(property(camelContext,
java.lang.String.class, value)); return true;
+ case "delegate":
+ case "Delegate": target.setDelegate(property(camelContext,
java.lang.String.class, value)); return true;
case "id":
case "Id": target.setId(property(camelContext, java.lang.String.class,
value)); return true;
+ case "keyresource":
+ case "KeyResource": target.setKeyResource(property(camelContext,
java.lang.String.class, value)); return true;
case "messageid":
case "MessageId": target.setMessageId(property(camelContext,
java.lang.String.class, value)); return true;
case "methodname":
case "MethodName": target.setMethodName(property(camelContext,
java.lang.String.class, value)); return true;
case "refreshtoken":
case "RefreshToken": target.setRefreshToken(property(camelContext,
java.lang.String.class, value)); return true;
+ case "scopes":
+ case "Scopes": target.setScopes(property(camelContext,
java.util.List.class, value)); return true;
case "userid":
case "UserId": target.setUserId(property(camelContext,
java.lang.String.class, value)); return true;
default: return false;
@@ -79,14 +88,20 @@ public class
GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer extend
case "ClientId": return java.lang.String.class;
case "clientsecret":
case "ClientSecret": return java.lang.String.class;
+ case "delegate":
+ case "Delegate": return java.lang.String.class;
case "id":
case "Id": return java.lang.String.class;
+ case "keyresource":
+ case "KeyResource": return java.lang.String.class;
case "messageid":
case "MessageId": return java.lang.String.class;
case "methodname":
case "MethodName": return java.lang.String.class;
case "refreshtoken":
case "RefreshToken": return java.lang.String.class;
+ case "scopes":
+ case "Scopes": return java.util.List.class;
case "userid":
case "UserId": return java.lang.String.class;
default: return null;
@@ -107,18 +122,33 @@ public class
GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer extend
case "ClientId": return target.getClientId();
case "clientsecret":
case "ClientSecret": return target.getClientSecret();
+ case "delegate":
+ case "Delegate": return target.getDelegate();
case "id":
case "Id": return target.getId();
+ case "keyresource":
+ case "KeyResource": return target.getKeyResource();
case "messageid":
case "MessageId": return target.getMessageId();
case "methodname":
case "MethodName": return target.getMethodName();
case "refreshtoken":
case "RefreshToken": return target.getRefreshToken();
+ case "scopes":
+ case "Scopes": return target.getScopes();
case "userid":
case "UserId": return target.getUserId();
default: return null;
}
}
+
+ @Override
+ public Object getCollectionValueType(Object target, String name, boolean
ignoreCase) {
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "scopes":
+ case "Scopes": return java.lang.String.class;
+ default: return null;
+ }
+ }
}
diff --git
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfiguration.java
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfiguration.java
index 0155d8c..cd1cd41 100644
---
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfiguration.java
+++
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfiguration.java
@@ -30,7 +30,7 @@ public final class GmailUsersMessagesEndpointConfiguration
extends GoogleMailCon
@ApiParam(optional = false, apiMethods = {@ApiMethod(methodName =
"gmailImport", description="The com.google.api.services.gmail.model.Message
media metadata or null if none"), @ApiMethod(methodName = "insert",
description="The com.google.api.services.gmail.model.Message media metadata or
null if none"), @ApiMethod(methodName = "send", description="The
com.google.api.services.gmail.model.Message media metadata or null if none")})
private com.google.api.services.gmail.model.Message content;
@UriParam
- @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName =
"delete", description="The ID of the message to delete"), @ApiMethod(methodName
= "get", description="The ID of the message to retrieve"),
@ApiMethod(methodName = "modify", description="The ID of the message to
modify"), @ApiMethod(methodName = "trash", description="The ID of the message
to Trash"), @ApiMethod(methodName = "untrash", description="The ID of the
message to remove from Trash")})
+ @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName =
"delete", description="The ID of the message to delete"), @ApiMethod(methodName
= "get", description="The ID of the message to retrieve. This ID is usually
retrieved using messages.list. The ID is also contained in the result when a
message is inserted (messages.insert) or imported (messages.import)."),
@ApiMethod(methodName = "modify", description="The ID of the message to
modify"), @ApiMethod(methodName = "trash", de [...]
private String id;
@UriParam
@ApiParam(optional = false, apiMethods = {@ApiMethod(methodName =
"gmailImport", description="The media HTTP content or null if none"),
@ApiMethod(methodName = "insert", description="The media HTTP content or null
if none"), @ApiMethod(methodName = "send", description="The media HTTP content
or null if none")})
diff --git
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfigurationConfigurer.java
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfigurationConfigurer.java
index 7f96166..bdcd6b7 100644
---
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfigurationConfigurer.java
+++
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfigurationConfigurer.java
@@ -28,11 +28,14 @@ public class
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
map.put("ClientId", java.lang.String.class);
map.put("ClientSecret", java.lang.String.class);
map.put("Content", com.google.api.services.gmail.model.Message.class);
+ map.put("Delegate", java.lang.String.class);
map.put("Id", java.lang.String.class);
+ map.put("KeyResource", java.lang.String.class);
map.put("MediaContent",
com.google.api.client.http.AbstractInputStreamContent.class);
map.put("MethodName", java.lang.String.class);
map.put("ModifyMessageRequest",
com.google.api.services.gmail.model.ModifyMessageRequest.class);
map.put("RefreshToken", java.lang.String.class);
+ map.put("Scopes", java.util.List.class);
map.put("UserId", java.lang.String.class);
ALL_OPTIONS = map;
}
@@ -57,8 +60,12 @@ public class
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
case "ClientSecret": target.setClientSecret(property(camelContext,
java.lang.String.class, value)); return true;
case "content":
case "Content": target.setContent(property(camelContext,
com.google.api.services.gmail.model.Message.class, value)); return true;
+ case "delegate":
+ case "Delegate": target.setDelegate(property(camelContext,
java.lang.String.class, value)); return true;
case "id":
case "Id": target.setId(property(camelContext, java.lang.String.class,
value)); return true;
+ case "keyresource":
+ case "KeyResource": target.setKeyResource(property(camelContext,
java.lang.String.class, value)); return true;
case "mediacontent":
case "MediaContent": target.setMediaContent(property(camelContext,
com.google.api.client.http.AbstractInputStreamContent.class, value)); return
true;
case "methodname":
@@ -67,6 +74,8 @@ public class
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
case "ModifyMessageRequest":
target.setModifyMessageRequest(property(camelContext,
com.google.api.services.gmail.model.ModifyMessageRequest.class, value)); return
true;
case "refreshtoken":
case "RefreshToken": target.setRefreshToken(property(camelContext,
java.lang.String.class, value)); return true;
+ case "scopes":
+ case "Scopes": target.setScopes(property(camelContext,
java.util.List.class, value)); return true;
case "userid":
case "UserId": target.setUserId(property(camelContext,
java.lang.String.class, value)); return true;
default: return false;
@@ -97,8 +106,12 @@ public class
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
case "ClientSecret": return java.lang.String.class;
case "content":
case "Content": return
com.google.api.services.gmail.model.Message.class;
+ case "delegate":
+ case "Delegate": return java.lang.String.class;
case "id":
case "Id": return java.lang.String.class;
+ case "keyresource":
+ case "KeyResource": return java.lang.String.class;
case "mediacontent":
case "MediaContent": return
com.google.api.client.http.AbstractInputStreamContent.class;
case "methodname":
@@ -107,6 +120,8 @@ public class
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
case "ModifyMessageRequest": return
com.google.api.services.gmail.model.ModifyMessageRequest.class;
case "refreshtoken":
case "RefreshToken": return java.lang.String.class;
+ case "scopes":
+ case "Scopes": return java.util.List.class;
case "userid":
case "UserId": return java.lang.String.class;
default: return null;
@@ -133,8 +148,12 @@ public class
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
case "ClientSecret": return target.getClientSecret();
case "content":
case "Content": return target.getContent();
+ case "delegate":
+ case "Delegate": return target.getDelegate();
case "id":
case "Id": return target.getId();
+ case "keyresource":
+ case "KeyResource": return target.getKeyResource();
case "mediacontent":
case "MediaContent": return target.getMediaContent();
case "methodname":
@@ -143,10 +162,21 @@ public class
GmailUsersMessagesEndpointConfigurationConfigurer extends org.apach
case "ModifyMessageRequest": return target.getModifyMessageRequest();
case "refreshtoken":
case "RefreshToken": return target.getRefreshToken();
+ case "scopes":
+ case "Scopes": return target.getScopes();
case "userid":
case "UserId": return target.getUserId();
default: return null;
}
}
+
+ @Override
+ public Object getCollectionValueType(Object target, String name, boolean
ignoreCase) {
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "scopes":
+ case "Scopes": return java.lang.String.class;
+ default: return null;
+ }
+ }
}
diff --git
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersThreadsEndpointConfigurationConfigurer.java
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersThreadsEndpointConfigurationConfigurer.java
index f76fa3c..a91a9af 100644
---
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersThreadsEndpointConfigurationConfigurer.java
+++
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersThreadsEndpointConfigurationConfigurer.java
@@ -26,9 +26,12 @@ public class
GmailUsersThreadsEndpointConfigurationConfigurer extends org.apache
map.put("ClientId", java.lang.String.class);
map.put("ClientSecret", java.lang.String.class);
map.put("Content",
com.google.api.services.gmail.model.ModifyThreadRequest.class);
+ map.put("Delegate", java.lang.String.class);
map.put("Id", java.lang.String.class);
+ map.put("KeyResource", java.lang.String.class);
map.put("MethodName", java.lang.String.class);
map.put("RefreshToken", java.lang.String.class);
+ map.put("Scopes", java.util.List.class);
map.put("UserId", java.lang.String.class);
ALL_OPTIONS = map;
}
@@ -49,12 +52,18 @@ public class
GmailUsersThreadsEndpointConfigurationConfigurer extends org.apache
case "ClientSecret": target.setClientSecret(property(camelContext,
java.lang.String.class, value)); return true;
case "content":
case "Content": target.setContent(property(camelContext,
com.google.api.services.gmail.model.ModifyThreadRequest.class, value)); return
true;
+ case "delegate":
+ case "Delegate": target.setDelegate(property(camelContext,
java.lang.String.class, value)); return true;
case "id":
case "Id": target.setId(property(camelContext, java.lang.String.class,
value)); return true;
+ case "keyresource":
+ case "KeyResource": target.setKeyResource(property(camelContext,
java.lang.String.class, value)); return true;
case "methodname":
case "MethodName": target.setMethodName(property(camelContext,
java.lang.String.class, value)); return true;
case "refreshtoken":
case "RefreshToken": target.setRefreshToken(property(camelContext,
java.lang.String.class, value)); return true;
+ case "scopes":
+ case "Scopes": target.setScopes(property(camelContext,
java.util.List.class, value)); return true;
case "userid":
case "UserId": target.setUserId(property(camelContext,
java.lang.String.class, value)); return true;
default: return false;
@@ -81,12 +90,18 @@ public class
GmailUsersThreadsEndpointConfigurationConfigurer extends org.apache
case "ClientSecret": return java.lang.String.class;
case "content":
case "Content": return
com.google.api.services.gmail.model.ModifyThreadRequest.class;
+ case "delegate":
+ case "Delegate": return java.lang.String.class;
case "id":
case "Id": return java.lang.String.class;
+ case "keyresource":
+ case "KeyResource": return java.lang.String.class;
case "methodname":
case "MethodName": return java.lang.String.class;
case "refreshtoken":
case "RefreshToken": return java.lang.String.class;
+ case "scopes":
+ case "Scopes": return java.util.List.class;
case "userid":
case "UserId": return java.lang.String.class;
default: return null;
@@ -109,16 +124,31 @@ public class
GmailUsersThreadsEndpointConfigurationConfigurer extends org.apache
case "ClientSecret": return target.getClientSecret();
case "content":
case "Content": return target.getContent();
+ case "delegate":
+ case "Delegate": return target.getDelegate();
case "id":
case "Id": return target.getId();
+ case "keyresource":
+ case "KeyResource": return target.getKeyResource();
case "methodname":
case "MethodName": return target.getMethodName();
case "refreshtoken":
case "RefreshToken": return target.getRefreshToken();
+ case "scopes":
+ case "Scopes": return target.getScopes();
case "userid":
case "UserId": return target.getUserId();
default: return null;
}
}
+
+ @Override
+ public Object getCollectionValueType(Object target, String name, boolean
ignoreCase) {
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "scopes":
+ case "Scopes": return java.lang.String.class;
+ default: return null;
+ }
+ }
}
diff --git
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailComponentConfigurer.java
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailComponentConfigurer.java
index eea3a2f..4177bbf 100644
---
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailComponentConfigurer.java
+++
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailComponentConfigurer.java
@@ -23,12 +23,15 @@ public class GoogleMailComponentConfigurer extends
PropertyConfigurerSupport imp
map.put("applicationName", java.lang.String.class);
map.put("clientId", java.lang.String.class);
map.put("configuration",
org.apache.camel.component.google.mail.GoogleMailConfiguration.class);
+ map.put("delegate", java.lang.String.class);
+ map.put("scopes", java.util.List.class);
map.put("bridgeErrorHandler", boolean.class);
map.put("lazyStartProducer", boolean.class);
map.put("autowiredEnabled", boolean.class);
map.put("clientFactory",
org.apache.camel.component.google.mail.GoogleMailClientFactory.class);
map.put("accessToken", java.lang.String.class);
map.put("clientSecret", java.lang.String.class);
+ map.put("keyResource", java.lang.String.class);
map.put("refreshToken", java.lang.String.class);
ALL_OPTIONS = map;
}
@@ -59,10 +62,14 @@ public class GoogleMailComponentConfigurer extends
PropertyConfigurerSupport imp
case "clientsecret":
case "clientSecret":
getOrCreateConfiguration(target).setClientSecret(property(camelContext,
java.lang.String.class, value)); return true;
case "configuration": target.setConfiguration(property(camelContext,
org.apache.camel.component.google.mail.GoogleMailConfiguration.class, value));
return true;
+ case "delegate":
getOrCreateConfiguration(target).setDelegate(property(camelContext,
java.lang.String.class, value)); return true;
+ case "keyresource":
+ case "keyResource":
getOrCreateConfiguration(target).setKeyResource(property(camelContext,
java.lang.String.class, value)); return true;
case "lazystartproducer":
case "lazyStartProducer":
target.setLazyStartProducer(property(camelContext, boolean.class, value));
return true;
case "refreshtoken":
case "refreshToken":
getOrCreateConfiguration(target).setRefreshToken(property(camelContext,
java.lang.String.class, value)); return true;
+ case "scopes":
getOrCreateConfiguration(target).setScopes(property(camelContext,
java.util.List.class, value)); return true;
default: return false;
}
}
@@ -90,10 +97,14 @@ public class GoogleMailComponentConfigurer extends
PropertyConfigurerSupport imp
case "clientsecret":
case "clientSecret": return java.lang.String.class;
case "configuration": return
org.apache.camel.component.google.mail.GoogleMailConfiguration.class;
+ case "delegate": return java.lang.String.class;
+ case "keyresource":
+ case "keyResource": return java.lang.String.class;
case "lazystartproducer":
case "lazyStartProducer": return boolean.class;
case "refreshtoken":
case "refreshToken": return java.lang.String.class;
+ case "scopes": return java.util.List.class;
default: return null;
}
}
@@ -117,10 +128,22 @@ public class GoogleMailComponentConfigurer extends
PropertyConfigurerSupport imp
case "clientsecret":
case "clientSecret": return
getOrCreateConfiguration(target).getClientSecret();
case "configuration": return target.getConfiguration();
+ case "delegate": return getOrCreateConfiguration(target).getDelegate();
+ case "keyresource":
+ case "keyResource": return
getOrCreateConfiguration(target).getKeyResource();
case "lazystartproducer":
case "lazyStartProducer": return target.isLazyStartProducer();
case "refreshtoken":
case "refreshToken": return
getOrCreateConfiguration(target).getRefreshToken();
+ case "scopes": return getOrCreateConfiguration(target).getScopes();
+ default: return null;
+ }
+ }
+
+ @Override
+ public Object getCollectionValueType(Object target, String name, boolean
ignoreCase) {
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "scopes": return java.lang.String.class;
default: return null;
}
}
diff --git
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailConfigurationConfigurer.java
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailConfigurationConfigurer.java
index 02709d4..e1157f7 100644
---
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailConfigurationConfigurer.java
+++
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailConfigurationConfigurer.java
@@ -25,8 +25,11 @@ public class GoogleMailConfigurationConfigurer extends
org.apache.camel.support.
map.put("ApplicationName", java.lang.String.class);
map.put("ClientId", java.lang.String.class);
map.put("ClientSecret", java.lang.String.class);
+ map.put("Delegate", java.lang.String.class);
+ map.put("KeyResource", java.lang.String.class);
map.put("MethodName", java.lang.String.class);
map.put("RefreshToken", java.lang.String.class);
+ map.put("Scopes", java.util.List.class);
ALL_OPTIONS = map;
}
@@ -44,10 +47,16 @@ public class GoogleMailConfigurationConfigurer extends
org.apache.camel.support.
case "ClientId": target.setClientId(property(camelContext,
java.lang.String.class, value)); return true;
case "clientsecret":
case "ClientSecret": target.setClientSecret(property(camelContext,
java.lang.String.class, value)); return true;
+ case "delegate":
+ case "Delegate": target.setDelegate(property(camelContext,
java.lang.String.class, value)); return true;
+ case "keyresource":
+ case "KeyResource": target.setKeyResource(property(camelContext,
java.lang.String.class, value)); return true;
case "methodname":
case "MethodName": target.setMethodName(property(camelContext,
java.lang.String.class, value)); return true;
case "refreshtoken":
case "RefreshToken": target.setRefreshToken(property(camelContext,
java.lang.String.class, value)); return true;
+ case "scopes":
+ case "Scopes": target.setScopes(property(camelContext,
java.util.List.class, value)); return true;
default: return false;
}
}
@@ -70,10 +79,16 @@ public class GoogleMailConfigurationConfigurer extends
org.apache.camel.support.
case "ClientId": return java.lang.String.class;
case "clientsecret":
case "ClientSecret": return java.lang.String.class;
+ case "delegate":
+ case "Delegate": return java.lang.String.class;
+ case "keyresource":
+ case "KeyResource": return java.lang.String.class;
case "methodname":
case "MethodName": return java.lang.String.class;
case "refreshtoken":
case "RefreshToken": return java.lang.String.class;
+ case "scopes":
+ case "Scopes": return java.util.List.class;
default: return null;
}
}
@@ -92,10 +107,25 @@ public class GoogleMailConfigurationConfigurer extends
org.apache.camel.support.
case "ClientId": return target.getClientId();
case "clientsecret":
case "ClientSecret": return target.getClientSecret();
+ case "delegate":
+ case "Delegate": return target.getDelegate();
+ case "keyresource":
+ case "KeyResource": return target.getKeyResource();
case "methodname":
case "MethodName": return target.getMethodName();
case "refreshtoken":
case "RefreshToken": return target.getRefreshToken();
+ case "scopes":
+ case "Scopes": return target.getScopes();
+ default: return null;
+ }
+ }
+
+ @Override
+ public Object getCollectionValueType(Object target, String name, boolean
ignoreCase) {
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "scopes":
+ case "Scopes": return java.lang.String.class;
default: return null;
}
}
diff --git
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointConfigurer.java
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointConfigurer.java
index 2b0f6a9..bf18167 100644
---
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointConfigurer.java
+++
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointConfigurer.java
@@ -24,7 +24,9 @@ public class GoogleMailEndpointConfigurer extends
PropertyConfigurerSupport impl
map.put("methodName", java.lang.String.class);
map.put("applicationName", java.lang.String.class);
map.put("clientId", java.lang.String.class);
+ map.put("delegate", java.lang.String.class);
map.put("inBody", java.lang.String.class);
+ map.put("scopes", java.util.List.class);
map.put("bridgeErrorHandler", boolean.class);
map.put("sendEmptyMessageWhenIdle", boolean.class);
map.put("exceptionHandler",
org.apache.camel.spi.ExceptionHandler.class);
@@ -47,6 +49,7 @@ public class GoogleMailEndpointConfigurer extends
PropertyConfigurerSupport impl
map.put("useFixedDelay", boolean.class);
map.put("accessToken", java.lang.String.class);
map.put("clientSecret", java.lang.String.class);
+ map.put("keyResource", java.lang.String.class);
map.put("refreshToken", java.lang.String.class);
ALL_OPTIONS = map;
}
@@ -72,6 +75,7 @@ public class GoogleMailEndpointConfigurer extends
PropertyConfigurerSupport impl
case "clientsecret":
case "clientSecret":
target.getConfiguration().setClientSecret(property(camelContext,
java.lang.String.class, value)); return true;
case "delay": target.setDelay(property(camelContext, long.class,
value)); return true;
+ case "delegate":
target.getConfiguration().setDelegate(property(camelContext,
java.lang.String.class, value)); return true;
case "exceptionhandler":
case "exceptionHandler":
target.setExceptionHandler(property(camelContext,
org.apache.camel.spi.ExceptionHandler.class, value)); return true;
case "exchangepattern":
@@ -81,6 +85,8 @@ public class GoogleMailEndpointConfigurer extends
PropertyConfigurerSupport impl
case "inBody": target.setInBody(property(camelContext,
java.lang.String.class, value)); return true;
case "initialdelay":
case "initialDelay": target.setInitialDelay(property(camelContext,
long.class, value)); return true;
+ case "keyresource":
+ case "keyResource":
target.getConfiguration().setKeyResource(property(camelContext,
java.lang.String.class, value)); return true;
case "lazystartproducer":
case "lazyStartProducer":
target.setLazyStartProducer(property(camelContext, boolean.class, value));
return true;
case "pollstrategy":
@@ -96,6 +102,7 @@ public class GoogleMailEndpointConfigurer extends
PropertyConfigurerSupport impl
case "scheduler": target.setScheduler(property(camelContext,
java.lang.Object.class, value)); return true;
case "schedulerproperties":
case "schedulerProperties":
target.setSchedulerProperties(property(camelContext, java.util.Map.class,
value)); return true;
+ case "scopes":
target.getConfiguration().setScopes(property(camelContext,
java.util.List.class, value)); return true;
case "sendemptymessagewhenidle":
case "sendEmptyMessageWhenIdle":
target.setSendEmptyMessageWhenIdle(property(camelContext, boolean.class,
value)); return true;
case "startscheduler":
@@ -133,6 +140,7 @@ public class GoogleMailEndpointConfigurer extends
PropertyConfigurerSupport impl
case "clientsecret":
case "clientSecret": return java.lang.String.class;
case "delay": return long.class;
+ case "delegate": return java.lang.String.class;
case "exceptionhandler":
case "exceptionHandler": return
org.apache.camel.spi.ExceptionHandler.class;
case "exchangepattern":
@@ -142,6 +150,8 @@ public class GoogleMailEndpointConfigurer extends
PropertyConfigurerSupport impl
case "inBody": return java.lang.String.class;
case "initialdelay":
case "initialDelay": return long.class;
+ case "keyresource":
+ case "keyResource": return java.lang.String.class;
case "lazystartproducer":
case "lazyStartProducer": return boolean.class;
case "pollstrategy":
@@ -157,6 +167,7 @@ public class GoogleMailEndpointConfigurer extends
PropertyConfigurerSupport impl
case "scheduler": return java.lang.Object.class;
case "schedulerproperties":
case "schedulerProperties": return java.util.Map.class;
+ case "scopes": return java.util.List.class;
case "sendemptymessagewhenidle":
case "sendEmptyMessageWhenIdle": return boolean.class;
case "startscheduler":
@@ -190,6 +201,7 @@ public class GoogleMailEndpointConfigurer extends
PropertyConfigurerSupport impl
case "clientsecret":
case "clientSecret": return
target.getConfiguration().getClientSecret();
case "delay": return target.getDelay();
+ case "delegate": return target.getConfiguration().getDelegate();
case "exceptionhandler":
case "exceptionHandler": return target.getExceptionHandler();
case "exchangepattern":
@@ -199,6 +211,8 @@ public class GoogleMailEndpointConfigurer extends
PropertyConfigurerSupport impl
case "inBody": return target.getInBody();
case "initialdelay":
case "initialDelay": return target.getInitialDelay();
+ case "keyresource":
+ case "keyResource": return target.getConfiguration().getKeyResource();
case "lazystartproducer":
case "lazyStartProducer": return target.isLazyStartProducer();
case "pollstrategy":
@@ -214,6 +228,7 @@ public class GoogleMailEndpointConfigurer extends
PropertyConfigurerSupport impl
case "scheduler": return target.getScheduler();
case "schedulerproperties":
case "schedulerProperties": return target.getSchedulerProperties();
+ case "scopes": return target.getConfiguration().getScopes();
case "sendemptymessagewhenidle":
case "sendEmptyMessageWhenIdle": return
target.isSendEmptyMessageWhenIdle();
case "startscheduler":
@@ -231,6 +246,7 @@ public class GoogleMailEndpointConfigurer extends
PropertyConfigurerSupport impl
switch (ignoreCase ? name.toLowerCase() : name) {
case "schedulerproperties":
case "schedulerProperties": return java.lang.Object.class;
+ case "scopes": return java.lang.String.class;
default: return null;
}
}
diff --git
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointUriFactory.java
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointUriFactory.java
index 4c1ac76..48c704e 100644
---
a/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointUriFactory.java
+++
b/components/camel-google/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointUriFactory.java
@@ -20,11 +20,12 @@ public class GoogleMailEndpointUriFactory extends
org.apache.camel.support.compo
private static final Set<String> PROPERTY_NAMES;
private static final Set<String> SECRET_PROPERTY_NAMES;
static {
- Set<String> props = new HashSet<>(36);
+ Set<String> props = new HashSet<>(39);
props.add("backoffMultiplier");
props.add("apiName");
props.add("initialDelay");
props.add("content");
+ props.add("delegate");
props.add("scheduler");
props.add("modifyMessageRequest");
props.add("bridgeErrorHandler");
@@ -41,6 +42,7 @@ public class GoogleMailEndpointUriFactory extends
org.apache.camel.support.compo
props.add("repeatCount");
props.add("timeUnit");
props.add("clientId");
+ props.add("keyResource");
props.add("sendEmptyMessageWhenIdle");
props.add("schedulerProperties");
props.add("exchangePattern");
@@ -54,6 +56,7 @@ public class GoogleMailEndpointUriFactory extends
org.apache.camel.support.compo
props.add("delay");
props.add("pollStrategy");
props.add("startScheduler");
+ props.add("scopes");
props.add("inBody");
props.add("exceptionHandler");
props.add("refreshToken");
diff --git
a/components/camel-google/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/google-mail.json
b/components/camel-google/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/google-mail.json
index 16da11a..7c666e5 100644
---
a/components/camel-google/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/google-mail.json
+++
b/components/camel-google/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/google-mail.json
@@ -26,12 +26,15 @@
"applicationName": { "kind": "property", "displayName": "Application
Name", "group": "common", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "Google mail application
name. Example would be camel-google-mail\/1.0" },
"clientId": { "kind": "property", "displayName": "Client Id", "group":
"common", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "Client ID of the mail
application" },
"configuration": { "kind": "property", "displayName": "Configuration",
"group": "common", "label": "", "required": false, "type": "object",
"javaType": "org.apache.camel.component.google.mail.GoogleMailConfiguration",
"deprecated": false, "autowired": false, "secret": false, "description": "To
use the shared configuration" },
+ "delegate": { "kind": "property", "displayName": "Delegate", "group":
"common", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "Delegate for wide-domain
service account" },
+ "scopes": { "kind": "property", "displayName": "Scopes", "group":
"common", "label": "", "required": false, "type": "array", "javaType":
"java.util.List<java.lang.String>", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "GMail scopes" },
"bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error
Handler", "group": "consumer", "label": "consumer", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": false, "description": "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 me [...]
"lazyStartProducer": { "kind": "property", "displayName": "Lazy Start
Producer", "group": "producer", "label": "producer", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": false, "description": "Whether the producer
should be started lazy (on the first message). By starting lazy you can use
this to allow CamelContext and routes to startup in situations where a producer
may otherwise fail during star [...]
"autowiredEnabled": { "kind": "property", "displayName": "Autowired
Enabled", "group": "advanced", "label": "advanced", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": true, "description": "Whether autowiring is
enabled. This is used for automatic autowiring options (the option must be
marked as autowired) by looking up in the registry to find if there is a single
instance of matching type, which t [...]
"clientFactory": { "kind": "property", "displayName": "Client Factory",
"group": "advanced", "label": "advanced", "required": false, "type": "object",
"javaType": "org.apache.camel.component.google.mail.GoogleMailClientFactory",
"deprecated": false, "autowired": false, "secret": false, "description": "To
use the GoogleCalendarClientFactory as factory for creating the client. Will by
default use BatchGoogleMailClientFactory" },
"accessToken": { "kind": "property", "displayName": "Access Token",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "OAuth 2 access token.
This typically expires after an hour so refreshToken is recommended for long
term usage." },
"clientSecret": { "kind": "property", "displayName": "Client Secret",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "Client secret of the
mail application" },
+ "keyResource": { "kind": "property", "displayName": "Key Resource",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "Sets .json file with
credentials for Service account" },
"refreshToken": { "kind": "property", "displayName": "Refresh Token",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "OAuth 2 refresh token.
Using this, the Google Calendar component can obtain a new accessToken whenever
the [...]
},
"properties": {
@@ -39,7 +42,9 @@
"methodName": { "kind": "path", "displayName": "Method Name", "group":
"common", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "enum": [ "attachments", "create", "delete", "get",
"getProfile", "gmailImport", "insert", "list", "modify", "patch", "send",
"stop", "trash", "untrash", "update", "watch" ], "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.google.mail.GoogleMa [...]
"applicationName": { "kind": "parameter", "displayName": "Application
Name", "group": "common", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "Google mail application
name. Example would be camel-google-mail\/1.0" },
"clientId": { "kind": "parameter", "displayName": "Client Id", "group":
"common", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "Client ID of the mail
application" },
+ "delegate": { "kind": "parameter", "displayName": "Delegate", "group":
"common", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "Delegate for wide-domain
service account" },
"inBody": { "kind": "parameter", "displayName": "In Body", "group":
"common", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"description": "Sets the name of a parameter to be passed in the exchange In
Body" },
+ "scopes": { "kind": "parameter", "displayName": "Scopes", "group":
"common", "label": "", "required": false, "type": "array", "javaType":
"java.util.List<java.lang.String>", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "GMail scopes" },
"bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error
Handler", "group": "consumer", "label": "consumer", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": false, "description": "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 m [...]
"sendEmptyMessageWhenIdle": { "kind": "parameter", "displayName": "Send
Empty Message When Idle", "group": "consumer", "label": "consumer", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": false, "description": "If
the polling consumer did not poll any files, you can enable this option to send
an empty message (no body) instead." },
"exceptionHandler": { "kind": "parameter", "displayName": "Exception
Handler", "group": "consumer (advanced)", "label": "consumer,advanced",
"required": false, "type": "object", "javaType":
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.",
"deprecated": false, "autowired": false, "secret": false, "description": "To
let the consumer use a custom ExceptionHandler. Notice if the option
bridgeErrorHandler is enabled then this option is not in use. By default the
con [...]
@@ -62,13 +67,14 @@
"useFixedDelay": { "kind": "parameter", "displayName": "Use Fixed Delay",
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": true, "description": "Controls if fixed delay
or fixed rate is used. See ScheduledExecutorService in JDK for details." },
"accessToken": { "kind": "parameter", "displayName": "Access Token",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "OAuth 2 access token.
This typically expires after an hour so refreshToken is recommended for long
term usage." },
"clientSecret": { "kind": "parameter", "displayName": "Client Secret",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "Client secret of the
mail application" },
+ "keyResource": { "kind": "parameter", "displayName": "Key Resource",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "Sets .json file with
credentials for Service account" },
"refreshToken": { "kind": "parameter", "displayName": "Refresh Token",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "configurationClass":
"org.apache.camel.component.google.mail.GoogleMailConfiguration",
"configurationField": "configuration", "description": "OAuth 2 refresh token.
Using this, the Google Calendar component can obtain a new accessToken whenever
the [...]
},
"apis": {
"attachments": { "consumerOnly": false, "producerOnly": false,
"description": "The attachments collection of methods", "methods": { "get": {
"description": "Gets the specified message attachment", "signatures": [
"com.google.api.services.gmail.Gmail$Users$Messages$Attachments$Get get(String
userId, String messageId, String id)" ] } } },
"drafts": { "consumerOnly": false, "producerOnly": false, "description":
"The drafts collection of methods", "methods": { "create": { "description":
"Creates a new draft with the DRAFT label", "signatures": [
"com.google.api.services.gmail.Gmail$Users$Drafts$Create create(String userId,
com.google.api.services.gmail.model.Draft content)",
"com.google.api.services.gmail.Gmail$Users$Drafts$Create create(String userId,
com.google.api.services.gmail.model.Draft content, com.google.api.cl [...]
"history": { "consumerOnly": false, "producerOnly": false, "description":
"The history collection of methods", "methods": { "list": { "description":
"Lists the history of all changes to the given mailbox", "signatures": [
"com.google.api.services.gmail.Gmail$Users$History$List list(String userId)" ]
} } },
- "labels": { "consumerOnly": false, "producerOnly": false, "description":
"The labels collection of methods", "methods": { "create": { "description":
"Creates a new label", "signatures": [
"com.google.api.services.gmail.Gmail$Users$Labels$Create create(String userId,
com.google.api.services.gmail.model.Label content)" ] }, "delete": {
"description": "Immediately and permanently deletes the specified label and
removes it from any messages and threads that it is applied to", "signatures
[...]
+ "labels": { "consumerOnly": false, "producerOnly": false, "description":
"The labels collection of methods", "methods": { "create": { "description":
"Creates a new label", "signatures": [
"com.google.api.services.gmail.Gmail$Users$Labels$Create create(String userId,
com.google.api.services.gmail.model.Label content)" ] }, "delete": {
"description": "Immediately and permanently deletes the specified label and
removes it from any messages and threads that it is applied to", "signatures
[...]
"messages": { "consumerOnly": false, "producerOnly": false, "description":
"The messages collection of methods", "methods": { "batchDelete": {
"description": "Deletes many messages by message ID", "signatures": [
"com.google.api.services.gmail.Gmail$Users$Messages$BatchDelete
batchDelete(String userId,
com.google.api.services.gmail.model.BatchDeleteMessagesRequest content)" ] },
"batchModify": { "description": "Modifies the labels on the specified
messages", "signatures": [ "com.goog [...]
"threads": { "consumerOnly": false, "producerOnly": false, "description":
"The threads collection of methods", "methods": { "delete": { "description":
"Immediately and permanently deletes the specified thread", "signatures": [
"com.google.api.services.gmail.Gmail$Users$Threads$Delete delete(String userId,
String id)" ] }, "get": { "description": "Gets the specified thread",
"signatures": [ "com.google.api.services.gmail.Gmail$Users$Threads$Get
get(String userId, String id)" ] }, "lis [...]
"users": { "consumerOnly": false, "producerOnly": false, "description":
"The users collection of methods", "methods": { "getProfile": { "description":
"Gets the current user's Gmail profile", "signatures": [
"com.google.api.services.gmail.Gmail$Users$GetProfile getProfile(String
userId)" ] }, "stop": { "description": "Stop receiving push notifications for
the given user mailbox", "signatures": [
"com.google.api.services.gmail.Gmail$Users$Stop stop(String userId)" ] },
"watch": { "des [...]
@@ -78,7 +84,7 @@
"drafts": { "methods": { "create": { "properties": { "content": { "kind":
"parameter", "displayName": "Content", "group": "common", "label": "",
"required": false, "type": "object", "javaType":
"com.google.api.services.gmail.model.Draft", "deprecated": false, "autowired":
false, "secret": false, "description": "The
com.google.api.services.gmail.model.Draft media metadata or null if none",
"optional": false }, "mediaContent": { "kind": "parameter", "displayName":
"Media Content", "gro [...]
"history": { "methods": { "list": { "properties": { "userId": { "kind":
"parameter", "displayName": "User Id", "group": "common", "label": "",
"required": false, "type": "string", "javaType": "java.lang.String",
"deprecated": false, "autowired": false, "secret": false, "description": "The
user's email address. The special value me can be used to indicate the
authenticated user. default: me", "optional": false } } } } },
"labels": { "methods": { "create": { "properties": { "content": { "kind":
"parameter", "displayName": "Content", "group": "common", "label": "",
"required": false, "type": "object", "javaType":
"com.google.api.services.gmail.model.Label", "deprecated": false, "autowired":
false, "secret": false, "description": "The
com.google.api.services.gmail.model.Label", "optional": false }, "userId": {
"kind": "parameter", "displayName": "User Id", "group": "common", "label": "",
"required": fal [...]
- "messages": { "methods": { "batchDelete": { "properties": {
"batchDeleteMessagesRequest": { "kind": "parameter", "displayName": "Batch
Delete Messages Request", "group": "common", "label": "", "required": false,
"type": "object", "javaType":
"com.google.api.services.gmail.model.BatchDeleteMessagesRequest", "deprecated":
false, "autowired": false, "secret": false, "description": "The
com.google.api.services.gmail.model.BatchDeleteMessagesRequest", "optional":
false }, "userId": { "kin [...]
+ "messages": { "methods": { "batchDelete": { "properties": {
"batchDeleteMessagesRequest": { "kind": "parameter", "displayName": "Batch
Delete Messages Request", "group": "common", "label": "", "required": false,
"type": "object", "javaType":
"com.google.api.services.gmail.model.BatchDeleteMessagesRequest", "deprecated":
false, "autowired": false, "secret": false, "description": "The
com.google.api.services.gmail.model.BatchDeleteMessagesRequest", "optional":
false }, "userId": { "kin [...]
"threads": { "methods": { "delete": { "properties": { "id": { "kind":
"parameter", "displayName": "Id", "group": "common", "label": "", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "description": "ID of the Thread to
delete", "optional": false }, "userId": { "kind": "parameter", "displayName":
"User Id", "group": "common", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", [...]
"users": { "methods": { "getProfile": { "properties": { "userId": {
"kind": "parameter", "displayName": "User Id", "group": "common", "label": "",
"required": false, "type": "string", "javaType": "java.lang.String",
"deprecated": false, "autowired": false, "secret": false, "description": "The
user's email address. The special value me can be used to indicate the
authenticated user. default: me", "optional": false } } }, "stop": {
"properties": { "userId": { "kind": "parameter", "disp [...]
}
diff --git
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/BatchGoogleMailClientFactory.java
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/BatchGoogleMailClientFactory.java
index fe29e86..5fe1f1b 100644
---
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/BatchGoogleMailClientFactory.java
+++
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/BatchGoogleMailClientFactory.java
@@ -1,65 +1,99 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.google.mail;
-
-import com.google.api.client.auth.oauth2.Credential;
-import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
-import com.google.api.client.http.javanet.NetHttpTransport;
-import com.google.api.client.json.jackson2.JacksonFactory;
-import com.google.api.services.gmail.Gmail;
-import org.apache.camel.RuntimeCamelException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class BatchGoogleMailClientFactory implements GoogleMailClientFactory {
- private static final Logger LOG =
LoggerFactory.getLogger(BatchGoogleMailClientFactory.class);
- private NetHttpTransport transport;
- private JacksonFactory jsonFactory;
-
- public BatchGoogleMailClientFactory() {
- this.transport = new NetHttpTransport();
- this.jsonFactory = new JacksonFactory();
- }
-
- @Override
- public Gmail makeClient(
- String clientId, String clientSecret, String applicationName,
String refreshToken, String accessToken) {
- if (clientId == null || clientSecret == null) {
- throw new IllegalArgumentException("clientId and clientSecret are
required to create Gmail client.");
- }
- try {
- Credential credential = authorize(clientId, clientSecret);
-
- if (refreshToken != null && !"".equals(refreshToken)) {
- credential.setRefreshToken(refreshToken);
- }
- if (accessToken != null && !"".equals(accessToken)) {
- credential.setAccessToken(accessToken);
- }
- return new Gmail.Builder(transport, jsonFactory,
credential).setApplicationName(applicationName).build();
- } catch (Exception e) {
- throw new RuntimeCamelException("Could not create Gmail client.",
e);
- }
- }
-
- // Authorizes the installed application to access user's protected data.
- private Credential authorize(String clientId, String clientSecret) {
- // authorize
- return new
GoogleCredential.Builder().setJsonFactory(jsonFactory).setTransport(transport)
- .setClientSecrets(clientId, clientSecret).build();
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.google.mail;
+
+import java.io.IOException;
+import java.util.List;
+
+import com.google.api.client.auth.oauth2.Credential;
+import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
+import com.google.api.client.http.javanet.NetHttpTransport;
+import com.google.api.client.json.jackson2.JacksonFactory;
+import com.google.api.services.gmail.Gmail;
+import org.apache.camel.CamelContext;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.support.ResourceHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BatchGoogleMailClientFactory implements GoogleMailClientFactory {
+ private static final Logger LOG =
LoggerFactory.getLogger(BatchGoogleMailClientFactory.class);
+ private NetHttpTransport transport;
+ private JacksonFactory jsonFactory;
+
+ public BatchGoogleMailClientFactory() {
+ this.transport = new NetHttpTransport();
+ this.jsonFactory = new JacksonFactory();
+ }
+
+ @Override
+ public Gmail makeClient(
+ String clientId, String clientSecret, String applicationName,
String refreshToken, String accessToken) {
+ if (clientId == null || clientSecret == null) {
+ throw new IllegalArgumentException("clientId and clientSecret are
required to create Gmail client.");
+ }
+ try {
+ Credential credential = authorize(clientId, clientSecret);
+
+ if (refreshToken != null && !"".equals(refreshToken)) {
+ credential.setRefreshToken(refreshToken);
+ }
+ if (accessToken != null && !"".equals(accessToken)) {
+ credential.setAccessToken(accessToken);
+ }
+ return new Gmail.Builder(transport, jsonFactory,
credential).setApplicationName(applicationName).build();
+ } catch (Exception e) {
+ throw new RuntimeCamelException("Could not create Gmail client.",
e);
+ }
+ }
+
+ // Authorizes the installed application to access user's protected data.
+ private Credential authorize(String clientId, String clientSecret) {
+ // authorize
+ return new
GoogleCredential.Builder().setJsonFactory(jsonFactory).setTransport(transport)
+ .setClientSecrets(clientId, clientSecret).build();
+ }
+
+ @Override
+ public Gmail makeClient(
+ CamelContext camelContext, String keyResource, String
applicationName, String delegate, List<String> gmailScopes) {
+ if (keyResource == null) {
+ throw new IllegalArgumentException("keyResource is required to
create Gmail client.");
+ }
+ try {
+ Credential credential = authorizeServiceAccount(camelContext,
keyResource, delegate, gmailScopes);
+ return new Gmail.Builder(transport, jsonFactory,
credential).setApplicationName(applicationName).build();
+ } catch (Exception e) {
+ throw new RuntimeCamelException("Could not create Gmail client.",
e);
+ }
+ }
+
+ private Credential authorizeServiceAccount(
+ CamelContext camelContext, String keyResource, String delegate,
List<String> gmailScopes) {
+ // authorize
+ try {
+ GoogleCredential cred = GoogleCredential
+
.fromStream(ResourceHelper.resolveMandatoryResourceAsInputStream(camelContext,
keyResource))
+ .createScoped(gmailScopes != null && gmailScopes.size() !=
0 ? gmailScopes : null)
+ .createDelegated(delegate);
+ cred.refreshToken();
+ return cred;
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailClientFactory.java
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailClientFactory.java
index 2b79d66..ecee7ed 100644
---
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailClientFactory.java
+++
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailClientFactory.java
@@ -16,10 +16,15 @@
*/
package org.apache.camel.component.google.mail;
+import java.util.List;
+
import com.google.api.services.gmail.Gmail;
+import org.apache.camel.CamelContext;
public interface GoogleMailClientFactory {
Gmail makeClient(String clientId, String clientSecret, String
applicationName, String refreshToken, String accessToken);
+ Gmail makeClient(
+ CamelContext camelContext, String keyResource, String
applicationName, String delegate, List<String> gmailScopes);
}
diff --git
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
index 40aafc3..d1efa7f 100644
---
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
+++
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
@@ -53,10 +53,16 @@ public class GoogleMailComponent
public Gmail getClient(GoogleMailConfiguration googleMailConfiguration) {
if (client == null) {
- client =
getClientFactory().makeClient(googleMailConfiguration.getClientId(),
- googleMailConfiguration.getClientSecret(),
- googleMailConfiguration.getApplicationName(),
- googleMailConfiguration.getRefreshToken(),
googleMailConfiguration.getAccessToken());
+ if (googleMailConfiguration.getClientSecret() != null) {
+ client =
getClientFactory().makeClient(googleMailConfiguration.getClientId(),
+ googleMailConfiguration.getClientSecret(),
+ googleMailConfiguration.getApplicationName(),
+ googleMailConfiguration.getRefreshToken(),
googleMailConfiguration.getAccessToken());
+ } else if (googleMailConfiguration.getKeyResource() != null) {
+ client = getClientFactory().makeClient(getCamelContext(),
googleMailConfiguration.getKeyResource(),
+ googleMailConfiguration.getApplicationName(),
googleMailConfiguration.getDelegate(),
+ googleMailConfiguration.getScopes());
+ }
}
return client;
}
diff --git
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponentVerifierExtension.java
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponentVerifierExtension.java
index fdcd00b..9672a97 100644
---
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponentVerifierExtension.java
+++
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponentVerifierExtension.java
@@ -61,9 +61,16 @@ public class GoogleMailComponentVerifierExtension extends
DefaultComponentVerifi
try {
GoogleMailConfiguration configuration = setProperties(new
GoogleMailConfiguration(), parameters);
GoogleMailClientFactory clientFactory = new
BatchGoogleMailClientFactory();
- Gmail client =
clientFactory.makeClient(configuration.getClientId(),
configuration.getClientSecret(),
- configuration.getApplicationName(),
- configuration.getRefreshToken(),
configuration.getAccessToken());
+ Gmail client = null;
+ if (configuration.getClientSecret() != null) {
+ client = clientFactory.makeClient(configuration.getClientId(),
configuration.getClientSecret(),
+ configuration.getApplicationName(),
+ configuration.getRefreshToken(),
configuration.getAccessToken());
+ } else if (configuration.getKeyResource() != null) {
+ client = clientFactory.makeClient(getCamelContext(),
configuration.getKeyResource(),
+ configuration.getApplicationName(),
configuration.getDelegate(),
+ configuration.getScopes());
+ }
client.users().getProfile((String)
parameters.get("userId")).execute();
} catch (Exception e) {
ResultErrorBuilder errorBuilder
diff --git
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConfiguration.java
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConfiguration.java
index 68fba6a..5632934 100644
---
a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConfiguration.java
+++
b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConfiguration.java
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.google.mail;
+import java.util.List;
+
import org.apache.camel.component.google.mail.internal.GoogleMailApiName;
import org.apache.camel.spi.Configurer;
import org.apache.camel.spi.Metadata;
@@ -45,6 +47,13 @@ public class GoogleMailConfiguration {
private String refreshToken;
@UriParam
private String applicationName;
+ /* Service account */
+ @UriParam(label = "security")
+ private String keyResource;
+ @UriParam
+ private String delegate;
+ @UriParam
+ private List<String> scopes;
public GoogleMailApiName getApiName() {
return apiName;
@@ -124,4 +133,40 @@ public class GoogleMailConfiguration {
this.applicationName = applicationName;
}
+ public String getKeyResource() {
+ return keyResource;
+ }
+
+ /**
+ * Sets "*.json" file with credentials for Service account
+ *
+ * @param keyResource String file, classpath, or http url
+ */
+ public void setKeyResource(String keyResource) {
+ this.keyResource = keyResource;
+ }
+
+ public String getDelegate() {
+ return delegate;
+ }
+
+ /**
+ * Delegate for wide-domain service account
+ */
+ public void setDelegate(String delegate) {
+ this.delegate = delegate;
+ }
+
+ public List<String> getScopes() {
+ return scopes;
+ }
+
+ /**
+ * GMail scopes
+ *
+ * @see com.google.api.services.gmail.GmailScopes
+ */
+ public void setScopes(List<String> scopes) {
+ this.scopes = scopes;
+ }
}
diff --git
a/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersMessagesIT.java
b/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersMessagesIT.java
index b67ceeb..4dc1b13 100644
---
a/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersMessagesIT.java
+++
b/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersMessagesIT.java
@@ -1,216 +1,216 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.google.mail;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.internet.MimeMessage;
-
-import com.google.api.client.repackaged.org.apache.commons.codec.binary.Base64;
-import com.google.api.services.gmail.model.ListMessagesResponse;
-import com.google.api.services.gmail.model.Message;
-import org.apache.camel.builder.RouteBuilder;
-import
org.apache.camel.component.google.mail.internal.GmailUsersMessagesApiMethod;
-import org.apache.camel.component.google.mail.internal.GoogleMailApiCollection;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIf;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-/**
- * Test class for {@link com.google.api.services.gmail.Gmail$Users$Messages}
APIs.
- */
-@EnabledIf(value =
"org.apache.camel.component.google.mail.AbstractGoogleMailTestSupport#hasCredentials",
- disabledReason = "Google Mail credentials were not provided")
-public class GmailUsersMessagesIT extends AbstractGoogleMailTestSupport {
-
- // userid of the currently authenticated user
- public static final String CURRENT_USERID = "me";
- private static final Logger LOG =
LoggerFactory.getLogger(GmailUsersMessagesIT.class);
- private static final String PATH_PREFIX
- =
GoogleMailApiCollection.getCollection().getApiName(GmailUsersMessagesApiMethod.class).getName();
-
- @Test
- public void testMessages() throws Exception {
-
- // ==== Send test email ====
- Message testEmail = createTestEmail();
- Map<String, Object> headers = new HashMap<>();
- // parameter type is String
- headers.put("CamelGoogleMail.userId", CURRENT_USERID);
- // parameter type is com.google.api.services.gmail.model.Message
- headers.put("CamelGoogleMail.content", testEmail);
-
- com.google.api.services.gmail.model.Message result =
requestBodyAndHeaders("direct://SEND", null, headers);
- assertNotNull(result, "send result");
- String testEmailId = result.getId();
-
- // ==== Search for message we just sent ====
- headers = new HashMap<>();
- headers.put("CamelGoogleMail.q", "subject:\"Hello from
camel-google-mail\"");
- // using String message body for single parameter "userId"
- ListMessagesResponse listOfMessages = requestBody("direct://LIST",
CURRENT_USERID);
- assertTrue(idInList(testEmailId, listOfMessages));
-
- // ===== trash it ====
- headers = new HashMap<>();
- // parameter type is String
- headers.put("CamelGoogleMail.userId", CURRENT_USERID);
- // parameter type is String
- headers.put("CamelGoogleMail.id", testEmailId);
- requestBodyAndHeaders("direct://TRASH", null, headers);
-
- // ==== Search for message we just trashed ====
- headers = new HashMap<>();
- headers.put("CamelGoogleMail.q", "subject:\"Hello from
camel-google-mail\"");
- // using String message body for single parameter "userId"
- listOfMessages = requestBody("direct://LIST", CURRENT_USERID);
- assertFalse(idInList(testEmailId, listOfMessages));
-
- // ===== untrash it ====
- headers = new HashMap<>();
- // parameter type is String
- headers.put("CamelGoogleMail.userId", CURRENT_USERID);
- // parameter type is String
- headers.put("CamelGoogleMail.id", testEmailId);
- requestBodyAndHeaders("direct://UNTRASH", null, headers);
-
- // ==== Search for message we just trashed ====
- headers = new HashMap<>();
- headers.put("CamelGoogleMail.q", "subject:\"Hello from
camel-google-mail\"");
- // using String message body for single parameter "userId"
- listOfMessages = requestBody("direct://LIST", CURRENT_USERID);
- assertTrue(idInList(testEmailId, listOfMessages));
-
- // ===== permanently delete it ====
- headers = new HashMap<>();
- // parameter type is String
- headers.put("CamelGoogleMail.userId", CURRENT_USERID);
- // parameter type is String
- headers.put("CamelGoogleMail.id", testEmailId);
- requestBodyAndHeaders("direct://DELETE", null, headers);
-
- // ==== Search for message we just deleted ====
- headers = new HashMap<>();
- headers.put("CamelGoogleMail.q", "subject:\"Hello from
camel-google-mail\"");
- // using String message body for single parameter "userId"
- listOfMessages = requestBody("direct://LIST", CURRENT_USERID);
- assertFalse(idInList(testEmailId, listOfMessages));
- }
-
- private boolean idInList(String testEmailId, ListMessagesResponse
listOfMessages) {
- assertNotNull(listOfMessages, "list result");
- assertTrue(!listOfMessages.getMessages().isEmpty());
- boolean foundMessage = false;
- for (Message m : listOfMessages.getMessages()) {
- if (testEmailId.equals(m.getId())) {
- return true;
- }
- }
- return false;
- }
-
- private Message createTestEmail() throws MessagingException, IOException {
- com.google.api.services.gmail.model.Profile profile
- = requestBody("google-mail://users/getProfile?inBody=userId",
CURRENT_USERID);
- Properties props = new Properties();
- Session session = Session.getDefaultInstance(props, null);
- MimeMessage mm = new MimeMessage(session);
- mm.addRecipients(javax.mail.Message.RecipientType.TO,
profile.getEmailAddress());
- mm.setSubject("Hello from camel-google-mail");
- mm.setContent("Camel rocks!", "text/plain");
- Message createMessageWithEmail = createMessageWithEmail(mm);
- return createMessageWithEmail;
- }
-
- private MimeMessage toMimeMessage(Message message) throws
MessagingException {
- byte[] emailBytes = Base64.decodeBase64(message.getRaw());
-
- Properties props = new Properties();
- Session session = Session.getDefaultInstance(props, null);
-
- return new MimeMessage(session, new ByteArrayInputStream(emailBytes));
- }
-
- private Message createMessageWithEmail(MimeMessage email) throws
MessagingException, IOException {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- email.writeTo(baos);
- String encodedEmail =
Base64.encodeBase64URLSafeString(baos.toByteArray());
- Message message = new Message();
- message.setRaw(encodedEmail);
- return message;
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() throws Exception {
- return new RouteBuilder() {
- @Override
- public void configure() {
- // test route for attachments
- from("direct://ATTACHMENTS").to("google-mail://" + PATH_PREFIX
+ "/attachments");
-
- // test route for delete
- from("direct://DELETE").to("google-mail://" + PATH_PREFIX +
"/delete");
-
- // test route for get
- from("direct://GET").to("google-mail://" + PATH_PREFIX +
"/get");
-
- // test route for gmailImport
- from("direct://GMAILIMPORT").to("google-mail://" + PATH_PREFIX
+ "/gmailImport");
-
- // test route for gmailImport
- from("direct://GMAILIMPORT_1").to("google-mail://" +
PATH_PREFIX + "/gmailImport");
-
- // test route for insert
- from("direct://INSERT").to("google-mail://" + PATH_PREFIX +
"/insert");
-
- // test route for insert
- from("direct://INSERT_1").to("google-mail://" + PATH_PREFIX +
"/insert");
-
- // test route for list
- from("direct://LIST").to("google-mail://" + PATH_PREFIX +
"/list?inBody=userId");
-
- // test route for modify
- from("direct://MODIFY").to("google-mail://" + PATH_PREFIX +
"/modify");
-
- // test route for send
- from("direct://SEND").to("google-mail://" + PATH_PREFIX +
"/send");
-
- // test route for send
- from("direct://SEND_1").to("google-mail://" + PATH_PREFIX +
"/send");
-
- // test route for trash
- from("direct://TRASH").to("google-mail://" + PATH_PREFIX +
"/trash");
-
- // test route for untrash
- from("direct://UNTRASH").to("google-mail://" + PATH_PREFIX +
"/untrash");
-
- }
- };
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.google.mail;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
+
+import com.google.api.services.gmail.model.ListMessagesResponse;
+import com.google.api.services.gmail.model.Message;
+import org.apache.camel.builder.RouteBuilder;
+import
org.apache.camel.component.google.mail.internal.GmailUsersMessagesApiMethod;
+import org.apache.camel.component.google.mail.internal.GoogleMailApiCollection;
+import org.apache.commons.codec.binary.Base64;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledIf;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Test class for {@link com.google.api.services.gmail.Gmail$Users$Messages}
APIs.
+ */
+@EnabledIf(value =
"org.apache.camel.component.google.mail.AbstractGoogleMailTestSupport#hasCredentials",
+ disabledReason = "Google Mail credentials were not provided")
+public class GmailUsersMessagesIT extends AbstractGoogleMailTestSupport {
+
+ // userid of the currently authenticated user
+ public static final String CURRENT_USERID = "me";
+ private static final Logger LOG =
LoggerFactory.getLogger(GmailUsersMessagesIT.class);
+ private static final String PATH_PREFIX
+ =
GoogleMailApiCollection.getCollection().getApiName(GmailUsersMessagesApiMethod.class).getName();
+
+ @Test
+ public void testMessages() throws Exception {
+
+ // ==== Send test email ====
+ Message testEmail = createTestEmail();
+ Map<String, Object> headers = new HashMap<>();
+ // parameter type is String
+ headers.put("CamelGoogleMail.userId", CURRENT_USERID);
+ // parameter type is com.google.api.services.gmail.model.Message
+ headers.put("CamelGoogleMail.content", testEmail);
+
+ com.google.api.services.gmail.model.Message result =
requestBodyAndHeaders("direct://SEND", null, headers);
+ assertNotNull(result, "send result");
+ String testEmailId = result.getId();
+
+ // ==== Search for message we just sent ====
+ headers = new HashMap<>();
+ headers.put("CamelGoogleMail.q", "subject:\"Hello from
camel-google-mail\"");
+ // using String message body for single parameter "userId"
+ ListMessagesResponse listOfMessages = requestBody("direct://LIST",
CURRENT_USERID);
+ assertTrue(idInList(testEmailId, listOfMessages));
+
+ // ===== trash it ====
+ headers = new HashMap<>();
+ // parameter type is String
+ headers.put("CamelGoogleMail.userId", CURRENT_USERID);
+ // parameter type is String
+ headers.put("CamelGoogleMail.id", testEmailId);
+ requestBodyAndHeaders("direct://TRASH", null, headers);
+
+ // ==== Search for message we just trashed ====
+ headers = new HashMap<>();
+ headers.put("CamelGoogleMail.q", "subject:\"Hello from
camel-google-mail\"");
+ // using String message body for single parameter "userId"
+ listOfMessages = requestBody("direct://LIST", CURRENT_USERID);
+ assertFalse(idInList(testEmailId, listOfMessages));
+
+ // ===== untrash it ====
+ headers = new HashMap<>();
+ // parameter type is String
+ headers.put("CamelGoogleMail.userId", CURRENT_USERID);
+ // parameter type is String
+ headers.put("CamelGoogleMail.id", testEmailId);
+ requestBodyAndHeaders("direct://UNTRASH", null, headers);
+
+ // ==== Search for message we just trashed ====
+ headers = new HashMap<>();
+ headers.put("CamelGoogleMail.q", "subject:\"Hello from
camel-google-mail\"");
+ // using String message body for single parameter "userId"
+ listOfMessages = requestBody("direct://LIST", CURRENT_USERID);
+ assertTrue(idInList(testEmailId, listOfMessages));
+
+ // ===== permanently delete it ====
+ headers = new HashMap<>();
+ // parameter type is String
+ headers.put("CamelGoogleMail.userId", CURRENT_USERID);
+ // parameter type is String
+ headers.put("CamelGoogleMail.id", testEmailId);
+ requestBodyAndHeaders("direct://DELETE", null, headers);
+
+ // ==== Search for message we just deleted ====
+ headers = new HashMap<>();
+ headers.put("CamelGoogleMail.q", "subject:\"Hello from
camel-google-mail\"");
+ // using String message body for single parameter "userId"
+ listOfMessages = requestBody("direct://LIST", CURRENT_USERID);
+ assertFalse(idInList(testEmailId, listOfMessages));
+ }
+
+ private boolean idInList(String testEmailId, ListMessagesResponse
listOfMessages) {
+ assertNotNull(listOfMessages, "list result");
+ assertTrue(!listOfMessages.getMessages().isEmpty());
+ boolean foundMessage = false;
+ for (Message m : listOfMessages.getMessages()) {
+ if (testEmailId.equals(m.getId())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private Message createTestEmail() throws MessagingException, IOException {
+ com.google.api.services.gmail.model.Profile profile
+ = requestBody("google-mail://users/getProfile?inBody=userId",
CURRENT_USERID);
+ Properties props = new Properties();
+ Session session = Session.getDefaultInstance(props, null);
+ MimeMessage mm = new MimeMessage(session);
+ mm.addRecipients(javax.mail.Message.RecipientType.TO,
profile.getEmailAddress());
+ mm.setSubject("Hello from camel-google-mail");
+ mm.setContent("Camel rocks!", "text/plain");
+ Message createMessageWithEmail = createMessageWithEmail(mm);
+ return createMessageWithEmail;
+ }
+
+ private MimeMessage toMimeMessage(Message message) throws
MessagingException {
+ byte[] emailBytes = Base64.decodeBase64(message.getRaw());
+
+ Properties props = new Properties();
+ Session session = Session.getDefaultInstance(props, null);
+
+ return new MimeMessage(session, new ByteArrayInputStream(emailBytes));
+ }
+
+ private Message createMessageWithEmail(MimeMessage email) throws
MessagingException, IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ email.writeTo(baos);
+ String encodedEmail =
Base64.encodeBase64URLSafeString(baos.toByteArray());
+ Message message = new Message();
+ message.setRaw(encodedEmail);
+ return message;
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() {
+ // test route for attachments
+ from("direct://ATTACHMENTS").to("google-mail://" + PATH_PREFIX
+ "/attachments");
+
+ // test route for delete
+ from("direct://DELETE").to("google-mail://" + PATH_PREFIX +
"/delete");
+
+ // test route for get
+ from("direct://GET").to("google-mail://" + PATH_PREFIX +
"/get");
+
+ // test route for gmailImport
+ from("direct://GMAILIMPORT").to("google-mail://" + PATH_PREFIX
+ "/gmailImport");
+
+ // test route for gmailImport
+ from("direct://GMAILIMPORT_1").to("google-mail://" +
PATH_PREFIX + "/gmailImport");
+
+ // test route for insert
+ from("direct://INSERT").to("google-mail://" + PATH_PREFIX +
"/insert");
+
+ // test route for insert
+ from("direct://INSERT_1").to("google-mail://" + PATH_PREFIX +
"/insert");
+
+ // test route for list
+ from("direct://LIST").to("google-mail://" + PATH_PREFIX +
"/list?inBody=userId");
+
+ // test route for modify
+ from("direct://MODIFY").to("google-mail://" + PATH_PREFIX +
"/modify");
+
+ // test route for send
+ from("direct://SEND").to("google-mail://" + PATH_PREFIX +
"/send");
+
+ // test route for send
+ from("direct://SEND_1").to("google-mail://" + PATH_PREFIX +
"/send");
+
+ // test route for trash
+ from("direct://TRASH").to("google-mail://" + PATH_PREFIX +
"/trash");
+
+ // test route for untrash
+ from("direct://UNTRASH").to("google-mail://" + PATH_PREFIX +
"/untrash");
+
+ }
+ };
+ }
+}
diff --git
a/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersThreadsIT.java
b/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersThreadsIT.java
index 5cba04c..6f8b31a 100644
---
a/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersThreadsIT.java
+++
b/components/camel-google/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersThreadsIT.java
@@ -1,136 +1,136 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.google.mail;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.internet.MimeMessage;
-
-import com.google.api.client.repackaged.org.apache.commons.codec.binary.Base64;
-import com.google.api.services.gmail.model.Message;
-import org.apache.camel.builder.RouteBuilder;
-import
org.apache.camel.component.google.mail.internal.GmailUsersThreadsApiMethod;
-import org.apache.camel.component.google.mail.internal.GoogleMailApiCollection;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIf;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-/**
- * Test class for {@link com.google.api.services.gmail.Gmail$Users$Threads}
APIs.
- */
-@EnabledIf(value =
"org.apache.camel.component.google.mail.AbstractGoogleMailTestSupport#hasCredentials",
- disabledReason = "Google Mail credentials were not provided")
-public class GmailUsersThreadsIT extends AbstractGoogleMailTestSupport {
-
- private static final Logger LOG =
LoggerFactory.getLogger(GmailUsersThreadsIT.class);
- private static final String PATH_PREFIX
- =
GoogleMailApiCollection.getCollection().getApiName(GmailUsersThreadsApiMethod.class).getName();
-
- private Message createThreadedTestEmail(String previousThreadId) throws
MessagingException, IOException {
- com.google.api.services.gmail.model.Profile profile
- = requestBody("google-mail://users/getProfile?inBody=userId",
CURRENT_USERID);
- Properties props = new Properties();
- Session session = Session.getDefaultInstance(props, null);
- MimeMessage mm = new MimeMessage(session);
- mm.addRecipients(javax.mail.Message.RecipientType.TO,
profile.getEmailAddress());
- mm.setSubject("Hello from camel-google-mail");
- mm.setContent("Camel rocks!", "text/plain");
- Message createMessageWithEmail = createMessageWithEmail(mm);
- if (previousThreadId != null) {
- createMessageWithEmail.setThreadId(previousThreadId);
- }
-
- Map<String, Object> headers = new HashMap<>();
- // parameter type is String
- headers.put("CamelGoogleMail.userId", CURRENT_USERID);
- // parameter type is com.google.api.services.gmail.model.Message
- headers.put("CamelGoogleMail.content", createMessageWithEmail);
-
- return requestBodyAndHeaders("google-mail://messages/send", null,
headers);
- }
-
- private Message createMessageWithEmail(MimeMessage email) throws
MessagingException, IOException {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- email.writeTo(baos);
- String encodedEmail =
Base64.encodeBase64URLSafeString(baos.toByteArray());
- Message message = new Message();
- message.setRaw(encodedEmail);
- return message;
- }
-
- @Test
- public void testList() throws Exception {
- Message m1 = createThreadedTestEmail(null);
- Message m2 = createThreadedTestEmail(m1.getThreadId());
-
- Map<String, Object> headers = new HashMap<>();
- headers.put("CamelGoogleMail.q", "subject:\"Hello from
camel-google-mail\"");
-
- // using String message body for single parameter "userId"
- com.google.api.services.gmail.model.ListThreadsResponse result
- = requestBodyAndHeaders("direct://LIST", CURRENT_USERID,
headers);
-
- assertNotNull(result, "list result");
- assertTrue(result.getThreads().size() > 0);
- LOG.debug("list: " + result);
-
- headers = new HashMap<>();
- // parameter type is String
- headers.put("CamelGoogleMail.userId", CURRENT_USERID);
- // parameter type is String
- headers.put("CamelGoogleMail.id", m1.getThreadId());
-
- requestBodyAndHeaders("direct://DELETE", null, headers);
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() throws Exception {
- return new RouteBuilder() {
- @Override
- public void configure() {
- // test route for delete
- from("direct://DELETE").to("google-mail://" + PATH_PREFIX +
"/delete");
-
- // test route for get
- from("direct://GET").to("google-mail://" + PATH_PREFIX +
"/get");
-
- // test route for list
- from("direct://LIST").to("google-mail://" + PATH_PREFIX +
"/list?inBody=userId");
-
- // test route for modify
- from("direct://MODIFY").to("google-mail://" + PATH_PREFIX +
"/modify");
-
- // test route for trash
- from("direct://TRASH").to("google-mail://" + PATH_PREFIX +
"/trash");
-
- // test route for untrash
- from("direct://UNTRASH").to("google-mail://" + PATH_PREFIX +
"/untrash");
-
- }
- };
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.google.mail;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
+
+import com.google.api.services.gmail.model.Message;
+import org.apache.camel.builder.RouteBuilder;
+import
org.apache.camel.component.google.mail.internal.GmailUsersThreadsApiMethod;
+import org.apache.camel.component.google.mail.internal.GoogleMailApiCollection;
+import org.apache.commons.codec.binary.Base64;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledIf;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Test class for {@link com.google.api.services.gmail.Gmail$Users$Threads}
APIs.
+ */
+@EnabledIf(value =
"org.apache.camel.component.google.mail.AbstractGoogleMailTestSupport#hasCredentials",
+ disabledReason = "Google Mail credentials were not provided")
+public class GmailUsersThreadsIT extends AbstractGoogleMailTestSupport {
+
+ private static final Logger LOG =
LoggerFactory.getLogger(GmailUsersThreadsIT.class);
+ private static final String PATH_PREFIX
+ =
GoogleMailApiCollection.getCollection().getApiName(GmailUsersThreadsApiMethod.class).getName();
+
+ private Message createThreadedTestEmail(String previousThreadId) throws
MessagingException, IOException {
+ com.google.api.services.gmail.model.Profile profile
+ = requestBody("google-mail://users/getProfile?inBody=userId",
CURRENT_USERID);
+ Properties props = new Properties();
+ Session session = Session.getDefaultInstance(props, null);
+ MimeMessage mm = new MimeMessage(session);
+ mm.addRecipients(javax.mail.Message.RecipientType.TO,
profile.getEmailAddress());
+ mm.setSubject("Hello from camel-google-mail");
+ mm.setContent("Camel rocks!", "text/plain");
+ Message createMessageWithEmail = createMessageWithEmail(mm);
+ if (previousThreadId != null) {
+ createMessageWithEmail.setThreadId(previousThreadId);
+ }
+
+ Map<String, Object> headers = new HashMap<>();
+ // parameter type is String
+ headers.put("CamelGoogleMail.userId", CURRENT_USERID);
+ // parameter type is com.google.api.services.gmail.model.Message
+ headers.put("CamelGoogleMail.content", createMessageWithEmail);
+
+ return requestBodyAndHeaders("google-mail://messages/send", null,
headers);
+ }
+
+ private Message createMessageWithEmail(MimeMessage email) throws
MessagingException, IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ email.writeTo(baos);
+ String encodedEmail =
Base64.encodeBase64URLSafeString(baos.toByteArray());
+ Message message = new Message();
+ message.setRaw(encodedEmail);
+ return message;
+ }
+
+ @Test
+ public void testList() throws Exception {
+ Message m1 = createThreadedTestEmail(null);
+ Message m2 = createThreadedTestEmail(m1.getThreadId());
+
+ Map<String, Object> headers = new HashMap<>();
+ headers.put("CamelGoogleMail.q", "subject:\"Hello from
camel-google-mail\"");
+
+ // using String message body for single parameter "userId"
+ com.google.api.services.gmail.model.ListThreadsResponse result
+ = requestBodyAndHeaders("direct://LIST", CURRENT_USERID,
headers);
+
+ assertNotNull(result, "list result");
+ assertTrue(result.getThreads().size() > 0);
+ LOG.debug("list: " + result);
+
+ headers = new HashMap<>();
+ // parameter type is String
+ headers.put("CamelGoogleMail.userId", CURRENT_USERID);
+ // parameter type is String
+ headers.put("CamelGoogleMail.id", m1.getThreadId());
+
+ requestBodyAndHeaders("direct://DELETE", null, headers);
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() {
+ // test route for delete
+ from("direct://DELETE").to("google-mail://" + PATH_PREFIX +
"/delete");
+
+ // test route for get
+ from("direct://GET").to("google-mail://" + PATH_PREFIX +
"/get");
+
+ // test route for list
+ from("direct://LIST").to("google-mail://" + PATH_PREFIX +
"/list?inBody=userId");
+
+ // test route for modify
+ from("direct://MODIFY").to("google-mail://" + PATH_PREFIX +
"/modify");
+
+ // test route for trash
+ from("direct://TRASH").to("google-mail://" + PATH_PREFIX +
"/trash");
+
+ // test route for untrash
+ from("direct://UNTRASH").to("google-mail://" + PATH_PREFIX +
"/untrash");
+
+ }
+ };
+ }
+}
diff --git
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleMailComponentBuilderFactory.java
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleMailComponentBuilderFactory.java
index 380e766..08e8bdd 100644
---
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleMailComponentBuilderFactory.java
+++
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleMailComponentBuilderFactory.java
@@ -96,6 +96,50 @@ public interface GoogleMailComponentBuilderFactory {
return this;
}
/**
+ * Delegate for wide-domain service account.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: common
+ *
+ * @param delegate the value to set
+ * @return the dsl builder
+ */
+ default GoogleMailComponentBuilder delegate(java.lang.String delegate)
{
+ doSetProperty("delegate", delegate);
+ return this;
+ }
+ /**
+ * Filename .json with credentials for Service account.
+ *
+ * The option is a: <code>java.lang.String</code> type.
+ *
+ * Group: common
+ *
+ * @param filename the value to set
+ * @return the dsl builder
+ */
+ default GoogleMailComponentBuilder filename(java.lang.String filename)
{
+ doSetProperty("filename", filename);
+ return this;
+ }
+ /**
+ * GMail scopes.
+ *
+ * The option is a:
+ *
<code>java.util.List&lt;java.lang.String&gt;</code> type.
+ *
+ * Group: common
+ *
+ * @param scopes the value to set
+ * @return the dsl builder
+ */
+ default GoogleMailComponentBuilder scopes(
+ java.util.List<java.lang.String> scopes) {
+ doSetProperty("scopes", scopes);
+ return this;
+ }
+ /**
* 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
@@ -254,6 +298,9 @@ public interface GoogleMailComponentBuilderFactory {
case "applicationName":
getOrCreateConfiguration((GoogleMailComponent)
component).setApplicationName((java.lang.String) value); return true;
case "clientId": getOrCreateConfiguration((GoogleMailComponent)
component).setClientId((java.lang.String) value); return true;
case "configuration": ((GoogleMailComponent)
component).setConfiguration((org.apache.camel.component.google.mail.GoogleMailConfiguration)
value); return true;
+ case "delegate": getOrCreateConfiguration((GoogleMailComponent)
component).setDelegate((java.lang.String) value); return true;
+ case "filename": getOrCreateConfiguration((GoogleMailComponent)
component).setFilename((java.lang.String) value); return true;
+ case "scopes": getOrCreateConfiguration((GoogleMailComponent)
component).setScopes((java.util.List) value); return true;
case "bridgeErrorHandler": ((GoogleMailComponent)
component).setBridgeErrorHandler((boolean) value); return true;
case "lazyStartProducer": ((GoogleMailComponent)
component).setLazyStartProducer((boolean) value); return true;
case "autowiredEnabled": ((GoogleMailComponent)
component).setAutowiredEnabled((boolean) value); return true;
diff --git a/parent/pom.xml b/parent/pom.xml
index dda03eb..596d8d4 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -208,12 +208,13 @@
<google-api-services-drive-version>v2-rev297-1.22.0</google-api-services-drive-version>
<google-api-services-calendar-version>v3-rev291-1.22.0</google-api-services-calendar-version>
<google-api-services-sheets-version>v4-rev551-1.22.0</google-api-services-sheets-version>
-
<google-api-services-mail-version>v1-rev81-1.22.0</google-api-services-mail-version>
<google-cloud-bom-version>16.3.0</google-cloud-bom-version>
<google-cloud-functions-bom-version>1.0.8</google-cloud-functions-bom-version>
<google-cloud-functions-gax-grpc-version>1.62.0</google-cloud-functions-gax-grpc-version>
<google-cloud-guava-version>30.0-jre</google-cloud-guava-version>
- <google-mail-guava-version>17.0</google-mail-guava-version>
+ <google-mail-guava-version>20.0</google-mail-guava-version>
+ <google-mail-api-client-version>1.32.1</google-mail-api-client-version>
+
<google-api-services-mail-version>v1-rev20211108-1.32.1</google-api-services-mail-version>
<graaljs-version>21.3.0</graaljs-version>
<graphql-java-version>14.0</graphql-java-version>
<grizzly-websockets-version>2.4.4</grizzly-websockets-version>