You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2015/12/28 14:15:51 UTC
[1/2] camel git commit: CAMEL-9455: Enhance Google Calendar service
account with user impersonation support. Thanks to Alvin Kwekel for the
patch.
Repository: camel
Updated Branches:
refs/heads/camel-2.16.x c4d4338e7 -> 76cf2f827
refs/heads/master a558dd68c -> 78dba26ee
CAMEL-9455: Enhance Google Calendar service account with user impersonation support. Thanks to Alvin Kwekel for the patch.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/78dba26e
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/78dba26e
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/78dba26e
Branch: refs/heads/master
Commit: 78dba26ee668d2dff14e1cb6e0b21af9578cf6c7
Parents: a558dd6
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Dec 28 14:15:09 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Dec 28 14:15:09 2015 +0100
----------------------------------------------------------------------
.../BatchGoogleCalendarClientFactory.java | 34 ++++++++++----------
.../calendar/GoogleCalendarClientFactory.java | 4 +--
.../calendar/GoogleCalendarComponent.java | 17 ++++------
.../calendar/GoogleCalendarConfiguration.java | 23 ++++++++++---
4 files changed, 45 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/78dba26e/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java
index 67d94f7..5783e89 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java
@@ -26,8 +26,6 @@ import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.calendar.Calendar;
-
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,49 +42,51 @@ public class BatchGoogleCalendarClientFactory implements GoogleCalendarClientFac
@Override
public Calendar makeClient(String clientId, String clientSecret,
- Collection<String> scopes, String applicationName, String refreshToken,
- String accessToken, String emailAddress, String p12FileName) {
-
+ Collection<String> scopes, String applicationName, String refreshToken,
+ String accessToken, String emailAddress, String p12FileName, String user) {
+
Credential credential;
try {
- // if emailAddress and p12FileName values are present, assume Google Service Account
+ // if emailAddress and p12FileName values are present, assume Google Service Account
if (null != emailAddress && !"".equals(emailAddress) && null != p12FileName && !"".equals(p12FileName)) {
- credential = authorizeServiceAccount(emailAddress, p12FileName, scopes);
+ credential = authorizeServiceAccount(emailAddress, p12FileName, scopes, user);
} else {
credential = authorize(clientId, clientSecret, scopes);
if (refreshToken != null && !"".equals(refreshToken)) {
credential.setRefreshToken(refreshToken);
- }
+ }
if (accessToken != null && !"".equals(accessToken)) {
credential.setAccessToken(accessToken);
}
}
return new Calendar.Builder(transport, jsonFactory, credential).setApplicationName(applicationName).build();
} catch (Exception e) {
- LOG.error("Could not create Google Drive client.", e);
+ LOG.error("Could not create Google Drive client.", e);
}
return null;
}
-
+
// Authorizes the installed application to access user's protected data.
private Credential authorize(String clientId, String clientSecret, Collection<String> scopes) throws Exception {
// authorize
return new GoogleCredential.Builder()
- .setJsonFactory(jsonFactory)
- .setTransport(transport)
- .setClientSecrets(clientId, clientSecret)
- .build();
+ .setJsonFactory(jsonFactory)
+ .setTransport(transport)
+ .setClientSecrets(clientId, clientSecret)
+ .build();
}
-
- private Credential authorizeServiceAccount(String emailAddress, String p12FileName, Collection<String> scopes) throws Exception {
+
+ private Credential authorizeServiceAccount(String emailAddress, String p12FileName, Collection<String> scopes, String user) throws Exception {
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
+ // set the service account user when provided
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(emailAddress)
.setServiceAccountPrivateKeyFromP12File(new File(p12FileName))
.setServiceAccountScopes(scopes)
+ .setServiceAccountUser(user)
.build();
return credential;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/78dba26e/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java
index 74347a2..c187db0 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java
@@ -23,7 +23,7 @@ import com.google.api.services.calendar.Calendar;
public interface GoogleCalendarClientFactory {
Calendar makeClient(String clientId, String clientSecret, Collection<String> scopes,
- String applicationName, String refreshToken, String accessToken,
- String emailAddress, String p12FileName);
+ String applicationName, String refreshToken, String accessToken,
+ String emailAddress, String p12FileName, String user);
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/78dba26e/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
index 6cd83dc..d140ee4 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
@@ -17,7 +17,6 @@
package org.apache.camel.component.google.calendar;
import com.google.api.services.calendar.Calendar;
-
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiCollection;
@@ -47,15 +46,15 @@ public class GoogleCalendarComponent extends AbstractApiComponent<GoogleCalendar
public Calendar getClient() {
if (client == null) {
- client = getClientFactory().makeClient(configuration.getClientId(),
- configuration.getClientSecret(), configuration.getScopes(),
- configuration.getApplicationName(), configuration.getRefreshToken(),
- configuration.getAccessToken(), configuration.getEmailAddress(),
- configuration.getP12FileName());
+ client = getClientFactory().makeClient(configuration.getClientId(),
+ configuration.getClientSecret(), configuration.getScopes(),
+ configuration.getApplicationName(), configuration.getRefreshToken(),
+ configuration.getAccessToken(), configuration.getEmailAddress(),
+ configuration.getP12FileName(), configuration.getUser());
}
return client;
}
-
+
public GoogleCalendarClientFactory getClientFactory() {
if (clientFactory == null) {
clientFactory = new BatchGoogleCalendarClientFactory();
@@ -70,7 +69,6 @@ public class GoogleCalendarComponent extends AbstractApiComponent<GoogleCalendar
/**
* To use the shared configuration
- * @param configuration
*/
@Override
public void setConfiguration(GoogleCalendarConfiguration configuration) {
@@ -80,12 +78,11 @@ public class GoogleCalendarComponent extends AbstractApiComponent<GoogleCalendar
/**
* To use the GoogleCalendarClientFactory as factory for creating the client.
* Will by default use {@link BatchGoogleCalendarClientFactory}
- * @param clientFactory
*/
public void setClientFactory(GoogleCalendarClientFactory clientFactory) {
this.clientFactory = clientFactory;
}
-
+
@Override
protected Endpoint createEndpoint(String uri, String methodName, GoogleCalendarApiName apiName,
GoogleCalendarConfiguration endpointConfiguration) {
http://git-wip-us.apache.org/repos/asf/camel/blob/78dba26e/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java
index 80ba96b..dae776c 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java
@@ -31,9 +31,10 @@ import org.apache.camel.spi.UriPath;
*/
@UriParams
public class GoogleCalendarConfiguration {
- private static final List<String> DEFAULT_SCOPES = Arrays.asList(CalendarScopes.CALENDAR);
+ private static final List<String> DEFAULT_SCOPES = Arrays.asList(CalendarScopes.CALENDAR);
- @UriPath @Metadata(required = "true")
+ @UriPath
+ @Metadata(required = "true")
private GoogleCalendarApiName apiName;
@UriPath(enums = "calendarImport,clear,delete,get,insert,instances,list,move,patch,query,quickAdd,stop,update,watch")
@@ -42,7 +43,7 @@ public class GoogleCalendarConfiguration {
@UriParam(defaultValue = CalendarScopes.CALENDAR)
private List<String> scopes = DEFAULT_SCOPES;
-
+
@UriParam
private String clientId;
@@ -64,6 +65,9 @@ public class GoogleCalendarConfiguration {
@UriParam
private String p12FileName;
+ @UriParam
+ private String user;
+
public GoogleCalendarApiName getApiName() {
return apiName;
}
@@ -151,7 +155,7 @@ public class GoogleCalendarConfiguration {
public void setApplicationName(String applicationName) {
this.applicationName = applicationName;
}
-
+
public List<String> getScopes() {
return scopes;
}
@@ -174,4 +178,15 @@ public class GoogleCalendarConfiguration {
this.p12FileName = p12FileName;
}
+ public String getUser() {
+ return user;
+ }
+
+ /**
+ * The email address of the user the application is trying to impersonate in the service account flow
+ */
+ public void setUser(String user) {
+ this.user = user;
+ }
+
}
[2/2] camel git commit: CAMEL-9455: Enhance Google Calendar service
account with user impersonation support. Thanks to Alvin Kwekel for the
patch.
Posted by da...@apache.org.
CAMEL-9455: Enhance Google Calendar service account with user impersonation support. Thanks to Alvin Kwekel for the patch.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/76cf2f82
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/76cf2f82
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/76cf2f82
Branch: refs/heads/camel-2.16.x
Commit: 76cf2f8279349fa32aeef0134aea969b6275a473
Parents: c4d4338
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Dec 28 14:15:09 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Dec 28 14:15:35 2015 +0100
----------------------------------------------------------------------
.../BatchGoogleCalendarClientFactory.java | 34 ++++++++++----------
.../calendar/GoogleCalendarClientFactory.java | 4 +--
.../calendar/GoogleCalendarComponent.java | 17 ++++------
.../calendar/GoogleCalendarConfiguration.java | 23 ++++++++++---
4 files changed, 45 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/76cf2f82/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java
index 67d94f7..5783e89 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java
@@ -26,8 +26,6 @@ import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.calendar.Calendar;
-
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,49 +42,51 @@ public class BatchGoogleCalendarClientFactory implements GoogleCalendarClientFac
@Override
public Calendar makeClient(String clientId, String clientSecret,
- Collection<String> scopes, String applicationName, String refreshToken,
- String accessToken, String emailAddress, String p12FileName) {
-
+ Collection<String> scopes, String applicationName, String refreshToken,
+ String accessToken, String emailAddress, String p12FileName, String user) {
+
Credential credential;
try {
- // if emailAddress and p12FileName values are present, assume Google Service Account
+ // if emailAddress and p12FileName values are present, assume Google Service Account
if (null != emailAddress && !"".equals(emailAddress) && null != p12FileName && !"".equals(p12FileName)) {
- credential = authorizeServiceAccount(emailAddress, p12FileName, scopes);
+ credential = authorizeServiceAccount(emailAddress, p12FileName, scopes, user);
} else {
credential = authorize(clientId, clientSecret, scopes);
if (refreshToken != null && !"".equals(refreshToken)) {
credential.setRefreshToken(refreshToken);
- }
+ }
if (accessToken != null && !"".equals(accessToken)) {
credential.setAccessToken(accessToken);
}
}
return new Calendar.Builder(transport, jsonFactory, credential).setApplicationName(applicationName).build();
} catch (Exception e) {
- LOG.error("Could not create Google Drive client.", e);
+ LOG.error("Could not create Google Drive client.", e);
}
return null;
}
-
+
// Authorizes the installed application to access user's protected data.
private Credential authorize(String clientId, String clientSecret, Collection<String> scopes) throws Exception {
// authorize
return new GoogleCredential.Builder()
- .setJsonFactory(jsonFactory)
- .setTransport(transport)
- .setClientSecrets(clientId, clientSecret)
- .build();
+ .setJsonFactory(jsonFactory)
+ .setTransport(transport)
+ .setClientSecrets(clientId, clientSecret)
+ .build();
}
-
- private Credential authorizeServiceAccount(String emailAddress, String p12FileName, Collection<String> scopes) throws Exception {
+
+ private Credential authorizeServiceAccount(String emailAddress, String p12FileName, Collection<String> scopes, String user) throws Exception {
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
+ // set the service account user when provided
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(emailAddress)
.setServiceAccountPrivateKeyFromP12File(new File(p12FileName))
.setServiceAccountScopes(scopes)
+ .setServiceAccountUser(user)
.build();
return credential;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/76cf2f82/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java
index 74347a2..c187db0 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java
@@ -23,7 +23,7 @@ import com.google.api.services.calendar.Calendar;
public interface GoogleCalendarClientFactory {
Calendar makeClient(String clientId, String clientSecret, Collection<String> scopes,
- String applicationName, String refreshToken, String accessToken,
- String emailAddress, String p12FileName);
+ String applicationName, String refreshToken, String accessToken,
+ String emailAddress, String p12FileName, String user);
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/76cf2f82/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
index 6cd83dc..d140ee4 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
@@ -17,7 +17,6 @@
package org.apache.camel.component.google.calendar;
import com.google.api.services.calendar.Calendar;
-
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiCollection;
@@ -47,15 +46,15 @@ public class GoogleCalendarComponent extends AbstractApiComponent<GoogleCalendar
public Calendar getClient() {
if (client == null) {
- client = getClientFactory().makeClient(configuration.getClientId(),
- configuration.getClientSecret(), configuration.getScopes(),
- configuration.getApplicationName(), configuration.getRefreshToken(),
- configuration.getAccessToken(), configuration.getEmailAddress(),
- configuration.getP12FileName());
+ client = getClientFactory().makeClient(configuration.getClientId(),
+ configuration.getClientSecret(), configuration.getScopes(),
+ configuration.getApplicationName(), configuration.getRefreshToken(),
+ configuration.getAccessToken(), configuration.getEmailAddress(),
+ configuration.getP12FileName(), configuration.getUser());
}
return client;
}
-
+
public GoogleCalendarClientFactory getClientFactory() {
if (clientFactory == null) {
clientFactory = new BatchGoogleCalendarClientFactory();
@@ -70,7 +69,6 @@ public class GoogleCalendarComponent extends AbstractApiComponent<GoogleCalendar
/**
* To use the shared configuration
- * @param configuration
*/
@Override
public void setConfiguration(GoogleCalendarConfiguration configuration) {
@@ -80,12 +78,11 @@ public class GoogleCalendarComponent extends AbstractApiComponent<GoogleCalendar
/**
* To use the GoogleCalendarClientFactory as factory for creating the client.
* Will by default use {@link BatchGoogleCalendarClientFactory}
- * @param clientFactory
*/
public void setClientFactory(GoogleCalendarClientFactory clientFactory) {
this.clientFactory = clientFactory;
}
-
+
@Override
protected Endpoint createEndpoint(String uri, String methodName, GoogleCalendarApiName apiName,
GoogleCalendarConfiguration endpointConfiguration) {
http://git-wip-us.apache.org/repos/asf/camel/blob/76cf2f82/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java
index 80ba96b..dae776c 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java
@@ -31,9 +31,10 @@ import org.apache.camel.spi.UriPath;
*/
@UriParams
public class GoogleCalendarConfiguration {
- private static final List<String> DEFAULT_SCOPES = Arrays.asList(CalendarScopes.CALENDAR);
+ private static final List<String> DEFAULT_SCOPES = Arrays.asList(CalendarScopes.CALENDAR);
- @UriPath @Metadata(required = "true")
+ @UriPath
+ @Metadata(required = "true")
private GoogleCalendarApiName apiName;
@UriPath(enums = "calendarImport,clear,delete,get,insert,instances,list,move,patch,query,quickAdd,stop,update,watch")
@@ -42,7 +43,7 @@ public class GoogleCalendarConfiguration {
@UriParam(defaultValue = CalendarScopes.CALENDAR)
private List<String> scopes = DEFAULT_SCOPES;
-
+
@UriParam
private String clientId;
@@ -64,6 +65,9 @@ public class GoogleCalendarConfiguration {
@UriParam
private String p12FileName;
+ @UriParam
+ private String user;
+
public GoogleCalendarApiName getApiName() {
return apiName;
}
@@ -151,7 +155,7 @@ public class GoogleCalendarConfiguration {
public void setApplicationName(String applicationName) {
this.applicationName = applicationName;
}
-
+
public List<String> getScopes() {
return scopes;
}
@@ -174,4 +178,15 @@ public class GoogleCalendarConfiguration {
this.p12FileName = p12FileName;
}
+ public String getUser() {
+ return user;
+ }
+
+ /**
+ * The email address of the user the application is trying to impersonate in the service account flow
+ */
+ public void setUser(String user) {
+ this.user = user;
+ }
+
}