You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/03/10 11:05:40 UTC

[camel] branch master updated (c6108e7 -> fd3e4d0)

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

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


    from c6108e7  Regen
     new 87c5f97  CAMEL-16322 - Have a middle folder for google components
     new fc40961  CAMEL-16322 - Have a middle folder for google components
     new 2353d02  CAMEL-16322 - Have a middle folder for google components
     new 724a19f  CAMEL-16322 - Have a middle folder for google components
     new 820342d  CAMEL-16322 - Have a middle folder for google components
     new fd3e4d0  CAMEL-16322 - Have a middle folder for google components

The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 bom/camel-bom/pom.xml                              |   5 +++
 .../camel-google-bigquery}/.gitignore              |   0
 .../camel-google-bigquery/ReadMe.md                |   0
 .../camel-google-bigquery/pom.xml                  |   2 +-
 .../GoogleBigQueryComponentConfigurer.java         |   0
 .../bigquery/GoogleBigQueryEndpointConfigurer.java |   0
 .../bigquery/GoogleBigQueryEndpointUriFactory.java |   0
 .../sql/GoogleBigQuerySQLComponentConfigurer.java  |   0
 .../sql/GoogleBigQuerySQLEndpointConfigurer.java   |   0
 .../sql/GoogleBigQuerySQLEndpointUriFactory.java   |   0
 .../services/org/apache/camel/component.properties |   0
 .../org/apache/camel/component/google-bigquery     |   0
 .../org/apache/camel/component/google-bigquery-sql |   0
 .../camel/configurer/google-bigquery-component     |   0
 .../camel/configurer/google-bigquery-endpoint      |   0
 .../camel/configurer/google-bigquery-sql-component |   0
 .../camel/configurer/google-bigquery-sql-endpoint  |   0
 .../camel/urifactory/google-bigquery-endpoint      |   0
 .../camel/urifactory/google-bigquery-sql-endpoint  |   0
 .../component/google/bigquery/google-bigquery.json |   0
 .../google/bigquery/sql/google-bigquery-sql.json   |   0
 .../src/main/docs/google-bigquery-component.adoc   |   0
 .../main/docs/google-bigquery-sql-component.adoc   |   0
 .../src/main/docs/google-summary.adoc              |   0
 .../google/bigquery/GoogleBigQueryComponent.java   |   0
 .../bigquery/GoogleBigQueryConfiguration.java      |   0
 .../bigquery/GoogleBigQueryConnectionFactory.java  |   0
 .../google/bigquery/GoogleBigQueryConstants.java   |   0
 .../google/bigquery/GoogleBigQueryEndpoint.java    |   0
 .../google/bigquery/GoogleBigQueryProducer.java    |   0
 .../bigquery/sql/GoogleBigQuerySQLComponent.java   |   0
 .../sql/GoogleBigQuerySQLConfiguration.java        |   0
 .../bigquery/sql/GoogleBigQuerySQLEndpoint.java    |   0
 .../bigquery/sql/GoogleBigQuerySQLProducer.java    |   0
 .../component/google/bigquery/sql/SqlHelper.java   |   0
 .../google/bigquery/integration/AsyncTest.java     |   0
 .../bigquery/integration/BigQueryTestSupport.java  |   0
 .../bigquery/integration/DynamicTableIdTest.java   |   0
 .../google/bigquery/integration/InsertIdTest.java  |   0
 .../google/bigquery/integration/SingleRowTest.java |   0
 .../integration/sql/SqlQueryFromResourceTest.java  |   0
 .../bigquery/integration/sql/SqlQueryTest.java     |   0
 .../google/bigquery/unit/BaseBigQueryTest.java     |   0
 .../bigquery/unit/GoogleBigQueryProducerTest.java  |   0
 .../unit/sql/GoogleBigQuerySQLComponentTest.java   |   0
 .../sql/GoogleBigQuerySQLProducerBaseTest.java     |   0
 .../GoogleBigQuerySQLProducerWithParamersTest.java |   0
 .../GoogleBigQuerySQLProducerWithPatternTest.java  |   0
 .../google/bigquery/unit/sql/SqlHelperTest.java    |   0
 .../src/test/resources/log4j.properties            |   0
 .../src/test/resources/log4j2.properties           |   0
 .../src/test/resources/logging.properties          |   0
 .../src/test/resources/simple.properties           |   0
 .../src/test/resources/sql/delete.sql              |   0
 .../src/test/resources/sql/insert.sql              |   0
 .../camel-google-calendar/pom.xml                  |   2 +-
 .../calendar/CalendarAclEndpointConfiguration.java |   0
 ...CalendarAclEndpointConfigurationConfigurer.java |   0
 .../CalendarCalendarListEndpointConfiguration.java |   0
 ...alendarListEndpointConfigurationConfigurer.java |   0
 .../CalendarCalendarsEndpointConfiguration.java    |   0
 ...arCalendarsEndpointConfigurationConfigurer.java |   0
 .../CalendarChannelsEndpointConfiguration.java     |   0
 ...darChannelsEndpointConfigurationConfigurer.java |   0
 .../CalendarColorsEndpointConfiguration.java       |   0
 ...endarColorsEndpointConfigurationConfigurer.java |   0
 .../CalendarEventsEndpointConfiguration.java       |   0
 ...endarEventsEndpointConfigurationConfigurer.java |   0
 .../CalendarFreebusyEndpointConfiguration.java     |   0
 ...darFreebusyEndpointConfigurationConfigurer.java |   0
 .../CalendarSettingsEndpointConfiguration.java     |   0
 ...darSettingsEndpointConfigurationConfigurer.java |   0
 .../GoogleCalendarComponentConfigurer.java         |   0
 .../GoogleCalendarConfigurationConfigurer.java     |   0
 .../calendar/GoogleCalendarEndpointConfigurer.java |   0
 .../calendar/GoogleCalendarEndpointUriFactory.java |   0
 .../calendar/internal/CalendarAclApiMethod.java    |   0
 .../internal/CalendarCalendarListApiMethod.java    |   0
 .../internal/CalendarCalendarsApiMethod.java       |   0
 .../internal/CalendarChannelsApiMethod.java        |   0
 .../calendar/internal/CalendarColorsApiMethod.java |   0
 .../calendar/internal/CalendarEventsApiMethod.java |   0
 .../internal/CalendarFreebusyApiMethod.java        |   0
 .../internal/CalendarSettingsApiMethod.java        |   0
 .../internal/GoogleCalendarApiCollection.java      |   0
 .../calendar/internal/GoogleCalendarApiName.java   |   0
 .../GoogleCalendarStreamComponentConfigurer.java   |   0
 .../GoogleCalendarStreamEndpointConfigurer.java    |   0
 .../GoogleCalendarStreamEndpointUriFactory.java    |   0
 .../services/org/apache/camel/component.properties |   0
 .../org/apache/camel/component/google-calendar     |   0
 .../apache/camel/component/google-calendar-stream  |   0
 .../camel/configurer/google-calendar-component     |   0
 .../camel/configurer/google-calendar-endpoint      |   0
 .../configurer/google-calendar-stream-component    |   0
 .../configurer/google-calendar-stream-endpoint     |   0
 ...oogle.calendar.CalendarAclEndpointConfiguration |   0
 ...endar.CalendarCalendarListEndpointConfiguration |   0
 ...calendar.CalendarCalendarsEndpointConfiguration |   0
 ....calendar.CalendarChannelsEndpointConfiguration |   0
 ...le.calendar.CalendarColorsEndpointConfiguration |   0
 ...le.calendar.CalendarEventsEndpointConfiguration |   0
 ....calendar.CalendarFreebusyEndpointConfiguration |   0
 ....calendar.CalendarSettingsEndpointConfiguration |   0
 ...ent.google.calendar.GoogleCalendarConfiguration |   0
 .../camel/urifactory/google-calendar-endpoint      |   0
 .../urifactory/google-calendar-stream-endpoint     |   0
 .../component/google/calendar/google-calendar.json |   0
 .../calendar/stream/google-calendar-stream.json    |   0
 .../src/main/docs/google-calendar-component.adoc   |   0
 .../docs/google-calendar-stream-component.adoc     |   0
 .../calendar/BatchGoogleCalendarClientFactory.java |   0
 .../calendar/GoogleCalendarClientFactory.java      |   0
 .../google/calendar/GoogleCalendarComponent.java   |   0
 .../calendar/GoogleCalendarConfiguration.java      |   0
 .../google/calendar/GoogleCalendarConsumer.java    |   0
 .../google/calendar/GoogleCalendarEndpoint.java    |   0
 .../google/calendar/GoogleCalendarProducer.java    |   0
 .../calendar/internal/GoogleCalendarConstants.java |   0
 .../internal/GoogleCalendarPropertiesHelper.java   |   0
 .../stream/GoogleCalendarStreamComponent.java      |   0
 .../stream/GoogleCalendarStreamConfiguration.java  |   0
 .../stream/GoogleCalendarStreamConstants.java      |   0
 .../stream/GoogleCalendarStreamConsumer.java       |   0
 .../stream/GoogleCalendarStreamEndpoint.java       |   0
 .../AbstractGoogleCalendarTestSupport.java         |   0
 .../calendar/CalendarAclIntegrationTest.java       |   0
 .../CalendarCalendarListIntegrationTest.java       |   0
 .../calendar/CalendarCalendarsIntegrationTest.java |   0
 .../calendar/CalendarColorsIntegrationTest.java    |   0
 .../google/calendar/CalendarConfigurationTest.java |   0
 .../calendar/CalendarEventsIntegrationTest.java    |   0
 .../calendar/CalendarFreebusyIntegrationTest.java  |   0
 .../calendar/CalendarSettingsIntegrationTest.java  |   0
 .../AbstractGoogleCalendarStreamTestSupport.java   |   0
 ...oogleCalendarStreamConsumerIntegrationTest.java |   0
 .../src/test/resources/log4j2.properties           |   0
 .../src/test/resources/test-options.properties     |   0
 .../{ => camel-google}/camel-google-drive/pom.xml  |   2 +-
 .../drive/DriveAboutEndpointConfiguration.java     |   0
 .../DriveAboutEndpointConfigurationConfigurer.java |   0
 .../drive/DriveAppsEndpointConfiguration.java      |   0
 .../DriveAppsEndpointConfigurationConfigurer.java  |   0
 .../drive/DriveChangesEndpointConfiguration.java   |   0
 ...riveChangesEndpointConfigurationConfigurer.java |   0
 .../drive/DriveChannelsEndpointConfiguration.java  |   0
 ...iveChannelsEndpointConfigurationConfigurer.java |   0
 .../drive/DriveChildrenEndpointConfiguration.java  |   0
 ...iveChildrenEndpointConfigurationConfigurer.java |   0
 .../drive/DriveCommentsEndpointConfiguration.java  |   0
 ...iveCommentsEndpointConfigurationConfigurer.java |   0
 .../drive/DriveFilesEndpointConfiguration.java     |   0
 .../DriveFilesEndpointConfigurationConfigurer.java |   0
 .../drive/DriveParentsEndpointConfiguration.java   |   0
 ...riveParentsEndpointConfigurationConfigurer.java |   0
 .../DrivePermissionsEndpointConfiguration.java     |   0
 ...PermissionsEndpointConfigurationConfigurer.java |   0
 .../DrivePropertiesEndpointConfiguration.java      |   0
 ...ePropertiesEndpointConfigurationConfigurer.java |   0
 .../drive/DriveRealtimeEndpointConfiguration.java  |   0
 ...iveRealtimeEndpointConfigurationConfigurer.java |   0
 .../drive/DriveRepliesEndpointConfiguration.java   |   0
 ...riveRepliesEndpointConfigurationConfigurer.java |   0
 .../drive/DriveRevisionsEndpointConfiguration.java |   0
 ...veRevisionsEndpointConfigurationConfigurer.java |   0
 .../drive/GoogleDriveComponentConfigurer.java      |   0
 .../drive/GoogleDriveConfigurationConfigurer.java  |   0
 .../drive/GoogleDriveEndpointConfigurer.java       |   0
 .../drive/GoogleDriveEndpointUriFactory.java       |   0
 .../drive/GoogleDriveFilesConverterLoader.java     |   0
 .../google/drive/internal/DriveAboutApiMethod.java |   0
 .../google/drive/internal/DriveAppsApiMethod.java  |   0
 .../drive/internal/DriveChangesApiMethod.java      |   0
 .../drive/internal/DriveChannelsApiMethod.java     |   0
 .../drive/internal/DriveChildrenApiMethod.java     |   0
 .../drive/internal/DriveCommentsApiMethod.java     |   0
 .../google/drive/internal/DriveFilesApiMethod.java |   0
 .../drive/internal/DriveParentsApiMethod.java      |   0
 .../drive/internal/DrivePermissionsApiMethod.java  |   0
 .../drive/internal/DrivePropertiesApiMethod.java   |   0
 .../drive/internal/DriveRealtimeApiMethod.java     |   0
 .../drive/internal/DriveRepliesApiMethod.java      |   0
 .../drive/internal/DriveRevisionsApiMethod.java    |   0
 .../drive/internal/GoogleDriveApiCollection.java   |   0
 .../google/drive/internal/GoogleDriveApiName.java  |   0
 .../services/org/apache/camel/TypeConverterLoader  |   0
 .../services/org/apache/camel/component.properties |   0
 .../org/apache/camel/component/google-drive        |   0
 .../apache/camel/configurer/google-drive-component |   0
 .../apache/camel/configurer/google-drive-endpoint  |   0
 ...nt.google.drive.DriveAboutEndpointConfiguration |   0
 ...ent.google.drive.DriveAppsEndpointConfiguration |   0
 ....google.drive.DriveChangesEndpointConfiguration |   0
 ...google.drive.DriveChannelsEndpointConfiguration |   0
 ...google.drive.DriveChildrenEndpointConfiguration |   0
 ...google.drive.DriveCommentsEndpointConfiguration |   0
 ...nt.google.drive.DriveFilesEndpointConfiguration |   0
 ....google.drive.DriveParentsEndpointConfiguration |   0
 ...gle.drive.DrivePermissionsEndpointConfiguration |   0
 ...ogle.drive.DrivePropertiesEndpointConfiguration |   0
 ...google.drive.DriveRealtimeEndpointConfiguration |   0
 ....google.drive.DriveRepliesEndpointConfiguration |   0
 ...oogle.drive.DriveRevisionsEndpointConfiguration |   0
 ...component.google.drive.GoogleDriveConfiguration |   0
 .../apache/camel/urifactory/google-drive-endpoint  |   0
 .../camel/component/google/drive/google-drive.json |   0
 .../src/main/docs/google-drive-component.adoc      |   0
 .../drive/BatchGoogleDriveClientFactory.java       |   0
 .../google/drive/GoogleDriveClientFactory.java     |   0
 .../google/drive/GoogleDriveComponent.java         |   0
 .../google/drive/GoogleDriveConfiguration.java     |   0
 .../google/drive/GoogleDriveConsumer.java          |   0
 .../google/drive/GoogleDriveEndpoint.java          |   0
 .../google/drive/GoogleDriveFilesConverter.java    |   0
 .../google/drive/GoogleDriveProducer.java          |   0
 .../drive/InteractiveGoogleDriveClientFactory.java |   0
 .../drive/internal/GoogleDriveConstants.java       |   0
 .../internal/GoogleDrivePropertiesHelper.java      |   0
 .../drive/AbstractGoogleDriveTestSupport.java      |   0
 .../google/drive/CustomClientFactoryTest.java      |   0
 .../google/drive/DriveAboutIntegrationTest.java    |   0
 .../google/drive/DriveAppsIntegrationTest.java     |   0
 .../google/drive/DriveChangesIntegrationTest.java  |   0
 .../google/drive/DriveChildrenIntegrationTest.java |   0
 .../google/drive/DriveCommentsIntegrationTest.java |   0
 .../google/drive/DriveConfigurationTest.java       |   0
 .../google/drive/DriveFilesIntegrationTest.java    |   0
 .../drive/DrivePermissionsIntegrationTest.java     |   0
 .../drive/DrivePropertiesIntegrationTest.java      |   0
 .../google/drive/DriveRepliesIntegrationTest.java  |   0
 .../drive/DriveRevisionsIntegrationTest.java       |   0
 .../google/drive/FileConverterIntegrationTest.java |   0
 .../google/drive/FilesConsumerIntegrationTest.java |   0
 .../drive/GoogleDriveFilesConverterTest.java       |   0
 .../component/google/drive/MyClientFactory.java    |   0
 .../src/test/resources/camel-box-small.png         | Bin
 .../src/test/resources/log4j2.properties           |   0
 .../src/test/resources/test-options.properties     |   0
 .../{ => camel-google}/camel-google-mail/pom.xml   |   2 +-
 .../GmailUsersDraftsEndpointConfiguration.java     |   0
 ...UsersDraftsEndpointConfigurationConfigurer.java |   0
 .../mail/GmailUsersEndpointConfiguration.java      |   0
 .../GmailUsersEndpointConfigurationConfigurer.java |   0
 .../GmailUsersHistoryEndpointConfiguration.java    |   0
 ...sersHistoryEndpointConfigurationConfigurer.java |   0
 .../GmailUsersLabelsEndpointConfiguration.java     |   0
 ...UsersLabelsEndpointConfigurationConfigurer.java |   0
 ...rsMessagesAttachmentsEndpointConfiguration.java |   0
 ...AttachmentsEndpointConfigurationConfigurer.java |   0
 .../GmailUsersMessagesEndpointConfiguration.java   |   0
 ...ersMessagesEndpointConfigurationConfigurer.java |   0
 .../GmailUsersThreadsEndpointConfiguration.java    |   0
 ...sersThreadsEndpointConfigurationConfigurer.java |   0
 .../google/mail/GoogleMailComponentConfigurer.java |   0
 .../mail/GoogleMailConfigurationConfigurer.java    |   0
 .../google/mail/GoogleMailEndpointConfigurer.java  |   0
 .../google/mail/GoogleMailEndpointUriFactory.java  |   0
 .../google/mail/internal/GmailUsersApiMethod.java  |   0
 .../mail/internal/GmailUsersDraftsApiMethod.java   |   0
 .../mail/internal/GmailUsersHistoryApiMethod.java  |   0
 .../mail/internal/GmailUsersLabelsApiMethod.java   |   0
 .../mail/internal/GmailUsersMessagesApiMethod.java |   0
 .../GmailUsersMessagesAttachmentsApiMethod.java    |   0
 .../mail/internal/GmailUsersThreadsApiMethod.java  |   0
 .../mail/internal/GoogleMailApiCollection.java     |   0
 .../google/mail/internal/GoogleMailApiName.java    |   0
 .../GoogleMailStreamComponentConfigurer.java       |   0
 .../stream/GoogleMailStreamEndpointConfigurer.java |   0
 .../stream/GoogleMailStreamEndpointUriFactory.java |   0
 .../services/org/apache/camel/component.properties |   0
 .../org/apache/camel/component/google-mail         |   0
 .../org/apache/camel/component/google-mail-stream  |   0
 .../apache/camel/configurer/google-mail-component  |   0
 .../apache/camel/configurer/google-mail-endpoint   |   0
 .../camel/configurer/google-mail-stream-component  |   0
 .../camel/configurer/google-mail-stream-endpoint   |   0
 ...ogle.mail.GmailUsersDraftsEndpointConfiguration |   0
 ...ent.google.mail.GmailUsersEndpointConfiguration |   0
 ...gle.mail.GmailUsersHistoryEndpointConfiguration |   0
 ...ogle.mail.GmailUsersLabelsEndpointConfiguration |   0
 ...ilUsersMessagesAttachmentsEndpointConfiguration |   0
 ...le.mail.GmailUsersMessagesEndpointConfiguration |   0
 ...gle.mail.GmailUsersThreadsEndpointConfiguration |   0
 ...l.component.google.mail.GoogleMailConfiguration |   0
 .../apache/camel/urifactory/google-mail-endpoint   |   0
 .../camel/urifactory/google-mail-stream-endpoint   |   0
 .../camel/component/google/mail/google-mail.json   |   0
 .../google/mail/stream/google-mail-stream.json     |   0
 .../src/main/docs/google-mail-component.adoc       |   0
 .../main/docs/google-mail-stream-component.adoc    |   0
 .../google/mail/BatchGoogleMailClientFactory.java  |   0
 .../google/mail/GoogleMailClientFactory.java       |   0
 .../component/google/mail/GoogleMailComponent.java |   0
 .../mail/GoogleMailComponentVerifierExtension.java |   0
 .../google/mail/GoogleMailConfiguration.java       |   0
 .../component/google/mail/GoogleMailConsumer.java  |   0
 .../component/google/mail/GoogleMailEndpoint.java  |   0
 .../component/google/mail/GoogleMailProducer.java  |   0
 .../google/mail/internal/GoogleMailConstants.java  |   0
 .../mail/internal/GoogleMailPropertiesHelper.java  |   0
 .../mail/stream/GoogleMailStreamComponent.java     |   0
 ...GoogleMailStreamComponentVerifierExtension.java |   0
 .../mail/stream/GoogleMailStreamConfiguration.java |   0
 .../mail/stream/GoogleMailStreamConstants.java     |   0
 .../mail/stream/GoogleMailStreamConsumer.java      |   0
 .../mail/stream/GoogleMailStreamEndpoint.java      |   0
 .../google/mail/AbstractGoogleMailTestSupport.java |   0
 .../google/mail/GmailConfigurationTest.java        |   0
 .../google/mail/GmailUsersIntegrationTest.java     |   0
 .../mail/GmailUsersLabelsIntegrationTest.java      |   0
 .../GmailUsersMessagesConsumerIntegrationTest.java |   0
 .../mail/GmailUsersMessagesIntegrationTest.java    |   0
 .../mail/GmailUsersThreadsIntegrationTest.java     |   0
 .../GoogleMailComponentVerifierExtensionTest.java  |   0
 .../AbstractGoogleMailStreamTestSupport.java       |   0
 ...leMailStreamComponentVerifierExtensionTest.java |   0
 .../GoogleMailStreamConsumerIntegrationTest.java   |   0
 .../src/test/resources/log4j2.properties           |   0
 .../src/test/resources/test-options.properties     |   0
 .../camel-google-pubsub}/.gitignore                |   0
 .../camel-google-pubsub/ReadMe.md                  |   0
 .../{ => camel-google}/camel-google-pubsub/pom.xml |   2 +-
 .../pubsub/GooglePubsubComponentConfigurer.java    |   0
 .../pubsub/GooglePubsubEndpointConfigurer.java     |   0
 .../pubsub/GooglePubsubEndpointUriFactory.java     |   0
 .../services/org/apache/camel/component.properties |   0
 .../org/apache/camel/component/google-pubsub       |   0
 .../camel/configurer/google-pubsub-component       |   0
 .../apache/camel/configurer/google-pubsub-endpoint |   0
 .../apache/camel/urifactory/google-pubsub-endpoint |   0
 .../component/google/pubsub/google-pubsub.json     |   0
 .../src/main/docs/google-pubsub-component.adoc     |   0
 .../google/pubsub/GooglePubsubComponent.java       |   0
 .../google/pubsub/GooglePubsubConstants.java       |   0
 .../google/pubsub/GooglePubsubConsumer.java        |   0
 .../google/pubsub/GooglePubsubEndpoint.java        |   0
 .../google/pubsub/GooglePubsubProducer.java        |   0
 .../google/pubsub/consumer/AcknowledgeAsync.java   |   0
 .../google/pubsub/consumer/AcknowledgeSync.java    |   0
 .../pubsub/consumer/CamelMessageReceiver.java      |   0
 .../serializer/DefaultGooglePubsubSerializer.java  |   0
 .../pubsub/serializer/GooglePubsubSerializer.java  |   0
 .../component/google/pubsub/PubsubTestSupport.java |   0
 .../google/pubsub/integration/AckModeNoneTest.java |   0
 .../pubsub/integration/AcknowledgementTest.java    |   0
 .../google/pubsub/integration/BodyTypesTest.java   |   0
 .../pubsub/integration/CustomSerializerTest.java   |   0
 .../google/pubsub/integration/DeadLetterTest.java  |   0
 .../integration/GroupedExchangeRoundtripTest.java  |   0
 .../pubsub/integration/MessageOrderingTest.java    |   0
 .../integration/SingleExchangeRoundtripTest.java   |   0
 .../google/pubsub/unit/PubsubEndpointTest.java     |   0
 .../google/pubsub/unit/PubsubProducerTest.java     |   0
 .../src/test/resources/camel-pubsub-component.json |   0
 .../src/test/resources/log4j.properties            |   0
 .../src/test/resources/log4j2.properties           |   0
 .../src/test/resources/logging.properties          |   0
 .../src/test/resources/simple.properties           |   0
 .../{ => camel-google}/camel-google-sheets/pom.xml |   2 +-
 .../sheets/GoogleSheetsComponentConfigurer.java    |   0
 .../GoogleSheetsConfigurationConfigurer.java       |   0
 .../sheets/GoogleSheetsEndpointConfigurer.java     |   0
 .../sheets/GoogleSheetsEndpointUriFactory.java     |   0
 .../SheetsSpreadsheetsEndpointConfiguration.java   |   0
 ...preadsheetsEndpointConfigurationConfigurer.java |   0
 ...etsSpreadsheetsValuesEndpointConfiguration.java |   0
 ...heetsValuesEndpointConfigurationConfigurer.java |   0
 .../sheets/internal/GoogleSheetsApiCollection.java |   0
 .../sheets/internal/GoogleSheetsApiName.java       |   0
 .../internal/SheetsSpreadsheetsApiMethod.java      |   0
 .../SheetsSpreadsheetsValuesApiMethod.java         |   0
 .../GoogleSheetsStreamComponentConfigurer.java     |   0
 .../GoogleSheetsStreamEndpointConfigurer.java      |   0
 .../GoogleSheetsStreamEndpointUriFactory.java      |   0
 .../services/org/apache/camel/component.properties |   0
 .../org/apache/camel/component/google-sheets       |   0
 .../apache/camel/component/google-sheets-stream    |   0
 .../camel/configurer/google-sheets-component       |   0
 .../apache/camel/configurer/google-sheets-endpoint |   0
 .../configurer/google-sheets-stream-component      |   0
 .../camel/configurer/google-sheets-stream-endpoint |   0
 ...mponent.google.sheets.GoogleSheetsConfiguration |   0
 ....sheets.SheetsSpreadsheetsEndpointConfiguration |   0
 ...s.SheetsSpreadsheetsValuesEndpointConfiguration |   0
 .../apache/camel/urifactory/google-sheets-endpoint |   0
 .../camel/urifactory/google-sheets-stream-endpoint |   0
 .../component/google/sheets/google-sheets.json     |   0
 .../google/sheets/stream/google-sheets-stream.json |   0
 .../src/main/docs/google-sheets-component.adoc     |   0
 .../main/docs/google-sheets-stream-component.adoc  |   0
 .../sheets/BatchGoogleSheetsClientFactory.java     |   0
 .../google/sheets/GoogleSheetsClientFactory.java   |   0
 .../google/sheets/GoogleSheetsComponent.java       |   0
 .../google/sheets/GoogleSheetsConfiguration.java   |   0
 .../google/sheets/GoogleSheetsConsumer.java        |   0
 .../google/sheets/GoogleSheetsEndpoint.java        |   0
 .../google/sheets/GoogleSheetsProducer.java        |   0
 .../sheets/GoogleSheetsVerifierExtension.java      |   0
 .../sheets/internal/GoogleSheetsConstants.java     |   0
 .../internal/GoogleSheetsPropertiesHelper.java     |   0
 .../sheets/stream/GoogleSheetsStreamComponent.java |   0
 .../stream/GoogleSheetsStreamConfiguration.java    |   0
 .../sheets/stream/GoogleSheetsStreamConstants.java |   0
 .../sheets/stream/GoogleSheetsStreamConsumer.java  |   0
 .../sheets/stream/GoogleSheetsStreamEndpoint.java  |   0
 .../sheets/AbstractGoogleSheetsTestSupport.java    |   0
 .../sheets/GoogleSheetsVerifierExtensionTest.java  |   0
 .../google/sheets/SheetsConfigurationTest.java     |   0
 .../sheets/SheetsSpreadsheetsIntegrationTest.java  |   0
 .../SheetsSpreadsheetsValuesIntegrationTest.java   |   0
 .../sheets/server/GoogleSheetsApiTestServer.java   |   0
 .../server/GoogleSheetsApiTestServerAssert.java    |   0
 .../server/GoogleSheetsApiTestServerRule.java      |   0
 .../AbstractGoogleSheetsStreamTestSupport.java     |   0
 .../SheetsStreamConsumerIntegrationTest.java       |   0
 .../src/test/resources/googleapis.jks              | Bin
 .../src/test/resources/log4j2.properties           |   0
 .../src/test/resources/test-options.properties     |   0
 .../camel-google-storage/ReadMe.md                 |   0
 .../camel-google-storage/pom.xml                   |  10 ++---
 .../GoogleCloudStorageComponentConfigurer.java     |   0
 .../GoogleCloudStorageEndpointConfigurer.java      |   0
 .../GoogleCloudStorageEndpointUriFactory.java      |   0
 .../services/org/apache/camel/component.properties |   0
 .../org/apache/camel/component/google-storage      |   0
 .../camel/configurer/google-storage-component      |   0
 .../camel/configurer/google-storage-endpoint       |   0
 .../camel/urifactory/google-storage-endpoint       |   0
 .../component/google/storage/google-storage.json   |   0
 .../src/main/docs/google-storage-component.adoc    |   0
 .../storage/GoogleCloudStorageComponent.java       |   0
 .../storage/GoogleCloudStorageConfiguration.java   |   0
 .../GoogleCloudStorageConnectionFactory.java       |   0
 .../storage/GoogleCloudStorageConstants.java       |   0
 .../google/storage/GoogleCloudStorageConsumer.java |   0
 .../google/storage/GoogleCloudStorageEndpoint.java |   0
 .../storage/GoogleCloudStorageOperations.java      |   0
 .../google/storage/GoogleCloudStorageProducer.java |   0
 .../org/apache/camel/component/google-storage      |   0
 .../integration/ComplexIntegrationTest.java        |   0
 .../storage/localstorage/FakeStorageRpc.java       |   0
 .../storage/localstorage/LocalStorageHelper.java   |   0
 .../google/storage/unit/ConsumerLocalTest.java     |   0
 .../storage/unit/GoogleCloudStorageBaseTest.java   |   0
 ...ogleCloudStorageComponentConfigurationTest.java |   0
 .../google/storage/unit/ProducerLocalTest.java     |   0
 .../src/test/resources/log4j2.properties           |   0
 components/camel-google/pom.xml                    |  45 +++++++++++++++++++++
 components/pom.xml                                 |   8 +---
 .../ROOT/pages/google-bigquery-component.adoc      |   2 +-
 .../ROOT/pages/google-bigquery-sql-component.adoc  |   2 +-
 .../ROOT/pages/google-calendar-component.adoc      |   2 +-
 .../pages/google-calendar-stream-component.adoc    |   2 +-
 .../modules/ROOT/pages/google-drive-component.adoc |   2 +-
 .../modules/ROOT/pages/google-mail-component.adoc  |   2 +-
 .../ROOT/pages/google-mail-stream-component.adoc   |   2 +-
 .../ROOT/pages/google-pubsub-component.adoc        |   2 +-
 .../ROOT/pages/google-sheets-component.adoc        |   2 +-
 .../ROOT/pages/google-sheets-stream-component.adoc |   2 +-
 .../ROOT/pages/google-storage-component.adoc       |   2 +-
 .../modules/ROOT/pages/google-summary.adoc         |   2 +-
 parent/pom.xml                                     |   5 +++
 .../camel/maven/packaging/PrepareCatalogMojo.java  |   6 +++
 463 files changed, 85 insertions(+), 30 deletions(-)
 rename components/{camel-google-pubsub => camel-google/camel-google-bigquery}/.gitignore (100%)
 rename components/{ => camel-google}/camel-google-bigquery/ReadMe.md (100%)
 rename components/{ => camel-google}/camel-google-bigquery/pom.xml (98%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponentConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointUriFactory.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponentConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointUriFactory.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component.properties (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery-sql (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-component (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-endpoint (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-component (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-endpoint (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-endpoint (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-sql-endpoint (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/google-bigquery.json (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/docs/google-bigquery-component.adoc (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/docs/google-bigquery-sql-component.adoc (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/docs/google-summary.adoc (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponent.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConnectionFactory.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConstants.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpoint.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryProducer.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponent.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpoint.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLProducer.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/SqlHelper.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/AsyncTest.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/BigQueryTestSupport.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/DynamicTableIdTest.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/InsertIdTest.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/SingleRowTest.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryFromResourceTest.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryTest.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/BaseBigQueryTest.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/GoogleBigQueryProducerTest.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLComponentTest.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerBaseTest.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithParamersTest.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithPatternTest.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/SqlHelperTest.java (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/resources/log4j.properties (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/resources/log4j2.properties (100%)
 rename components/{camel-google-pubsub => camel-google/camel-google-bigquery}/src/test/resources/logging.properties (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/resources/simple.properties (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/resources/sql/delete.sql (100%)
 rename components/{ => camel-google}/camel-google-bigquery/src/test/resources/sql/insert.sql (100%)
 rename components/{ => camel-google}/camel-google-calendar/pom.xml (99%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarComponentConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointUriFactory.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarAclApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarListApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarChannelsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarColorsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarEventsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarFreebusyApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarSettingsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiCollection.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiName.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamComponentConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointUriFactory.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component.properties (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar-stream (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-component (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-endpoint (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-component (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-endpoint (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.GoogleCalendarConfiguration (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-endpoint (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-stream-endpoint (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/google-calendar.json (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/stream/google-calendar-stream.json (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/docs/google-calendar-component.adoc (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConsumer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpoint.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarProducer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarConstants.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarPropertiesHelper.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamComponent.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConstants.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumer.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpoint.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/AbstractGoogleCalendarTestSupport.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/CalendarAclIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/CalendarCalendarListIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/CalendarCalendarsIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/CalendarColorsIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/CalendarConfigurationTest.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/CalendarEventsIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/CalendarFreebusyIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/CalendarSettingsIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/stream/AbstractGoogleCalendarStreamTestSupport.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/test/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamConsumerIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/test/resources/log4j2.properties (100%)
 rename components/{ => camel-google}/camel-google-calendar/src/test/resources/test-options.properties (100%)
 rename components/{ => camel-google}/camel-google-drive/pom.xml (99%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveAboutEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveAboutEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveAppsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveAppsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChangesEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChangesEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChannelsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChannelsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChildrenEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveChildrenEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveCommentsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveCommentsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveFilesEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveFilesEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveParentsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveParentsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DrivePermissionsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DrivePermissionsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DrivePropertiesEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DrivePropertiesEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveRealtimeEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveRealtimeEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveRepliesEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveRepliesEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveRevisionsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/DriveRevisionsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/GoogleDriveComponentConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/GoogleDriveConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/GoogleDriveEndpointConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/GoogleDriveEndpointUriFactory.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/GoogleDriveFilesConverterLoader.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/DriveAboutApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/DriveAppsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/DriveChangesApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/DriveChannelsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/DriveChildrenApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/DriveCommentsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/DriveFilesApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/DriveParentsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/DrivePermissionsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/DrivePropertiesApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/DriveRealtimeApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/DriveRepliesApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/DriveRevisionsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/GoogleDriveApiCollection.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/java/org/apache/camel/component/google/drive/internal/GoogleDriveApiName.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/TypeConverterLoader (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/component.properties (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/component/google-drive (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-drive-component (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-drive-endpoint (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.DriveAboutEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.DriveAppsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.DriveChangesEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.DriveChannelsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.DriveChildrenEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.DriveCommentsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.DriveFilesEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.DriveParentsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.DrivePermissionsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.DrivePropertiesEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.DriveRealtimeEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.DriveRepliesEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.DriveRevisionsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.drive.GoogleDriveConfiguration (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-drive-endpoint (100%)
 rename components/{ => camel-google}/camel-google-drive/src/generated/resources/org/apache/camel/component/google/drive/google-drive.json (100%)
 rename components/{ => camel-google}/camel-google-drive/src/main/docs/google-drive-component.adoc (100%)
 rename components/{ => camel-google}/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/BatchGoogleDriveClientFactory.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveClientFactory.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveConsumer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveEndpoint.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveFilesConverter.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveProducer.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/InteractiveGoogleDriveClientFactory.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/internal/GoogleDriveConstants.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/internal/GoogleDrivePropertiesHelper.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/AbstractGoogleDriveTestSupport.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/CustomClientFactoryTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DriveAboutIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DriveAppsIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DriveChangesIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DriveChildrenIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DriveCommentsIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DriveConfigurationTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DriveFilesIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DrivePermissionsIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DrivePropertiesIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DriveRepliesIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/DriveRevisionsIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/FileConverterIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/FilesConsumerIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/GoogleDriveFilesConverterTest.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/MyClientFactory.java (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/resources/camel-box-small.png (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/resources/log4j2.properties (100%)
 rename components/{ => camel-google}/camel-google-drive/src/test/resources/test-options.properties (100%)
 rename components/{ => camel-google}/camel-google-mail/pom.xml (99%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersDraftsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersDraftsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersHistoryEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersHistoryEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersLabelsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesAttachmentsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesAttachmentsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersMessagesEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersThreadsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GmailUsersThreadsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailComponentConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/GoogleMailEndpointUriFactory.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/internal/GmailUsersApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/internal/GmailUsersDraftsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/internal/GmailUsersHistoryApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/internal/GmailUsersLabelsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/internal/GmailUsersMessagesApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/internal/GmailUsersMessagesAttachmentsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/internal/GmailUsersThreadsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/internal/GoogleMailApiCollection.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/internal/GoogleMailApiName.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamComponentConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpointConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpointUriFactory.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/component.properties (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/component/google-mail (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/component/google-mail-stream (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-mail-component (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-mail-endpoint (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-mail-stream-component (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-mail-stream-endpoint (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.mail.GmailUsersDraftsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.mail.GmailUsersEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.mail.GmailUsersHistoryEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.mail.GmailUsersLabelsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.mail.GmailUsersMessagesAttachmentsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.mail.GmailUsersMessagesEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.mail.GmailUsersThreadsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.mail.GoogleMailConfiguration (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-mail-endpoint (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-mail-stream-endpoint (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/google-mail.json (100%)
 rename components/{ => camel-google}/camel-google-mail/src/generated/resources/org/apache/camel/component/google/mail/stream/google-mail-stream.json (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/docs/google-mail-component.adoc (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/docs/google-mail-stream-component.adoc (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/BatchGoogleMailClientFactory.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailClientFactory.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponentVerifierExtension.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailConsumer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailEndpoint.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailProducer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/internal/GoogleMailConstants.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/internal/GoogleMailPropertiesHelper.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamComponent.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamComponentVerifierExtension.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConstants.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConsumer.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpoint.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/AbstractGoogleMailTestSupport.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailConfigurationTest.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersLabelsIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersMessagesConsumerIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersMessagesIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GmailUsersThreadsIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/GoogleMailComponentVerifierExtensionTest.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/stream/AbstractGoogleMailStreamTestSupport.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamComponentVerifierExtensionTest.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/test/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamConsumerIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-mail/src/test/resources/log4j2.properties (100%)
 rename components/{ => camel-google}/camel-google-mail/src/test/resources/test-options.properties (100%)
 rename components/{camel-google-bigquery => camel-google/camel-google-pubsub}/.gitignore (100%)
 rename components/{ => camel-google}/camel-google-pubsub/ReadMe.md (100%)
 rename components/{ => camel-google}/camel-google-pubsub/pom.xml (99%)
 rename components/{ => camel-google}/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubComponentConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpointConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/generated/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpointUriFactory.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/generated/resources/META-INF/services/org/apache/camel/component.properties (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/generated/resources/META-INF/services/org/apache/camel/component/google-pubsub (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-pubsub-component (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-pubsub-endpoint (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-pubsub-endpoint (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/generated/resources/org/apache/camel/component/google/pubsub/google-pubsub.json (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/main/docs/google-pubsub-component.adoc (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubComponent.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubConstants.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubConsumer.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpoint.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubProducer.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/consumer/AcknowledgeAsync.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/consumer/AcknowledgeSync.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/consumer/CamelMessageReceiver.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/serializer/DefaultGooglePubsubSerializer.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/serializer/GooglePubsubSerializer.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/java/org/apache/camel/component/google/pubsub/PubsubTestSupport.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/java/org/apache/camel/component/google/pubsub/integration/AckModeNoneTest.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/java/org/apache/camel/component/google/pubsub/integration/AcknowledgementTest.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/java/org/apache/camel/component/google/pubsub/integration/BodyTypesTest.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/java/org/apache/camel/component/google/pubsub/integration/CustomSerializerTest.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/java/org/apache/camel/component/google/pubsub/integration/DeadLetterTest.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/java/org/apache/camel/component/google/pubsub/integration/GroupedExchangeRoundtripTest.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/java/org/apache/camel/component/google/pubsub/integration/MessageOrderingTest.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/java/org/apache/camel/component/google/pubsub/integration/SingleExchangeRoundtripTest.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/java/org/apache/camel/component/google/pubsub/unit/PubsubEndpointTest.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/java/org/apache/camel/component/google/pubsub/unit/PubsubProducerTest.java (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/resources/camel-pubsub-component.json (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/resources/log4j.properties (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/resources/log4j2.properties (100%)
 rename components/{camel-google-bigquery => camel-google/camel-google-pubsub}/src/test/resources/logging.properties (100%)
 rename components/{ => camel-google}/camel-google-pubsub/src/test/resources/simple.properties (100%)
 rename components/{ => camel-google}/camel-google-sheets/pom.xml (99%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/GoogleSheetsComponentConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/GoogleSheetsConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/GoogleSheetsEndpointConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/GoogleSheetsEndpointUriFactory.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsValuesEndpointConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsValuesEndpointConfigurationConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/internal/GoogleSheetsApiCollection.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/internal/GoogleSheetsApiName.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/internal/SheetsSpreadsheetsApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/internal/SheetsSpreadsheetsValuesApiMethod.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamComponentConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamEndpointConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamEndpointUriFactory.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/component.properties (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/component/google-sheets (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/component/google-sheets-stream (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-sheets-component (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-sheets-endpoint (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-sheets-stream-component (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-sheets-stream-endpoint (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.sheets.GoogleSheetsConfiguration (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.sheets.SheetsSpreadsheetsEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.sheets.SheetsSpreadsheetsValuesEndpointConfiguration (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-sheets-endpoint (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-sheets-stream-endpoint (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/org/apache/camel/component/google/sheets/google-sheets.json (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/generated/resources/org/apache/camel/component/google/sheets/stream/google-sheets-stream.json (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/docs/google-sheets-component.adoc (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/docs/google-sheets-stream-component.adoc (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/BatchGoogleSheetsClientFactory.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsClientFactory.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsComponent.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsConsumer.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsEndpoint.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsProducer.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsVerifierExtension.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/internal/GoogleSheetsConstants.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/internal/GoogleSheetsPropertiesHelper.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamComponent.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamConstants.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamConsumer.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamEndpoint.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/AbstractGoogleSheetsTestSupport.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/GoogleSheetsVerifierExtensionTest.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/SheetsConfigurationTest.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsValuesIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/server/GoogleSheetsApiTestServer.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/server/GoogleSheetsApiTestServerAssert.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/server/GoogleSheetsApiTestServerRule.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/stream/AbstractGoogleSheetsStreamTestSupport.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/stream/SheetsStreamConsumerIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/test/resources/googleapis.jks (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/test/resources/log4j2.properties (100%)
 rename components/{ => camel-google}/camel-google-sheets/src/test/resources/test-options.properties (100%)
 rename components/{ => camel-google}/camel-google-storage/ReadMe.md (100%)
 rename components/{ => camel-google}/camel-google-storage/pom.xml (96%)
 rename components/{ => camel-google}/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointConfigurer.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpointUriFactory.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/generated/resources/META-INF/services/org/apache/camel/component.properties (100%)
 rename components/{ => camel-google}/camel-google-storage/src/generated/resources/META-INF/services/org/apache/camel/component/google-storage (100%)
 rename components/{ => camel-google}/camel-google-storage/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-storage-component (100%)
 rename components/{ => camel-google}/camel-google-storage/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-storage-endpoint (100%)
 rename components/{ => camel-google}/camel-google-storage/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-storage-endpoint (100%)
 rename components/{ => camel-google}/camel-google-storage/src/generated/resources/org/apache/camel/component/google/storage/google-storage.json (100%)
 rename components/{ => camel-google}/camel-google-storage/src/main/docs/google-storage-component.adoc (100%)
 rename components/{ => camel-google}/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponent.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConfiguration.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConnectionFactory.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConstants.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConsumer.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpoint.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageOperations.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageProducer.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/main/resources/META-INF/services/org/apache/camel/component/google-storage (100%)
 rename components/{ => camel-google}/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/integration/ComplexIntegrationTest.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/localstorage/FakeStorageRpc.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/localstorage/LocalStorageHelper.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ConsumerLocalTest.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/GoogleCloudStorageBaseTest.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/GoogleCloudStorageComponentConfigurationTest.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ProducerLocalTest.java (100%)
 rename components/{ => camel-google}/camel-google-storage/src/test/resources/log4j2.properties (100%)
 create mode 100644 components/camel-google/pom.xml


[camel] 06/06: CAMEL-16322 - Have a middle folder for google components

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fd3e4d04f64e5084e89bda91497544e0c83c146e
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Mar 10 12:00:04 2021 +0100

    CAMEL-16322 - Have a middle folder for google components
---
 bom/camel-bom/pom.xml                                          | 10 +++++-----
 .../modules/ROOT/pages/google-bigquery-component.adoc          |  2 +-
 .../modules/ROOT/pages/google-bigquery-sql-component.adoc      |  2 +-
 .../modules/ROOT/pages/google-calendar-component.adoc          |  2 +-
 .../modules/ROOT/pages/google-calendar-stream-component.adoc   |  2 +-
 docs/components/modules/ROOT/pages/google-drive-component.adoc |  2 +-
 docs/components/modules/ROOT/pages/google-mail-component.adoc  |  2 +-
 .../modules/ROOT/pages/google-mail-stream-component.adoc       |  2 +-
 .../components/modules/ROOT/pages/google-pubsub-component.adoc |  2 +-
 .../components/modules/ROOT/pages/google-sheets-component.adoc |  2 +-
 .../modules/ROOT/pages/google-sheets-stream-component.adoc     |  2 +-
 .../modules/ROOT/pages/google-storage-component.adoc           |  2 +-
 docs/components/modules/ROOT/pages/google-summary.adoc         |  2 +-
 parent/pom.xml                                                 | 10 +++++-----
 .../org/apache/camel/maven/packaging/PrepareCatalogMojo.java   |  5 +++--
 15 files changed, 25 insertions(+), 24 deletions(-)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 42dc0f3..c7d733a 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -754,11 +754,6 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
-        <artifactId>camel-google-parent</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.camel</groupId>
         <artifactId>camel-google-bigquery</artifactId>
         <version>${project.version}</version>
       </dependency>
@@ -779,6 +774,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-google-parent</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-google-pubsub</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/docs/components/modules/ROOT/pages/google-bigquery-component.adoc b/docs/components/modules/ROOT/pages/google-bigquery-component.adoc
index 04ac665..aba856f 100644
--- a/docs/components/modules/ROOT/pages/google-bigquery-component.adoc
+++ b/docs/components/modules/ROOT/pages/google-bigquery-component.adoc
@@ -1,7 +1,7 @@
 [[google-bigquery-component]]
 = Google BigQuery Component
 //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-google-bigquery/src/main/docs/google-bigquery-component.adoc
+:page-source: components/camel-google/camel-google-bigquery/src/main/docs/google-bigquery-component.adoc
 :docTitle: Google BigQuery
 :artifactId: camel-google-bigquery
 :description: Google BigQuery data warehouse for analytics.
diff --git a/docs/components/modules/ROOT/pages/google-bigquery-sql-component.adoc b/docs/components/modules/ROOT/pages/google-bigquery-sql-component.adoc
index 1aae6e9..3a57298 100644
--- a/docs/components/modules/ROOT/pages/google-bigquery-sql-component.adoc
+++ b/docs/components/modules/ROOT/pages/google-bigquery-sql-component.adoc
@@ -1,7 +1,7 @@
 [[google-bigquery-sql-component]]
 = Google BigQuery Standard SQL Component
 //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-google-bigquery/src/main/docs/google-bigquery-sql-component.adoc
+:page-source: components/camel-google/camel-google-bigquery/src/main/docs/google-bigquery-sql-component.adoc
 :docTitle: Google BigQuery Standard SQL
 :artifactId: camel-google-bigquery
 :description: Access Google Cloud BigQuery service using SQL queries.
diff --git a/docs/components/modules/ROOT/pages/google-calendar-component.adoc b/docs/components/modules/ROOT/pages/google-calendar-component.adoc
index fca0411..9077236 100644
--- a/docs/components/modules/ROOT/pages/google-calendar-component.adoc
+++ b/docs/components/modules/ROOT/pages/google-calendar-component.adoc
@@ -1,7 +1,7 @@
 [[google-calendar-component]]
 = Google Calendar Component
 //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-google-calendar/src/main/docs/google-calendar-component.adoc
+:page-source: components/camel-google/camel-google-calendar/src/main/docs/google-calendar-component.adoc
 :docTitle: Google Calendar
 :artifactId: camel-google-calendar
 :description: Perform various operations on a Google Calendar.
diff --git a/docs/components/modules/ROOT/pages/google-calendar-stream-component.adoc b/docs/components/modules/ROOT/pages/google-calendar-stream-component.adoc
index 90f917c..c1a503c 100644
--- a/docs/components/modules/ROOT/pages/google-calendar-stream-component.adoc
+++ b/docs/components/modules/ROOT/pages/google-calendar-stream-component.adoc
@@ -1,7 +1,7 @@
 [[google-calendar-stream-component]]
 = Google Calendar Stream Component
 //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
+:page-source: components/camel-google/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
 :docTitle: Google Calendar Stream
 :artifactId: camel-google-calendar
 :description: Poll for changes in a Google Calendar.
diff --git a/docs/components/modules/ROOT/pages/google-drive-component.adoc b/docs/components/modules/ROOT/pages/google-drive-component.adoc
index 91358a5..fd84b67 100644
--- a/docs/components/modules/ROOT/pages/google-drive-component.adoc
+++ b/docs/components/modules/ROOT/pages/google-drive-component.adoc
@@ -1,7 +1,7 @@
 [[google-drive-component]]
 = Google Drive Component
 //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-google-drive/src/main/docs/google-drive-component.adoc
+:page-source: components/camel-google/camel-google-drive/src/main/docs/google-drive-component.adoc
 :docTitle: Google Drive
 :artifactId: camel-google-drive
 :description: Manage files in Google Drive.
diff --git a/docs/components/modules/ROOT/pages/google-mail-component.adoc b/docs/components/modules/ROOT/pages/google-mail-component.adoc
index a11786a..b5fe1cb 100644
--- a/docs/components/modules/ROOT/pages/google-mail-component.adoc
+++ b/docs/components/modules/ROOT/pages/google-mail-component.adoc
@@ -1,7 +1,7 @@
 [[google-mail-component]]
 = Google Mail Component
 //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-google-mail/src/main/docs/google-mail-component.adoc
+:page-source: components/camel-google/camel-google-mail/src/main/docs/google-mail-component.adoc
 :docTitle: Google Mail
 :artifactId: camel-google-mail
 :description: Manage messages in Google Mail.
diff --git a/docs/components/modules/ROOT/pages/google-mail-stream-component.adoc b/docs/components/modules/ROOT/pages/google-mail-stream-component.adoc
index 28329c9..5e74ef3 100644
--- a/docs/components/modules/ROOT/pages/google-mail-stream-component.adoc
+++ b/docs/components/modules/ROOT/pages/google-mail-stream-component.adoc
@@ -1,7 +1,7 @@
 [[google-mail-stream-component]]
 = Google Mail Stream Component
 //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-google-mail/src/main/docs/google-mail-stream-component.adoc
+:page-source: components/camel-google/camel-google-mail/src/main/docs/google-mail-stream-component.adoc
 :docTitle: Google Mail Stream
 :artifactId: camel-google-mail
 :description: Poll for incoming messages in Google Mail.
diff --git a/docs/components/modules/ROOT/pages/google-pubsub-component.adoc b/docs/components/modules/ROOT/pages/google-pubsub-component.adoc
index 38f69d7..2226576 100644
--- a/docs/components/modules/ROOT/pages/google-pubsub-component.adoc
+++ b/docs/components/modules/ROOT/pages/google-pubsub-component.adoc
@@ -1,7 +1,7 @@
 [[google-pubsub-component]]
 = Google Pubsub Component
 //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-google-pubsub/src/main/docs/google-pubsub-component.adoc
+:page-source: components/camel-google/camel-google-pubsub/src/main/docs/google-pubsub-component.adoc
 :docTitle: Google Pubsub
 :artifactId: camel-google-pubsub
 :description: Send and receive messages to/from Google Cloud Platform PubSub Service.
diff --git a/docs/components/modules/ROOT/pages/google-sheets-component.adoc b/docs/components/modules/ROOT/pages/google-sheets-component.adoc
index d2fc606..5233469 100644
--- a/docs/components/modules/ROOT/pages/google-sheets-component.adoc
+++ b/docs/components/modules/ROOT/pages/google-sheets-component.adoc
@@ -1,7 +1,7 @@
 [[google-sheets-component]]
 = Google Sheets Component
 //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-google-sheets/src/main/docs/google-sheets-component.adoc
+:page-source: components/camel-google/camel-google-sheets/src/main/docs/google-sheets-component.adoc
 :docTitle: Google Sheets
 :artifactId: camel-google-sheets
 :description: Manage spreadsheets in Google Sheets.
diff --git a/docs/components/modules/ROOT/pages/google-sheets-stream-component.adoc b/docs/components/modules/ROOT/pages/google-sheets-stream-component.adoc
index ccd37e9..ae38149 100644
--- a/docs/components/modules/ROOT/pages/google-sheets-stream-component.adoc
+++ b/docs/components/modules/ROOT/pages/google-sheets-stream-component.adoc
@@ -1,7 +1,7 @@
 [[google-sheets-stream-component]]
 = Google Sheets Stream Component
 //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-google-sheets/src/main/docs/google-sheets-stream-component.adoc
+:page-source: components/camel-google/camel-google-sheets/src/main/docs/google-sheets-stream-component.adoc
 :docTitle: Google Sheets Stream
 :artifactId: camel-google-sheets
 :description: Poll for changes in Google Sheets.
diff --git a/docs/components/modules/ROOT/pages/google-storage-component.adoc b/docs/components/modules/ROOT/pages/google-storage-component.adoc
index b0f432e..a731692 100644
--- a/docs/components/modules/ROOT/pages/google-storage-component.adoc
+++ b/docs/components/modules/ROOT/pages/google-storage-component.adoc
@@ -1,7 +1,7 @@
 [[google-storage-component]]
 = Google Storage Component
 //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-google-storage/src/main/docs/google-storage-component.adoc
+:page-source: components/camel-google/camel-google-storage/src/main/docs/google-storage-component.adoc
 :docTitle: Google Storage
 :artifactId: camel-google-storage
 :description: Store and retrieve objects from Google Cloud Storage Service using the google-cloud-storage library.
diff --git a/docs/components/modules/ROOT/pages/google-summary.adoc b/docs/components/modules/ROOT/pages/google-summary.adoc
index ff6525a..bfdd18c 100644
--- a/docs/components/modules/ROOT/pages/google-summary.adoc
+++ b/docs/components/modules/ROOT/pages/google-summary.adoc
@@ -1,6 +1,6 @@
 = Google Component
 //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-google-bigquery/src/main/docs/google-summary.adoc
+:page-source: components/camel-google/camel-google-bigquery/src/main/docs/google-summary.adoc
 //attributes written by hand, not generated
 :docTitle: Google
 
diff --git a/parent/pom.xml b/parent/pom.xml
index 80f474e..dcdff32 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -1386,11 +1386,6 @@
 			</dependency>
 			<dependency>
 				<groupId>org.apache.camel</groupId>
-				<artifactId>camel-google-parent</artifactId>
-				<version>${project.version}</version>
-			</dependency>
-			<dependency>
-				<groupId>org.apache.camel</groupId>
 				<artifactId>camel-google-bigquery</artifactId>
 				<version>${project.version}</version>
 			</dependency>
@@ -1411,6 +1406,11 @@
 			</dependency>
 			<dependency>
 				<groupId>org.apache.camel</groupId>
+				<artifactId>camel-google-parent</artifactId>
+				<version>${project.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>org.apache.camel</groupId>
 				<artifactId>camel-google-pubsub</artifactId>
 				<version>${project.version}</version>
 			</dependency>
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
index 5f7ede0..db97e1a 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
@@ -1173,8 +1173,9 @@ public class PrepareCatalogMojo extends AbstractMojo {
                         dir.resolve("camel-azure-storage-queue"));
             case "camel-google":
                 return Arrays.asList(dir.resolve("camel-google-bigquery"), dir.resolve("camel-google-calendar"),
-                         dir.resolve("camel-google-drive"), dir.resolve("camel-google-mail"), dir.resolve("camel-google-pubsub"), dir.resolve("camel-google-sheets"), 
-                         dir.resolve("camel-google-storage"));
+                        dir.resolve("camel-google-drive"), dir.resolve("camel-google-mail"), dir.resolve("camel-google-pubsub"),
+                        dir.resolve("camel-google-sheets"),
+                        dir.resolve("camel-google-storage"));
             case "camel-aws":
                 return Arrays.asList(dir.resolve("camel-aws2-athena"), dir.resolve("camel-aws2-cw"),
                         dir.resolve("camel-aws2-ddb"), dir.resolve("camel-aws2-ec2"),


[camel] 02/06: CAMEL-16322 - Have a middle folder for google components

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fc409616f46ffa0d0324025eabb770080e14ef6b
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Mar 10 11:44:50 2021 +0100

    CAMEL-16322 - Have a middle folder for google components
---
 .../camel-google/camel-google-bigquery/.gitignore  |   7 +
 .../camel-google/camel-google-bigquery/ReadMe.md   |  43 +
 .../camel-google/camel-google-bigquery/pom.xml     | 128 +++
 .../GoogleBigQueryComponentConfigurer.java         |  78 ++
 .../bigquery/GoogleBigQueryEndpointConfigurer.java |  66 ++
 .../bigquery/GoogleBigQueryEndpointUriFactory.java |  68 ++
 .../sql/GoogleBigQuerySQLComponentConfigurer.java  |  72 ++
 .../sql/GoogleBigQuerySQLEndpointConfigurer.java   |  60 ++
 .../sql/GoogleBigQuerySQLEndpointUriFactory.java   |  65 ++
 .../services/org/apache/camel/component.properties |   7 +
 .../org/apache/camel/component/google-bigquery     |   2 +
 .../org/apache/camel/component/google-bigquery-sql |   2 +
 .../camel/configurer/google-bigquery-component     |   2 +
 .../camel/configurer/google-bigquery-endpoint      |   2 +
 .../camel/configurer/google-bigquery-sql-component |   2 +
 .../camel/configurer/google-bigquery-sql-endpoint  |   2 +
 .../camel/urifactory/google-bigquery-endpoint      |   2 +
 .../camel/urifactory/google-bigquery-sql-endpoint  |   2 +
 .../component/google/bigquery/google-bigquery.json |  39 +
 .../google/bigquery/sql/google-bigquery-sql.json   |  36 +
 .../src/main/docs/google-bigquery-component.adoc   | 170 ++++
 .../main/docs/google-bigquery-sql-component.adoc   | 148 +++
 .../src/main/docs/google-summary.adoc              |  14 +
 .../google/bigquery/GoogleBigQueryComponent.java   | 100 +++
 .../bigquery/GoogleBigQueryConfiguration.java      | 103 +++
 .../bigquery/GoogleBigQueryConnectionFactory.java  | 130 +++
 .../google/bigquery/GoogleBigQueryConstants.java   |  32 +
 .../google/bigquery/GoogleBigQueryEndpoint.java    |  75 ++
 .../google/bigquery/GoogleBigQueryProducer.java    | 195 ++++
 .../bigquery/sql/GoogleBigQuerySQLComponent.java   |  88 ++
 .../sql/GoogleBigQuerySQLConfiguration.java        |  77 ++
 .../bigquery/sql/GoogleBigQuerySQLEndpoint.java    |  73 ++
 .../bigquery/sql/GoogleBigQuerySQLProducer.java    | 172 ++++
 .../component/google/bigquery/sql/SqlHelper.java   | 103 +++
 .../google/bigquery/integration/AsyncTest.java     |  97 ++
 .../bigquery/integration/BigQueryTestSupport.java  | 158 ++++
 .../bigquery/integration/DynamicTableIdTest.java   | 100 +++
 .../google/bigquery/integration/InsertIdTest.java  | 142 +++
 .../google/bigquery/integration/SingleRowTest.java |  84 ++
 .../integration/sql/SqlQueryFromResourceTest.java  |  86 ++
 .../bigquery/integration/sql/SqlQueryTest.java     |  87 ++
 .../google/bigquery/unit/BaseBigQueryTest.java     |  64 ++
 .../bigquery/unit/GoogleBigQueryProducerTest.java  |  86 ++
 .../unit/sql/GoogleBigQuerySQLComponentTest.java   |  49 +
 .../sql/GoogleBigQuerySQLProducerBaseTest.java     |  55 ++
 .../GoogleBigQuerySQLProducerWithParamersTest.java | 137 +++
 .../GoogleBigQuerySQLProducerWithPatternTest.java  |  71 ++
 .../google/bigquery/unit/sql/SqlHelperTest.java    |  99 ++
 .../src/test/resources/log4j.properties            |  37 +
 .../src/test/resources/log4j2.properties           |  30 +
 .../src/test/resources/logging.properties          |  21 +
 .../src/test/resources/simple.properties           |  24 +
 .../src/test/resources/sql/delete.sql              |  18 +
 .../src/test/resources/sql/insert.sql              |  19 +
 .../camel-google/camel-google-calendar/pom.xml     | 223 +++++
 .../calendar/CalendarAclEndpointConfiguration.java |  67 ++
 ...CalendarAclEndpointConfigurationConfigurer.java | 159 ++++
 .../CalendarCalendarListEndpointConfiguration.java |  56 ++
 ...alendarListEndpointConfigurationConfigurer.java | 152 ++++
 .../CalendarCalendarsEndpointConfiguration.java    |  45 +
 ...arCalendarsEndpointConfigurationConfigurer.java | 145 +++
 .../CalendarChannelsEndpointConfiguration.java     |  34 +
 ...darChannelsEndpointConfigurationConfigurer.java | 138 +++
 .../CalendarColorsEndpointConfiguration.java       |  23 +
 ...endarColorsEndpointConfigurationConfigurer.java | 131 +++
 .../CalendarEventsEndpointConfiguration.java       |  89 ++
 ...endarEventsEndpointConfigurationConfigurer.java | 173 ++++
 .../CalendarFreebusyEndpointConfiguration.java     |  34 +
 ...darFreebusyEndpointConfigurationConfigurer.java | 138 +++
 .../CalendarSettingsEndpointConfiguration.java     |  45 +
 ...darSettingsEndpointConfigurationConfigurer.java | 145 +++
 .../GoogleCalendarComponentConfigurer.java         | 150 ++++
 .../GoogleCalendarConfigurationConfigurer.java     | 131 +++
 .../calendar/GoogleCalendarEndpointConfigurer.java | 260 ++++++
 .../calendar/GoogleCalendarEndpointUriFactory.java | 108 +++
 .../calendar/internal/CalendarAclApiMethod.java    |  86 ++
 .../internal/CalendarCalendarListApiMethod.java    |  79 ++
 .../internal/CalendarCalendarsApiMethod.java       |  75 ++
 .../internal/CalendarChannelsApiMethod.java        |  48 +
 .../calendar/internal/CalendarColorsApiMethod.java |  47 +
 .../calendar/internal/CalendarEventsApiMethod.java | 111 +++
 .../internal/CalendarFreebusyApiMethod.java        |  48 +
 .../internal/CalendarSettingsApiMethod.java        |  57 ++
 .../internal/GoogleCalendarApiCollection.java      | 122 +++
 .../calendar/internal/GoogleCalendarApiName.java   |  42 +
 .../GoogleCalendarStreamComponentConfigurer.java   | 160 ++++
 .../GoogleCalendarStreamEndpointConfigurer.java    | 239 +++++
 .../GoogleCalendarStreamEndpointUriFactory.java    | 109 +++
 .../services/org/apache/camel/component.properties |   7 +
 .../org/apache/camel/component/google-calendar     |   2 +
 .../apache/camel/component/google-calendar-stream  |   2 +
 .../camel/configurer/google-calendar-component     |   2 +
 .../camel/configurer/google-calendar-endpoint      |   2 +
 .../configurer/google-calendar-stream-component    |   2 +
 .../configurer/google-calendar-stream-endpoint     |   2 +
 ...oogle.calendar.CalendarAclEndpointConfiguration |   2 +
 ...endar.CalendarCalendarListEndpointConfiguration |   2 +
 ...calendar.CalendarCalendarsEndpointConfiguration |   2 +
 ....calendar.CalendarChannelsEndpointConfiguration |   2 +
 ...le.calendar.CalendarColorsEndpointConfiguration |   2 +
 ...le.calendar.CalendarEventsEndpointConfiguration |   2 +
 ....calendar.CalendarFreebusyEndpointConfiguration |   2 +
 ....calendar.CalendarSettingsEndpointConfiguration |   2 +
 ...ent.google.calendar.GoogleCalendarConfiguration |   2 +
 .../camel/urifactory/google-calendar-endpoint      |   2 +
 .../urifactory/google-calendar-stream-endpoint     |   2 +
 .../component/google/calendar/google-calendar.json |  93 ++
 .../calendar/stream/google-calendar-stream.json    | 100 +++
 .../src/main/docs/google-calendar-component.adoc   | 636 +++++++++++++
 .../docs/google-calendar-stream-component.adoc     | 147 +++
 .../calendar/BatchGoogleCalendarClientFactory.java | 101 +++
 .../calendar/GoogleCalendarClientFactory.java      |  30 +
 .../google/calendar/GoogleCalendarComponent.java   | 112 +++
 .../calendar/GoogleCalendarConfiguration.java      | 182 ++++
 .../google/calendar/GoogleCalendarConsumer.java    |  54 ++
 .../google/calendar/GoogleCalendarEndpoint.java    | 125 +++
 .../google/calendar/GoogleCalendarProducer.java    |  55 ++
 .../calendar/internal/GoogleCalendarConstants.java |  35 +
 .../internal/GoogleCalendarPropertiesHelper.java   |  40 +
 .../stream/GoogleCalendarStreamComponent.java      |  93 ++
 .../stream/GoogleCalendarStreamConfiguration.java  | 260 ++++++
 .../stream/GoogleCalendarStreamConstants.java      |  31 +
 .../stream/GoogleCalendarStreamConsumer.java       | 188 ++++
 .../stream/GoogleCalendarStreamEndpoint.java       |  90 ++
 .../AbstractGoogleCalendarTestSupport.java         | 116 +++
 .../calendar/CalendarAclIntegrationTest.java       |  77 ++
 .../CalendarCalendarListIntegrationTest.java       |  90 ++
 .../calendar/CalendarCalendarsIntegrationTest.java |  93 ++
 .../calendar/CalendarColorsIntegrationTest.java    |  56 ++
 .../google/calendar/CalendarConfigurationTest.java |  83 ++
 .../calendar/CalendarEventsIntegrationTest.java    | 165 ++++
 .../calendar/CalendarFreebusyIntegrationTest.java  |  72 ++
 .../calendar/CalendarSettingsIntegrationTest.java  |  71 ++
 .../AbstractGoogleCalendarStreamTestSupport.java   |  68 ++
 ...oogleCalendarStreamConsumerIntegrationTest.java |  45 +
 .../src/test/resources/log4j2.properties           |  28 +
 .../src/test/resources/test-options.properties     |  28 +
 components/camel-google/camel-google-drive/pom.xml | 253 ++++++
 .../drive/DriveAboutEndpointConfiguration.java     |  23 +
 .../DriveAboutEndpointConfigurationConfigurer.java | 119 +++
 .../drive/DriveAppsEndpointConfiguration.java      |  34 +
 .../DriveAppsEndpointConfigurationConfigurer.java  | 126 +++
 .../drive/DriveChangesEndpointConfiguration.java   |  45 +
 ...riveChangesEndpointConfigurationConfigurer.java | 133 +++
 .../drive/DriveChannelsEndpointConfiguration.java  |  34 +
 ...iveChannelsEndpointConfigurationConfigurer.java | 126 +++
 .../drive/DriveChildrenEndpointConfiguration.java  |  56 ++
 ...iveChildrenEndpointConfigurationConfigurer.java | 140 +++
 .../drive/DriveCommentsEndpointConfiguration.java  |  56 ++
 ...iveCommentsEndpointConfigurationConfigurer.java | 140 +++
 .../drive/DriveFilesEndpointConfiguration.java     |  78 ++
 .../DriveFilesEndpointConfigurationConfigurer.java | 154 ++++
 .../drive/DriveParentsEndpointConfiguration.java   |  56 ++
 ...riveParentsEndpointConfigurationConfigurer.java | 140 +++
 .../DrivePermissionsEndpointConfiguration.java     |  67 ++
 ...PermissionsEndpointConfigurationConfigurer.java | 147 +++
 .../DrivePropertiesEndpointConfiguration.java      |  56 ++
 ...ePropertiesEndpointConfigurationConfigurer.java | 140 +++
 .../drive/DriveRealtimeEndpointConfiguration.java  |  45 +
 ...iveRealtimeEndpointConfigurationConfigurer.java | 133 +++
 .../drive/DriveRepliesEndpointConfiguration.java   |  67 ++
 ...riveRepliesEndpointConfigurationConfigurer.java | 147 +++
 .../drive/DriveRevisionsEndpointConfiguration.java |  56 ++
 ...veRevisionsEndpointConfigurationConfigurer.java | 140 +++
 .../drive/GoogleDriveComponentConfigurer.java      | 140 +++
 .../drive/GoogleDriveConfigurationConfigurer.java  | 119 +++
 .../drive/GoogleDriveEndpointConfigurer.java       | 250 ++++++
 .../drive/GoogleDriveEndpointUriFactory.java       | 111 +++
 .../drive/GoogleDriveFilesConverterLoader.java     |  42 +
 .../google/drive/internal/DriveAboutApiMethod.java |  47 +
 .../google/drive/internal/DriveAppsApiMethod.java  |  52 ++
 .../drive/internal/DriveChangesApiMethod.java      |  61 ++
 .../drive/internal/DriveChannelsApiMethod.java     |  48 +
 .../drive/internal/DriveChildrenApiMethod.java     |  66 ++
 .../drive/internal/DriveCommentsApiMethod.java     |  80 ++
 .../google/drive/internal/DriveFilesApiMethod.java | 128 +++
 .../drive/internal/DriveParentsApiMethod.java      |  66 ++
 .../drive/internal/DrivePermissionsApiMethod.java  |  85 ++
 .../drive/internal/DrivePropertiesApiMethod.java   |  80 ++
 .../drive/internal/DriveRealtimeApiMethod.java     |  59 ++
 .../drive/internal/DriveRepliesApiMethod.java      |  86 ++
 .../drive/internal/DriveRevisionsApiMethod.java    |  74 ++
 .../drive/internal/GoogleDriveApiCollection.java   | 167 ++++
 .../google/drive/internal/GoogleDriveApiName.java  |  52 ++
 .../services/org/apache/camel/TypeConverterLoader  |   2 +
 .../services/org/apache/camel/component.properties |   7 +
 .../org/apache/camel/component/google-drive        |   2 +
 .../apache/camel/configurer/google-drive-component |   2 +
 .../apache/camel/configurer/google-drive-endpoint  |   2 +
 ...nt.google.drive.DriveAboutEndpointConfiguration |   2 +
 ...ent.google.drive.DriveAppsEndpointConfiguration |   2 +
 ....google.drive.DriveChangesEndpointConfiguration |   2 +
 ...google.drive.DriveChannelsEndpointConfiguration |   2 +
 ...google.drive.DriveChildrenEndpointConfiguration |   2 +
 ...google.drive.DriveCommentsEndpointConfiguration |   2 +
 ...nt.google.drive.DriveFilesEndpointConfiguration |   2 +
 ....google.drive.DriveParentsEndpointConfiguration |   2 +
 ...gle.drive.DrivePermissionsEndpointConfiguration |   2 +
 ...ogle.drive.DrivePropertiesEndpointConfiguration |   2 +
 ...google.drive.DriveRealtimeEndpointConfiguration |   2 +
 ....google.drive.DriveRepliesEndpointConfiguration |   2 +
 ...oogle.drive.DriveRevisionsEndpointConfiguration |   2 +
 ...component.google.drive.GoogleDriveConfiguration |   2 +
 .../apache/camel/urifactory/google-drive-endpoint  |   2 +
 .../camel/component/google/drive/google-drive.json |  98 ++
 .../src/main/docs/google-drive-component.adoc      | 995 +++++++++++++++++++++
 .../drive/BatchGoogleDriveClientFactory.java       |  87 ++
 .../google/drive/GoogleDriveClientFactory.java     |  29 +
 .../google/drive/GoogleDriveComponent.java         | 112 +++
 .../google/drive/GoogleDriveConfiguration.java     | 148 +++
 .../google/drive/GoogleDriveConsumer.java          |  58 ++
 .../google/drive/GoogleDriveEndpoint.java          | 152 ++++
 .../google/drive/GoogleDriveFilesConverter.java    | 118 +++
 .../google/drive/GoogleDriveProducer.java          |  60 ++
 .../drive/InteractiveGoogleDriveClientFactory.java |  73 ++
 .../drive/internal/GoogleDriveConstants.java       |  35 +
 .../internal/GoogleDrivePropertiesHelper.java      |  40 +
 .../drive/AbstractGoogleDriveTestSupport.java      | 140 +++
 .../google/drive/CustomClientFactoryTest.java      |  49 +
 .../google/drive/DriveAboutIntegrationTest.java    |  56 ++
 .../google/drive/DriveAppsIntegrationTest.java     |  64 ++
 .../google/drive/DriveChangesIntegrationTest.java  |  83 ++
 .../google/drive/DriveChildrenIntegrationTest.java | 137 +++
 .../google/drive/DriveCommentsIntegrationTest.java | 145 +++
 .../google/drive/DriveConfigurationTest.java       |  71 ++
 .../google/drive/DriveFilesIntegrationTest.java    | 325 +++++++
 .../drive/DrivePermissionsIntegrationTest.java     |  91 ++
 .../drive/DrivePropertiesIntegrationTest.java      |  84 ++
 .../google/drive/DriveRepliesIntegrationTest.java  | 144 +++
 .../drive/DriveRevisionsIntegrationTest.java       |  80 ++
 .../google/drive/FileConverterIntegrationTest.java |  74 ++
 .../google/drive/FilesConsumerIntegrationTest.java |  73 ++
 .../drive/GoogleDriveFilesConverterTest.java       |  62 ++
 .../component/google/drive/MyClientFactory.java    |  36 +
 .../src/test/resources/camel-box-small.png         | Bin 0 -> 38856 bytes
 .../src/test/resources/log4j2.properties           |  28 +
 .../src/test/resources/test-options.properties     |  26 +
 components/camel-google/camel-google-mail/pom.xml  | 272 ++++++
 .../GmailUsersDraftsEndpointConfiguration.java     |  67 ++
 ...UsersDraftsEndpointConfigurationConfigurer.java | 131 +++
 .../mail/GmailUsersEndpointConfiguration.java      |  45 +
 .../GmailUsersEndpointConfigurationConfigurer.java | 117 +++
 .../GmailUsersHistoryEndpointConfiguration.java    |  34 +
 ...sersHistoryEndpointConfigurationConfigurer.java | 110 +++
 .../GmailUsersLabelsEndpointConfiguration.java     |  56 ++
 ...UsersLabelsEndpointConfigurationConfigurer.java | 124 +++
 ...rsMessagesAttachmentsEndpointConfiguration.java |  56 ++
 ...AttachmentsEndpointConfigurationConfigurer.java | 124 +++
 .../GmailUsersMessagesEndpointConfiguration.java   | 100 +++
 ...ersMessagesEndpointConfigurationConfigurer.java | 152 ++++
 .../GmailUsersThreadsEndpointConfiguration.java    |  56 ++
 ...sersThreadsEndpointConfigurationConfigurer.java | 124 +++
 .../google/mail/GoogleMailComponentConfigurer.java | 128 +++
 .../mail/GoogleMailConfigurationConfigurer.java    | 103 +++
 .../google/mail/GoogleMailEndpointConfigurer.java  | 238 +++++
 .../google/mail/GoogleMailEndpointUriFactory.java  | 101 +++
 .../google/mail/internal/GmailUsersApiMethod.java  |  59 ++
 .../mail/internal/GmailUsersDraftsApiMethod.java   | 101 +++
 .../mail/internal/GmailUsersHistoryApiMethod.java  |  48 +
 .../mail/internal/GmailUsersLabelsApiMethod.java   |  80 ++
 .../mail/internal/GmailUsersMessagesApiMethod.java | 134 +++
 .../GmailUsersMessagesAttachmentsApiMethod.java    |  50 ++
 .../mail/internal/GmailUsersThreadsApiMethod.java  |  79 ++
 .../mail/internal/GoogleMailApiCollection.java     | 113 +++
 .../google/mail/internal/GoogleMailApiName.java    |  40 +
 .../GoogleMailStreamComponentConfigurer.java       | 119 +++
 .../stream/GoogleMailStreamEndpointConfigurer.java | 205 +++++
 .../stream/GoogleMailStreamEndpointUriFactory.java | 101 +++
 .../services/org/apache/camel/component.properties |   7 +
 .../org/apache/camel/component/google-mail         |   2 +
 .../org/apache/camel/component/google-mail-stream  |   2 +
 .../apache/camel/configurer/google-mail-component  |   2 +
 .../apache/camel/configurer/google-mail-endpoint   |   2 +
 .../camel/configurer/google-mail-stream-component  |   2 +
 .../camel/configurer/google-mail-stream-endpoint   |   2 +
 ...ogle.mail.GmailUsersDraftsEndpointConfiguration |   2 +
 ...ent.google.mail.GmailUsersEndpointConfiguration |   2 +
 ...gle.mail.GmailUsersHistoryEndpointConfiguration |   2 +
 ...ogle.mail.GmailUsersLabelsEndpointConfiguration |   2 +
 ...ilUsersMessagesAttachmentsEndpointConfiguration |   2 +
 ...le.mail.GmailUsersMessagesEndpointConfiguration |   2 +
 ...gle.mail.GmailUsersThreadsEndpointConfiguration |   2 +
 ...l.component.google.mail.GoogleMailConfiguration |   2 +
 .../apache/camel/urifactory/google-mail-endpoint   |   2 +
 .../camel/urifactory/google-mail-stream-endpoint   |   2 +
 .../camel/component/google/mail/google-mail.json   |  85 ++
 .../google/mail/stream/google-mail-stream.json     |  88 ++
 .../src/main/docs/google-mail-component.adoc       | 667 ++++++++++++++
 .../main/docs/google-mail-stream-component.adoc    | 139 +++
 .../google/mail/BatchGoogleMailClientFactory.java  |  65 ++
 .../google/mail/GoogleMailClientFactory.java       |  25 +
 .../component/google/mail/GoogleMailComponent.java | 102 +++
 .../mail/GoogleMailComponentVerifierExtension.java |  80 ++
 .../google/mail/GoogleMailConfiguration.java       | 127 +++
 .../component/google/mail/GoogleMailConsumer.java  |  54 ++
 .../component/google/mail/GoogleMailEndpoint.java  | 132 +++
 .../component/google/mail/GoogleMailProducer.java  |  55 ++
 .../google/mail/internal/GoogleMailConstants.java  |  35 +
 .../mail/internal/GoogleMailPropertiesHelper.java  |  40 +
 .../mail/stream/GoogleMailStreamComponent.java     |  96 ++
 ...GoogleMailStreamComponentVerifierExtension.java |  83 ++
 .../mail/stream/GoogleMailStreamConfiguration.java | 175 ++++
 .../mail/stream/GoogleMailStreamConstants.java     |  36 +
 .../mail/stream/GoogleMailStreamConsumer.java      | 215 +++++
 .../mail/stream/GoogleMailStreamEndpoint.java      | 107 +++
 .../google/mail/AbstractGoogleMailTestSupport.java |  79 ++
 .../google/mail/GmailConfigurationTest.java        |  77 ++
 .../google/mail/GmailUsersIntegrationTest.java     |  58 ++
 .../mail/GmailUsersLabelsIntegrationTest.java      | 118 +++
 .../GmailUsersMessagesConsumerIntegrationTest.java |  62 ++
 .../mail/GmailUsersMessagesIntegrationTest.java    | 213 +++++
 .../mail/GmailUsersThreadsIntegrationTest.java     | 133 +++
 .../GoogleMailComponentVerifierExtensionTest.java  |  71 ++
 .../AbstractGoogleMailStreamTestSupport.java       |  68 ++
 ...leMailStreamComponentVerifierExtensionTest.java |  71 ++
 .../GoogleMailStreamConsumerIntegrationTest.java   |  43 +
 .../src/test/resources/log4j2.properties           |  28 +
 .../src/test/resources/test-options.properties     |  26 +
 .../camel-google/camel-google-pubsub/.gitignore    |   7 +
 .../camel-google/camel-google-pubsub/ReadMe.md     |  36 +
 .../camel-google/camel-google-pubsub/pom.xml       | 163 ++++
 .../pubsub/GooglePubsubComponentConfigurer.java    |  88 ++
 .../pubsub/GooglePubsubEndpointConfigurer.java     | 123 +++
 .../pubsub/GooglePubsubEndpointUriFactory.java     |  76 ++
 .../services/org/apache/camel/component.properties |   7 +
 .../org/apache/camel/component/google-pubsub       |   2 +
 .../camel/configurer/google-pubsub-component       |   2 +
 .../apache/camel/configurer/google-pubsub-endpoint |   2 +
 .../apache/camel/urifactory/google-pubsub-endpoint |   2 +
 .../component/google/pubsub/google-pubsub.json     |  51 ++
 .../src/main/docs/google-pubsub-component.adoc     | 204 +++++
 .../google/pubsub/GooglePubsubComponent.java       | 252 ++++++
 .../google/pubsub/GooglePubsubConstants.java       |  36 +
 .../google/pubsub/GooglePubsubConsumer.java        | 184 ++++
 .../google/pubsub/GooglePubsubEndpoint.java        | 241 +++++
 .../google/pubsub/GooglePubsubProducer.java        | 119 +++
 .../google/pubsub/consumer/AcknowledgeAsync.java   |  40 +
 .../google/pubsub/consumer/AcknowledgeSync.java    |  75 ++
 .../pubsub/consumer/CamelMessageReceiver.java      |  76 ++
 .../serializer/DefaultGooglePubsubSerializer.java  |  35 +
 .../pubsub/serializer/GooglePubsubSerializer.java  |  34 +
 .../component/google/pubsub/PubsubTestSupport.java | 170 ++++
 .../google/pubsub/integration/AckModeNoneTest.java |  89 ++
 .../pubsub/integration/AcknowledgementTest.java    | 120 +++
 .../google/pubsub/integration/BodyTypesTest.java   | 170 ++++
 .../pubsub/integration/CustomSerializerTest.java   |  90 ++
 .../google/pubsub/integration/DeadLetterTest.java  | 154 ++++
 .../integration/GroupedExchangeRoundtripTest.java  | 116 +++
 .../pubsub/integration/MessageOrderingTest.java    | 103 +++
 .../integration/SingleExchangeRoundtripTest.java   | 124 +++
 .../google/pubsub/unit/PubsubEndpointTest.java     |  75 ++
 .../google/pubsub/unit/PubsubProducerTest.java     |  59 ++
 .../src/test/resources/camel-pubsub-component.json |  12 +
 .../src/test/resources/log4j.properties            |  37 +
 .../src/test/resources/log4j2.properties           |  30 +
 .../src/test/resources/logging.properties          |  21 +
 .../src/test/resources/simple.properties           |  20 +
 .../camel-google/camel-google-sheets/pom.xml       | 321 +++++++
 .../sheets/GoogleSheetsComponentConfigurer.java    | 135 +++
 .../GoogleSheetsConfigurationConfigurer.java       | 110 +++
 .../sheets/GoogleSheetsEndpointConfigurer.java     | 245 +++++
 .../sheets/GoogleSheetsEndpointUriFactory.java     | 105 +++
 .../SheetsSpreadsheetsEndpointConfiguration.java   |  67 ++
 ...preadsheetsEndpointConfigurationConfigurer.java | 138 +++
 ...etsSpreadsheetsValuesEndpointConfiguration.java | 122 +++
 ...heetsValuesEndpointConfigurationConfigurer.java | 173 ++++
 .../sheets/internal/GoogleSheetsApiCollection.java |  68 ++
 .../sheets/internal/GoogleSheetsApiName.java       |  30 +
 .../internal/SheetsSpreadsheetsApiMethod.java      |  77 ++
 .../SheetsSpreadsheetsValuesApiMethod.java         | 105 +++
 .../GoogleSheetsStreamComponentConfigurer.java     | 151 ++++
 .../GoogleSheetsStreamEndpointConfigurer.java      | 230 +++++
 .../GoogleSheetsStreamEndpointUriFactory.java      | 106 +++
 .../services/org/apache/camel/component.properties |   7 +
 .../org/apache/camel/component/google-sheets       |   2 +
 .../apache/camel/component/google-sheets-stream    |   2 +
 .../camel/configurer/google-sheets-component       |   2 +
 .../apache/camel/configurer/google-sheets-endpoint |   2 +
 .../configurer/google-sheets-stream-component      |   2 +
 .../camel/configurer/google-sheets-stream-endpoint |   2 +
 ...mponent.google.sheets.GoogleSheetsConfiguration |   2 +
 ....sheets.SheetsSpreadsheetsEndpointConfiguration |   2 +
 ...s.SheetsSpreadsheetsValuesEndpointConfiguration |   2 +
 .../apache/camel/urifactory/google-sheets-endpoint |   2 +
 .../camel/urifactory/google-sheets-stream-endpoint |   2 +
 .../component/google/sheets/google-sheets.json     |  78 ++
 .../google/sheets/stream/google-sheets-stream.json |  87 ++
 .../src/main/docs/google-sheets-component.adoc     | 327 +++++++
 .../main/docs/google-sheets-stream-component.adoc  | 334 +++++++
 .../sheets/BatchGoogleSheetsClientFactory.java     |  97 ++
 .../google/sheets/GoogleSheetsClientFactory.java   |  30 +
 .../google/sheets/GoogleSheetsComponent.java       | 105 +++
 .../google/sheets/GoogleSheetsConfiguration.java   | 128 +++
 .../google/sheets/GoogleSheetsConsumer.java        |  53 ++
 .../google/sheets/GoogleSheetsEndpoint.java        | 112 +++
 .../google/sheets/GoogleSheetsProducer.java        |  55 ++
 .../sheets/GoogleSheetsVerifierExtension.java      |  84 ++
 .../sheets/internal/GoogleSheetsConstants.java     |  34 +
 .../internal/GoogleSheetsPropertiesHelper.java     |  40 +
 .../sheets/stream/GoogleSheetsStreamComponent.java |  96 ++
 .../stream/GoogleSheetsStreamConfiguration.java    | 241 +++++
 .../sheets/stream/GoogleSheetsStreamConstants.java |  38 +
 .../sheets/stream/GoogleSheetsStreamConsumer.java  | 194 ++++
 .../sheets/stream/GoogleSheetsStreamEndpoint.java  |  77 ++
 .../sheets/AbstractGoogleSheetsTestSupport.java    | 183 ++++
 .../sheets/GoogleSheetsVerifierExtensionTest.java  |  69 ++
 .../google/sheets/SheetsConfigurationTest.java     |  69 ++
 .../sheets/SheetsSpreadsheetsIntegrationTest.java  | 149 +++
 .../SheetsSpreadsheetsValuesIntegrationTest.java   | 224 +++++
 .../sheets/server/GoogleSheetsApiTestServer.java   | 353 ++++++++
 .../server/GoogleSheetsApiTestServerAssert.java    | 365 ++++++++
 .../server/GoogleSheetsApiTestServerRule.java      |  99 ++
 .../AbstractGoogleSheetsStreamTestSupport.java     |  60 ++
 .../SheetsStreamConsumerIntegrationTest.java       | 169 ++++
 .../src/test/resources/googleapis.jks              | Bin 0 -> 2695 bytes
 .../src/test/resources/log4j2.properties           |  28 +
 .../src/test/resources/test-options.properties     |  26 +
 .../camel-google/camel-google-storage/ReadMe.md    |  43 +
 .../camel-google/camel-google-storage/pom.xml      | 125 +++
 .../GoogleCloudStorageComponentConfigurer.java     | 145 +++
 .../GoogleCloudStorageEndpointConfigurer.java      | 237 +++++
 .../GoogleCloudStorageEndpointUriFactory.java      |  93 ++
 .../services/org/apache/camel/component.properties |   7 +
 .../org/apache/camel/component/google-storage      |   2 +
 .../camel/configurer/google-storage-component      |   2 +
 .../camel/configurer/google-storage-endpoint       |   2 +
 .../camel/urifactory/google-storage-endpoint       |   2 +
 .../component/google/storage/google-storage.json   |  77 ++
 .../src/main/docs/google-storage-component.adoc    | 397 ++++++++
 .../storage/GoogleCloudStorageComponent.java       |  68 ++
 .../storage/GoogleCloudStorageConfiguration.java   | 241 +++++
 .../GoogleCloudStorageConnectionFactory.java       |  51 ++
 .../storage/GoogleCloudStorageConstants.java       |  52 ++
 .../google/storage/GoogleCloudStorageConsumer.java | 306 +++++++
 .../google/storage/GoogleCloudStorageEndpoint.java | 118 +++
 .../storage/GoogleCloudStorageOperations.java      |  27 +
 .../google/storage/GoogleCloudStorageProducer.java | 365 ++++++++
 .../org/apache/camel/component/google-storage      |   1 +
 .../integration/ComplexIntegrationTest.java        | 147 +++
 .../storage/localstorage/FakeStorageRpc.java       | 583 ++++++++++++
 .../storage/localstorage/LocalStorageHelper.java   | 102 +++
 .../google/storage/unit/ConsumerLocalTest.java     |  87 ++
 .../storage/unit/GoogleCloudStorageBaseTest.java   |  45 +
 ...ogleCloudStorageComponentConfigurationTest.java |  70 ++
 .../google/storage/unit/ProducerLocalTest.java     | 147 +++
 .../src/test/resources/log4j2.properties           |  31 +
 components/camel-google/pom.xml                    |  45 +
 447 files changed, 38883 insertions(+)

diff --git a/components/camel-google/camel-google-bigquery/.gitignore b/components/camel-google/camel-google-bigquery/.gitignore
new file mode 100644
index 0000000..d10190d
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/.gitignore
@@ -0,0 +1,7 @@
+.idea
+*.iml
+.settings
+.project
+.classpath
+target
+deploy*.cmd
diff --git a/components/camel-google/camel-google-bigquery/ReadMe.md b/components/camel-google/camel-google-bigquery/ReadMe.md
new file mode 100644
index 0000000..d29580b
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/ReadMe.md
@@ -0,0 +1,43 @@
+## Camel Google BigQuery Component testing
+
+The unit tests provided are somewhat limited.
+
+Due to the nature of the component, it needs to be tested against a google BigQuery instance as no
+emulator is available.
+
+* Unit : <br>
+  Standalone tests that can be conducted on their own
+* Integration : <br>
+  Tests against a Google BigQuery instance
+
+### Execution of integration tests
+
+A Google Cloud account with a configured BigQuery instance is required with a dataset created.
+
+Google BigQuery component authentication is targeted for use with the GCP Service Accounts.
+For more information please refer to https://cloud.google.com/docs/authentication[Google Cloud Platform Auth Guide]
+
+Google security credentials for the tests can be set in the `src/test/resources/simple.properties` file by setting
+either one of the following in order of preference:
+
+* Service Account Email and Service Account Key (PEM format) (`service.account` and `service.key`)
+* GCP credentials file location (`service.credentialsFileLocation`)
+
+Or implicitly, where the connection factory falls back on
+https://developers.google.com/identity/protocols/application-default-credentials#howtheywork[Application Default Credentials].
+
+*OBS!* The location of the default credentials file is configurable - via GOOGLE_APPLICATION_CREDENTIALS environment variable.
+
+Service Account Email and Service Account Key can be found in the GCP JSON credentials file as client_email and private_key respectively.
+
+For the tests the `project.id` and `bigquery.datasetId` needs to be configured. By default
+the current google user will be used to connect but credentials can be provided either by
+account/key (via `service.account` and `service.key`) or a credentials file (`service.credentialsFileLocation`)
+
+Running tests against BigQuery instance:
+
+```
+mvn -Pgoogle-bigquery-test verify
+```
+
+
diff --git a/components/camel-google/camel-google-bigquery/pom.xml b/components/camel-google/camel-google-bigquery/pom.xml
new file mode 100644
index 0000000..4d2b121
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/pom.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-google-parent</artifactId>
+        <version>3.9.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-google-bigquery</artifactId>
+    <packaging>jar</packaging>
+    <name>Camel :: Google BigQuery</name>
+    <description>Camel Component for Google Cloud Platform BigQuery</description>
+
+    <properties>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <!-- Override the android JDK 7 guava in libraries-bom -->
+            <dependency>
+                <groupId>com.google.guava</groupId>
+                <artifactId>guava</artifactId>
+                <version>${google-cloud-guava-version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.google.cloud</groupId>
+                <artifactId>libraries-bom</artifactId>
+                <version>${google-cloud-bom-version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-support</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.cloud</groupId>
+            <artifactId>google-cloud-bigquery</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-junit-jupiter</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <childDelegation>false</childDelegation>
+                    <useFile>true</useFile>
+                    <forkCount>1</forkCount>
+                    <reuseForks>true</reuseForks>
+                    <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds>
+                    <includes>
+                        <!-- Here we only run test of  -->
+                        <include>**/unit/**/*.java</include>
+                    </includes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>google-bigquery-test</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <configuration>
+                            <childDelegation>false</childDelegation>
+                            <useFile>true</useFile>
+                            <forkCount>1</forkCount>
+                            <reuseForks>true</reuseForks>
+                            <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds>
+                            <includes>
+                                <include>**/*Test.java</include>
+                            </includes>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponentConfigurer.java b/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponentConfigurer.java
new file mode 100644
index 0000000..2c05091
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponentConfigurer.java
@@ -0,0 +1,78 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.bigquery;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class GoogleBigQueryComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        GoogleBigQueryComponent target = (GoogleBigQueryComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
+        case "connectionfactory":
+        case "connectionFactory": target.setConnectionFactory(property(camelContext, org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class, value)); return true;
+        case "datasetid":
+        case "datasetId": target.setDatasetId(property(camelContext, java.lang.String.class, value)); return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        case "projectid":
+        case "projectId": target.setProjectId(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public String[] getAutowiredNames() {
+        return new String[]{"connectionFactory"};
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": return boolean.class;
+        case "connectionfactory":
+        case "connectionFactory": return org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class;
+        case "datasetid":
+        case "datasetId": return java.lang.String.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        case "projectid":
+        case "projectId": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        GoogleBigQueryComponent target = (GoogleBigQueryComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": return target.isAutowiredEnabled();
+        case "connectionfactory":
+        case "connectionFactory": return target.getConnectionFactory();
+        case "datasetid":
+        case "datasetId": return target.getDatasetId();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        case "projectid":
+        case "projectId": return target.getProjectId();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointConfigurer.java b/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointConfigurer.java
new file mode 100644
index 0000000..65a33c5
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointConfigurer.java
@@ -0,0 +1,66 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.bigquery;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class GoogleBigQueryEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        GoogleBigQueryEndpoint target = (GoogleBigQueryEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "connectionfactory":
+        case "connectionFactory": target.getConfiguration().setConnectionFactory(property(camelContext, org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class, value)); return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        case "useasinsertid":
+        case "useAsInsertId": target.getConfiguration().setUseAsInsertId(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public String[] getAutowiredNames() {
+        return new String[]{"connectionFactory"};
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "connectionfactory":
+        case "connectionFactory": return org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        case "useasinsertid":
+        case "useAsInsertId": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        GoogleBigQueryEndpoint target = (GoogleBigQueryEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "connectionfactory":
+        case "connectionFactory": return target.getConfiguration().getConnectionFactory();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        case "useasinsertid":
+        case "useAsInsertId": return target.getConfiguration().getUseAsInsertId();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointUriFactory.java b/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointUriFactory.java
new file mode 100644
index 0000000..163c3d1
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointUriFactory.java
@@ -0,0 +1,68 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.bigquery;
+
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.spi.EndpointUriFactory;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+public class GoogleBigQueryEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
+
+    private static final String BASE = ":projectId:datasetId:tableId";
+
+    private static final Set<String> PROPERTY_NAMES;
+    private static final Set<String> SECRET_PROPERTY_NAMES;
+    static {
+        Set<String> props = new HashSet<>(6);
+        props.add("lazyStartProducer");
+        props.add("connectionFactory");
+        props.add("datasetId");
+        props.add("tableId");
+        props.add("projectId");
+        props.add("useAsInsertId");
+        PROPERTY_NAMES = Collections.unmodifiableSet(props);
+        SECRET_PROPERTY_NAMES = Collections.emptySet();
+    }
+
+    @Override
+    public boolean isEnabled(String scheme) {
+        return "google-bigquery".equals(scheme);
+    }
+
+    @Override
+    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
+        String syntax = scheme + BASE;
+        String uri = syntax;
+
+        Map<String, Object> copy = new HashMap<>(properties);
+
+        uri = buildPathParameter(syntax, uri, "projectId", null, true, copy);
+        uri = buildPathParameter(syntax, uri, "datasetId", null, true, copy);
+        uri = buildPathParameter(syntax, uri, "tableId", null, false, copy);
+        uri = buildQueryParameters(uri, copy, encode);
+        return uri;
+    }
+
+    @Override
+    public Set<String> propertyNames() {
+        return PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> secretPropertyNames() {
+        return SECRET_PROPERTY_NAMES;
+    }
+
+    @Override
+    public boolean isLenientProperties() {
+        return false;
+    }
+}
+
diff --git a/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponentConfigurer.java b/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponentConfigurer.java
new file mode 100644
index 0000000..6d2408e
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponentConfigurer.java
@@ -0,0 +1,72 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.bigquery.sql;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class GoogleBigQuerySQLComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        GoogleBigQuerySQLComponent target = (GoogleBigQuerySQLComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
+        case "connectionfactory":
+        case "connectionFactory": target.setConnectionFactory(property(camelContext, org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class, value)); return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        case "projectid":
+        case "projectId": target.setProjectId(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public String[] getAutowiredNames() {
+        return new String[]{"connectionFactory"};
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": return boolean.class;
+        case "connectionfactory":
+        case "connectionFactory": return org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        case "projectid":
+        case "projectId": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        GoogleBigQuerySQLComponent target = (GoogleBigQuerySQLComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "autowiredenabled":
+        case "autowiredEnabled": return target.isAutowiredEnabled();
+        case "connectionfactory":
+        case "connectionFactory": return target.getConnectionFactory();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        case "projectid":
+        case "projectId": return target.getProjectId();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointConfigurer.java b/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointConfigurer.java
new file mode 100644
index 0000000..5bc9b81
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointConfigurer.java
@@ -0,0 +1,60 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.bigquery.sql;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class GoogleBigQuerySQLEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        GoogleBigQuerySQLEndpoint target = (GoogleBigQuerySQLEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "connectionfactory":
+        case "connectionFactory": target.getConfiguration().setConnectionFactory(property(camelContext, org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class, value)); return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public String[] getAutowiredNames() {
+        return new String[]{"connectionFactory"};
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "connectionfactory":
+        case "connectionFactory": return org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        GoogleBigQuerySQLEndpoint target = (GoogleBigQuerySQLEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "connectionfactory":
+        case "connectionFactory": return target.getConfiguration().getConnectionFactory();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointUriFactory.java b/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointUriFactory.java
new file mode 100644
index 0000000..b715a92
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointUriFactory.java
@@ -0,0 +1,65 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.bigquery.sql;
+
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.spi.EndpointUriFactory;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+public class GoogleBigQuerySQLEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
+
+    private static final String BASE = ":projectId:queryString";
+
+    private static final Set<String> PROPERTY_NAMES;
+    private static final Set<String> SECRET_PROPERTY_NAMES;
+    static {
+        Set<String> props = new HashSet<>(4);
+        props.add("lazyStartProducer");
+        props.add("connectionFactory");
+        props.add("queryString");
+        props.add("projectId");
+        PROPERTY_NAMES = Collections.unmodifiableSet(props);
+        SECRET_PROPERTY_NAMES = Collections.emptySet();
+    }
+
+    @Override
+    public boolean isEnabled(String scheme) {
+        return "google-bigquery-sql".equals(scheme);
+    }
+
+    @Override
+    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
+        String syntax = scheme + BASE;
+        String uri = syntax;
+
+        Map<String, Object> copy = new HashMap<>(properties);
+
+        uri = buildPathParameter(syntax, uri, "projectId", null, true, copy);
+        uri = buildPathParameter(syntax, uri, "queryString", null, true, copy);
+        uri = buildQueryParameters(uri, copy, encode);
+        return uri;
+    }
+
+    @Override
+    public Set<String> propertyNames() {
+        return PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> secretPropertyNames() {
+        return SECRET_PROPERTY_NAMES;
+    }
+
+    @Override
+    public boolean isLenientProperties() {
+        return false;
+    }
+}
+
diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component.properties
new file mode 100644
index 0000000..8ddc81e
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+components=google-bigquery google-bigquery-sql
+groupId=org.apache.camel
+artifactId=camel-google-bigquery
+version=3.9.0-SNAPSHOT
+projectName=Camel :: Google BigQuery
+projectDescription=Camel Component for Google Cloud Platform BigQuery
diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery
new file mode 100644
index 0000000..9e840db
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.bigquery.GoogleBigQueryComponent
diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery-sql b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery-sql
new file mode 100644
index 0000000..47f5e5b
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery-sql
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLComponent
diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-component b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-component
new file mode 100644
index 0000000..70ac85f
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-component
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.bigquery.GoogleBigQueryComponentConfigurer
diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-endpoint b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-endpoint
new file mode 100644
index 0000000..f9bcfad
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.bigquery.GoogleBigQueryEndpointConfigurer
diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-component b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-component
new file mode 100644
index 0000000..4c7a787
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-component
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLComponentConfigurer
diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-endpoint b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-endpoint
new file mode 100644
index 0000000..8e7d900
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLEndpointConfigurer
diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-endpoint b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-endpoint
new file mode 100644
index 0000000..5bd5a61
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.bigquery.GoogleBigQueryEndpointUriFactory
diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-sql-endpoint b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-sql-endpoint
new file mode 100644
index 0000000..e6caa39
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-sql-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLEndpointUriFactory
diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/google-bigquery.json b/components/camel-google/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/google-bigquery.json
new file mode 100644
index 0000000..313444f
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/google-bigquery.json
@@ -0,0 +1,39 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "google-bigquery",
+    "title": "Google BigQuery",
+    "description": "Google BigQuery data warehouse for analytics.",
+    "deprecated": false,
+    "firstVersion": "2.20.0",
+    "label": "cloud,bigdata",
+    "javaType": "org.apache.camel.component.google.bigquery.GoogleBigQueryComponent",
+    "supportLevel": "Stable",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-google-bigquery",
+    "version": "3.9.0-SNAPSHOT",
+    "scheme": "google-bigquery",
+    "extendsScheme": "",
+    "syntax": "google-bigquery:projectId:datasetId:tableId",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": true,
+    "lenientProperties": false
+  },
+  "componentProperties": {
+    "connectionFactory": { "kind": "property", "displayName": "Connection Factory", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory", "deprecated": false, "autowired": true, "secret": false, "description": "ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used" },
+    "datasetId": { "kind": "property", "displayName": "Dataset Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "BigQuery Dataset Id" },
+    "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 [...]
+    "projectId": { "kind": "property", "displayName": "Project Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Google Cloud Project Id" },
+    "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 [...]
+  },
+  "properties": {
+    "projectId": { "kind": "path", "displayName": "Project Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "Google Cloud Project Id" },
+    "datasetId": { "kind": "path", "displayName": "Dataset Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "BigQuery Dataset Id" },
+    "tableId": { "kind": "path", "displayName": "Table Id", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "BigQuery table id" },
+    "connectionFactory": { "kind": "parameter", "displayName": "Connection Factory", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "ConnectionFacto [...]
+    "lazyStartProducer": { "kind": "parameter", "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 sta [...]
+    "useAsInsertId": { "kind": "parameter", "displayName": "Use As Insert Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "Field name to use as insert id" }
+  }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json b/components/camel-google/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json
new file mode 100644
index 0000000..39476c8
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json
@@ -0,0 +1,36 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "google-bigquery-sql",
+    "title": "Google BigQuery Standard SQL",
+    "description": "Access Google Cloud BigQuery service using SQL queries.",
+    "deprecated": false,
+    "firstVersion": "2.23.0",
+    "label": "cloud,messaging",
+    "javaType": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLComponent",
+    "supportLevel": "Stable",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-google-bigquery",
+    "version": "3.9.0-SNAPSHOT",
+    "scheme": "google-bigquery-sql",
+    "extendsScheme": "",
+    "syntax": "google-bigquery-sql:projectId:queryString",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": true,
+    "lenientProperties": false
+  },
+  "componentProperties": {
+    "connectionFactory": { "kind": "property", "displayName": "Connection Factory", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory", "deprecated": false, "autowired": true, "secret": false, "description": "ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used" },
+    "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 [...]
+    "projectId": { "kind": "property", "displayName": "Project Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Google Cloud Project Id" },
+    "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 [...]
+  },
+  "properties": {
+    "projectId": { "kind": "path", "displayName": "Project Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "Google Cloud Project Id" },
+    "queryString": { "kind": "path", "displayName": "Query String", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "BigQuery standard SQL query" },
+    "connectionFactory": { "kind": "parameter", "displayName": "Connection Factory", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "Connecti [...]
+    "lazyStartProducer": { "kind": "parameter", "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 sta [...]
+  }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/main/docs/google-bigquery-component.adoc b/components/camel-google/camel-google-bigquery/src/main/docs/google-bigquery-component.adoc
new file mode 100644
index 0000000..7134337
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/docs/google-bigquery-component.adoc
@@ -0,0 +1,170 @@
+[[google-bigquery-component]]
+= Google BigQuery Component
+:docTitle: Google BigQuery
+:artifactId: camel-google-bigquery
+:description: Google BigQuery data warehouse for analytics.
+:since: 2.20
+:supportLevel: Stable
+:component-header: Only producer is supported
+include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/google-bigquery.adoc[opts=optional]
+//Manually maintained attributes
+:group: Google
+
+*Since Camel {since}*
+
+*{component-header}*
+
+The Google Bigquery component provides access
+to https://cloud.google.com/bigquery/[Cloud BigQuery Infrastructure] via
+the https://developers.google.com/api-client-library/java/apis/bigquery/v2[Google Client Services API].
+
+The current implementation does not use gRPC.
+
+The current implementation does not support querying BigQuery i.e. is a producer only.
+
+Maven users will need to add the following dependency to their pom.xml
+for this component:
+
+[source,xml]
+------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-google-bigquery</artifactId>
+    <!-- use the same version as your Camel core version -->
+    <version>x.x.x</version>
+</dependency>
+
+------------------------------------------------------
+
+[[GoogleBigQuery-AuthenticationConfiguration]]
+
+== Authentication Configuration
+
+Google BigQuery component authentication is targeted for use with the GCP Service Accounts.
+For more information please refer to https://cloud.google.com/docs/authentication[Google Cloud Platform Auth Guide]
+
+Google security credentials can be set explicitly by providing the path to the GCP credentials file location.
+
+Or they are set implicitly, where the connection factory falls back on
+https://developers.google.com/identity/protocols/application-default-credentials#howtheywork[Application Default Credentials].
+
+*OBS!* The location of the default credentials file is configurable - via GOOGLE_APPLICATION_CREDENTIALS environment variable.
+
+== URI Format
+
+[source,text]
+--------------------------------------------------------
+        google-bigquery://project-id:datasetId[:tableId]?[options]
+--------------------------------------------------------
+
+
+== Options
+
+// component options: START
+The Google BigQuery component supports 5 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *connectionFactory* (producer) | *Autowired* ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used |  | GoogleBigQueryConnectionFactory
+| *datasetId* (producer) | BigQuery Dataset Id |  | String
+| *lazyStartProducer* (producer) | 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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *projectId* (producer) | Google Cloud Project Id |  | String
+| *autowiredEnabled* (advanced) | 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 then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
+|===
+// component options: END
+
+// endpoint options: START
+The Google BigQuery endpoint is configured using URI syntax:
+
+----
+google-bigquery:projectId:datasetId:tableId
+----
+
+with the following path and query parameters:
+
+=== Path Parameters (3 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *projectId* | *Required* Google Cloud Project Id |  | String
+| *datasetId* | *Required* BigQuery Dataset Id |  | String
+| *tableId* | BigQuery table id |  | String
+|===
+
+
+=== Query Parameters (3 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *connectionFactory* (producer) | *Autowired* ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used |  | GoogleBigQueryConnectionFactory
+| *lazyStartProducer* (producer) | 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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *useAsInsertId* (producer) | Field name to use as insert id |  | String
+|===
+// endpoint options: END
+
+
+== Message Headers
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Name |Type |Description
+|`CamelGoogleBigQueryTableSuffix` |`String` |Table suffix to use when inserting data
+|`CamelGoogleBigQueryInsertId` |`String` |InsertId to use when inserting data
+|`CamelGoogleBigQueryPartitionDecorator` |`String` |Partition decorator to indicate partition to use when inserting data
+|`CamelGoogleBigQueryTableId` |`String` |Table id where data will be submitted. If specified will override endpoint configuration
+|=======================================================================
+
+
+== Producer Endpoints
+
+Producer endpoints can accept and deliver to BigQuery individual and grouped
+exchanges alike. Grouped exchanges have `Exchange.GROUPED_EXCHANGE` property set.
+
+Google BigQuery producer will send a grouped exchange in a single api call unless different table suffix or
+partition decorators are specified in which case it will break it down to ensure data is written with the
+correct suffix or partition decorator.
+
+Google BigQuery endpoint expects the payload to be either a map or list of maps. A payload containing a map
+will insert a single row and a payload containing a list of map's will insert a row for each entry in the list.
+
+== Template tables
+
+Reference: https://cloud.google.com/bigquery/streaming-data-into-bigquery#template-tables
+
+Templated tables can be specified using the `GoogleBigQueryConstants.TABLE_SUFFIX` header.
+
+I.e. the following route will create tables and insert records sharded on a per day basis:
+
+[source,java]
+------------------------------------------------------
+from("direct:start")
+  .header(GoogleBigQueryConstants.TABLE_SUFFIX, "_${date:now:yyyyMMdd}")
+  .to("google-bigquery:sampleDataset:sampleTable")
+------------------------------------------------------
+Note it is recommended to use partitioning for this use case.
+
+== Partitioning
+
+Reference: https://cloud.google.com/bigquery/docs/creating-partitioned-tables
+
+Partitioning is specified when creating a table and if set data will be automatically partitioned into
+separate tables. When inserting data a specific partition can be specified by setting the
+`GoogleBigQueryConstants.PARTITION_DECORATOR` header on the exchange.
+
+== Ensuring data consistency
+
+Reference: https://cloud.google.com/bigquery/streaming-data-into-bigquery#dataconsistency
+
+A insert id can be set on the exchange with the header `GoogleBigQueryConstants.INSERT_ID` or by specifying
+query parameter `useAsInsertId`. As an insert id need to be specified per row inserted the exchange header can't
+be used when the payload is a list - if the payload is a list the `GoogleBigQueryConstants.INSERT_ID` will
+be ignored. In that case use the query parameter `useAsInsertId`.
+
+include::camel-spring-boot::page$google-bigquery-starter.adoc[]
diff --git a/components/camel-google/camel-google-bigquery/src/main/docs/google-bigquery-sql-component.adoc b/components/camel-google/camel-google-bigquery/src/main/docs/google-bigquery-sql-component.adoc
new file mode 100644
index 0000000..2cae5d3
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/docs/google-bigquery-sql-component.adoc
@@ -0,0 +1,148 @@
+[[google-bigquery-sql-component]]
+= Google BigQuery Standard SQL Component
+:docTitle: Google BigQuery Standard SQL
+:artifactId: camel-google-bigquery
+:description: Access Google Cloud BigQuery service using SQL queries.
+:since: 2.23
+:supportLevel: Stable
+:component-header: Only producer is supported
+include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/google-bigquery-sql.adoc[opts=optional]
+//Manually maintained attributes
+:group: Google
+
+*Since Camel {since}*
+
+*{component-header}*
+
+The Google BigQuery SQL component provides access
+to https://cloud.google.com/bigquery/[Cloud BigQuery Infrastructure] via
+the https://developers.google.com/apis-explorer/#p/bigquery/v2/bigquery.jobs.query[Google Client Services API].
+
+The current implementation supports only standard SQL
+https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax[DML queries].
+
+Maven users will need to add the following dependency to their pom.xml
+for this component:
+
+[source,xml]
+------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-google-bigquery</artifactId>
+    <!-- use the same version as your Camel core version -->
+    <version>x.x.x</version>
+</dependency>
+
+------------------------------------------------------
+
+[[GoogleBigQuery-AuthenticationConfiguration]]
+
+== Authentication Configuration
+
+Google BigQuery component authentication is targeted for use with the GCP Service Accounts.
+For more information please refer to https://cloud.google.com/docs/authentication[Google Cloud Platform Auth Guide]
+
+Google security credentials can be set explicitly by providing the path to the GCP credentials file location.
+
+Or they are set implicitly, where the connection factory falls back on
+https://developers.google.com/identity/protocols/application-default-credentials#howtheywork[Application Default Credentials].
+
+*OBS!* The location of the default credentials file is configurable - via GOOGLE_APPLICATION_CREDENTIALS environment variable.
+
+== URI Format
+
+[source,text]
+--------------------------------------------------------
+        google-bigquery-sql://project-id:query?[options]
+--------------------------------------------------------
+
+Examples:
+[source,text]
+--------------------------------------------------------
+        google-bigquery-sql://project-17248459:delete * from test.table where id=@myId
+        google-bigquery-sql://project-17248459:delete * from ${datasetId}.${tableId} where id=@myId
+--------------------------------------------------------
+where
+
+ * parameters in form $\{name} are extracted from message headers and formed the translated query
+ * parameters in form @name are extracted from body or message headers and sent to Google Bigquery
+
+You can externalize your SQL queries to files in the classpath or file system as shown:
+[source,text]
+--------------------------------------------------------
+        google-bigquery-sql://project-17248459::classpath:delete.sql
+--------------------------------------------------------
+
+
+
+== Options
+
+// component options: START
+The Google BigQuery Standard SQL component supports 4 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *connectionFactory* (producer) | *Autowired* ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used |  | GoogleBigQueryConnectionFactory
+| *lazyStartProducer* (producer) | 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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *projectId* (producer) | Google Cloud Project Id |  | String
+| *autowiredEnabled* (advanced) | 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 then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
+|===
+// component options: END
+
+// endpoint options: START
+The Google BigQuery Standard SQL endpoint is configured using URI syntax:
+
+----
+google-bigquery-sql:projectId:queryString
+----
+
+with the following path and query parameters:
+
+=== Path Parameters (2 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *projectId* | *Required* Google Cloud Project Id |  | String
+| *queryString* | *Required* BigQuery standard SQL query |  | String
+|===
+
+
+=== Query Parameters (2 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *connectionFactory* (producer) | *Autowired* ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used |  | GoogleBigQueryConnectionFactory
+| *lazyStartProducer* (producer) | 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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+|===
+// endpoint options: END
+
+
+== Message Headers
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Name |Type |Description
+|`CamelGoogleBigQueryJobId` |`JobId` |A custom `JobId` to use
+|=======================================================================
+
+== Output Message Headers
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Name |Type |Description
+|`CamelGoogleBigQueryTranslatedQuery` |`String` | Preprocessed query text
+|=======================================================================
+
+
+== Producer Endpoints
+
+Google BigQuery SQL endpoint expects the payload to be either empty or a map of query parameters.
+
+include::camel-spring-boot::page$google-bigquery-starter.adoc[]
diff --git a/components/camel-google/camel-google-bigquery/src/main/docs/google-summary.adoc b/components/camel-google/camel-google-bigquery/src/main/docs/google-summary.adoc
new file mode 100644
index 0000000..09d9e50
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/docs/google-summary.adoc
@@ -0,0 +1,14 @@
+= Google Component
+//attributes written by hand, not generated
+:docTitle: Google
+
+The *google-* component allows you to work with the
+https://gsuite.google.co.in/[G Suite].
+Google offers a great palette of different components like use of calender, mail, sheets and 
+drive . The main reason to use Google is the G Suite features.
+
+== {docTitle} components
+
+See the following for usage of each component:
+
+indexDescriptionList::[attributes='group={docTitle}',descAttribute=description]
diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponent.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponent.java
new file mode 100644
index 0000000..8737c08
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponent.java
@@ -0,0 +1,100 @@
+/*
+ * 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.bigquery;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
+import org.apache.camel.support.DefaultComponent;
+
+@Component("google-bigquery")
+public class GoogleBigQueryComponent extends DefaultComponent {
+
+    @Metadata
+    private String projectId;
+    @Metadata
+    private String datasetId;
+    @Metadata(autowired = true)
+    private GoogleBigQueryConnectionFactory connectionFactory;
+
+    public GoogleBigQueryComponent() {
+    }
+
+    public GoogleBigQueryComponent(CamelContext camelContext) {
+        super(camelContext);
+    }
+
+    // Endpoint represents a single table
+    @Override
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        String[] parts = remaining.split(":");
+
+        if (parts.length < 2) {
+            throw new IllegalArgumentException("Google BigQuery Endpoint format \"projectId:datasetId:tableName\"");
+        }
+
+        GoogleBigQueryConfiguration configuration = new GoogleBigQueryConfiguration();
+        configuration.parseRemaining(remaining);
+
+        if (configuration.getConnectionFactory() == null) {
+            if (connectionFactory == null) {
+                connectionFactory = new GoogleBigQueryConnectionFactory();
+            }
+            configuration.setConnectionFactory(getConnectionFactory());
+        }
+
+        GoogleBigQueryEndpoint endpoint = new GoogleBigQueryEndpoint(uri, this, configuration);
+        setProperties(endpoint, parameters);
+        return endpoint;
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    /**
+     * Google Cloud Project Id
+     */
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    public String getDatasetId() {
+        return datasetId;
+    }
+
+    /**
+     * BigQuery Dataset Id
+     */
+    public void setDatasetId(String datasetId) {
+        this.datasetId = datasetId;
+    }
+
+    public GoogleBigQueryConnectionFactory getConnectionFactory() {
+        return connectionFactory;
+    }
+
+    /**
+     * ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used
+     */
+    public void setConnectionFactory(GoogleBigQueryConnectionFactory connectionFactory) {
+        this.connectionFactory = connectionFactory;
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConfiguration.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConfiguration.java
new file mode 100644
index 0000000..fbc70bc
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConfiguration.java
@@ -0,0 +1,103 @@
+/*
+ * 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.bigquery;
+
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+import org.apache.camel.spi.UriPath;
+
+@UriParams
+public class GoogleBigQueryConfiguration {
+
+    @UriParam(description = "ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used")
+    @Metadata(autowired = true)
+    private GoogleBigQueryConnectionFactory connectionFactory;
+    @UriParam(description = "Field name to use as insert id")
+    private String useAsInsertId;
+    @UriPath(label = "common", description = "Google Cloud Project Id")
+    @Metadata(required = true)
+    private String projectId;
+    @UriPath(label = "common", description = "BigQuery Dataset Id")
+    @Metadata(required = true)
+    private String datasetId;
+    @UriPath(label = "common", description = "BigQuery table id")
+    @Metadata(required = false)
+    private String tableId;
+
+    public void parseRemaining(String remaining) {
+        String[] parts = remaining.split(":");
+
+        if (parts.length < 2) {
+            throw new IllegalArgumentException("Google BigQuery Endpoint format \"projectId:datasetId[:tableName]\"");
+        }
+
+        int c = 0;
+        projectId = parts[c++];
+        datasetId = parts[c++];
+        if (parts.length > 2) {
+            tableId = parts[c++];
+        }
+    }
+
+    /**
+     * ConnectionFactory to obtain connection to Bigquery Service. If non provided the default will be used.
+     */
+    public GoogleBigQueryConnectionFactory getConnectionFactory() {
+        return connectionFactory;
+    }
+
+    public void setConnectionFactory(GoogleBigQueryConnectionFactory connectionFactory) {
+        this.connectionFactory = connectionFactory;
+    }
+
+    public String getUseAsInsertId() {
+        return useAsInsertId;
+    }
+
+    public GoogleBigQueryConfiguration setUseAsInsertId(String useAsInsertId) {
+        this.useAsInsertId = useAsInsertId;
+        return this;
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public GoogleBigQueryConfiguration setProjectId(String projectId) {
+        this.projectId = projectId;
+        return this;
+    }
+
+    public String getDatasetId() {
+        return datasetId;
+    }
+
+    public GoogleBigQueryConfiguration setDatasetId(String datasetId) {
+        this.datasetId = datasetId;
+        return this;
+    }
+
+    public String getTableId() {
+        return tableId;
+    }
+
+    public GoogleBigQueryConfiguration setTableId(String tableId) {
+        this.tableId = tableId;
+        return this;
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConnectionFactory.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConnectionFactory.java
new file mode 100644
index 0000000..3662cdf
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConnectionFactory.java
@@ -0,0 +1,130 @@
+/*
+ * 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.bigquery;
+
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.Collections;
+
+import com.google.api.client.util.Strings;
+import com.google.api.services.bigquery.BigqueryScopes;
+import com.google.auth.oauth2.GoogleCredentials;
+import com.google.cloud.bigquery.BigQuery;
+import com.google.cloud.bigquery.BigQueryOptions;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class GoogleBigQueryConnectionFactory {
+
+    private final Logger logger = LoggerFactory.getLogger(GoogleBigQueryConnectionFactory.class);
+
+    private String credentialsFileLocation;
+    private String serviceURL;
+    private BigQuery client;
+
+    public GoogleBigQueryConnectionFactory() {
+    }
+
+    public GoogleBigQueryConnectionFactory(BigQuery client) {
+        this.client = client;
+    }
+
+    public synchronized BigQuery getDefaultClient() throws Exception {
+        if (this.client == null) {
+            this.client = buildClient();
+        }
+        return this.client;
+    }
+
+    private BigQuery buildClient() throws Exception {
+
+        GoogleCredentials credentials = null;
+
+        if (credentials == null && !Strings.isNullOrEmpty(credentialsFileLocation)) {
+            logger.debug("Key File Name has been set explicitly. Initialising BigQuery using Key File {}",
+                    credentialsFileLocation);
+
+            credentials = createFromFile();
+        }
+
+        if (credentials == null) {
+            logger.debug(
+                    "No explicit Service Account or Key File Name have been provided. Initialising BigQuery using defaults");
+
+            credentials = createDefault();
+        }
+
+        BigQueryOptions.Builder builder = BigQueryOptions.newBuilder()
+                .setCredentials(credentials);
+
+        if (ObjectHelper.isNotEmpty(serviceURL)) {
+            builder.setHost(serviceURL);
+        }
+
+        return builder.build().getService();
+    }
+
+    private GoogleCredentials createFromFile() throws Exception {
+        try (InputStream is = new FileInputStream(credentialsFileLocation)) {
+            GoogleCredentials credentials = GoogleCredentials.fromStream(is);
+
+            if (credentials.createScopedRequired()) {
+                credentials = credentials.createScoped(BigqueryScopes.all());
+            }
+
+            return credentials;
+        }
+    }
+
+    private GoogleCredentials createDefault() throws Exception {
+        GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
+
+        Collection<String> scopes = Collections.singletonList(BigqueryScopes.BIGQUERY);
+
+        if (credentials.createScopedRequired()) {
+            credentials = credentials.createScoped(scopes);
+        }
+
+        return credentials;
+    }
+
+    public String getCredentialsFileLocation() {
+        return credentialsFileLocation;
+    }
+
+    public GoogleBigQueryConnectionFactory setCredentialsFileLocation(String credentialsFileLocation) {
+        this.credentialsFileLocation = credentialsFileLocation;
+        resetClient();
+        return this;
+    }
+
+    public String getServiceURL() {
+        return serviceURL;
+    }
+
+    public GoogleBigQueryConnectionFactory setServiceURL(String serviceURL) {
+        this.serviceURL = serviceURL;
+        resetClient();
+        return this;
+    }
+
+    private synchronized void resetClient() {
+        this.client = null;
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConstants.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConstants.java
new file mode 100644
index 0000000..dc33212
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConstants.java
@@ -0,0 +1,32 @@
+/*
+ * 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.bigquery;
+
+public final class GoogleBigQueryConstants {
+    public static final String TABLE_SUFFIX = "CamelGoogleBigQueryTableSuffix";
+    public static final String TABLE_ID = "CamelGoogleBigQueryTableId";
+    public static final String INSERT_ID = "CamelGoogleBigQueryInsertId";
+    public static final String PARTITION_DECORATOR = "CamelGoogleBigQueryPartitionDecorator";
+    public static final String TRANSLATED_QUERY = "CamelGoogleBigQueryTranslatedQuery";
+    public static final String JOB_ID = "CamelGoogleBigQueryJobId";
+
+    /**
+     * Prevent instantiation.
+     */
+    private GoogleBigQueryConstants() {
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpoint.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpoint.java
new file mode 100644
index 0000000..6f527d9
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpoint.java
@@ -0,0 +1,75 @@
+/*
+ * 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.bigquery;
+
+import com.google.cloud.bigquery.BigQuery;
+import org.apache.camel.Category;
+import org.apache.camel.Consumer;
+import org.apache.camel.Processor;
+import org.apache.camel.Producer;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.support.DefaultEndpoint;
+
+/**
+ * Google BigQuery data warehouse for analytics.
+ *
+ * BigQuery Endpoint Definition Represents a table within a BigQuery dataset Contains configuration details for a single
+ * table and the utility methods (such as check, create) to ease operations URI Parameters: * Logger ID - To ensure that
+ * logging is unified under Route Logger, the logger ID can be passed on via an endpoint URI parameter * Partitioned -
+ * to indicate that the table needs to be partitioned - every UTC day to be written into a timestamped separate table
+ * side effect: Australian operational day is always split between two UTC days, and, therefore, tables
+ *
+ * Another consideration is that exceptions are not handled within the class. They are expected to bubble up and be
+ * handled by Camel.
+ */
+@UriEndpoint(firstVersion = "2.20.0", scheme = "google-bigquery", title = "Google BigQuery",
+             syntax = "google-bigquery:projectId:datasetId:tableId",
+             category = { Category.CLOUD, Category.BIGDATA }, producerOnly = true)
+public class GoogleBigQueryEndpoint extends DefaultEndpoint {
+
+    @UriParam
+    protected final GoogleBigQueryConfiguration configuration;
+
+    protected GoogleBigQueryEndpoint(String endpointUri, GoogleBigQueryComponent component,
+                                     GoogleBigQueryConfiguration configuration) {
+        super(endpointUri, component);
+        this.configuration = configuration;
+    }
+
+    @Override
+    public Producer createProducer() throws Exception {
+        BigQuery bigquery = getConfiguration().getConnectionFactory().getDefaultClient();
+        GoogleBigQueryProducer producer = new GoogleBigQueryProducer(bigquery, this, configuration);
+        return producer;
+    }
+
+    @Override
+    public Consumer createConsumer(Processor processor) throws Exception {
+        throw new UnsupportedOperationException("Cannot consume from the BigQuery endpoint: " + getEndpointUri());
+    }
+
+    public GoogleBigQueryConfiguration getConfiguration() {
+        return configuration;
+    }
+
+    @Override
+    public GoogleBigQueryComponent getComponent() {
+        return (GoogleBigQueryComponent) super.getComponent();
+    }
+
+}
diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryProducer.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryProducer.java
new file mode 100644
index 0000000..8438008
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryProducer.java
@@ -0,0 +1,195 @@
+/*
+ * 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.bigquery;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import com.google.api.client.util.Strings;
+import com.google.cloud.bigquery.BigQuery;
+import com.google.cloud.bigquery.InsertAllRequest;
+import com.google.cloud.bigquery.InsertAllResponse;
+import org.apache.camel.Exchange;
+import org.apache.camel.support.DefaultProducer;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Generic BigQuery Producer
+ */
+public class GoogleBigQueryProducer extends DefaultProducer {
+
+    private static final Logger LOG = LoggerFactory.getLogger(GoogleBigQueryProducer.class);
+
+    private final GoogleBigQueryConfiguration configuration;
+    private BigQuery bigquery;
+
+    public GoogleBigQueryProducer(BigQuery bigquery, GoogleBigQueryEndpoint endpoint,
+                                  GoogleBigQueryConfiguration configuration) {
+        super(endpoint);
+        this.bigquery = bigquery;
+        this.configuration = configuration;
+    }
+
+    /**
+     * The method converts a single incoming message into a List
+     */
+    private static List<Exchange> prepareExchangeList(Exchange exchange) {
+        List<Exchange> entryList;
+
+        if (null == exchange.getProperty(Exchange.GROUPED_EXCHANGE)) {
+            entryList = new ArrayList<>();
+            entryList.add(exchange);
+        } else {
+            entryList = (List<Exchange>) exchange.getProperty(Exchange.GROUPED_EXCHANGE);
+        }
+
+        return entryList;
+    }
+
+    /**
+     * Process the exchange
+     *
+     * The incoming exchange can be a grouped exchange in which case all the exchanges will be combined.
+     *
+     * The incoming can be
+     * <ul>
+     * <li>A map where all map keys will map to field records. One map object maps to one bigquery row</li>
+     * <li>A list of maps. Each entry in the list will map to one bigquery row</li>
+     * </ul>
+     * The incoming message is expected to be a List of Maps The assumptions: - All incoming records go into the same
+     * table - Incoming records sorted by the timestamp
+     */
+    @Override
+    public void process(Exchange exchange) throws Exception {
+        List<Exchange> exchanges = prepareExchangeList(exchange);
+
+        List<Exchange> processGroup = new ArrayList<>();
+
+        String partitionDecorator = "";
+        String suffix = "";
+        String tableId = configuration.getTableId() == null ? "" : configuration.getTableId();
+        int totalProcessed = 0;
+
+        for (Exchange ex : exchanges) {
+            String tmpPartitionDecorator = ex.getIn().getHeader(GoogleBigQueryConstants.PARTITION_DECORATOR, "", String.class);
+            String tmpSuffix = ex.getIn().getHeader(GoogleBigQueryConstants.TABLE_SUFFIX, "", String.class);
+            String tmpTableId = ex.getIn().getHeader(GoogleBigQueryConstants.TABLE_ID, tableId, String.class);
+
+            if (tmpTableId.isEmpty()) {
+                throw new IllegalArgumentException(
+                        "tableId need to be specified in one of endpoint configuration or exchange header");
+            }
+
+            // Ensure all rows of same request goes to same table and suffix
+            if (!tmpPartitionDecorator.equals(partitionDecorator) || !tmpSuffix.equals(suffix) || !tmpTableId.equals(tableId)) {
+                if (!processGroup.isEmpty()) {
+                    totalProcessed += process(tableId, partitionDecorator, suffix, processGroup, exchange.getExchangeId());
+                }
+                processGroup.clear();
+                partitionDecorator = tmpPartitionDecorator;
+                suffix = tmpSuffix;
+                tableId = tmpTableId;
+            }
+            processGroup.add(ex);
+        }
+        if (!processGroup.isEmpty()) {
+            totalProcessed += process(tableId, partitionDecorator, suffix, processGroup, exchange.getExchangeId());
+        }
+
+        if (totalProcessed == 0) {
+            LOG.debug("The incoming message is either null or empty for exchange {}", exchange.getExchangeId());
+        }
+    }
+
+    private int process(String tableId, String partitionDecorator, String suffix, List<Exchange> exchanges, String exchangeId)
+            throws Exception {
+        String tableIdWithPartition = Strings.isNullOrEmpty(partitionDecorator)
+                ? tableId
+                : (tableId + "$" + partitionDecorator);
+
+        List<InsertAllRequest.RowToInsert> apiRequestRows = new ArrayList<>();
+        for (Exchange ex : exchanges) {
+            Object entryObject = ex.getIn().getBody();
+            if (entryObject instanceof List) {
+                for (Map<String, Object> entry : (List<Map<String, Object>>) entryObject) {
+                    apiRequestRows.add(createRowRequest(null, entry));
+                }
+            } else if (entryObject instanceof Map) {
+                apiRequestRows.add(createRowRequest(ex, (Map<String, Object>) entryObject));
+            } else {
+                ex.setException(new IllegalArgumentException("Cannot handle body type " + entryObject.getClass()));
+            }
+        }
+
+        if (apiRequestRows.isEmpty()) {
+            return 0;
+        }
+
+        InsertAllRequest.Builder builder = InsertAllRequest.newBuilder(configuration.getDatasetId(), tableIdWithPartition)
+                .setRows(apiRequestRows);
+
+        if (ObjectHelper.isNotEmpty(suffix)) {
+            builder.setTemplateSuffix(suffix);
+        }
+
+        InsertAllRequest insertAllRequest = builder.build();
+
+        if (LOG.isTraceEnabled()) {
+            LOG.trace("Sending {} messages to bigquery table {}, suffix {}, partition {}",
+                    apiRequestRows.size(), tableId, suffix, partitionDecorator);
+        }
+
+        InsertAllResponse apiResponse = bigquery.insertAll(insertAllRequest);
+
+        if (apiResponse.getInsertErrors() != null && !apiResponse.getInsertErrors().isEmpty()) {
+            throw new Exception("InsertAll into " + tableId + " failed: " + apiResponse.getInsertErrors());
+        }
+
+        if (LOG.isTraceEnabled()) {
+            LOG.trace("Sent {} messages to bigquery table {}, suffix {}, partition {}",
+                    apiRequestRows.size(), tableId, suffix, partitionDecorator);
+        }
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("uploader thread/id: {} / {} . api call completed.", Thread.currentThread().getId(), exchangeId);
+        }
+        return insertAllRequest.getRows().size();
+    }
+
+    private InsertAllRequest.RowToInsert createRowRequest(Exchange exchange, Map<String, Object> object) {
+        String insertId = null;
+        if (configuration.getUseAsInsertId() != null) {
+            insertId = (String) (object.get(configuration.getUseAsInsertId()));
+        } else {
+            if (exchange != null) {
+                insertId = exchange.getIn().getHeader(GoogleBigQueryConstants.INSERT_ID, String.class);
+            }
+        }
+        if (insertId != null) {
+            return InsertAllRequest.RowToInsert.of(insertId, object);
+        }
+        return InsertAllRequest.RowToInsert.of(object);
+    }
+
+    @Override
+    public GoogleBigQueryEndpoint getEndpoint() {
+        return (GoogleBigQueryEndpoint) super.getEndpoint();
+    }
+
+}
diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponent.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponent.java
new file mode 100644
index 0000000..31e75a5
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponent.java
@@ -0,0 +1,88 @@
+/*
+ * 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.bigquery.sql;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
+import org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
+import org.apache.camel.support.DefaultComponent;
+
+@Component("google-bigquery-sql")
+public class GoogleBigQuerySQLComponent extends DefaultComponent {
+
+    @Metadata
+    private String projectId;
+    @Metadata(autowired = true)
+    private GoogleBigQueryConnectionFactory connectionFactory;
+
+    public GoogleBigQuerySQLComponent() {
+    }
+
+    public GoogleBigQuerySQLComponent(CamelContext camelContext) {
+        super(camelContext);
+    }
+
+    // Endpoint represents a single table
+    @Override
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        String[] parts = remaining.split(":");
+
+        if (parts.length < 2) {
+            throw new IllegalArgumentException("Google BigQuery Endpoint format \"projectId:<query>\"");
+        }
+
+        GoogleBigQuerySQLConfiguration configuration = new GoogleBigQuerySQLConfiguration();
+        configuration.parseRemaining(remaining);
+
+        if (configuration.getConnectionFactory() == null) {
+            if (connectionFactory == null) {
+                connectionFactory = new GoogleBigQueryConnectionFactory();
+            }
+            configuration.setConnectionFactory(getConnectionFactory());
+        }
+
+        GoogleBigQuerySQLEndpoint endpoint = new GoogleBigQuerySQLEndpoint(uri, this, configuration);
+        setProperties(endpoint, parameters);
+        return endpoint;
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    /**
+     * Google Cloud Project Id
+     */
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    public GoogleBigQueryConnectionFactory getConnectionFactory() {
+        return connectionFactory;
+    }
+
+    /**
+     * ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used
+     */
+    public void setConnectionFactory(GoogleBigQueryConnectionFactory connectionFactory) {
+        this.connectionFactory = connectionFactory;
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLConfiguration.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLConfiguration.java
new file mode 100644
index 0000000..6287405
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLConfiguration.java
@@ -0,0 +1,77 @@
+/*
+ * 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.bigquery.sql;
+
+import org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+import org.apache.camel.spi.UriPath;
+
+@UriParams
+public class GoogleBigQuerySQLConfiguration {
+
+    @UriParam(description = "ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used")
+    @Metadata(autowired = true)
+    private GoogleBigQueryConnectionFactory connectionFactory;
+    @UriPath(label = "common", description = "Google Cloud Project Id")
+    @Metadata(required = true)
+    private String projectId;
+    @UriPath(label = "common", description = "BigQuery standard SQL query")
+    @Metadata(required = true)
+    private String queryString;
+
+    public void parseRemaining(String remaining) {
+        int indexOfColon = remaining.indexOf(':');
+
+        if (indexOfColon < 0) {
+            throw new IllegalArgumentException("Google BigQuery Endpoint format \"projectId:query\"");
+        }
+
+        projectId = remaining.substring(0, indexOfColon);
+        queryString = remaining.substring(indexOfColon + 1);
+    }
+
+    /**
+     * ConnectionFactory to obtain connection to Bigquery Service. If non provided the default will be used.
+     */
+    public GoogleBigQueryConnectionFactory getConnectionFactory() {
+        return connectionFactory;
+    }
+
+    public void setConnectionFactory(GoogleBigQueryConnectionFactory connectionFactory) {
+        this.connectionFactory = connectionFactory;
+    }
+
+    public String getQueryString() {
+        return queryString;
+    }
+
+    public GoogleBigQuerySQLConfiguration setQueryString(String queryString) {
+        this.queryString = queryString;
+        return this;
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public GoogleBigQuerySQLConfiguration setProjectId(String projectId) {
+        this.projectId = projectId;
+        return this;
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpoint.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpoint.java
new file mode 100644
index 0000000..5549a3c
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpoint.java
@@ -0,0 +1,73 @@
+/*
+ * 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.bigquery.sql;
+
+import com.google.cloud.bigquery.BigQuery;
+import org.apache.camel.Consumer;
+import org.apache.camel.Processor;
+import org.apache.camel.Producer;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.support.DefaultEndpoint;
+
+/**
+ * Access Google Cloud BigQuery service using SQL queries.
+ *
+ * BigQuery Endpoint Definition Represents a table within a BigQuery dataset Contains configuration details for a single
+ * table and the utility methods (such as check, create) to ease operations URI Parameters: * Logger ID - To ensure that
+ * logging is unified under Route Logger, the logger ID can be passed on via an endpoint URI parameter * Partitioned -
+ * to indicate that the table needs to be partitioned - every UTC day to be written into a timestamped separate table
+ * side effect: Australian operational day is always split between two UTC days, and, therefore, tables
+ *
+ * Another consideration is that exceptions are not handled within the class. They are expected to bubble up and be
+ * handled by Camel.
+ */
+@UriEndpoint(firstVersion = "2.23.0", scheme = "google-bigquery-sql", title = "Google BigQuery Standard SQL",
+             syntax = "google-bigquery-sql:projectId:queryString", label = "cloud,messaging", producerOnly = true)
+public class GoogleBigQuerySQLEndpoint extends DefaultEndpoint {
+
+    @UriParam
+    protected final GoogleBigQuerySQLConfiguration configuration;
+
+    protected GoogleBigQuerySQLEndpoint(String endpointUri, GoogleBigQuerySQLComponent component,
+                                        GoogleBigQuerySQLConfiguration configuration) {
+        super(endpointUri, component);
+        this.configuration = configuration;
+    }
+
+    @Override
+    public Producer createProducer() throws Exception {
+        BigQuery bigquery = getConfiguration().getConnectionFactory().getDefaultClient();
+        GoogleBigQuerySQLProducer producer = new GoogleBigQuerySQLProducer(bigquery, this, configuration);
+        return producer;
+    }
+
+    @Override
+    public Consumer createConsumer(Processor processor) throws Exception {
+        throw new UnsupportedOperationException("Cannot consume from the BigQuery endpoint: " + getEndpointUri());
+    }
+
+    public GoogleBigQuerySQLConfiguration getConfiguration() {
+        return configuration;
+    }
+
+    @Override
+    public GoogleBigQuerySQLComponent getComponent() {
+        return (GoogleBigQuerySQLComponent) super.getComponent();
+    }
+
+}
diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLProducer.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLProducer.java
new file mode 100644
index 0000000..7ab6b7a
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLProducer.java
@@ -0,0 +1,172 @@
+/*
+ * 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.bigquery.sql;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import com.google.cloud.bigquery.BigQuery;
+import com.google.cloud.bigquery.BigQueryException;
+import com.google.cloud.bigquery.JobException;
+import com.google.cloud.bigquery.JobId;
+import com.google.cloud.bigquery.QueryJobConfiguration;
+import com.google.cloud.bigquery.QueryParameterValue;
+import com.google.cloud.bigquery.StandardSQLTypeName;
+import com.google.cloud.bigquery.TableResult;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.RuntimeExchangeException;
+import org.apache.camel.component.google.bigquery.GoogleBigQueryConstants;
+import org.apache.camel.support.DefaultProducer;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Generic BigQuery Producer
+ */
+public class GoogleBigQuerySQLProducer extends DefaultProducer {
+
+    private static final Logger LOG = LoggerFactory.getLogger(GoogleBigQuerySQLProducer.class);
+
+    private final GoogleBigQuerySQLConfiguration configuration;
+    private BigQuery bigquery;
+    private String query;
+    private Set<String> queryParameterNames;
+
+    public GoogleBigQuerySQLProducer(BigQuery bigquery, GoogleBigQuerySQLEndpoint endpoint,
+                                     GoogleBigQuerySQLConfiguration configuration) {
+        super(endpoint);
+        this.bigquery = bigquery;
+        this.configuration = configuration;
+    }
+
+    /**
+     * Process the exchange The incoming exchange can be a grouped exchange in which case all the exchanges will be
+     * combined. The incoming can be
+     * <ul>
+     * <li>A map where all map keys will map to field records. One map object maps to one bigquery row</li>
+     * <li>A list of maps. Each entry in the list will map to one bigquery row</li>
+     * </ul>
+     * The incoming message is expected to be a List of Maps The assumptions: - All incoming records go into the same
+     * table - Incoming records sorted by the timestamp
+     */
+    @Override
+    public void process(Exchange exchange) throws Exception {
+        String translatedQuery = SqlHelper.translateQuery(query, exchange);
+        Map<String, Object> queryParameters = extractParameters(exchange);
+
+        Message message = exchange.getMessage();
+        message.setHeader(GoogleBigQueryConstants.TRANSLATED_QUERY, translatedQuery);
+        JobId jobId = message.getHeader(GoogleBigQueryConstants.JOB_ID, JobId.class);
+
+        Long affectedRows = executeSQL(jobId, translatedQuery, queryParameters);
+
+        LOG.debug("The query {} affected {} rows", query, affectedRows);
+        message.setBody(affectedRows);
+    }
+
+    private Long executeSQL(JobId jobId, String translatedQuery, Map<String, Object> queryParameters) throws Exception {
+        QueryJobConfiguration.Builder builder = QueryJobConfiguration.newBuilder(translatedQuery)
+                .setUseLegacySql(false);
+
+        setQueryParameters(queryParameters, builder);
+
+        QueryJobConfiguration queryJobConfiguration = builder.build();
+
+        try {
+            if (LOG.isTraceEnabled()) {
+                LOG.trace("Sending query to bigquery standard sql: {}", translatedQuery);
+            }
+
+            JobId queryJobId;
+            if (ObjectHelper.isNotEmpty(jobId)) {
+                queryJobId = jobId;
+            } else {
+                queryJobId = JobId.of(configuration.getProjectId(), UUID.randomUUID().toString());
+            }
+
+            TableResult result = bigquery.query(queryJobConfiguration, queryJobId);
+
+            if (LOG.isTraceEnabled()) {
+                LOG.trace("Result of query {} is {}", translatedQuery, result.toString());
+            }
+
+            return result.getTotalRows();
+        } catch (JobException e) {
+            throw new Exception("Query " + translatedQuery + " failed: " + e.getErrors(), e);
+        } catch (BigQueryException e) {
+            throw new Exception("Query " + translatedQuery + " failed: " + e.getError(), e);
+        }
+    }
+
+    private Map<String, Object> extractParameters(Exchange exchange) {
+        if (queryParameterNames == null || queryParameterNames.size() == 0) {
+            return null;
+        }
+
+        Message message = exchange.getMessage();
+
+        HashMap<String, Object> headers = new HashMap<>(message.getHeaders());
+        if (message.getBody() instanceof Map) {
+            try {
+                headers.putAll(message.getBody(Map.class));
+            } catch (ClassCastException e) {
+                LOG.warn("Unable to perform cast while extracting header parameters: {}", e.getMessage(), e);
+            }
+        }
+
+        HashMap<String, Object> result = new HashMap<>(queryParameterNames.size());
+        queryParameterNames.forEach(s -> {
+            Object value = headers.get(s);
+            if (value == null) {
+                throw new RuntimeExchangeException(
+                        "SQL parameter with name '" + s + "' not found in the message headers", exchange);
+            }
+
+            result.put(s, headers.get(s));
+        });
+
+        return result;
+    }
+
+    private void setQueryParameters(Map<String, Object> params, QueryJobConfiguration.Builder builder) {
+        if (params == null) {
+            return;
+        }
+
+        params.forEach((key, value) -> {
+            QueryParameterValue parameterValue = QueryParameterValue.of(value.toString(), StandardSQLTypeName.STRING);
+            builder.addNamedParameter(key, parameterValue);
+        });
+    }
+
+    @Override
+    public GoogleBigQuerySQLEndpoint getEndpoint() {
+        return (GoogleBigQuerySQLEndpoint) super.getEndpoint();
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+        super.doStart();
+        String placeholder = ":#";
+        query = SqlHelper.resolveQuery(getEndpoint().getCamelContext(), configuration.getQueryString(), placeholder);
+        queryParameterNames = SqlHelper.extractParameterNames(query);
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/SqlHelper.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/SqlHelper.java
new file mode 100644
index 0000000..a48e969
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/SqlHelper.java
@@ -0,0 +1,103 @@
+/*
+ * 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.bigquery.sql;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.NoTypeConversionAvailableException;
+import org.apache.camel.RuntimeExchangeException;
+import org.apache.camel.support.ResourceHelper;
+
+public final class SqlHelper {
+
+    private static Pattern pattern = Pattern.compile("\\$\\{(\\w+)}");
+    private static Pattern parameterPattern = Pattern.compile("@(\\w+)");
+
+    private SqlHelper() {
+    }
+
+    /**
+     * Resolve the query by loading the query from the classpath or file resource if needed.
+     */
+    public static String resolveQuery(CamelContext camelContext, String query, String placeholder)
+            throws NoTypeConversionAvailableException, IOException {
+        String answer = query;
+        if (ResourceHelper.hasScheme(query)) {
+            try (InputStream is = ResourceHelper.resolveMandatoryResourceAsInputStream(camelContext, query)) {
+                answer = camelContext.getTypeConverter().mandatoryConvertTo(String.class, is);
+                if (placeholder != null) {
+                    answer = answer.replaceAll(placeholder, "@");
+                }
+            }
+        }
+        return answer;
+    }
+
+    /**
+     * Replaces pattern in query in form of "${param}" with values from message header Raises an error if param value
+     * not found in headers
+     * 
+     * @param  exchange
+     * @return          Translated query text
+     */
+    public static String translateQuery(String query, Exchange exchange) {
+        Message message = exchange.getMessage();
+        Matcher matcher = pattern.matcher(query);
+        StringBuffer stringBuffer = new StringBuffer();
+        while (matcher.find()) {
+            String paramKey = matcher.group(1);
+
+            String value = message.getHeader(paramKey, String.class);
+            if (value == null) {
+                value = exchange.getProperty(paramKey, String.class);
+                if (value == null) {
+                    throw new RuntimeExchangeException(
+                            "SQL pattern with name '" + paramKey + "' not found in the message headers", exchange);
+                }
+            }
+
+            String replacement = Matcher.quoteReplacement(value);
+            matcher.appendReplacement(stringBuffer, replacement);
+        }
+        matcher.appendTail(stringBuffer);
+        return stringBuffer.toString();
+    }
+
+    /**
+     * Extracts list of parameters in form "@name" from query text
+     * 
+     * @param  query
+     * @return       list of parameter names
+     */
+    public static Set<String> extractParameterNames(String query) {
+        Matcher matcher = parameterPattern.matcher(query);
+        Set<String> result = new HashSet<>();
+        while (matcher.find()) {
+            String paramName = matcher.group(1);
+            result.add(paramName);
+        }
+        return result;
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/AsyncTest.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/AsyncTest.java
new file mode 100644
index 0000000..297de66
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/AsyncTest.java
@@ -0,0 +1,97 @@
+/*
+ * 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.bigquery.integration;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
+import org.apache.camel.LoggingLevel;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.support.DefaultExchange;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class AsyncTest extends BigQueryTestSupport {
+    private static final String TABLE_ID = "asynctest";
+
+    @EndpointInject("direct:in")
+    private Endpoint directIn;
+
+    @EndpointInject("google-bigquery:{{project.id}}:{{bigquery.datasetId}}:" + TABLE_ID)
+    private Endpoint bigqueryEndpoint;
+
+    @EndpointInject("mock:sendResult")
+    private MockEndpoint sendResult;
+
+    @Produce("direct:in")
+    private ProducerTemplate producer;
+
+    @BeforeEach
+    public void init() throws Exception {
+        createBqTable(TABLE_ID);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                from(directIn)
+                        .to("seda:seda");
+                from("seda:seda")
+                        .routeId("Async")
+                        .to(ExchangePattern.InOnly, bigqueryEndpoint)
+                        .log(LoggingLevel.INFO, "To sendresult")
+                        .to(sendResult);
+            }
+        };
+    }
+
+    @Test
+    public void sendAsync() throws Exception {
+        List<Map> objects = new ArrayList<>();
+        for (int i = 0; i < 5; i++) {
+            Exchange exchange = new DefaultExchange(context);
+            String uuidCol1 = UUID.randomUUID().toString();
+            String uuidCol2 = UUID.randomUUID().toString();
+
+            Map<String, String> object = new HashMap<>();
+            object.put("col1", uuidCol1);
+            object.put("col2", uuidCol2);
+            objects.add(object);
+            exchange.getIn().setBody(object);
+            producer.send(exchange);
+        }
+        sendResult.expectedMessageCount(5);
+
+        sendResult.assertIsSatisfied(4000);
+
+        for (Map object : objects) {
+            assertRowExist(TABLE_ID, object);
+        }
+    }
+
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/BigQueryTestSupport.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/BigQueryTestSupport.java
new file mode 100644
index 0000000..0436148
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/BigQueryTestSupport.java
@@ -0,0 +1,158 @@
+/*
+ * 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.bigquery.integration;
+
+import java.io.InputStream;
+import java.util.Map;
+import java.util.Properties;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+import com.google.api.client.googleapis.json.GoogleJsonResponseException;
+import com.google.cloud.bigquery.Field;
+import com.google.cloud.bigquery.FieldList;
+import com.google.cloud.bigquery.JobId;
+import com.google.cloud.bigquery.QueryJobConfiguration;
+import com.google.cloud.bigquery.Schema;
+import com.google.cloud.bigquery.StandardSQLTypeName;
+import com.google.cloud.bigquery.StandardTableDefinition;
+import com.google.cloud.bigquery.TableDefinition;
+import com.google.cloud.bigquery.TableId;
+import com.google.cloud.bigquery.TableInfo;
+import com.google.cloud.bigquery.TableResult;
+import org.apache.camel.BindToRegistry;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.google.bigquery.GoogleBigQueryComponent;
+import org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory;
+import org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLComponent;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class BigQueryTestSupport extends CamelTestSupport {
+    public static final String SERVICE_KEY;
+    public static final String SERVICE_ACCOUNT;
+    public static final String PROJECT_ID;
+    public static final String DATASET_ID;
+    public static final String CREDENTIALS_FILE_LOCATION;
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(BigQueryTestSupport.class);
+
+    private GoogleBigQueryConnectionFactory connectionFactory;
+
+    static {
+        Properties testProperties = loadProperties();
+        SERVICE_KEY = testProperties.getProperty("service.key");
+        SERVICE_ACCOUNT = testProperties.getProperty("service.account");
+        PROJECT_ID = testProperties.getProperty("project.id");
+        DATASET_ID = testProperties.getProperty("bigquery.datasetId");
+        CREDENTIALS_FILE_LOCATION = testProperties.getProperty("service.credentialsFileLocation");
+    }
+
+    private static Properties loadProperties() {
+        Properties testProperties = new Properties();
+        InputStream fileIn = BigQueryTestSupport.class.getClassLoader().getResourceAsStream("simple.properties");
+        try {
+            testProperties.load(fileIn);
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+        return testProperties;
+    }
+
+    protected void addBigqueryComponent(CamelContext context) {
+
+        connectionFactory = new GoogleBigQueryConnectionFactory()
+                .setCredentialsFileLocation(CREDENTIALS_FILE_LOCATION);
+
+        GoogleBigQueryComponent component = new GoogleBigQueryComponent();
+        component.setConnectionFactory(connectionFactory);
+
+        context.addComponent("google-bigquery", component);
+        context.getPropertiesComponent().setLocation("ref:prop");
+    }
+
+    protected void addBigquerySqlComponent(CamelContext context) {
+
+        connectionFactory = new GoogleBigQueryConnectionFactory()
+                .setCredentialsFileLocation(CREDENTIALS_FILE_LOCATION);
+
+        GoogleBigQuerySQLComponent component = new GoogleBigQuerySQLComponent();
+        component.setConnectionFactory(connectionFactory);
+
+        context.addComponent("google-bigquery-sql", component);
+        context.getPropertiesComponent().setLocation("ref:prop");
+    }
+
+    @Override
+    protected CamelContext createCamelContext() throws Exception {
+        CamelContext context = super.createCamelContext();
+        addBigqueryComponent(context);
+        addBigquerySqlComponent(context);
+        return context;
+    }
+
+    @BindToRegistry("prop")
+    public Properties loadRegProperties() throws Exception {
+        return loadProperties();
+    }
+
+    public GoogleBigQueryConnectionFactory getConnectionFactory() {
+        return connectionFactory;
+    }
+
+    protected void assertRowExist(String tableName, Map<String, String> row) throws Exception {
+        String query = "SELECT * FROM " + DATASET_ID + "." + tableName + " WHERE "
+                       + row.entrySet().stream()
+                               .map(e -> e.getKey() + " = '" + e.getValue() + "'")
+                               .collect(Collectors.joining(" AND "));
+        LOGGER.debug("Query: {}", query);
+        QueryJobConfiguration queryJobConfiguration = QueryJobConfiguration.of(query);
+        TableResult tableResult = getConnectionFactory()
+                .getDefaultClient()
+                .query(queryJobConfiguration, JobId.of(PROJECT_ID, UUID.randomUUID().toString()));
+        assertEquals(1, tableResult.getTotalRows());
+    }
+
+    protected void createBqTable(String tableId) throws Exception {
+        Schema schema = createSchema();
+        TableId id = TableId.of(PROJECT_ID, DATASET_ID, tableId);
+        TableDefinition.Builder builder = StandardTableDefinition.newBuilder().setSchema(schema);
+        TableInfo tableInfo = TableInfo.of(id, builder.build());
+        try {
+            getConnectionFactory().getDefaultClient().create(tableInfo);
+        } catch (GoogleJsonResponseException e) {
+            if (e.getDetails().getCode() == 409) {
+                LOGGER.info("Table {} already exist");
+            } else {
+                throw e;
+            }
+        }
+    }
+
+    private Schema createSchema() throws Exception {
+        FieldList fields = FieldList.of(
+                Field.of("id", StandardSQLTypeName.NUMERIC),
+                Field.of("col1", StandardSQLTypeName.STRING),
+                Field.of("col2", StandardSQLTypeName.STRING));
+        return Schema.of(fields);
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/DynamicTableIdTest.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/DynamicTableIdTest.java
new file mode 100644
index 0000000..f567ada
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/DynamicTableIdTest.java
@@ -0,0 +1,100 @@
+/*
+ * 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.bigquery.integration;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Exchange;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.google.bigquery.GoogleBigQueryConstants;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.support.DefaultExchange;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class DynamicTableIdTest extends BigQueryTestSupport {
+    private static final String TABLE_ID_1 = "dynamic_table_1";
+    private static final String TABLE_ID_2 = "dynamic_table_2";
+
+    @EndpointInject("direct:in")
+    private Endpoint directIn;
+
+    @EndpointInject("google-bigquery:{{project.id}}:{{bigquery.datasetId}}")
+    private Endpoint bigqueryEndpoint;
+
+    @EndpointInject("mock:sendResult")
+    private MockEndpoint sendResult;
+
+    @Produce("direct:in")
+    private ProducerTemplate producer;
+
+    @BeforeEach
+    public void init() throws Exception {
+        createBqTable(TABLE_ID_1);
+        createBqTable(TABLE_ID_2);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                from(directIn)
+                        .routeId("DynamicTable")
+                        .to(bigqueryEndpoint)
+                        .to(sendResult);
+            }
+        };
+    }
+
+    @Test
+    public void dynamicTable() throws Exception {
+        Exchange exchange1 = new DefaultExchange(context);
+        String uuidCol11 = UUID.randomUUID().toString();
+        String uuidCol21 = UUID.randomUUID().toString();
+        exchange1.getIn().setHeader(GoogleBigQueryConstants.TABLE_ID, TABLE_ID_1);
+
+        Map<String, String> object1 = new HashMap<>();
+        object1.put("col1", uuidCol11);
+        object1.put("col2", uuidCol21);
+        exchange1.getIn().setBody(object1);
+
+        Exchange exchange2 = new DefaultExchange(context);
+        String uuidCol12 = UUID.randomUUID().toString();
+        String uuidCol22 = UUID.randomUUID().toString();
+        exchange2.getIn().setHeader(GoogleBigQueryConstants.TABLE_ID, TABLE_ID_2);
+
+        Map<String, String> object2 = new HashMap<>();
+        object2.put("col1", uuidCol12);
+        object2.put("col2", uuidCol22);
+        exchange2.getIn().setBody(object2);
+
+        sendResult.expectedMessageCount(2);
+        producer.send(exchange1);
+        producer.send(exchange2);
+        sendResult.assertIsSatisfied(4000);
+
+        assertRowExist(TABLE_ID_1, object1);
+        assertRowExist(TABLE_ID_2, object2);
+    }
+
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/InsertIdTest.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/InsertIdTest.java
new file mode 100644
index 0000000..bca8e3e
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/InsertIdTest.java
@@ -0,0 +1,142 @@
+/*
+ * 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.bigquery.integration;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Exchange;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.google.bigquery.GoogleBigQueryConstants;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.support.DefaultExchange;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class InsertIdTest extends BigQueryTestSupport {
+    private static final String TABLE_ID = "insertId";
+
+    @EndpointInject("direct:withInsertId")
+    private Endpoint directInWithInsertId;
+
+    @EndpointInject("direct:in")
+    private Endpoint directIn;
+
+    @EndpointInject("google-bigquery:{{project.id}}:{{bigquery.datasetId}}:"
+                    + TABLE_ID + "?useAsInsertId=col1")
+    private Endpoint bigqueryEndpointWithInsertId;
+
+    @EndpointInject("google-bigquery:{{project.id}}:{{bigquery.datasetId}}:"
+                    + TABLE_ID)
+    private Endpoint bigqueryEndpoint;
+
+    @EndpointInject("mock:sendResult")
+    private MockEndpoint sendResult;
+
+    @EndpointInject("mock:sendResultWithInsertId")
+    private MockEndpoint sendResultWithInsertId;
+
+    @Produce("direct:withInsertId")
+    private ProducerTemplate producerWithInsertId;
+
+    @Produce("direct:in")
+    private ProducerTemplate producer;
+
+    @BeforeEach
+    public void init() throws Exception {
+        createBqTable(TABLE_ID);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                from(directInWithInsertId)
+                        .routeId("SingleRowWithInsertId")
+                        .to(bigqueryEndpointWithInsertId)
+                        .to(sendResultWithInsertId);
+
+                from(directIn)
+                        .routeId("SingleRow")
+                        .to(bigqueryEndpoint)
+                        .to(sendResult);
+            }
+        };
+    }
+
+    @Test
+    public void sendTwoMessagesExpectOneRowUsingConfig() throws Exception {
+
+        Exchange exchange = new DefaultExchange(context);
+        String uuidCol1 = UUID.randomUUID().toString();
+        String uuidCol2 = UUID.randomUUID().toString();
+
+        Map<String, String> object = new HashMap<>();
+        object.put("col1", uuidCol1);
+        object.put("col2", uuidCol2);
+        exchange.getIn().setBody(object);
+
+        Exchange exchange2 = new DefaultExchange(context);
+        String uuid2Col2 = UUID.randomUUID().toString();
+
+        object.put("col1", uuidCol1);
+        object.put("col2", uuid2Col2);
+        exchange2.getIn().setBody(object);
+
+        sendResultWithInsertId.expectedMessageCount(2);
+        producerWithInsertId.send(exchange);
+        producerWithInsertId.send(exchange2);
+        sendResultWithInsertId.assertIsSatisfied(4000);
+
+        assertRowExist(TABLE_ID, object);
+    }
+
+    @Test
+    public void sendTwoMessagesExpectOneRowUsingExchange() throws Exception {
+
+        Exchange exchange = new DefaultExchange(context);
+        String uuidCol1 = UUID.randomUUID().toString();
+        String uuidCol2 = UUID.randomUUID().toString();
+
+        Map<String, String> object = new HashMap<>();
+        object.put("col1", uuidCol1);
+        object.put("col2", uuidCol2);
+        exchange.getIn().setBody(object);
+        exchange.getIn().setHeader(GoogleBigQueryConstants.INSERT_ID, uuidCol1);
+
+        Exchange exchange2 = new DefaultExchange(context);
+        String uuid2Col2 = UUID.randomUUID().toString();
+
+        object.put("col1", uuidCol1);
+        object.put("col2", uuid2Col2);
+        exchange2.getIn().setBody(object);
+        exchange2.getIn().setHeader(GoogleBigQueryConstants.INSERT_ID, uuidCol1);
+
+        sendResult.expectedMessageCount(2);
+        producer.send(exchange);
+        producer.send(exchange2);
+        sendResult.assertIsSatisfied(4000);
+
+        assertRowExist(TABLE_ID, object);
+    }
+
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/SingleRowTest.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/SingleRowTest.java
new file mode 100644
index 0000000..4786cb4
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/SingleRowTest.java
@@ -0,0 +1,84 @@
+/*
+ * 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.bigquery.integration;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Exchange;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.support.DefaultExchange;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class SingleRowTest extends BigQueryTestSupport {
+    private static final String TABLE_ID = "singlerow";
+
+    @EndpointInject("direct:in")
+    private Endpoint directIn;
+
+    @EndpointInject("google-bigquery:{{project.id}}:{{bigquery.datasetId}}:" + TABLE_ID)
+    private Endpoint bigqueryEndpoint;
+
+    @EndpointInject("mock:sendResult")
+    private MockEndpoint sendResult;
+
+    @Produce("direct:in")
+    private ProducerTemplate producer;
+
+    @BeforeEach
+    public void init() throws Exception {
+        createBqTable(TABLE_ID);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                from(directIn)
+                        .routeId("SingleRow")
+                        .to(bigqueryEndpoint)
+                        .to(sendResult);
+            }
+        };
+    }
+
+    @Test
+    public void singleMessage() throws Exception {
+        Exchange exchange = new DefaultExchange(context);
+        String uuidCol1 = UUID.randomUUID().toString();
+        String uuidCol2 = UUID.randomUUID().toString();
+
+        Map<String, String> object = new HashMap<>();
+        object.put("col1", uuidCol1);
+        object.put("col2", uuidCol2);
+        exchange.getIn().setBody(object);
+
+        sendResult.expectedMessageCount(1);
+        producer.send(exchange);
+        sendResult.assertIsSatisfied(4000);
+
+        assertRowExist(TABLE_ID, object);
+    }
+
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryFromResourceTest.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryFromResourceTest.java
new file mode 100644
index 0000000..f0af94a
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryFromResourceTest.java
@@ -0,0 +1,86 @@
+/*
+ * 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.bigquery.integration.sql;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Exchange;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.google.bigquery.integration.BigQueryTestSupport;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.support.DefaultExchange;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class SqlQueryFromResourceTest extends BigQueryTestSupport {
+    private static final String TABLE_ID = "test_sql_table";
+
+    @EndpointInject("direct:in")
+    private Endpoint directIn;
+
+    @EndpointInject("google-bigquery-sql:{{project.id}}:classpath:sql/insert.sql")
+    private Endpoint bigqueryEndpoint;
+
+    @EndpointInject("mock:sendResult")
+    private MockEndpoint sendResult;
+
+    @Produce("direct:in")
+    private ProducerTemplate producer;
+
+    @BeforeEach
+    public void init() throws Exception {
+        createBqTable(TABLE_ID);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                from(directIn)
+                        .routeId("InsertRow")
+                        .to(bigqueryEndpoint)
+                        .to(sendResult);
+            }
+        };
+    }
+
+    @Test
+    public void insertRecordBySql() throws Exception {
+        Exchange exchange = new DefaultExchange(context);
+        String uuidCol1 = UUID.randomUUID().toString();
+        String uuidCol2 = UUID.randomUUID().toString();
+
+        Map<String, String> object = new HashMap<>();
+        object.put("col1", uuidCol1);
+        object.put("col2", uuidCol2);
+        exchange.getIn().setBody(object);
+
+        sendResult.expectedMessageCount(1);
+        sendResult.expectedBodiesReceived(1);
+        producer.send(exchange);
+        sendResult.assertIsSatisfied(4000);
+
+        assertRowExist(TABLE_ID, object);
+    }
+
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryTest.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryTest.java
new file mode 100644
index 0000000..564cd8f
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryTest.java
@@ -0,0 +1,87 @@
+/*
+ * 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.bigquery.integration.sql;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Exchange;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.google.bigquery.integration.BigQueryTestSupport;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.support.DefaultExchange;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class SqlQueryTest extends BigQueryTestSupport {
+    private static final String TABLE_ID = "test_sql_table";
+
+    @EndpointInject("direct:in")
+    private Endpoint directIn;
+
+    @EndpointInject("google-bigquery-sql:{{project.id}}: insert into {{bigquery.datasetId}}." + TABLE_ID
+                    + "(col1, col2) values (@col1, @col2)")
+    private Endpoint bigqueryEndpoint;
+
+    @EndpointInject("mock:sendResult")
+    private MockEndpoint sendResult;
+
+    @Produce("direct:in")
+    private ProducerTemplate producer;
+
+    @BeforeEach
+    public void init() throws Exception {
+        createBqTable(TABLE_ID);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                from(directIn)
+                        .routeId("InsertRow")
+                        .to(bigqueryEndpoint)
+                        .to(sendResult);
+            }
+        };
+    }
+
+    @Test
+    public void insertRecordBySql() throws Exception {
+        Exchange exchange = new DefaultExchange(context);
+        String uuidCol1 = UUID.randomUUID().toString();
+        String uuidCol2 = UUID.randomUUID().toString();
+
+        Map<String, String> object = new HashMap<>();
+        object.put("col1", uuidCol1);
+        object.put("col2", uuidCol2);
+        exchange.getIn().setBody(object);
+
+        sendResult.expectedMessageCount(1);
+        sendResult.expectedBodiesReceived(1);
+        producer.send(exchange);
+        sendResult.assertIsSatisfied(4000);
+
+        assertRowExist(TABLE_ID, object);
+    }
+
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/BaseBigQueryTest.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/BaseBigQueryTest.java
new file mode 100644
index 0000000..29df5e5
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/BaseBigQueryTest.java
@@ -0,0 +1,64 @@
+/*
+ * 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.bigquery.unit;
+
+import com.google.api.services.bigquery.Bigquery;
+import com.google.cloud.bigquery.BigQuery;
+import com.google.cloud.bigquery.InsertAllResponse;
+import org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration;
+import org.apache.camel.component.google.bigquery.GoogleBigQueryEndpoint;
+import org.apache.camel.component.google.bigquery.GoogleBigQueryProducer;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.BeforeEach;
+
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class BaseBigQueryTest extends CamelTestSupport {
+    protected GoogleBigQueryEndpoint endpoint = mock(GoogleBigQueryEndpoint.class);
+    protected GoogleBigQueryProducer producer;
+    protected Bigquery.Tabledata tabledataMock;
+    protected String tableId = "testTableId";
+    protected String datasetId = "testDatasetId";
+    protected String projectId = "testProjectId";
+    protected GoogleBigQueryConfiguration configuration = new GoogleBigQueryConfiguration();
+    protected BigQuery bigquery;
+
+    @BeforeEach
+    public void init() throws Exception {
+        setupBigqueryMock();
+        producer = createProducer();
+
+    }
+
+    protected GoogleBigQueryProducer createProducer() throws Exception {
+        configuration.setProjectId(projectId);
+        configuration.setTableId(tableId);
+        configuration.setDatasetId(datasetId);
+        configuration.setTableId("testTableId");
+
+        return new GoogleBigQueryProducer(bigquery, endpoint, configuration);
+    }
+
+    protected void setupBigqueryMock() throws Exception {
+        bigquery = mock(BigQuery.class);
+        tabledataMock = mock(Bigquery.Tabledata.class);
+        InsertAllResponse mockResponse = mock(InsertAllResponse.class);
+        when(bigquery.insertAll(any())).thenReturn(mockResponse);
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/GoogleBigQueryProducerTest.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/GoogleBigQueryProducerTest.java
new file mode 100644
index 0000000..2658257
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/GoogleBigQueryProducerTest.java
@@ -0,0 +1,86 @@
+/*
+ * 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.bigquery.unit;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.google.cloud.bigquery.InsertAllRequest;
+import org.apache.camel.Exchange;
+import org.apache.camel.component.google.bigquery.GoogleBigQueryConstants;
+import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.mockito.Mockito.verify;
+
+public class GoogleBigQueryProducerTest extends BaseBigQueryTest {
+
+    @Test
+    public void sendMessage() throws Exception {
+        producer.process(createExchangeWithBody(new HashMap<>()));
+        ArgumentCaptor<InsertAllRequest> dataCaptor = ArgumentCaptor.forClass(InsertAllRequest.class);
+        verify(bigquery).insertAll(dataCaptor.capture());
+        List<InsertAllRequest> requests = dataCaptor.getAllValues();
+        assertEquals(1, requests.size());
+        assertEquals(1, requests.get(0).getRows().size());
+        assertNull(requests.get(0).getRows().get(0).getId());
+    }
+
+    @Test
+    public void sendMessageWithTableId() throws Exception {
+        Exchange exchange = createExchangeWithBody(new HashMap<>());
+        exchange.getIn().setHeader(GoogleBigQueryConstants.TABLE_ID, "exchange_table_id");
+        producer.process(exchange);
+        ArgumentCaptor<InsertAllRequest> dataCaptor = ArgumentCaptor.forClass(InsertAllRequest.class);
+        verify(bigquery).insertAll(dataCaptor.capture());
+        List<InsertAllRequest> requests = dataCaptor.getAllValues();
+        assertEquals(1, requests.size());
+        assertEquals(1, requests.get(0).getRows().size());
+        assertNull(requests.get(0).getRows().get(0).getId());
+    }
+
+    @Test
+    public void useAsInsertIdConfig() throws Exception {
+        configuration.setUseAsInsertId("row1");
+        Map<String, String> object = new HashMap<>();
+        object.put("row1", "value1");
+        producer.process(createExchangeWithBody(object));
+        ArgumentCaptor<InsertAllRequest> dataCaptor = ArgumentCaptor.forClass(InsertAllRequest.class);
+        verify(bigquery).insertAll(dataCaptor.capture());
+        List<InsertAllRequest> requests = dataCaptor.getAllValues();
+        assertEquals(1, requests.size());
+        assertEquals(1, requests.get(0).getRows().size());
+        assertEquals("value1", requests.get(0).getRows().get(0).getId());
+    }
+
+    @Test
+    public void listOfMessages() throws Exception {
+        List<Map<String, String>> messages = new ArrayList<>();
+        messages.add(new HashMap<>());
+        messages.add(new HashMap<>());
+        producer.process(createExchangeWithBody(messages));
+        ArgumentCaptor<InsertAllRequest> dataCaptor = ArgumentCaptor.forClass(InsertAllRequest.class);
+        verify(bigquery).insertAll(dataCaptor.capture());
+        List<InsertAllRequest> requests = dataCaptor.getAllValues();
+        assertEquals(1, requests.size());
+        assertEquals(2, requests.get(0).getRows().size());
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLComponentTest.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLComponentTest.java
new file mode 100644
index 0000000..e05d002
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLComponentTest.java
@@ -0,0 +1,49 @@
+/*
+ * 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.bigquery.unit.sql;
+
+import org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLComponent;
+import org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class GoogleBigQuerySQLComponentTest extends CamelTestSupport {
+
+    @Test
+    public void testQuerySet() throws Exception {
+        String uri = "google-bigquery-sql:myproject:insert into testDatasetId.testTableId(id) values(1)";
+
+        GoogleBigQuerySQLEndpoint endpoint
+                = (GoogleBigQuerySQLEndpoint) new GoogleBigQuerySQLComponent(context).createEndpoint(uri);
+
+        assertEquals("myproject", endpoint.getConfiguration().getProjectId());
+        assertEquals("insert into testDatasetId.testTableId(id) values(1)", endpoint.getConfiguration().getQueryString());
+    }
+
+    @Test
+    public void testQueryFromResourceSet() throws Exception {
+        String uri = "google-bigquery-sql:myproject:classpath:sql/delete.sql";
+
+        GoogleBigQuerySQLEndpoint endpoint
+                = (GoogleBigQuerySQLEndpoint) new GoogleBigQuerySQLComponent(context).createEndpoint(uri);
+
+        assertEquals("myproject", endpoint.getConfiguration().getProjectId());
+        assertEquals("classpath:sql/delete.sql", endpoint.getConfiguration().getQueryString());
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerBaseTest.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerBaseTest.java
new file mode 100644
index 0000000..0c99830
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerBaseTest.java
@@ -0,0 +1,55 @@
+/*
+ * 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.bigquery.unit.sql;
+
+import com.google.cloud.bigquery.BigQuery;
+import com.google.cloud.bigquery.JobId;
+import com.google.cloud.bigquery.QueryJobConfiguration;
+import com.google.cloud.bigquery.TableResult;
+import org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration;
+import org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLEndpoint;
+import org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLProducer;
+import org.apache.camel.test.junit5.CamelTestSupport;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class GoogleBigQuerySQLProducerBaseTest extends CamelTestSupport {
+    protected GoogleBigQuerySQLEndpoint endpoint = mock(GoogleBigQuerySQLEndpoint.class);
+    protected GoogleBigQuerySQLProducer producer;
+    protected String sql;
+    protected String projectId = "testProjectId";
+    protected GoogleBigQuerySQLConfiguration configuration = new GoogleBigQuerySQLConfiguration();
+    protected BigQuery bigquery;
+    protected TableResult tableResult;
+
+    protected GoogleBigQuerySQLProducer createAndStartProducer() throws Exception {
+        configuration.setProjectId(projectId);
+        configuration.setQueryString(sql);
+
+        GoogleBigQuerySQLProducer sqlProducer = new GoogleBigQuerySQLProducer(bigquery, endpoint, configuration);
+        sqlProducer.start();
+        return sqlProducer;
+    }
+
+    protected void setupBigqueryMock() throws Exception {
+        bigquery = mock(BigQuery.class);
+        tableResult = mock(TableResult.class);
+        when(bigquery.query(any(QueryJobConfiguration.class), any(JobId.class))).thenReturn(tableResult);
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithParamersTest.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithParamersTest.java
new file mode 100644
index 0000000..1812b22
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithParamersTest.java
@@ -0,0 +1,137 @@
+/*
+ * 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.bigquery.unit.sql;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.google.cloud.bigquery.JobId;
+import com.google.cloud.bigquery.QueryJobConfiguration;
+import com.google.cloud.bigquery.QueryParameterValue;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.RuntimeExchangeException;
+import org.apache.camel.component.google.bigquery.GoogleBigQueryConstants;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
+
+import static org.apache.camel.component.google.bigquery.integration.BigQueryTestSupport.PROJECT_ID;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+public class GoogleBigQuerySQLProducerWithParamersTest extends GoogleBigQuerySQLProducerBaseTest {
+
+    @BeforeEach
+    public void init() throws Exception {
+        sql = "insert into testDatasetId.testTableId(id, data) values(@id, @data)";
+        setupBigqueryMock();
+        producer = createAndStartProducer();
+    }
+
+    @Test
+    public void sendMessageWithParametersInBody() throws Exception {
+        Map<String, String> body = new HashMap<>();
+        body.put("id", "100");
+        body.put("data", "some data");
+        producer.process(createExchangeWithBody(body));
+
+        ArgumentCaptor<QueryJobConfiguration> dataCaptor = ArgumentCaptor.forClass(QueryJobConfiguration.class);
+        verify(bigquery).query(dataCaptor.capture(), any(JobId.class));
+
+        QueryJobConfiguration request = dataCaptor.getValue();
+        assertEquals(sql, request.getQuery());
+
+        Map<String, QueryParameterValue> namedParameters = request.getNamedParameters();
+        assertEquals(2, namedParameters.size());
+
+        assertTrue(namedParameters.containsKey("id"));
+        assertEquals("100", namedParameters.get("id").getValue());
+
+        assertTrue(namedParameters.containsKey("data"));
+        assertEquals("some data", namedParameters.get("data").getValue());
+    }
+
+    @Test
+    public void sendMessageWithParametersInBodyAndHeaders() throws Exception {
+        Map<String, String> body = new HashMap<>();
+        body.put("id", "100");
+
+        Exchange exchange = createExchangeWithBody(body);
+        Message message = exchange.getMessage();
+        message.setHeader("id", "200");
+        message.setHeader("data", "some data");
+
+        producer.process(exchange);
+
+        ArgumentCaptor<QueryJobConfiguration> dataCaptor = ArgumentCaptor.forClass(QueryJobConfiguration.class);
+        verify(bigquery).query(dataCaptor.capture(), any(JobId.class));
+
+        QueryJobConfiguration request = dataCaptor.getValue();
+        assertEquals(sql, request.getQuery());
+
+        Map<String, QueryParameterValue> namedParameters = request.getNamedParameters();
+        assertEquals(2, namedParameters.size());
+
+        assertTrue(namedParameters.containsKey("id"));
+        assertEquals("100", namedParameters.get("id").getValue(), "Body data must have higher priority");
+
+        assertTrue(namedParameters.containsKey("data"));
+        assertEquals("some data", namedParameters.get("data").getValue());
+    }
+
+    @Test
+    public void sendMessageWithJobIdHeader() throws Exception {
+        Map<String, String> body = new HashMap<>();
+        body.put("id", "100");
+
+        Exchange exchange = createExchangeWithBody(body);
+        Message message = exchange.getMessage();
+        message.setHeader("id", "200");
+        message.setHeader("data", "some data");
+
+        JobId jobId = JobId.of(PROJECT_ID, "a-test-job");
+        message.setHeader(GoogleBigQueryConstants.JOB_ID, jobId);
+
+        producer.process(exchange);
+
+        ArgumentCaptor<QueryJobConfiguration> dataCaptor = ArgumentCaptor.forClass(QueryJobConfiguration.class);
+        verify(bigquery).query(dataCaptor.capture(), eq(jobId));
+
+        QueryJobConfiguration request = dataCaptor.getValue();
+        assertEquals(sql, request.getQuery());
+
+        Map<String, QueryParameterValue> namedParameters = request.getNamedParameters();
+        assertEquals(2, namedParameters.size());
+
+        assertTrue(namedParameters.containsKey("id"));
+        assertEquals("100", namedParameters.get("id").getValue(), "Body data must have higher priority");
+
+        assertTrue(namedParameters.containsKey("data"));
+        assertEquals("some data", namedParameters.get("data").getValue());
+    }
+
+    @Test
+    public void sendMessageWithoutParameters() throws Exception {
+        assertThrows(RuntimeExchangeException.class,
+                () -> producer.process(createExchangeWithBody(new HashMap<>())));
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithPatternTest.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithPatternTest.java
new file mode 100644
index 0000000..4b51046
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithPatternTest.java
@@ -0,0 +1,71 @@
+/*
+ * 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.bigquery.unit.sql;
+
+import java.util.List;
+
+import com.google.cloud.bigquery.JobId;
+import com.google.cloud.bigquery.QueryJobConfiguration;
+import org.apache.camel.Exchange;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+
+public class GoogleBigQuerySQLProducerWithPatternTest extends GoogleBigQuerySQLProducerBaseTest {
+
+    @BeforeEach
+    public void init() throws Exception {
+        sql = "insert into ${testDatasetId}.testTableId(id, data) values(1, 'test')";
+        setupBigqueryMock();
+        producer = createAndStartProducer();
+    }
+
+    @Test
+    public void sendExchangeWithProperties() throws Exception {
+        Exchange exchange = createExchangeWithBody(null);
+        exchange.getProperties().put("testDatasetId", "dataset");
+        String expected = "insert into dataset.testTableId(id, data) values(1, 'test')";
+        producer.process(exchange);
+
+        ArgumentCaptor<QueryJobConfiguration> dataCaptor = ArgumentCaptor.forClass(QueryJobConfiguration.class);
+        verify(bigquery).query(dataCaptor.capture(), any(JobId.class));
+
+        List<QueryJobConfiguration> requests = dataCaptor.getAllValues();
+        assertEquals(1, requests.size());
+        assertEquals(expected, requests.get(0).getQuery());
+    }
+
+    @Test
+    public void sendMessageWithHeaders() throws Exception {
+        Exchange exchange = createExchangeWithBody(null);
+        exchange.getMessage().getHeaders().put("testDatasetId", "dataset");
+        String expected = "insert into dataset.testTableId(id, data) values(1, 'test')";
+        producer.process(exchange);
+
+        ArgumentCaptor<QueryJobConfiguration> dataCaptor = ArgumentCaptor.forClass(QueryJobConfiguration.class);
+        verify(bigquery).query(dataCaptor.capture(), any(JobId.class));
+
+        List<QueryJobConfiguration> requests = dataCaptor.getAllValues();
+        assertEquals(1, requests.size());
+        assertEquals(expected, requests.get(0).getQuery());
+    }
+
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/SqlHelperTest.java b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/SqlHelperTest.java
new file mode 100644
index 0000000..913962c
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/SqlHelperTest.java
@@ -0,0 +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.bigquery.unit.sql;
+
+import java.util.Set;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.RuntimeExchangeException;
+import org.apache.camel.component.google.bigquery.sql.SqlHelper;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.when;
+
+public class SqlHelperTest {
+
+    String query = "INSERT INTO ${report}.test( -- TODO \n" + "  id,\n" + "  region\n" + ")\n" + "SELECT\n" + "  id,\n"
+                   + "  region\n" + "FROM\n" + "  ${import}.test\n" + "WHERE\n"
+                   + "  rec_date = @date AND id = @id\n";
+
+    String expected = "INSERT INTO report_data.test( -- TODO \n" + "  id,\n" + "  region\n" + ")\n" + "SELECT\n" + "  id,\n"
+                      + "  region\n" + "FROM\n" + "  import_data.test\n"
+                      + "WHERE\n" + "  rec_date = @date AND id = @id\n";
+
+    Exchange exchange = Mockito.mock(Exchange.class);
+    Message message = Mockito.mock(Message.class);
+
+    private CamelContext context = Mockito.mock(CamelContext.class);
+
+    @Test
+    public void testResolveQuery() throws Exception {
+        String answer = SqlHelper.resolveQuery(context, "delete from test.test_sql_table where id = 1", null);
+        assertEquals("delete from test.test_sql_table where id = 1", answer);
+    }
+
+    @Test
+    @Disabled
+    public void testResolveClasspathQuery() throws Exception {
+        String answer = SqlHelper.resolveQuery(context, "classpath:sql/delete.sql", ":");
+        assertEquals("delete from test.test_sql_table where id = @id", answer);
+    }
+
+    @Test
+    public void testTranslateQuery() {
+        when(exchange.getMessage()).thenReturn(message);
+        when(message.getHeader(eq("report"), eq(String.class))).thenReturn("report_data");
+        when(message.getHeader(eq("import"), eq(String.class))).thenReturn("import_data");
+
+        String answer = SqlHelper.translateQuery(query, exchange);
+        assertEquals(expected, answer);
+    }
+
+    @Test
+    public void testTranslateQueryProperties() {
+        when(exchange.getMessage()).thenReturn(message);
+        when(exchange.getProperty(eq("report"), eq(String.class))).thenReturn("report_data");
+        when(exchange.getProperty(eq("import"), eq(String.class))).thenReturn("import_data");
+
+        String answer = SqlHelper.translateQuery(query, exchange);
+        assertEquals(expected, answer);
+    }
+
+    @Test
+    public void testTranslateQueryWithoutParam() {
+        when(exchange.getMessage()).thenReturn(message);
+        when(message.getHeader(eq("report"), eq(String.class))).thenReturn("report_data");
+        assertThrows(RuntimeExchangeException.class,
+                () -> SqlHelper.translateQuery(query, exchange));
+    }
+
+    @Test
+    public void testExtractParameterNames() {
+        Set<String> answer = SqlHelper.extractParameterNames(query);
+        assertEquals(2, answer.size());
+        assertTrue(answer.contains("date"), "Parameter 'date' not found");
+        assertTrue(answer.contains("id"), "Parameter 'id' not found");
+    }
+}
diff --git a/components/camel-google/camel-google-bigquery/src/test/resources/log4j.properties b/components/camel-google/camel-google-bigquery/src/test/resources/log4j.properties
new file mode 100644
index 0000000..4180b0d
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/resources/log4j.properties
@@ -0,0 +1,37 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+#
+# The logging properties used during tests..
+#
+log4j.rootLogger=INFO, out
+
+#log4j.logger.org.apache.camel.component.google.pubsub=TRACE
+#log4j.logger.org.apache.camel=DEBUG
+#log4j.logger.org.apache.camel.impl=WARN
+
+# CONSOLE appender not used by default
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+
+# File appender
+log4j.appender.out=org.apache.log4j.FileAppender
+log4j.appender.out.layout=org.apache.log4j.PatternLayout
+log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+log4j.appender.out.file=target/camel-google-bigquery-test.log
+log4j.appender.out.append=true
diff --git a/components/camel-google/camel-google-bigquery/src/test/resources/log4j2.properties b/components/camel-google/camel-google-bigquery/src/test/resources/log4j2.properties
new file mode 100644
index 0000000..3f9aba8
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/resources/log4j2.properties
@@ -0,0 +1,30 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+
+appender.file.type = File
+appender.file.name = file
+appender.file.fileName = target/camel-google-bigquery-test.log
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+appender.out.type = Console
+appender.out.name = out
+appender.out.layout.type = PatternLayout
+appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+rootLogger.level = INFO
+rootLogger.appenderRef.file.ref = file
+
diff --git a/components/camel-google/camel-google-bigquery/src/test/resources/logging.properties b/components/camel-google/camel-google-bigquery/src/test/resources/logging.properties
new file mode 100644
index 0000000..0cc82a5
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/resources/logging.properties
@@ -0,0 +1,21 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+.level=SEVERE
+handlers= java.util.logging.ConsoleHandler
+java.util.logging.ConsoleHandler.level = SEVERE
+java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
diff --git a/components/camel-google/camel-google-bigquery/src/test/resources/simple.properties b/components/camel-google/camel-google-bigquery/src/test/resources/simple.properties
new file mode 100644
index 0000000..88c4916
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/resources/simple.properties
@@ -0,0 +1,24 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+project.id=scg-bi-sandbox
+bigquery.datasetId=test_dataset
+# Service Account Name and Key do not belong to any project
+# Have been generated for BigQuery Emulator
+#service.account=
+#service.key=
+#service.credentialsFileLocation=
diff --git a/components/camel-google/camel-google-bigquery/src/test/resources/sql/delete.sql b/components/camel-google/camel-google-bigquery/src/test/resources/sql/delete.sql
new file mode 100644
index 0000000..1a05bfd
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/resources/sql/delete.sql
@@ -0,0 +1,18 @@
+--
+-- 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.
+--
+
+delete from test.test_sql_table where id = :id
\ No newline at end of file
diff --git a/components/camel-google/camel-google-bigquery/src/test/resources/sql/insert.sql b/components/camel-google/camel-google-bigquery/src/test/resources/sql/insert.sql
new file mode 100644
index 0000000..05d19bd
--- /dev/null
+++ b/components/camel-google/camel-google-bigquery/src/test/resources/sql/insert.sql
@@ -0,0 +1,19 @@
+--
+-- 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.
+--
+
+insert into test.test_sql_table (col1, col2)
+values (@col1, @col2)
\ No newline at end of file
diff --git a/components/camel-google/camel-google-calendar/pom.xml b/components/camel-google/camel-google-calendar/pom.xml
new file mode 100644
index 0000000..4c0a159
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/pom.xml
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-google-parent</artifactId>
+        <version>3.9.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-google-calendar</artifactId>
+    <packaging>jar</packaging>
+    <name>Camel :: Google Calendar</name>
+    <description>Camel Component for GoogleCalendar</description>
+
+    <properties>
+        <schemeName>google-calendar</schemeName>
+        <componentName>GoogleCalendar</componentName>
+        <componentPackage>org.apache.camel.component.google.calendar</componentPackage>
+        <outPackage>org.apache.camel.component.google.calendar.internal</outPackage>
+        <camel.osgi.private.pkg>org.apache.camel.component.google.calendar.internal</camel.osgi.private.pkg>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-support</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.api-client</groupId>
+            <artifactId>google-api-client</artifactId>
+            <version>${google-api-client-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.oauth-client</groupId>
+            <artifactId>google-oauth-client-jetty</artifactId>
+            <version>${google-api-client-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.http-client</groupId>
+            <artifactId>google-http-client-jackson2</artifactId>
+            <version>${google-api-client-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.apis</groupId>
+            <artifactId>google-api-services-calendar</artifactId>
+            <version>${google-api-services-calendar-version}</version>
+        </dependency>
+
+        <!-- logging -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- testing -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <defaultGoal>install</defaultGoal>
+
+        <plugins>
+
+            <!-- generate Component source and test source -->
+            <plugin>
+                <groupId>org.apache.camel</groupId>
+                <artifactId>camel-api-component-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>generate-test-component-classes</id>
+                        <goals>
+                            <goal>fromApis</goal>
+                        </goals>
+                        <configuration>
+                            <apis>
+                                <api>
+                                    <apiName>acl</apiName>
+                                    <proxyClass>com.google.api.services.calendar.Calendar$Acl</proxyClass>
+                                    <fromJavasource />
+                                </api>
+                                <api>
+                                    <apiName>list</apiName>
+                                    <proxyClass>com.google.api.services.calendar.Calendar$CalendarList</proxyClass>
+                                    <fromJavasource />
+                                </api>
+                                <api>
+                                    <apiName>calendars</apiName>
+                                    <proxyClass>com.google.api.services.calendar.Calendar$Calendars</proxyClass>
+                                    <fromJavasource />
+                                </api>
+                                <api>
+                                    <apiName>channels</apiName>
+                                    <proxyClass>com.google.api.services.calendar.Calendar$Channels</proxyClass>
+                                    <fromJavasource />
+                                </api>
+                                <api>
+                                    <apiName>colors</apiName>
+                                    <proxyClass>com.google.api.services.calendar.Calendar$Colors</proxyClass>
+                                    <fromJavasource />
+                                </api>
+                                <api>
+                                    <apiName>freebusy</apiName>
+                                    <proxyClass>com.google.api.services.calendar.Calendar$Freebusy</proxyClass>
+                                    <fromJavasource />
+                                </api>
+                                <api>
+                                    <apiName>events</apiName>
+                                    <proxyClass>com.google.api.services.calendar.Calendar$Events</proxyClass>
+                                    <fromJavasource />
+                                </api>
+                                <api>
+                                    <apiName>settings</apiName>
+                                    <proxyClass>com.google.api.services.calendar.Calendar$Settings</proxyClass>
+                                    <fromJavasource />
+                                </api>
+                            </apis>
+                            <substitutions>
+                                <substitution>
+                                    <method>^.+$</method>
+                                    <argName>content</argName>
+                                    <argType>com.google.api.services.calendar.model.Channel</argType>
+                                    <replacement>contentChannel</replacement>
+                                </substitution>
+                            </substitutions>
+                        </configuration>
+                    </execution>
+                </executions>
+                <dependencies>
+                    <!-- Component API to read API signatures -->
+                    <dependency>
+                        <groupId>com.google.apis</groupId>
+                        <artifactId>google-api-services-calendar</artifactId>
+                        <version>${google-api-services-calendar-version}</version>
+                        <classifier>sources</classifier>
+                    </dependency>
+                </dependencies>
+            </plugin>
+            <plugin>
+                <!-- we need to generate additional configurer classes -->
+                <groupId>org.apache.camel</groupId>
+                <artifactId>camel-package-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>generate-configurer</id>
+                        <phase>process-classes</phase>
+                        <goals>
+                            <goal>generate-configurer</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.camel</groupId>
+                    <artifactId>camel-api-component-maven-plugin</artifactId>
+                    <version>${project.version}</version>
+                    <configuration>
+                        <scheme>${schemeName}</scheme>
+                        <componentName>${componentName}</componentName>
+                        <componentPackage>${componentPackage}</componentPackage>
+                        <outPackage>${outPackage}</outPackage>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+
+    </build>
+
+    <profiles>
+        <profile>
+            <id>google-calendar-test</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <configuration>
+                            <childDelegation>false</childDelegation>
+                            <useFile>true</useFile>
+                            <forkCount>1</forkCount>
+                            <reuseForks>true</reuseForks>
+                            <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds>
+                            <excludes>
+                                <exclude>**/*XXXTest.java</exclude>
+                            </excludes>
+                            <includes>
+                                <include>**/*Test.java</include>
+                            </includes>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfiguration.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfiguration.java
new file mode 100644
index 0000000..2f24e7d
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfiguration.java
@@ -0,0 +1,67 @@
+
+/*
+ * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar;
+
+import org.apache.camel.spi.ApiMethod;
+import org.apache.camel.spi.ApiParam;
+import org.apache.camel.spi.ApiParams;
+import org.apache.camel.spi.Configurer;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+
+/**
+ * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Acl}.
+ */
+@ApiParams(apiName = "acl", 
+           description = "The acl collection of methods",
+           apiMethods = {@ApiMethod(methodName = "delete", description="Deletes an access control rule", signatures={"com.google.api.services.calendar.Calendar$Acl$Delete delete(String calendarId, String ruleId)"}), @ApiMethod(methodName = "get", description="Returns an access control rule", signatures={"com.google.api.services.calendar.Calendar$Acl$Get get(String calendarId, String ruleId)"}), @ApiMethod(methodName = "insert", description="Creates an access control rule", signatures={"c [...]
+@UriParams
+@Configurer(extended = true)
+public final class CalendarAclEndpointConfiguration extends GoogleCalendarConfiguration {
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "delete", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword."), @ApiMethod(methodName = "get", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the prima [...]
+    private String calendarId;
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "insert", description="The com.google.api.services.calendar.model.AclRule"), @ApiMethod(methodName = "patch", description="The com.google.api.services.calendar.model.AclRule"), @ApiMethod(methodName = "update", description="The com.google.api.services.calendar.model.AclRule")})
+    private com.google.api.services.calendar.model.AclRule content;
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "watch", description="The com.google.api.services.calendar.model.Channel")})
+    private com.google.api.services.calendar.model.Channel contentChannel;
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "delete", description="ACL rule identifier"), @ApiMethod(methodName = "get", description="ACL rule identifier"), @ApiMethod(methodName = "patch", description="ACL rule identifier"), @ApiMethod(methodName = "update", description="ACL rule identifier")})
+    private String ruleId;
+
+    public String getCalendarId() {
+        return calendarId;
+    }
+
+    public void setCalendarId(String calendarId) {
+        this.calendarId = calendarId;
+    }
+
+    public com.google.api.services.calendar.model.AclRule getContent() {
+        return content;
+    }
+
+    public void setContent(com.google.api.services.calendar.model.AclRule content) {
+        this.content = content;
+    }
+
+    public com.google.api.services.calendar.model.Channel getContentChannel() {
+        return contentChannel;
+    }
+
+    public void setContentChannel(com.google.api.services.calendar.model.Channel contentChannel) {
+        this.contentChannel = contentChannel;
+    }
+
+    public String getRuleId() {
+        return ruleId;
+    }
+
+    public void setRuleId(String ruleId) {
+        this.ruleId = ruleId;
+    }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfigurationConfigurer.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfigurationConfigurer.java
new file mode 100644
index 0000000..dd4e552
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfigurationConfigurer.java
@@ -0,0 +1,159 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class CalendarAclEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+
+    private static final Map<String, Object> ALL_OPTIONS;
+    static {
+        Map<String, Object> map = new CaseInsensitiveMap();
+        map.put("AccessToken", java.lang.String.class);
+        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
+        map.put("ApplicationName", java.lang.String.class);
+        map.put("CalendarId", java.lang.String.class);
+        map.put("ClientId", java.lang.String.class);
+        map.put("ClientSecret", java.lang.String.class);
+        map.put("Content", com.google.api.services.calendar.model.AclRule.class);
+        map.put("ContentChannel", com.google.api.services.calendar.model.Channel.class);
+        map.put("EmailAddress", java.lang.String.class);
+        map.put("MethodName", java.lang.String.class);
+        map.put("P12FileName", java.lang.String.class);
+        map.put("RefreshToken", java.lang.String.class);
+        map.put("RuleId", java.lang.String.class);
+        map.put("Scopes", java.lang.String.class);
+        map.put("User", java.lang.String.class);
+        ALL_OPTIONS = map;
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "apiname":
+        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
+        case "applicationname":
+        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
+        case "calendarid":
+        case "CalendarId": target.setCalendarId(property(camelContext, java.lang.String.class, value)); return true;
+        case "clientid":
+        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 "content":
+        case "Content": target.setContent(property(camelContext, com.google.api.services.calendar.model.AclRule.class, value)); return true;
+        case "contentchannel":
+        case "ContentChannel": target.setContentChannel(property(camelContext, com.google.api.services.calendar.model.Channel.class, value)); return true;
+        case "emailaddress":
+        case "EmailAddress": target.setEmailAddress(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 "p12filename":
+        case "P12FileName": target.setP12FileName(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 "ruleid":
+        case "RuleId": target.setRuleId(property(camelContext, java.lang.String.class, value)); return true;
+        case "scopes":
+        case "Scopes": target.setScopes(property(camelContext, java.lang.String.class, value)); return true;
+        case "user":
+        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        return ALL_OPTIONS;
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return java.lang.String.class;
+        case "apiname":
+        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
+        case "applicationname":
+        case "ApplicationName": return java.lang.String.class;
+        case "calendarid":
+        case "CalendarId": return java.lang.String.class;
+        case "clientid":
+        case "ClientId": return java.lang.String.class;
+        case "clientsecret":
+        case "ClientSecret": return java.lang.String.class;
+        case "content":
+        case "Content": return com.google.api.services.calendar.model.AclRule.class;
+        case "contentchannel":
+        case "ContentChannel": return com.google.api.services.calendar.model.Channel.class;
+        case "emailaddress":
+        case "EmailAddress": return java.lang.String.class;
+        case "methodname":
+        case "MethodName": return java.lang.String.class;
+        case "p12filename":
+        case "P12FileName": return java.lang.String.class;
+        case "refreshtoken":
+        case "RefreshToken": return java.lang.String.class;
+        case "ruleid":
+        case "RuleId": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        case "user":
+        case "User": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return target.getAccessToken();
+        case "apiname":
+        case "ApiName": return target.getApiName();
+        case "applicationname":
+        case "ApplicationName": return target.getApplicationName();
+        case "calendarid":
+        case "CalendarId": return target.getCalendarId();
+        case "clientid":
+        case "ClientId": return target.getClientId();
+        case "clientsecret":
+        case "ClientSecret": return target.getClientSecret();
+        case "content":
+        case "Content": return target.getContent();
+        case "contentchannel":
+        case "ContentChannel": return target.getContentChannel();
+        case "emailaddress":
+        case "EmailAddress": return target.getEmailAddress();
+        case "methodname":
+        case "MethodName": return target.getMethodName();
+        case "p12filename":
+        case "P12FileName": return target.getP12FileName();
+        case "refreshtoken":
+        case "RefreshToken": return target.getRefreshToken();
+        case "ruleid":
+        case "RuleId": return target.getRuleId();
+        case "scopes":
+        case "Scopes": return target.getScopes();
+        case "user":
+        case "User": return target.getUser();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfiguration.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfiguration.java
new file mode 100644
index 0000000..6c84b2e
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfiguration.java
@@ -0,0 +1,56 @@
+
+/*
+ * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar;
+
+import org.apache.camel.spi.ApiMethod;
+import org.apache.camel.spi.ApiParam;
+import org.apache.camel.spi.ApiParams;
+import org.apache.camel.spi.Configurer;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+
+/**
+ * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.CalendarList}.
+ */
+@ApiParams(apiName = "list", 
+           description = "The calendarList collection of methods",
+           apiMethods = {@ApiMethod(methodName = "delete", description="Deletes an entry on the user's calendar list", signatures={"com.google.api.services.calendar.Calendar$CalendarList$Delete delete(String calendarId)"}), @ApiMethod(methodName = "get", description="Returns an entry on the user's calendar list", signatures={"com.google.api.services.calendar.Calendar$CalendarList$Get get(String calendarId)"}), @ApiMethod(methodName = "insert", description="Adds an entry to the user's cal [...]
+@UriParams
+@Configurer(extended = true)
+public final class CalendarCalendarListEndpointConfiguration extends GoogleCalendarConfiguration {
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "delete", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword."), @ApiMethod(methodName = "get", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the prima [...]
+    private String calendarId;
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "insert", description="The com.google.api.services.calendar.model.CalendarListEntry"), @ApiMethod(methodName = "patch", description="The com.google.api.services.calendar.model.CalendarListEntry"), @ApiMethod(methodName = "update", description="The com.google.api.services.calendar.model.CalendarListEntry")})
+    private com.google.api.services.calendar.model.CalendarListEntry content;
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "watch", description="The com.google.api.services.calendar.model.Channel")})
+    private com.google.api.services.calendar.model.Channel contentChannel;
+
+    public String getCalendarId() {
+        return calendarId;
+    }
+
+    public void setCalendarId(String calendarId) {
+        this.calendarId = calendarId;
+    }
+
+    public com.google.api.services.calendar.model.CalendarListEntry getContent() {
+        return content;
+    }
+
+    public void setContent(com.google.api.services.calendar.model.CalendarListEntry content) {
+        this.content = content;
+    }
+
+    public com.google.api.services.calendar.model.Channel getContentChannel() {
+        return contentChannel;
+    }
+
+    public void setContentChannel(com.google.api.services.calendar.model.Channel contentChannel) {
+        this.contentChannel = contentChannel;
+    }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfigurationConfigurer.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfigurationConfigurer.java
new file mode 100644
index 0000000..5739f72
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfigurationConfigurer.java
@@ -0,0 +1,152 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class CalendarCalendarListEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+
+    private static final Map<String, Object> ALL_OPTIONS;
+    static {
+        Map<String, Object> map = new CaseInsensitiveMap();
+        map.put("AccessToken", java.lang.String.class);
+        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
+        map.put("ApplicationName", java.lang.String.class);
+        map.put("CalendarId", java.lang.String.class);
+        map.put("ClientId", java.lang.String.class);
+        map.put("ClientSecret", java.lang.String.class);
+        map.put("Content", com.google.api.services.calendar.model.CalendarListEntry.class);
+        map.put("ContentChannel", com.google.api.services.calendar.model.Channel.class);
+        map.put("EmailAddress", java.lang.String.class);
+        map.put("MethodName", java.lang.String.class);
+        map.put("P12FileName", java.lang.String.class);
+        map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.lang.String.class);
+        map.put("User", java.lang.String.class);
+        ALL_OPTIONS = map;
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "apiname":
+        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
+        case "applicationname":
+        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
+        case "calendarid":
+        case "CalendarId": target.setCalendarId(property(camelContext, java.lang.String.class, value)); return true;
+        case "clientid":
+        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 "content":
+        case "Content": target.setContent(property(camelContext, com.google.api.services.calendar.model.CalendarListEntry.class, value)); return true;
+        case "contentchannel":
+        case "ContentChannel": target.setContentChannel(property(camelContext, com.google.api.services.calendar.model.Channel.class, value)); return true;
+        case "emailaddress":
+        case "EmailAddress": target.setEmailAddress(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 "p12filename":
+        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
+        case "user":
+        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        return ALL_OPTIONS;
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return java.lang.String.class;
+        case "apiname":
+        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
+        case "applicationname":
+        case "ApplicationName": return java.lang.String.class;
+        case "calendarid":
+        case "CalendarId": return java.lang.String.class;
+        case "clientid":
+        case "ClientId": return java.lang.String.class;
+        case "clientsecret":
+        case "ClientSecret": return java.lang.String.class;
+        case "content":
+        case "Content": return com.google.api.services.calendar.model.CalendarListEntry.class;
+        case "contentchannel":
+        case "ContentChannel": return com.google.api.services.calendar.model.Channel.class;
+        case "emailaddress":
+        case "EmailAddress": return java.lang.String.class;
+        case "methodname":
+        case "MethodName": return java.lang.String.class;
+        case "p12filename":
+        case "P12FileName": return java.lang.String.class;
+        case "refreshtoken":
+        case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        case "user":
+        case "User": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return target.getAccessToken();
+        case "apiname":
+        case "ApiName": return target.getApiName();
+        case "applicationname":
+        case "ApplicationName": return target.getApplicationName();
+        case "calendarid":
+        case "CalendarId": return target.getCalendarId();
+        case "clientid":
+        case "ClientId": return target.getClientId();
+        case "clientsecret":
+        case "ClientSecret": return target.getClientSecret();
+        case "content":
+        case "Content": return target.getContent();
+        case "contentchannel":
+        case "ContentChannel": return target.getContentChannel();
+        case "emailaddress":
+        case "EmailAddress": return target.getEmailAddress();
+        case "methodname":
+        case "MethodName": return target.getMethodName();
+        case "p12filename":
+        case "P12FileName": return target.getP12FileName();
+        case "refreshtoken":
+        case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
+        case "user":
+        case "User": return target.getUser();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfiguration.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfiguration.java
new file mode 100644
index 0000000..973f5af
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfiguration.java
@@ -0,0 +1,45 @@
+
+/*
+ * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar;
+
+import org.apache.camel.spi.ApiMethod;
+import org.apache.camel.spi.ApiParam;
+import org.apache.camel.spi.ApiParams;
+import org.apache.camel.spi.Configurer;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+
+/**
+ * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Calendars}.
+ */
+@ApiParams(apiName = "calendars", 
+           description = "The calendars collection of methods",
+           apiMethods = {@ApiMethod(methodName = "clear", description="Clears a primary calendar", signatures={"com.google.api.services.calendar.Calendar$Calendars$Clear clear(String calendarId)"}), @ApiMethod(methodName = "delete", description="Deletes a secondary calendar", signatures={"com.google.api.services.calendar.Calendar$Calendars$Delete delete(String calendarId)"}), @ApiMethod(methodName = "get", description="Returns metadata for a calendar", signatures={"com.google.api.service [...]
+@UriParams
+@Configurer(extended = true)
+public final class CalendarCalendarsEndpointConfiguration extends GoogleCalendarConfiguration {
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "clear", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword."), @ApiMethod(methodName = "delete", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the pri [...]
+    private String calendarId;
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "insert", description="The com.google.api.services.calendar.model.Calendar"), @ApiMethod(methodName = "patch", description="The com.google.api.services.calendar.model.Calendar"), @ApiMethod(methodName = "update", description="The com.google.api.services.calendar.model.Calendar")})
+    private com.google.api.services.calendar.model.Calendar content;
+
+    public String getCalendarId() {
+        return calendarId;
+    }
+
+    public void setCalendarId(String calendarId) {
+        this.calendarId = calendarId;
+    }
+
+    public com.google.api.services.calendar.model.Calendar getContent() {
+        return content;
+    }
+
+    public void setContent(com.google.api.services.calendar.model.Calendar content) {
+        this.content = content;
+    }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfigurationConfigurer.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfigurationConfigurer.java
new file mode 100644
index 0000000..edd7d26
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfigurationConfigurer.java
@@ -0,0 +1,145 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class CalendarCalendarsEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+
+    private static final Map<String, Object> ALL_OPTIONS;
+    static {
+        Map<String, Object> map = new CaseInsensitiveMap();
+        map.put("AccessToken", java.lang.String.class);
+        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
+        map.put("ApplicationName", java.lang.String.class);
+        map.put("CalendarId", java.lang.String.class);
+        map.put("ClientId", java.lang.String.class);
+        map.put("ClientSecret", java.lang.String.class);
+        map.put("Content", com.google.api.services.calendar.model.Calendar.class);
+        map.put("EmailAddress", java.lang.String.class);
+        map.put("MethodName", java.lang.String.class);
+        map.put("P12FileName", java.lang.String.class);
+        map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.lang.String.class);
+        map.put("User", java.lang.String.class);
+        ALL_OPTIONS = map;
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "apiname":
+        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
+        case "applicationname":
+        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
+        case "calendarid":
+        case "CalendarId": target.setCalendarId(property(camelContext, java.lang.String.class, value)); return true;
+        case "clientid":
+        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 "content":
+        case "Content": target.setContent(property(camelContext, com.google.api.services.calendar.model.Calendar.class, value)); return true;
+        case "emailaddress":
+        case "EmailAddress": target.setEmailAddress(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 "p12filename":
+        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
+        case "user":
+        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        return ALL_OPTIONS;
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return java.lang.String.class;
+        case "apiname":
+        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
+        case "applicationname":
+        case "ApplicationName": return java.lang.String.class;
+        case "calendarid":
+        case "CalendarId": return java.lang.String.class;
+        case "clientid":
+        case "ClientId": return java.lang.String.class;
+        case "clientsecret":
+        case "ClientSecret": return java.lang.String.class;
+        case "content":
+        case "Content": return com.google.api.services.calendar.model.Calendar.class;
+        case "emailaddress":
+        case "EmailAddress": return java.lang.String.class;
+        case "methodname":
+        case "MethodName": return java.lang.String.class;
+        case "p12filename":
+        case "P12FileName": return java.lang.String.class;
+        case "refreshtoken":
+        case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        case "user":
+        case "User": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return target.getAccessToken();
+        case "apiname":
+        case "ApiName": return target.getApiName();
+        case "applicationname":
+        case "ApplicationName": return target.getApplicationName();
+        case "calendarid":
+        case "CalendarId": return target.getCalendarId();
+        case "clientid":
+        case "ClientId": return target.getClientId();
+        case "clientsecret":
+        case "ClientSecret": return target.getClientSecret();
+        case "content":
+        case "Content": return target.getContent();
+        case "emailaddress":
+        case "EmailAddress": return target.getEmailAddress();
+        case "methodname":
+        case "MethodName": return target.getMethodName();
+        case "p12filename":
+        case "P12FileName": return target.getP12FileName();
+        case "refreshtoken":
+        case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
+        case "user":
+        case "User": return target.getUser();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfiguration.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfiguration.java
new file mode 100644
index 0000000..585d1f8
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfiguration.java
@@ -0,0 +1,34 @@
+
+/*
+ * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar;
+
+import org.apache.camel.spi.ApiMethod;
+import org.apache.camel.spi.ApiParam;
+import org.apache.camel.spi.ApiParams;
+import org.apache.camel.spi.Configurer;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+
+/**
+ * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Channels}.
+ */
+@ApiParams(apiName = "channels", 
+           description = "The channels collection of methods",
+           apiMethods = {@ApiMethod(methodName = "stop", description="Stop watching resources through this channel", signatures={"com.google.api.services.calendar.Calendar$Channels$Stop stop(com.google.api.services.calendar.model.Channel content)"})}, aliases = {})
+@UriParams
+@Configurer(extended = true)
+public final class CalendarChannelsEndpointConfiguration extends GoogleCalendarConfiguration {
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "stop", description="The com.google.api.services.calendar.model.Channel")})
+    private com.google.api.services.calendar.model.Channel contentChannel;
+
+    public com.google.api.services.calendar.model.Channel getContentChannel() {
+        return contentChannel;
+    }
+
+    public void setContentChannel(com.google.api.services.calendar.model.Channel contentChannel) {
+        this.contentChannel = contentChannel;
+    }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfigurationConfigurer.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfigurationConfigurer.java
new file mode 100644
index 0000000..c94f0f8
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfigurationConfigurer.java
@@ -0,0 +1,138 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class CalendarChannelsEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+
+    private static final Map<String, Object> ALL_OPTIONS;
+    static {
+        Map<String, Object> map = new CaseInsensitiveMap();
+        map.put("AccessToken", java.lang.String.class);
+        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
+        map.put("ApplicationName", java.lang.String.class);
+        map.put("ClientId", java.lang.String.class);
+        map.put("ClientSecret", java.lang.String.class);
+        map.put("ContentChannel", com.google.api.services.calendar.model.Channel.class);
+        map.put("EmailAddress", java.lang.String.class);
+        map.put("MethodName", java.lang.String.class);
+        map.put("P12FileName", java.lang.String.class);
+        map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.lang.String.class);
+        map.put("User", java.lang.String.class);
+        ALL_OPTIONS = map;
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "apiname":
+        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
+        case "applicationname":
+        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
+        case "clientid":
+        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 "contentchannel":
+        case "ContentChannel": target.setContentChannel(property(camelContext, com.google.api.services.calendar.model.Channel.class, value)); return true;
+        case "emailaddress":
+        case "EmailAddress": target.setEmailAddress(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 "p12filename":
+        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
+        case "user":
+        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        return ALL_OPTIONS;
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return java.lang.String.class;
+        case "apiname":
+        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
+        case "applicationname":
+        case "ApplicationName": return java.lang.String.class;
+        case "clientid":
+        case "ClientId": return java.lang.String.class;
+        case "clientsecret":
+        case "ClientSecret": return java.lang.String.class;
+        case "contentchannel":
+        case "ContentChannel": return com.google.api.services.calendar.model.Channel.class;
+        case "emailaddress":
+        case "EmailAddress": return java.lang.String.class;
+        case "methodname":
+        case "MethodName": return java.lang.String.class;
+        case "p12filename":
+        case "P12FileName": return java.lang.String.class;
+        case "refreshtoken":
+        case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        case "user":
+        case "User": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return target.getAccessToken();
+        case "apiname":
+        case "ApiName": return target.getApiName();
+        case "applicationname":
+        case "ApplicationName": return target.getApplicationName();
+        case "clientid":
+        case "ClientId": return target.getClientId();
+        case "clientsecret":
+        case "ClientSecret": return target.getClientSecret();
+        case "contentchannel":
+        case "ContentChannel": return target.getContentChannel();
+        case "emailaddress":
+        case "EmailAddress": return target.getEmailAddress();
+        case "methodname":
+        case "MethodName": return target.getMethodName();
+        case "p12filename":
+        case "P12FileName": return target.getP12FileName();
+        case "refreshtoken":
+        case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
+        case "user":
+        case "User": return target.getUser();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfiguration.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfiguration.java
new file mode 100644
index 0000000..b2e8fdb
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfiguration.java
@@ -0,0 +1,23 @@
+
+/*
+ * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar;
+
+import org.apache.camel.spi.ApiMethod;
+import org.apache.camel.spi.ApiParam;
+import org.apache.camel.spi.ApiParams;
+import org.apache.camel.spi.Configurer;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+
+/**
+ * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Colors}.
+ */
+@ApiParams(apiName = "colors", 
+           description = "The colors collection of methods",
+           apiMethods = {@ApiMethod(methodName = "get", description="Returns the color definitions for calendars and events", signatures={"com.google.api.services.calendar.Calendar$Colors$Get get()"})}, aliases = {})
+@UriParams
+@Configurer(extended = true)
+public final class CalendarColorsEndpointConfiguration extends GoogleCalendarConfiguration {
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfigurationConfigurer.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfigurationConfigurer.java
new file mode 100644
index 0000000..814c4cf
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfigurationConfigurer.java
@@ -0,0 +1,131 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class CalendarColorsEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+
+    private static final Map<String, Object> ALL_OPTIONS;
+    static {
+        Map<String, Object> map = new CaseInsensitiveMap();
+        map.put("AccessToken", java.lang.String.class);
+        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
+        map.put("ApplicationName", java.lang.String.class);
+        map.put("ClientId", java.lang.String.class);
+        map.put("ClientSecret", java.lang.String.class);
+        map.put("EmailAddress", java.lang.String.class);
+        map.put("MethodName", java.lang.String.class);
+        map.put("P12FileName", java.lang.String.class);
+        map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.lang.String.class);
+        map.put("User", java.lang.String.class);
+        ALL_OPTIONS = map;
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "apiname":
+        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
+        case "applicationname":
+        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
+        case "clientid":
+        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 "emailaddress":
+        case "EmailAddress": target.setEmailAddress(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 "p12filename":
+        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
+        case "user":
+        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        return ALL_OPTIONS;
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return java.lang.String.class;
+        case "apiname":
+        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
+        case "applicationname":
+        case "ApplicationName": return java.lang.String.class;
+        case "clientid":
+        case "ClientId": return java.lang.String.class;
+        case "clientsecret":
+        case "ClientSecret": return java.lang.String.class;
+        case "emailaddress":
+        case "EmailAddress": return java.lang.String.class;
+        case "methodname":
+        case "MethodName": return java.lang.String.class;
+        case "p12filename":
+        case "P12FileName": return java.lang.String.class;
+        case "refreshtoken":
+        case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        case "user":
+        case "User": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return target.getAccessToken();
+        case "apiname":
+        case "ApiName": return target.getApiName();
+        case "applicationname":
+        case "ApplicationName": return target.getApplicationName();
+        case "clientid":
+        case "ClientId": return target.getClientId();
+        case "clientsecret":
+        case "ClientSecret": return target.getClientSecret();
+        case "emailaddress":
+        case "EmailAddress": return target.getEmailAddress();
+        case "methodname":
+        case "MethodName": return target.getMethodName();
+        case "p12filename":
+        case "P12FileName": return target.getP12FileName();
+        case "refreshtoken":
+        case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
+        case "user":
+        case "User": return target.getUser();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfiguration.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfiguration.java
new file mode 100644
index 0000000..12b6907
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfiguration.java
@@ -0,0 +1,89 @@
+
+/*
+ * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar;
+
+import org.apache.camel.spi.ApiMethod;
+import org.apache.camel.spi.ApiParam;
+import org.apache.camel.spi.ApiParams;
+import org.apache.camel.spi.Configurer;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+
+/**
+ * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Events}.
+ */
+@ApiParams(apiName = "events", 
+           description = "The events collection of methods",
+           apiMethods = {@ApiMethod(methodName = "calendarImport", description="Imports an event", signatures={"com.google.api.services.calendar.Calendar$Events$CalendarImport calendarImport(String calendarId, com.google.api.services.calendar.model.Event content)"}), @ApiMethod(methodName = "delete", description="Deletes an event", signatures={"com.google.api.services.calendar.Calendar$Events$Delete delete(String calendarId, String eventId)"}), @ApiMethod(methodName = "get", description= [...]
+@UriParams
+@Configurer(extended = true)
+public final class CalendarEventsEndpointConfiguration extends GoogleCalendarConfiguration {
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "calendarImport", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword."), @ApiMethod(methodName = "delete", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, us [...]
+    private String calendarId;
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "calendarImport", description="The com.google.api.services.calendar.model.Event"), @ApiMethod(methodName = "insert", description="The com.google.api.services.calendar.model.Event"), @ApiMethod(methodName = "patch", description="The com.google.api.services.calendar.model.Event"), @ApiMethod(methodName = "update", description="The com.google.api.services.calendar.model.Event")})
+    private com.google.api.services.calendar.model.Event content;
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "watch", description="The com.google.api.services.calendar.model.Channel")})
+    private com.google.api.services.calendar.model.Channel contentChannel;
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "move", description="Calendar identifier of the target calendar where the event is to be moved to")})
+    private String destination;
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "delete", description="Event identifier"), @ApiMethod(methodName = "get", description="Event identifier"), @ApiMethod(methodName = "instances", description="Recurring event identifier"), @ApiMethod(methodName = "move", description="Event identifier"), @ApiMethod(methodName = "patch", description="Event identifier"), @ApiMethod(methodName = "update", description="Event identifier")})
+    private String eventId;
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "quickAdd", description="The text describing the event to be created")})
+    private String text;
+
+    public String getCalendarId() {
+        return calendarId;
+    }
+
+    public void setCalendarId(String calendarId) {
+        this.calendarId = calendarId;
+    }
+
+    public com.google.api.services.calendar.model.Event getContent() {
+        return content;
+    }
+
+    public void setContent(com.google.api.services.calendar.model.Event content) {
+        this.content = content;
+    }
+
+    public com.google.api.services.calendar.model.Channel getContentChannel() {
+        return contentChannel;
+    }
+
+    public void setContentChannel(com.google.api.services.calendar.model.Channel contentChannel) {
+        this.contentChannel = contentChannel;
+    }
+
+    public String getDestination() {
+        return destination;
+    }
+
+    public void setDestination(String destination) {
+        this.destination = destination;
+    }
+
+    public String getEventId() {
+        return eventId;
+    }
+
+    public void setEventId(String eventId) {
+        this.eventId = eventId;
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfigurationConfigurer.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfigurationConfigurer.java
new file mode 100644
index 0000000..149ff8b
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfigurationConfigurer.java
@@ -0,0 +1,173 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class CalendarEventsEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+
+    private static final Map<String, Object> ALL_OPTIONS;
+    static {
+        Map<String, Object> map = new CaseInsensitiveMap();
+        map.put("AccessToken", java.lang.String.class);
+        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
+        map.put("ApplicationName", java.lang.String.class);
+        map.put("CalendarId", java.lang.String.class);
+        map.put("ClientId", java.lang.String.class);
+        map.put("ClientSecret", java.lang.String.class);
+        map.put("Content", com.google.api.services.calendar.model.Event.class);
+        map.put("ContentChannel", com.google.api.services.calendar.model.Channel.class);
+        map.put("Destination", java.lang.String.class);
+        map.put("EmailAddress", java.lang.String.class);
+        map.put("EventId", java.lang.String.class);
+        map.put("MethodName", java.lang.String.class);
+        map.put("P12FileName", java.lang.String.class);
+        map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.lang.String.class);
+        map.put("Text", java.lang.String.class);
+        map.put("User", java.lang.String.class);
+        ALL_OPTIONS = map;
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "apiname":
+        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
+        case "applicationname":
+        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
+        case "calendarid":
+        case "CalendarId": target.setCalendarId(property(camelContext, java.lang.String.class, value)); return true;
+        case "clientid":
+        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 "content":
+        case "Content": target.setContent(property(camelContext, com.google.api.services.calendar.model.Event.class, value)); return true;
+        case "contentchannel":
+        case "ContentChannel": target.setContentChannel(property(camelContext, com.google.api.services.calendar.model.Channel.class, value)); return true;
+        case "destination":
+        case "Destination": target.setDestination(property(camelContext, java.lang.String.class, value)); return true;
+        case "emailaddress":
+        case "EmailAddress": target.setEmailAddress(property(camelContext, java.lang.String.class, value)); return true;
+        case "eventid":
+        case "EventId": target.setEventId(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 "p12filename":
+        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
+        case "text":
+        case "Text": target.setText(property(camelContext, java.lang.String.class, value)); return true;
+        case "user":
+        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        return ALL_OPTIONS;
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return java.lang.String.class;
+        case "apiname":
+        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
+        case "applicationname":
+        case "ApplicationName": return java.lang.String.class;
+        case "calendarid":
+        case "CalendarId": return java.lang.String.class;
+        case "clientid":
+        case "ClientId": return java.lang.String.class;
+        case "clientsecret":
+        case "ClientSecret": return java.lang.String.class;
+        case "content":
+        case "Content": return com.google.api.services.calendar.model.Event.class;
+        case "contentchannel":
+        case "ContentChannel": return com.google.api.services.calendar.model.Channel.class;
+        case "destination":
+        case "Destination": return java.lang.String.class;
+        case "emailaddress":
+        case "EmailAddress": return java.lang.String.class;
+        case "eventid":
+        case "EventId": return java.lang.String.class;
+        case "methodname":
+        case "MethodName": return java.lang.String.class;
+        case "p12filename":
+        case "P12FileName": return java.lang.String.class;
+        case "refreshtoken":
+        case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        case "text":
+        case "Text": return java.lang.String.class;
+        case "user":
+        case "User": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return target.getAccessToken();
+        case "apiname":
+        case "ApiName": return target.getApiName();
+        case "applicationname":
+        case "ApplicationName": return target.getApplicationName();
+        case "calendarid":
+        case "CalendarId": return target.getCalendarId();
+        case "clientid":
+        case "ClientId": return target.getClientId();
+        case "clientsecret":
+        case "ClientSecret": return target.getClientSecret();
+        case "content":
+        case "Content": return target.getContent();
+        case "contentchannel":
+        case "ContentChannel": return target.getContentChannel();
+        case "destination":
+        case "Destination": return target.getDestination();
+        case "emailaddress":
+        case "EmailAddress": return target.getEmailAddress();
+        case "eventid":
+        case "EventId": return target.getEventId();
+        case "methodname":
+        case "MethodName": return target.getMethodName();
+        case "p12filename":
+        case "P12FileName": return target.getP12FileName();
+        case "refreshtoken":
+        case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
+        case "text":
+        case "Text": return target.getText();
+        case "user":
+        case "User": return target.getUser();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfiguration.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfiguration.java
new file mode 100644
index 0000000..333c5f2
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfiguration.java
@@ -0,0 +1,34 @@
+
+/*
+ * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar;
+
+import org.apache.camel.spi.ApiMethod;
+import org.apache.camel.spi.ApiParam;
+import org.apache.camel.spi.ApiParams;
+import org.apache.camel.spi.Configurer;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+
+/**
+ * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Freebusy}.
+ */
+@ApiParams(apiName = "freebusy", 
+           description = "The freebusy collection of methods",
+           apiMethods = {@ApiMethod(methodName = "query", description="Returns free/busy information for a set of calendars", signatures={"com.google.api.services.calendar.Calendar$Freebusy$Query query(com.google.api.services.calendar.model.FreeBusyRequest content)"})}, aliases = {})
+@UriParams
+@Configurer(extended = true)
+public final class CalendarFreebusyEndpointConfiguration extends GoogleCalendarConfiguration {
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "query", description="The com.google.api.services.calendar.model.FreeBusyRequest")})
+    private com.google.api.services.calendar.model.FreeBusyRequest content;
+
+    public com.google.api.services.calendar.model.FreeBusyRequest getContent() {
+        return content;
+    }
+
+    public void setContent(com.google.api.services.calendar.model.FreeBusyRequest content) {
+        this.content = content;
+    }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfigurationConfigurer.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfigurationConfigurer.java
new file mode 100644
index 0000000..098a65c
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfigurationConfigurer.java
@@ -0,0 +1,138 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class CalendarFreebusyEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+
+    private static final Map<String, Object> ALL_OPTIONS;
+    static {
+        Map<String, Object> map = new CaseInsensitiveMap();
+        map.put("AccessToken", java.lang.String.class);
+        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
+        map.put("ApplicationName", java.lang.String.class);
+        map.put("ClientId", java.lang.String.class);
+        map.put("ClientSecret", java.lang.String.class);
+        map.put("Content", com.google.api.services.calendar.model.FreeBusyRequest.class);
+        map.put("EmailAddress", java.lang.String.class);
+        map.put("MethodName", java.lang.String.class);
+        map.put("P12FileName", java.lang.String.class);
+        map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.lang.String.class);
+        map.put("User", java.lang.String.class);
+        ALL_OPTIONS = map;
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "apiname":
+        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
+        case "applicationname":
+        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
+        case "clientid":
+        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 "content":
+        case "Content": target.setContent(property(camelContext, com.google.api.services.calendar.model.FreeBusyRequest.class, value)); return true;
+        case "emailaddress":
+        case "EmailAddress": target.setEmailAddress(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 "p12filename":
+        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
+        case "user":
+        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        return ALL_OPTIONS;
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return java.lang.String.class;
+        case "apiname":
+        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
+        case "applicationname":
+        case "ApplicationName": return java.lang.String.class;
+        case "clientid":
+        case "ClientId": return java.lang.String.class;
+        case "clientsecret":
+        case "ClientSecret": return java.lang.String.class;
+        case "content":
+        case "Content": return com.google.api.services.calendar.model.FreeBusyRequest.class;
+        case "emailaddress":
+        case "EmailAddress": return java.lang.String.class;
+        case "methodname":
+        case "MethodName": return java.lang.String.class;
+        case "p12filename":
+        case "P12FileName": return java.lang.String.class;
+        case "refreshtoken":
+        case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        case "user":
+        case "User": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return target.getAccessToken();
+        case "apiname":
+        case "ApiName": return target.getApiName();
+        case "applicationname":
+        case "ApplicationName": return target.getApplicationName();
+        case "clientid":
+        case "ClientId": return target.getClientId();
+        case "clientsecret":
+        case "ClientSecret": return target.getClientSecret();
+        case "content":
+        case "Content": return target.getContent();
+        case "emailaddress":
+        case "EmailAddress": return target.getEmailAddress();
+        case "methodname":
+        case "MethodName": return target.getMethodName();
+        case "p12filename":
+        case "P12FileName": return target.getP12FileName();
+        case "refreshtoken":
+        case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
+        case "user":
+        case "User": return target.getUser();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfiguration.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfiguration.java
new file mode 100644
index 0000000..fd5c781
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfiguration.java
@@ -0,0 +1,45 @@
+
+/*
+ * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar;
+
+import org.apache.camel.spi.ApiMethod;
+import org.apache.camel.spi.ApiParam;
+import org.apache.camel.spi.ApiParams;
+import org.apache.camel.spi.Configurer;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+
+/**
+ * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Settings}.
+ */
+@ApiParams(apiName = "settings", 
+           description = "The settings collection of methods",
+           apiMethods = {@ApiMethod(methodName = "get", description="Returns a single user setting", signatures={"com.google.api.services.calendar.Calendar$Settings$Get get(String setting)"}), @ApiMethod(methodName = "list", description="Returns all user settings for the authenticated user", signatures={"com.google.api.services.calendar.Calendar$Settings$List list()"}), @ApiMethod(methodName = "watch", description="Watch for changes to Settings resources", signatures={"com.google.api.ser [...]
+@UriParams
+@Configurer(extended = true)
+public final class CalendarSettingsEndpointConfiguration extends GoogleCalendarConfiguration {
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "watch", description="The com.google.api.services.calendar.model.Channel")})
+    private com.google.api.services.calendar.model.Channel contentChannel;
+    @UriParam
+    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "get", description="The id of the user setting")})
+    private String setting;
+
+    public com.google.api.services.calendar.model.Channel getContentChannel() {
+        return contentChannel;
+    }
+
+    public void setContentChannel(com.google.api.services.calendar.model.Channel contentChannel) {
+        this.contentChannel = contentChannel;
+    }
+
+    public String getSetting() {
+        return setting;
+    }
+
+    public void setSetting(String setting) {
+        this.setting = setting;
+    }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfigurationConfigurer.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfigurationConfigurer.java
new file mode 100644
index 0000000..02cba0d
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfigurationConfigurer.java
@@ -0,0 +1,145 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class CalendarSettingsEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+
+    private static final Map<String, Object> ALL_OPTIONS;
+    static {
+        Map<String, Object> map = new CaseInsensitiveMap();
+        map.put("AccessToken", java.lang.String.class);
+        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
+        map.put("ApplicationName", java.lang.String.class);
+        map.put("ClientId", java.lang.String.class);
+        map.put("ClientSecret", java.lang.String.class);
+        map.put("ContentChannel", com.google.api.services.calendar.model.Channel.class);
+        map.put("EmailAddress", java.lang.String.class);
+        map.put("MethodName", java.lang.String.class);
+        map.put("P12FileName", java.lang.String.class);
+        map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.lang.String.class);
+        map.put("Setting", java.lang.String.class);
+        map.put("User", java.lang.String.class);
+        ALL_OPTIONS = map;
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "apiname":
+        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
+        case "applicationname":
+        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
+        case "clientid":
+        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 "contentchannel":
+        case "ContentChannel": target.setContentChannel(property(camelContext, com.google.api.services.calendar.model.Channel.class, value)); return true;
+        case "emailaddress":
+        case "EmailAddress": target.setEmailAddress(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 "p12filename":
+        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
+        case "setting":
+        case "Setting": target.setSetting(property(camelContext, java.lang.String.class, value)); return true;
+        case "user":
+        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        return ALL_OPTIONS;
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return java.lang.String.class;
+        case "apiname":
+        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
+        case "applicationname":
+        case "ApplicationName": return java.lang.String.class;
+        case "clientid":
+        case "ClientId": return java.lang.String.class;
+        case "clientsecret":
+        case "ClientSecret": return java.lang.String.class;
+        case "contentchannel":
+        case "ContentChannel": return com.google.api.services.calendar.model.Channel.class;
+        case "emailaddress":
+        case "EmailAddress": return java.lang.String.class;
+        case "methodname":
+        case "MethodName": return java.lang.String.class;
+        case "p12filename":
+        case "P12FileName": return java.lang.String.class;
+        case "refreshtoken":
+        case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        case "setting":
+        case "Setting": return java.lang.String.class;
+        case "user":
+        case "User": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return target.getAccessToken();
+        case "apiname":
+        case "ApiName": return target.getApiName();
+        case "applicationname":
+        case "ApplicationName": return target.getApplicationName();
+        case "clientid":
+        case "ClientId": return target.getClientId();
+        case "clientsecret":
+        case "ClientSecret": return target.getClientSecret();
+        case "contentchannel":
+        case "ContentChannel": return target.getContentChannel();
+        case "emailaddress":
+        case "EmailAddress": return target.getEmailAddress();
+        case "methodname":
+        case "MethodName": return target.getMethodName();
+        case "p12filename":
+        case "P12FileName": return target.getP12FileName();
+        case "refreshtoken":
+        case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
+        case "setting":
+        case "Setting": return target.getSetting();
+        case "user":
+        case "User": return target.getUser();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarComponentConfigurer.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarComponentConfigurer.java
new file mode 100644
index 0000000..465a53f
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarComponentConfigurer.java
@@ -0,0 +1,150 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class GoogleCalendarComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+
+    private static final Map<String, Object> ALL_OPTIONS;
+    static {
+        Map<String, Object> map = new CaseInsensitiveMap();
+        map.put("applicationName", java.lang.String.class);
+        map.put("clientId", java.lang.String.class);
+        map.put("configuration", org.apache.camel.component.google.calendar.GoogleCalendarConfiguration.class);
+        map.put("scopes", java.lang.String.class);
+        map.put("bridgeErrorHandler", boolean.class);
+        map.put("lazyStartProducer", boolean.class);
+        map.put("autowiredEnabled", boolean.class);
+        map.put("clientFactory", org.apache.camel.component.google.calendar.GoogleCalendarClientFactory.class);
+        map.put("accessToken", java.lang.String.class);
+        map.put("clientSecret", java.lang.String.class);
+        map.put("emailAddress", java.lang.String.class);
+        map.put("p12FileName", java.lang.String.class);
+        map.put("refreshToken", java.lang.String.class);
+        map.put("user", java.lang.String.class);
+        ALL_OPTIONS = map;
+    }
+
+    private org.apache.camel.component.google.calendar.GoogleCalendarConfiguration getOrCreateConfiguration(GoogleCalendarComponent target) {
+        if (target.getConfiguration() == null) {
+            target.setConfiguration(new org.apache.camel.component.google.calendar.GoogleCalendarConfiguration());
+        }
+        return target.getConfiguration();
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        GoogleCalendarComponent target = (GoogleCalendarComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "accessToken": getOrCreateConfiguration(target).setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "applicationname":
+        case "applicationName": getOrCreateConfiguration(target).setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
+        case "autowiredenabled":
+        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
+        case "clientfactory":
+        case "clientFactory": target.setClientFactory(property(camelContext, org.apache.camel.component.google.calendar.GoogleCalendarClientFactory.class, value)); return true;
+        case "clientid":
+        case "clientId": getOrCreateConfiguration(target).setClientId(property(camelContext, java.lang.String.class, value)); return true;
+        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.calendar.GoogleCalendarConfiguration.class, value)); return true;
+        case "emailaddress":
+        case "emailAddress": getOrCreateConfiguration(target).setEmailAddress(property(camelContext, java.lang.String.class, value)); return true;
+        case "lazystartproducer":
+        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        case "p12filename":
+        case "p12FileName": getOrCreateConfiguration(target).setP12FileName(property(camelContext, java.lang.String.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.lang.String.class, value)); return true;
+        case "user": getOrCreateConfiguration(target).setUser(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        return ALL_OPTIONS;
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "accessToken": return java.lang.String.class;
+        case "applicationname":
+        case "applicationName": return java.lang.String.class;
+        case "autowiredenabled":
+        case "autowiredEnabled": return boolean.class;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return boolean.class;
+        case "clientfactory":
+        case "clientFactory": return org.apache.camel.component.google.calendar.GoogleCalendarClientFactory.class;
+        case "clientid":
+        case "clientId": return java.lang.String.class;
+        case "clientsecret":
+        case "clientSecret": return java.lang.String.class;
+        case "configuration": return org.apache.camel.component.google.calendar.GoogleCalendarConfiguration.class;
+        case "emailaddress":
+        case "emailAddress": return java.lang.String.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        case "p12filename":
+        case "p12FileName": return java.lang.String.class;
+        case "refreshtoken":
+        case "refreshToken": return java.lang.String.class;
+        case "scopes": return java.lang.String.class;
+        case "user": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        GoogleCalendarComponent target = (GoogleCalendarComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "accessToken": return getOrCreateConfiguration(target).getAccessToken();
+        case "applicationname":
+        case "applicationName": return getOrCreateConfiguration(target).getApplicationName();
+        case "autowiredenabled":
+        case "autowiredEnabled": return target.isAutowiredEnabled();
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
+        case "clientfactory":
+        case "clientFactory": return target.getClientFactory();
+        case "clientid":
+        case "clientId": return getOrCreateConfiguration(target).getClientId();
+        case "clientsecret":
+        case "clientSecret": return getOrCreateConfiguration(target).getClientSecret();
+        case "configuration": return target.getConfiguration();
+        case "emailaddress":
+        case "emailAddress": return getOrCreateConfiguration(target).getEmailAddress();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        case "p12filename":
+        case "p12FileName": return getOrCreateConfiguration(target).getP12FileName();
+        case "refreshtoken":
+        case "refreshToken": return getOrCreateConfiguration(target).getRefreshToken();
+        case "scopes": return getOrCreateConfiguration(target).getScopes();
+        case "user": return getOrCreateConfiguration(target).getUser();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarConfigurationConfigurer.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarConfigurationConfigurer.java
new file mode 100644
index 0000000..52ff68e
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarConfigurationConfigurer.java
@@ -0,0 +1,131 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.component.google.calendar.GoogleCalendarConfiguration;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class GoogleCalendarConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+
+    private static final Map<String, Object> ALL_OPTIONS;
+    static {
+        Map<String, Object> map = new CaseInsensitiveMap();
+        map.put("AccessToken", java.lang.String.class);
+        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
+        map.put("ApplicationName", java.lang.String.class);
+        map.put("ClientId", java.lang.String.class);
+        map.put("ClientSecret", java.lang.String.class);
+        map.put("EmailAddress", java.lang.String.class);
+        map.put("MethodName", java.lang.String.class);
+        map.put("P12FileName", java.lang.String.class);
+        map.put("RefreshToken", java.lang.String.class);
+        map.put("Scopes", java.lang.String.class);
+        map.put("User", java.lang.String.class);
+        ALL_OPTIONS = map;
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.GoogleCalendarConfiguration target = (org.apache.camel.component.google.calendar.GoogleCalendarConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "apiname":
+        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
+        case "applicationname":
+        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
+        case "clientid":
+        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 "emailaddress":
+        case "EmailAddress": target.setEmailAddress(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 "p12filename":
+        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
+        case "user":
+        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        return ALL_OPTIONS;
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return java.lang.String.class;
+        case "apiname":
+        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
+        case "applicationname":
+        case "ApplicationName": return java.lang.String.class;
+        case "clientid":
+        case "ClientId": return java.lang.String.class;
+        case "clientsecret":
+        case "ClientSecret": return java.lang.String.class;
+        case "emailaddress":
+        case "EmailAddress": return java.lang.String.class;
+        case "methodname":
+        case "MethodName": return java.lang.String.class;
+        case "p12filename":
+        case "P12FileName": return java.lang.String.class;
+        case "refreshtoken":
+        case "RefreshToken": return java.lang.String.class;
+        case "scopes":
+        case "Scopes": return java.lang.String.class;
+        case "user":
+        case "User": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.component.google.calendar.GoogleCalendarConfiguration target = (org.apache.camel.component.google.calendar.GoogleCalendarConfiguration) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "AccessToken": return target.getAccessToken();
+        case "apiname":
+        case "ApiName": return target.getApiName();
+        case "applicationname":
+        case "ApplicationName": return target.getApplicationName();
+        case "clientid":
+        case "ClientId": return target.getClientId();
+        case "clientsecret":
+        case "ClientSecret": return target.getClientSecret();
+        case "emailaddress":
+        case "EmailAddress": return target.getEmailAddress();
+        case "methodname":
+        case "MethodName": return target.getMethodName();
+        case "p12filename":
+        case "P12FileName": return target.getP12FileName();
+        case "refreshtoken":
+        case "RefreshToken": return target.getRefreshToken();
+        case "scopes":
+        case "Scopes": return target.getScopes();
+        case "user":
+        case "User": return target.getUser();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointConfigurer.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointConfigurer.java
new file mode 100644
index 0000000..a60d053
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointConfigurer.java
@@ -0,0 +1,260 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class GoogleCalendarEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+
+    private static final Map<String, Object> ALL_OPTIONS;
+    static {
+        Map<String, Object> map = new CaseInsensitiveMap();
+        map.put("apiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
+        map.put("methodName", java.lang.String.class);
+        map.put("applicationName", java.lang.String.class);
+        map.put("clientId", java.lang.String.class);
+        map.put("inBody", java.lang.String.class);
+        map.put("scopes", java.lang.String.class);
+        map.put("bridgeErrorHandler", boolean.class);
+        map.put("sendEmptyMessageWhenIdle", boolean.class);
+        map.put("exceptionHandler", org.apache.camel.spi.ExceptionHandler.class);
+        map.put("exchangePattern", org.apache.camel.ExchangePattern.class);
+        map.put("pollStrategy", org.apache.camel.spi.PollingConsumerPollStrategy.class);
+        map.put("lazyStartProducer", boolean.class);
+        map.put("backoffErrorThreshold", int.class);
+        map.put("backoffIdleThreshold", int.class);
+        map.put("backoffMultiplier", int.class);
+        map.put("delay", long.class);
+        map.put("greedy", boolean.class);
+        map.put("initialDelay", long.class);
+        map.put("repeatCount", long.class);
+        map.put("runLoggingLevel", org.apache.camel.LoggingLevel.class);
+        map.put("scheduledExecutorService", java.util.concurrent.ScheduledExecutorService.class);
+        map.put("scheduler", java.lang.Object.class);
+        map.put("schedulerProperties", java.util.Map.class);
+        map.put("startScheduler", boolean.class);
+        map.put("timeUnit", java.util.concurrent.TimeUnit.class);
+        map.put("useFixedDelay", boolean.class);
+        map.put("accessToken", java.lang.String.class);
+        map.put("clientSecret", java.lang.String.class);
+        map.put("emailAddress", java.lang.String.class);
+        map.put("p12FileName", java.lang.String.class);
+        map.put("refreshToken", java.lang.String.class);
+        map.put("user", java.lang.String.class);
+        ALL_OPTIONS = map;
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        GoogleCalendarEndpoint target = (GoogleCalendarEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "accessToken": target.getConfiguration().setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "applicationname":
+        case "applicationName": target.getConfiguration().setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
+        case "backofferrorthreshold":
+        case "backoffErrorThreshold": target.setBackoffErrorThreshold(property(camelContext, int.class, value)); return true;
+        case "backoffidlethreshold":
+        case "backoffIdleThreshold": target.setBackoffIdleThreshold(property(camelContext, int.class, value)); return true;
+        case "backoffmultiplier":
+        case "backoffMultiplier": target.setBackoffMultiplier(property(camelContext, int.class, value)); return true;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
+        case "clientid":
+        case "clientId": target.getConfiguration().setClientId(property(camelContext, java.lang.String.class, value)); return true;
+        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 "emailaddress":
+        case "emailAddress": target.getConfiguration().setEmailAddress(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":
+        case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true;
+        case "greedy": target.setGreedy(property(camelContext, boolean.class, value)); return true;
+        case "inbody":
+        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 "lazystartproducer":
+        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
+        case "p12filename":
+        case "p12FileName": target.getConfiguration().setP12FileName(property(camelContext, java.lang.String.class, value)); return true;
+        case "pollstrategy":
+        case "pollStrategy": target.setPollStrategy(property(camelContext, org.apache.camel.spi.PollingConsumerPollStrategy.class, value)); return true;
+        case "refreshtoken":
+        case "refreshToken": target.getConfiguration().setRefreshToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "repeatcount":
+        case "repeatCount": target.setRepeatCount(property(camelContext, long.class, value)); return true;
+        case "runlogginglevel":
+        case "runLoggingLevel": target.setRunLoggingLevel(property(camelContext, org.apache.camel.LoggingLevel.class, value)); return true;
+        case "scheduledexecutorservice":
+        case "scheduledExecutorService": target.setScheduledExecutorService(property(camelContext, java.util.concurrent.ScheduledExecutorService.class, value)); return true;
+        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.lang.String.class, value)); return true;
+        case "sendemptymessagewhenidle":
+        case "sendEmptyMessageWhenIdle": target.setSendEmptyMessageWhenIdle(property(camelContext, boolean.class, value)); return true;
+        case "startscheduler":
+        case "startScheduler": target.setStartScheduler(property(camelContext, boolean.class, value)); return true;
+        case "timeunit":
+        case "timeUnit": target.setTimeUnit(property(camelContext, java.util.concurrent.TimeUnit.class, value)); return true;
+        case "usefixeddelay":
+        case "useFixedDelay": target.setUseFixedDelay(property(camelContext, boolean.class, value)); return true;
+        case "user": target.getConfiguration().setUser(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        return ALL_OPTIONS;
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "accessToken": return java.lang.String.class;
+        case "applicationname":
+        case "applicationName": return java.lang.String.class;
+        case "backofferrorthreshold":
+        case "backoffErrorThreshold": return int.class;
+        case "backoffidlethreshold":
+        case "backoffIdleThreshold": return int.class;
+        case "backoffmultiplier":
+        case "backoffMultiplier": return int.class;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return boolean.class;
+        case "clientid":
+        case "clientId": return java.lang.String.class;
+        case "clientsecret":
+        case "clientSecret": return java.lang.String.class;
+        case "delay": return long.class;
+        case "emailaddress":
+        case "emailAddress": return java.lang.String.class;
+        case "exceptionhandler":
+        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
+        case "exchangepattern":
+        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
+        case "greedy": return boolean.class;
+        case "inbody":
+        case "inBody": return java.lang.String.class;
+        case "initialdelay":
+        case "initialDelay": return long.class;
+        case "lazystartproducer":
+        case "lazyStartProducer": return boolean.class;
+        case "p12filename":
+        case "p12FileName": return java.lang.String.class;
+        case "pollstrategy":
+        case "pollStrategy": return org.apache.camel.spi.PollingConsumerPollStrategy.class;
+        case "refreshtoken":
+        case "refreshToken": return java.lang.String.class;
+        case "repeatcount":
+        case "repeatCount": return long.class;
+        case "runlogginglevel":
+        case "runLoggingLevel": return org.apache.camel.LoggingLevel.class;
+        case "scheduledexecutorservice":
+        case "scheduledExecutorService": return java.util.concurrent.ScheduledExecutorService.class;
+        case "scheduler": return java.lang.Object.class;
+        case "schedulerproperties":
+        case "schedulerProperties": return java.util.Map.class;
+        case "scopes": return java.lang.String.class;
+        case "sendemptymessagewhenidle":
+        case "sendEmptyMessageWhenIdle": return boolean.class;
+        case "startscheduler":
+        case "startScheduler": return boolean.class;
+        case "timeunit":
+        case "timeUnit": return java.util.concurrent.TimeUnit.class;
+        case "usefixeddelay":
+        case "useFixedDelay": return boolean.class;
+        case "user": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        GoogleCalendarEndpoint target = (GoogleCalendarEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "accessToken": return target.getConfiguration().getAccessToken();
+        case "applicationname":
+        case "applicationName": return target.getConfiguration().getApplicationName();
+        case "backofferrorthreshold":
+        case "backoffErrorThreshold": return target.getBackoffErrorThreshold();
+        case "backoffidlethreshold":
+        case "backoffIdleThreshold": return target.getBackoffIdleThreshold();
+        case "backoffmultiplier":
+        case "backoffMultiplier": return target.getBackoffMultiplier();
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
+        case "clientid":
+        case "clientId": return target.getConfiguration().getClientId();
+        case "clientsecret":
+        case "clientSecret": return target.getConfiguration().getClientSecret();
+        case "delay": return target.getDelay();
+        case "emailaddress":
+        case "emailAddress": return target.getConfiguration().getEmailAddress();
+        case "exceptionhandler":
+        case "exceptionHandler": return target.getExceptionHandler();
+        case "exchangepattern":
+        case "exchangePattern": return target.getExchangePattern();
+        case "greedy": return target.isGreedy();
+        case "inbody":
+        case "inBody": return target.getInBody();
+        case "initialdelay":
+        case "initialDelay": return target.getInitialDelay();
+        case "lazystartproducer":
+        case "lazyStartProducer": return target.isLazyStartProducer();
+        case "p12filename":
+        case "p12FileName": return target.getConfiguration().getP12FileName();
+        case "pollstrategy":
+        case "pollStrategy": return target.getPollStrategy();
+        case "refreshtoken":
+        case "refreshToken": return target.getConfiguration().getRefreshToken();
+        case "repeatcount":
+        case "repeatCount": return target.getRepeatCount();
+        case "runlogginglevel":
+        case "runLoggingLevel": return target.getRunLoggingLevel();
+        case "scheduledexecutorservice":
+        case "scheduledExecutorService": return target.getScheduledExecutorService();
+        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":
+        case "startScheduler": return target.isStartScheduler();
+        case "timeunit":
+        case "timeUnit": return target.getTimeUnit();
+        case "usefixeddelay":
+        case "useFixedDelay": return target.isUseFixedDelay();
+        case "user": return target.getConfiguration().getUser();
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "schedulerproperties":
+        case "schedulerProperties": return java.lang.Object.class;
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointUriFactory.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointUriFactory.java
new file mode 100644
index 0000000..8137d11
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointUriFactory.java
@@ -0,0 +1,108 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar;
+
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.spi.EndpointUriFactory;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+public class GoogleCalendarEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
+
+    private static final String BASE = ":apiName/methodName";
+
+    private static final Set<String> PROPERTY_NAMES;
+    private static final Set<String> SECRET_PROPERTY_NAMES;
+    static {
+        Set<String> props = new HashSet<>(40);
+        props.add("backoffMultiplier");
+        props.add("apiName");
+        props.add("destination");
+        props.add("initialDelay");
+        props.add("content");
+        props.add("setting");
+        props.add("scheduler");
+        props.add("emailAddress");
+        props.add("bridgeErrorHandler");
+        props.add("useFixedDelay");
+        props.add("runLoggingLevel");
+        props.add("backoffErrorThreshold");
+        props.add("greedy");
+        props.add("clientSecret");
+        props.add("text");
+        props.add("scheduledExecutorService");
+        props.add("ruleId");
+        props.add("applicationName");
+        props.add("repeatCount");
+        props.add("timeUnit");
+        props.add("eventId");
+        props.add("p12FileName");
+        props.add("clientId");
+        props.add("sendEmptyMessageWhenIdle");
+        props.add("schedulerProperties");
+        props.add("exchangePattern");
+        props.add("methodName");
+        props.add("accessToken");
+        props.add("backoffIdleThreshold");
+        props.add("lazyStartProducer");
+        props.add("contentChannel");
+        props.add("delay");
+        props.add("pollStrategy");
+        props.add("calendarId");
+        props.add("startScheduler");
+        props.add("scopes");
+        props.add("inBody");
+        props.add("exceptionHandler");
+        props.add("user");
+        props.add("refreshToken");
+        PROPERTY_NAMES = Collections.unmodifiableSet(props);
+        Set<String> secretProps = new HashSet<>(6);
+        secretProps.add("emailAddress");
+        secretProps.add("p12FileName");
+        secretProps.add("clientSecret");
+        secretProps.add("accessToken");
+        secretProps.add("user");
+        secretProps.add("refreshToken");
+        SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
+    }
+
+    @Override
+    public boolean isEnabled(String scheme) {
+        return "google-calendar".equals(scheme);
+    }
+
+    @Override
+    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
+        String syntax = scheme + BASE;
+        String uri = syntax;
+
+        Map<String, Object> copy = new HashMap<>(properties);
+
+        uri = buildPathParameter(syntax, uri, "apiName", null, true, copy);
+        uri = buildPathParameter(syntax, uri, "methodName", null, true, copy);
+        uri = buildQueryParameters(uri, copy, encode);
+        return uri;
+    }
+
+    @Override
+    public Set<String> propertyNames() {
+        return PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> secretPropertyNames() {
+        return SECRET_PROPERTY_NAMES;
+    }
+
+    @Override
+    public boolean isLenientProperties() {
+        return false;
+    }
+}
+
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarAclApiMethod.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarAclApiMethod.java
new file mode 100644
index 0000000..de28b57
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarAclApiMethod.java
@@ -0,0 +1,86 @@
+
+/*
+ * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar.internal;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import com.google.api.services.calendar.Calendar.Acl;
+
+import org.apache.camel.support.component.ApiMethod;
+import org.apache.camel.support.component.ApiMethodArg;
+import org.apache.camel.support.component.ApiMethodImpl;
+
+import static org.apache.camel.support.component.ApiMethodArg.arg;
+
+/**
+ * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Acl
+ */
+public enum CalendarAclApiMethod implements ApiMethod {
+
+    DELETE(
+        com.google.api.services.calendar.Calendar.Acl.Delete.class,
+        "delete",
+        arg("calendarId", String.class),
+        arg("ruleId", String.class)),
+
+    GET(
+        com.google.api.services.calendar.Calendar.Acl.Get.class,
+        "get",
+        arg("calendarId", String.class),
+        arg("ruleId", String.class)),
+
+    INSERT(
+        com.google.api.services.calendar.Calendar.Acl.Insert.class,
+        "insert",
+        arg("calendarId", String.class),
+        arg("content", com.google.api.services.calendar.model.AclRule.class)),
+
+    LIST(
+        com.google.api.services.calendar.Calendar.Acl.List.class,
+        "list",
+        arg("calendarId", String.class)),
+
+    PATCH(
+        com.google.api.services.calendar.Calendar.Acl.Patch.class,
+        "patch",
+        arg("calendarId", String.class),
+        arg("ruleId", String.class),
+        arg("content", com.google.api.services.calendar.model.AclRule.class)),
+
+    UPDATE(
+        com.google.api.services.calendar.Calendar.Acl.Update.class,
+        "update",
+        arg("calendarId", String.class),
+        arg("ruleId", String.class),
+        arg("content", com.google.api.services.calendar.model.AclRule.class)),
+
+    WATCH(
+        com.google.api.services.calendar.Calendar.Acl.Watch.class,
+        "watch",
+        arg("calendarId", String.class),
+        arg("contentChannel", com.google.api.services.calendar.model.Channel.class));
+
+    private final ApiMethod apiMethod;
+
+    private CalendarAclApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
+        this.apiMethod = new ApiMethodImpl(Acl.class, resultType, name, args);
+    }
+
+    @Override
+    public String getName() { return apiMethod.getName(); }
+
+    @Override
+    public Class<?> getResultType() { return apiMethod.getResultType(); }
+
+    @Override
+    public List<String> getArgNames() { return apiMethod.getArgNames(); }
+
+    @Override
+    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
+
+    @Override
+    public Method getMethod() { return apiMethod.getMethod(); }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarListApiMethod.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarListApiMethod.java
new file mode 100644
index 0000000..040aea2
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarListApiMethod.java
@@ -0,0 +1,79 @@
+
+/*
+ * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar.internal;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import com.google.api.services.calendar.Calendar.CalendarList;
+
+import org.apache.camel.support.component.ApiMethod;
+import org.apache.camel.support.component.ApiMethodArg;
+import org.apache.camel.support.component.ApiMethodImpl;
+
+import static org.apache.camel.support.component.ApiMethodArg.arg;
+
+/**
+ * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$CalendarList
+ */
+public enum CalendarCalendarListApiMethod implements ApiMethod {
+
+    DELETE(
+        com.google.api.services.calendar.Calendar.CalendarList.Delete.class,
+        "delete",
+        arg("calendarId", String.class)),
+
+    GET(
+        com.google.api.services.calendar.Calendar.CalendarList.Get.class,
+        "get",
+        arg("calendarId", String.class)),
+
+    INSERT(
+        com.google.api.services.calendar.Calendar.CalendarList.Insert.class,
+        "insert",
+        arg("content", com.google.api.services.calendar.model.CalendarListEntry.class)),
+
+    LIST(
+        com.google.api.services.calendar.Calendar.CalendarList.List.class,
+        "list"),
+
+    PATCH(
+        com.google.api.services.calendar.Calendar.CalendarList.Patch.class,
+        "patch",
+        arg("calendarId", String.class),
+        arg("content", com.google.api.services.calendar.model.CalendarListEntry.class)),
+
+    UPDATE(
+        com.google.api.services.calendar.Calendar.CalendarList.Update.class,
+        "update",
+        arg("calendarId", String.class),
+        arg("content", com.google.api.services.calendar.model.CalendarListEntry.class)),
+
+    WATCH(
+        com.google.api.services.calendar.Calendar.CalendarList.Watch.class,
+        "watch",
+        arg("contentChannel", com.google.api.services.calendar.model.Channel.class));
+
+    private final ApiMethod apiMethod;
+
+    private CalendarCalendarListApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
+        this.apiMethod = new ApiMethodImpl(CalendarList.class, resultType, name, args);
+    }
+
+    @Override
+    public String getName() { return apiMethod.getName(); }
+
+    @Override
+    public Class<?> getResultType() { return apiMethod.getResultType(); }
+
+    @Override
+    public List<String> getArgNames() { return apiMethod.getArgNames(); }
+
+    @Override
+    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
+
+    @Override
+    public Method getMethod() { return apiMethod.getMethod(); }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarsApiMethod.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarsApiMethod.java
new file mode 100644
index 0000000..7ae2e38
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarsApiMethod.java
@@ -0,0 +1,75 @@
+
+/*
+ * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar.internal;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import com.google.api.services.calendar.Calendar.Calendars;
+
+import org.apache.camel.support.component.ApiMethod;
+import org.apache.camel.support.component.ApiMethodArg;
+import org.apache.camel.support.component.ApiMethodImpl;
+
+import static org.apache.camel.support.component.ApiMethodArg.arg;
+
+/**
+ * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Calendars
+ */
+public enum CalendarCalendarsApiMethod implements ApiMethod {
+
+    CLEAR(
+        com.google.api.services.calendar.Calendar.Calendars.Clear.class,
+        "clear",
+        arg("calendarId", String.class)),
+
+    DELETE(
+        com.google.api.services.calendar.Calendar.Calendars.Delete.class,
+        "delete",
+        arg("calendarId", String.class)),
+
+    GET(
+        com.google.api.services.calendar.Calendar.Calendars.Get.class,
+        "get",
+        arg("calendarId", String.class)),
+
+    INSERT(
+        com.google.api.services.calendar.Calendar.Calendars.Insert.class,
+        "insert",
+        arg("content", com.google.api.services.calendar.model.Calendar.class)),
+
+    PATCH(
+        com.google.api.services.calendar.Calendar.Calendars.Patch.class,
+        "patch",
+        arg("calendarId", String.class),
+        arg("content", com.google.api.services.calendar.model.Calendar.class)),
+
+    UPDATE(
+        com.google.api.services.calendar.Calendar.Calendars.Update.class,
+        "update",
+        arg("calendarId", String.class),
+        arg("content", com.google.api.services.calendar.model.Calendar.class));
+
+    private final ApiMethod apiMethod;
+
+    private CalendarCalendarsApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
+        this.apiMethod = new ApiMethodImpl(Calendars.class, resultType, name, args);
+    }
+
+    @Override
+    public String getName() { return apiMethod.getName(); }
+
+    @Override
+    public Class<?> getResultType() { return apiMethod.getResultType(); }
+
+    @Override
+    public List<String> getArgNames() { return apiMethod.getArgNames(); }
+
+    @Override
+    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
+
+    @Override
+    public Method getMethod() { return apiMethod.getMethod(); }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarChannelsApiMethod.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarChannelsApiMethod.java
new file mode 100644
index 0000000..bfc8e03
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarChannelsApiMethod.java
@@ -0,0 +1,48 @@
+
+/*
+ * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar.internal;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import com.google.api.services.calendar.Calendar.Channels;
+
+import org.apache.camel.support.component.ApiMethod;
+import org.apache.camel.support.component.ApiMethodArg;
+import org.apache.camel.support.component.ApiMethodImpl;
+
+import static org.apache.camel.support.component.ApiMethodArg.arg;
+
+/**
+ * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Channels
+ */
+public enum CalendarChannelsApiMethod implements ApiMethod {
+
+    STOP(
+        com.google.api.services.calendar.Calendar.Channels.Stop.class,
+        "stop",
+        arg("contentChannel", com.google.api.services.calendar.model.Channel.class));
+
+    private final ApiMethod apiMethod;
+
+    private CalendarChannelsApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
+        this.apiMethod = new ApiMethodImpl(Channels.class, resultType, name, args);
+    }
+
+    @Override
+    public String getName() { return apiMethod.getName(); }
+
+    @Override
+    public Class<?> getResultType() { return apiMethod.getResultType(); }
+
+    @Override
+    public List<String> getArgNames() { return apiMethod.getArgNames(); }
+
+    @Override
+    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
+
+    @Override
+    public Method getMethod() { return apiMethod.getMethod(); }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarColorsApiMethod.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarColorsApiMethod.java
new file mode 100644
index 0000000..08e1887
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarColorsApiMethod.java
@@ -0,0 +1,47 @@
+
+/*
+ * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar.internal;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import com.google.api.services.calendar.Calendar.Colors;
+
+import org.apache.camel.support.component.ApiMethod;
+import org.apache.camel.support.component.ApiMethodArg;
+import org.apache.camel.support.component.ApiMethodImpl;
+
+import static org.apache.camel.support.component.ApiMethodArg.arg;
+
+/**
+ * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Colors
+ */
+public enum CalendarColorsApiMethod implements ApiMethod {
+
+    GET(
+        com.google.api.services.calendar.Calendar.Colors.Get.class,
+        "get");
+
+    private final ApiMethod apiMethod;
+
+    private CalendarColorsApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
+        this.apiMethod = new ApiMethodImpl(Colors.class, resultType, name, args);
+    }
+
+    @Override
+    public String getName() { return apiMethod.getName(); }
+
+    @Override
+    public Class<?> getResultType() { return apiMethod.getResultType(); }
+
+    @Override
+    public List<String> getArgNames() { return apiMethod.getArgNames(); }
+
+    @Override
+    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
+
+    @Override
+    public Method getMethod() { return apiMethod.getMethod(); }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarEventsApiMethod.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarEventsApiMethod.java
new file mode 100644
index 0000000..a45015b
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarEventsApiMethod.java
@@ -0,0 +1,111 @@
+
+/*
+ * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar.internal;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import com.google.api.services.calendar.Calendar.Events;
+
+import org.apache.camel.support.component.ApiMethod;
+import org.apache.camel.support.component.ApiMethodArg;
+import org.apache.camel.support.component.ApiMethodImpl;
+
+import static org.apache.camel.support.component.ApiMethodArg.arg;
+
+/**
+ * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Events
+ */
+public enum CalendarEventsApiMethod implements ApiMethod {
+
+    CALENDAR_IMPORT(
+        com.google.api.services.calendar.Calendar.Events.CalendarImport.class,
+        "calendarImport",
+        arg("calendarId", String.class),
+        arg("content", com.google.api.services.calendar.model.Event.class)),
+
+    DELETE(
+        com.google.api.services.calendar.Calendar.Events.Delete.class,
+        "delete",
+        arg("calendarId", String.class),
+        arg("eventId", String.class)),
+
+    GET(
+        com.google.api.services.calendar.Calendar.Events.Get.class,
+        "get",
+        arg("calendarId", String.class),
+        arg("eventId", String.class)),
+
+    INSERT(
+        com.google.api.services.calendar.Calendar.Events.Insert.class,
+        "insert",
+        arg("calendarId", String.class),
+        arg("content", com.google.api.services.calendar.model.Event.class)),
+
+    INSTANCES(
+        com.google.api.services.calendar.Calendar.Events.Instances.class,
+        "instances",
+        arg("calendarId", String.class),
+        arg("eventId", String.class)),
+
+    LIST(
+        com.google.api.services.calendar.Calendar.Events.List.class,
+        "list",
+        arg("calendarId", String.class)),
+
+    MOVE(
+        com.google.api.services.calendar.Calendar.Events.Move.class,
+        "move",
+        arg("calendarId", String.class),
+        arg("eventId", String.class),
+        arg("destination", String.class)),
+
+    PATCH(
+        com.google.api.services.calendar.Calendar.Events.Patch.class,
+        "patch",
+        arg("calendarId", String.class),
+        arg("eventId", String.class),
+        arg("content", com.google.api.services.calendar.model.Event.class)),
+
+    QUICK_ADD(
+        com.google.api.services.calendar.Calendar.Events.QuickAdd.class,
+        "quickAdd",
+        arg("calendarId", String.class),
+        arg("text", String.class)),
+
+    UPDATE(
+        com.google.api.services.calendar.Calendar.Events.Update.class,
+        "update",
+        arg("calendarId", String.class),
+        arg("eventId", String.class),
+        arg("content", com.google.api.services.calendar.model.Event.class)),
+
+    WATCH(
+        com.google.api.services.calendar.Calendar.Events.Watch.class,
+        "watch",
+        arg("calendarId", String.class),
+        arg("contentChannel", com.google.api.services.calendar.model.Channel.class));
+
+    private final ApiMethod apiMethod;
+
+    private CalendarEventsApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
+        this.apiMethod = new ApiMethodImpl(Events.class, resultType, name, args);
+    }
+
+    @Override
+    public String getName() { return apiMethod.getName(); }
+
+    @Override
+    public Class<?> getResultType() { return apiMethod.getResultType(); }
+
+    @Override
+    public List<String> getArgNames() { return apiMethod.getArgNames(); }
+
+    @Override
+    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
+
+    @Override
+    public Method getMethod() { return apiMethod.getMethod(); }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarFreebusyApiMethod.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarFreebusyApiMethod.java
new file mode 100644
index 0000000..9f803d7
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarFreebusyApiMethod.java
@@ -0,0 +1,48 @@
+
+/*
+ * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar.internal;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import com.google.api.services.calendar.Calendar.Freebusy;
+
+import org.apache.camel.support.component.ApiMethod;
+import org.apache.camel.support.component.ApiMethodArg;
+import org.apache.camel.support.component.ApiMethodImpl;
+
+import static org.apache.camel.support.component.ApiMethodArg.arg;
+
+/**
+ * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Freebusy
+ */
+public enum CalendarFreebusyApiMethod implements ApiMethod {
+
+    QUERY(
+        com.google.api.services.calendar.Calendar.Freebusy.Query.class,
+        "query",
+        arg("content", com.google.api.services.calendar.model.FreeBusyRequest.class));
+
+    private final ApiMethod apiMethod;
+
+    private CalendarFreebusyApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
+        this.apiMethod = new ApiMethodImpl(Freebusy.class, resultType, name, args);
+    }
+
+    @Override
+    public String getName() { return apiMethod.getName(); }
+
+    @Override
+    public Class<?> getResultType() { return apiMethod.getResultType(); }
+
+    @Override
+    public List<String> getArgNames() { return apiMethod.getArgNames(); }
+
+    @Override
+    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
+
+    @Override
+    public Method getMethod() { return apiMethod.getMethod(); }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarSettingsApiMethod.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarSettingsApiMethod.java
new file mode 100644
index 0000000..8efb2dd
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarSettingsApiMethod.java
@@ -0,0 +1,57 @@
+
+/*
+ * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar.internal;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import com.google.api.services.calendar.Calendar.Settings;
+
+import org.apache.camel.support.component.ApiMethod;
+import org.apache.camel.support.component.ApiMethodArg;
+import org.apache.camel.support.component.ApiMethodImpl;
+
+import static org.apache.camel.support.component.ApiMethodArg.arg;
+
+/**
+ * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Settings
+ */
+public enum CalendarSettingsApiMethod implements ApiMethod {
+
+    GET(
+        com.google.api.services.calendar.Calendar.Settings.Get.class,
+        "get",
+        arg("setting", String.class)),
+
+    LIST(
+        com.google.api.services.calendar.Calendar.Settings.List.class,
+        "list"),
+
+    WATCH(
+        com.google.api.services.calendar.Calendar.Settings.Watch.class,
+        "watch",
+        arg("contentChannel", com.google.api.services.calendar.model.Channel.class));
+
+    private final ApiMethod apiMethod;
+
+    private CalendarSettingsApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
+        this.apiMethod = new ApiMethodImpl(Settings.class, resultType, name, args);
+    }
+
+    @Override
+    public String getName() { return apiMethod.getName(); }
+
+    @Override
+    public Class<?> getResultType() { return apiMethod.getResultType(); }
+
+    @Override
+    public List<String> getArgNames() { return apiMethod.getArgNames(); }
+
+    @Override
+    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
+
+    @Override
+    public Method getMethod() { return apiMethod.getMethod(); }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiCollection.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiCollection.java
new file mode 100644
index 0000000..47ea5ad
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiCollection.java
@@ -0,0 +1,122 @@
+
+/*
+ * Camel ApiCollection generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar.internal;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+
+import org.apache.camel.component.google.calendar.GoogleCalendarConfiguration;
+import org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration;
+import org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration;
+import org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration;
+import org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration;
+import org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration;
+import org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration;
+import org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration;
+import org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration;
+
+import org.apache.camel.support.component.ApiCollection;
+import org.apache.camel.support.component.ApiMethod;
+import org.apache.camel.support.component.ApiMethodHelper;
+
+/**
+ * Camel {@link ApiCollection} for GoogleCalendar
+ */
+public final class GoogleCalendarApiCollection extends ApiCollection<GoogleCalendarApiName, GoogleCalendarConfiguration> {
+
+    private static GoogleCalendarApiCollection collection;
+
+    private GoogleCalendarApiCollection() {
+        final Map<String, String> aliases = new HashMap<String, String>();
+        final Map<GoogleCalendarApiName, ApiMethodHelper<? extends ApiMethod>> apiHelpers = new HashMap<>();
+        final Map<Class<? extends ApiMethod>, GoogleCalendarApiName> apiMethods = new HashMap<>();
+
+        List<String> nullableArgs;
+
+        aliases.clear();
+        nullableArgs = Arrays.asList();
+        apiHelpers.put(GoogleCalendarApiName.ACL, new ApiMethodHelper<CalendarAclApiMethod>(CalendarAclApiMethod.class, aliases, nullableArgs));
+        apiMethods.put(CalendarAclApiMethod.class, GoogleCalendarApiName.ACL);
+
+        aliases.clear();
+        nullableArgs = Arrays.asList();
+        apiHelpers.put(GoogleCalendarApiName.LIST, new ApiMethodHelper<CalendarCalendarListApiMethod>(CalendarCalendarListApiMethod.class, aliases, nullableArgs));
+        apiMethods.put(CalendarCalendarListApiMethod.class, GoogleCalendarApiName.LIST);
+
+        aliases.clear();
+        nullableArgs = Arrays.asList();
+        apiHelpers.put(GoogleCalendarApiName.CALENDARS, new ApiMethodHelper<CalendarCalendarsApiMethod>(CalendarCalendarsApiMethod.class, aliases, nullableArgs));
+        apiMethods.put(CalendarCalendarsApiMethod.class, GoogleCalendarApiName.CALENDARS);
+
+        aliases.clear();
+        nullableArgs = Arrays.asList();
+        apiHelpers.put(GoogleCalendarApiName.CHANNELS, new ApiMethodHelper<CalendarChannelsApiMethod>(CalendarChannelsApiMethod.class, aliases, nullableArgs));
+        apiMethods.put(CalendarChannelsApiMethod.class, GoogleCalendarApiName.CHANNELS);
+
+        aliases.clear();
+        nullableArgs = Arrays.asList();
+        apiHelpers.put(GoogleCalendarApiName.COLORS, new ApiMethodHelper<CalendarColorsApiMethod>(CalendarColorsApiMethod.class, aliases, nullableArgs));
+        apiMethods.put(CalendarColorsApiMethod.class, GoogleCalendarApiName.COLORS);
+
+        aliases.clear();
+        nullableArgs = Arrays.asList();
+        apiHelpers.put(GoogleCalendarApiName.FREEBUSY, new ApiMethodHelper<CalendarFreebusyApiMethod>(CalendarFreebusyApiMethod.class, aliases, nullableArgs));
+        apiMethods.put(CalendarFreebusyApiMethod.class, GoogleCalendarApiName.FREEBUSY);
+
+        aliases.clear();
+        nullableArgs = Arrays.asList();
+        apiHelpers.put(GoogleCalendarApiName.EVENTS, new ApiMethodHelper<CalendarEventsApiMethod>(CalendarEventsApiMethod.class, aliases, nullableArgs));
+        apiMethods.put(CalendarEventsApiMethod.class, GoogleCalendarApiName.EVENTS);
+
+        aliases.clear();
+        nullableArgs = Arrays.asList();
+        apiHelpers.put(GoogleCalendarApiName.SETTINGS, new ApiMethodHelper<CalendarSettingsApiMethod>(CalendarSettingsApiMethod.class, aliases, nullableArgs));
+        apiMethods.put(CalendarSettingsApiMethod.class, GoogleCalendarApiName.SETTINGS);
+
+        setApiHelpers(apiHelpers);
+        setApiMethods(apiMethods);
+    }
+
+    public GoogleCalendarConfiguration getEndpointConfiguration(GoogleCalendarApiName apiName) {
+        GoogleCalendarConfiguration result = null;
+        switch (apiName) {
+            case ACL:
+                result = new CalendarAclEndpointConfiguration();
+                break;
+            case LIST:
+                result = new CalendarCalendarListEndpointConfiguration();
+                break;
+            case CALENDARS:
+                result = new CalendarCalendarsEndpointConfiguration();
+                break;
+            case CHANNELS:
+                result = new CalendarChannelsEndpointConfiguration();
+                break;
+            case COLORS:
+                result = new CalendarColorsEndpointConfiguration();
+                break;
+            case FREEBUSY:
+                result = new CalendarFreebusyEndpointConfiguration();
+                break;
+            case EVENTS:
+                result = new CalendarEventsEndpointConfiguration();
+                break;
+            case SETTINGS:
+                result = new CalendarSettingsEndpointConfiguration();
+                break;
+        }
+        return result;
+    }
+
+    public static synchronized GoogleCalendarApiCollection getCollection() {
+        if (collection == null) {
+            collection = new GoogleCalendarApiCollection();
+        }
+        return collection;
+    }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiName.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiName.java
new file mode 100644
index 0000000..a2aed46
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiName.java
@@ -0,0 +1,42 @@
+
+/*
+ * Camel ApiName Enumeration generated by camel-api-component-maven-plugin
+ */
+package org.apache.camel.component.google.calendar.internal;
+
+import org.apache.camel.support.component.ApiName;
+
+/**
+ * Camel {@link ApiName} Enumeration for Component GoogleCalendar
+ */
+public enum GoogleCalendarApiName implements ApiName {
+
+    ACL("acl"),
+
+    LIST("list"),
+
+    CALENDARS("calendars"),
+
+    CHANNELS("channels"),
+
+    COLORS("colors"),
+
+    FREEBUSY("freebusy"),
+
+    EVENTS("events"),
+
+    SETTINGS("settings");
+
+
+    private final String name;
+
+    private GoogleCalendarApiName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamComponentConfigurer.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamComponentConfigurer.java
new file mode 100644
index 0000000..c40d3d5
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamComponentConfigurer.java
@@ -0,0 +1,160 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar.stream;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class GoogleCalendarStreamComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    private org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration getOrCreateConfiguration(GoogleCalendarStreamComponent target) {
+        if (target.getConfiguration() == null) {
+            target.setConfiguration(new org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration());
+        }
+        return target.getConfiguration();
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        GoogleCalendarStreamComponent target = (GoogleCalendarStreamComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "accessToken": getOrCreateConfiguration(target).setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "applicationname":
+        case "applicationName": getOrCreateConfiguration(target).setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
+        case "autowiredenabled":
+        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
+        case "calendarid":
+        case "calendarId": getOrCreateConfiguration(target).setCalendarId(property(camelContext, java.lang.String.class, value)); return true;
+        case "clientfactory":
+        case "clientFactory": target.setClientFactory(property(camelContext, org.apache.camel.component.google.calendar.GoogleCalendarClientFactory.class, value)); return true;
+        case "clientid":
+        case "clientId": getOrCreateConfiguration(target).setClientId(property(camelContext, java.lang.String.class, value)); return true;
+        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.calendar.stream.GoogleCalendarStreamConfiguration.class, value)); return true;
+        case "considerlastupdate":
+        case "considerLastUpdate": getOrCreateConfiguration(target).setConsiderLastUpdate(property(camelContext, boolean.class, value)); return true;
+        case "consumefromnow":
+        case "consumeFromNow": getOrCreateConfiguration(target).setConsumeFromNow(property(camelContext, boolean.class, value)); return true;
+        case "emailaddress":
+        case "emailAddress": getOrCreateConfiguration(target).setEmailAddress(property(camelContext, java.lang.String.class, value)); return true;
+        case "maxresults":
+        case "maxResults": getOrCreateConfiguration(target).setMaxResults(property(camelContext, int.class, value)); return true;
+        case "p12filename":
+        case "p12FileName": getOrCreateConfiguration(target).setP12FileName(property(camelContext, java.lang.String.class, value)); return true;
+        case "query": getOrCreateConfiguration(target).setQuery(property(camelContext, java.lang.String.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;
+        case "syncflow":
+        case "syncFlow": getOrCreateConfiguration(target).setSyncFlow(property(camelContext, boolean.class, value)); return true;
+        case "user": getOrCreateConfiguration(target).setUser(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "accessToken": return java.lang.String.class;
+        case "applicationname":
+        case "applicationName": return java.lang.String.class;
+        case "autowiredenabled":
+        case "autowiredEnabled": return boolean.class;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return boolean.class;
+        case "calendarid":
+        case "calendarId": return java.lang.String.class;
+        case "clientfactory":
+        case "clientFactory": return org.apache.camel.component.google.calendar.GoogleCalendarClientFactory.class;
+        case "clientid":
+        case "clientId": return java.lang.String.class;
+        case "clientsecret":
+        case "clientSecret": return java.lang.String.class;
+        case "configuration": return org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration.class;
+        case "considerlastupdate":
+        case "considerLastUpdate": return boolean.class;
+        case "consumefromnow":
+        case "consumeFromNow": return boolean.class;
+        case "emailaddress":
+        case "emailAddress": return java.lang.String.class;
+        case "maxresults":
+        case "maxResults": return int.class;
+        case "p12filename":
+        case "p12FileName": return java.lang.String.class;
+        case "query": return java.lang.String.class;
+        case "refreshtoken":
+        case "refreshToken": return java.lang.String.class;
+        case "scopes": return java.util.List.class;
+        case "syncflow":
+        case "syncFlow": return boolean.class;
+        case "user": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        GoogleCalendarStreamComponent target = (GoogleCalendarStreamComponent) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "accessToken": return getOrCreateConfiguration(target).getAccessToken();
+        case "applicationname":
+        case "applicationName": return getOrCreateConfiguration(target).getApplicationName();
+        case "autowiredenabled":
+        case "autowiredEnabled": return target.isAutowiredEnabled();
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
+        case "calendarid":
+        case "calendarId": return getOrCreateConfiguration(target).getCalendarId();
+        case "clientfactory":
+        case "clientFactory": return target.getClientFactory();
+        case "clientid":
+        case "clientId": return getOrCreateConfiguration(target).getClientId();
+        case "clientsecret":
+        case "clientSecret": return getOrCreateConfiguration(target).getClientSecret();
+        case "configuration": return target.getConfiguration();
+        case "considerlastupdate":
+        case "considerLastUpdate": return getOrCreateConfiguration(target).isConsiderLastUpdate();
+        case "consumefromnow":
+        case "consumeFromNow": return getOrCreateConfiguration(target).isConsumeFromNow();
+        case "emailaddress":
+        case "emailAddress": return getOrCreateConfiguration(target).getEmailAddress();
+        case "maxresults":
+        case "maxResults": return getOrCreateConfiguration(target).getMaxResults();
+        case "p12filename":
+        case "p12FileName": return getOrCreateConfiguration(target).getP12FileName();
+        case "query": return getOrCreateConfiguration(target).getQuery();
+        case "refreshtoken":
+        case "refreshToken": return getOrCreateConfiguration(target).getRefreshToken();
+        case "scopes": return getOrCreateConfiguration(target).getScopes();
+        case "syncflow":
+        case "syncFlow": return getOrCreateConfiguration(target).isSyncFlow();
+        case "user": return getOrCreateConfiguration(target).getUser();
+        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-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointConfigurer.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointConfigurer.java
new file mode 100644
index 0000000..102d2f0
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointConfigurer.java
@@ -0,0 +1,239 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar.stream;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class GoogleCalendarStreamEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        GoogleCalendarStreamEndpoint target = (GoogleCalendarStreamEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "accessToken": target.getConfiguration().setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "applicationname":
+        case "applicationName": target.getConfiguration().setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
+        case "backofferrorthreshold":
+        case "backoffErrorThreshold": target.setBackoffErrorThreshold(property(camelContext, int.class, value)); return true;
+        case "backoffidlethreshold":
+        case "backoffIdleThreshold": target.setBackoffIdleThreshold(property(camelContext, int.class, value)); return true;
+        case "backoffmultiplier":
+        case "backoffMultiplier": target.setBackoffMultiplier(property(camelContext, int.class, value)); return true;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
+        case "calendarid":
+        case "calendarId": target.getConfiguration().setCalendarId(property(camelContext, java.lang.String.class, value)); return true;
+        case "clientid":
+        case "clientId": target.getConfiguration().setClientId(property(camelContext, java.lang.String.class, value)); return true;
+        case "clientsecret":
+        case "clientSecret": target.getConfiguration().setClientSecret(property(camelContext, java.lang.String.class, value)); return true;
+        case "considerlastupdate":
+        case "considerLastUpdate": target.getConfiguration().setConsiderLastUpdate(property(camelContext, boolean.class, value)); return true;
+        case "consumefromnow":
+        case "consumeFromNow": target.getConfiguration().setConsumeFromNow(property(camelContext, boolean.class, value)); return true;
+        case "delay": target.setDelay(property(camelContext, long.class, value)); return true;
+        case "emailaddress":
+        case "emailAddress": target.getConfiguration().setEmailAddress(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":
+        case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true;
+        case "greedy": target.setGreedy(property(camelContext, boolean.class, value)); return true;
+        case "initialdelay":
+        case "initialDelay": target.setInitialDelay(property(camelContext, long.class, value)); return true;
+        case "maxresults":
+        case "maxResults": target.getConfiguration().setMaxResults(property(camelContext, int.class, value)); return true;
+        case "p12filename":
+        case "p12FileName": target.getConfiguration().setP12FileName(property(camelContext, java.lang.String.class, value)); return true;
+        case "pollstrategy":
+        case "pollStrategy": target.setPollStrategy(property(camelContext, org.apache.camel.spi.PollingConsumerPollStrategy.class, value)); return true;
+        case "query": target.getConfiguration().setQuery(property(camelContext, java.lang.String.class, value)); return true;
+        case "refreshtoken":
+        case "refreshToken": target.getConfiguration().setRefreshToken(property(camelContext, java.lang.String.class, value)); return true;
+        case "repeatcount":
+        case "repeatCount": target.setRepeatCount(property(camelContext, long.class, value)); return true;
+        case "runlogginglevel":
+        case "runLoggingLevel": target.setRunLoggingLevel(property(camelContext, org.apache.camel.LoggingLevel.class, value)); return true;
+        case "scheduledexecutorservice":
+        case "scheduledExecutorService": target.setScheduledExecutorService(property(camelContext, java.util.concurrent.ScheduledExecutorService.class, value)); return true;
+        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":
+        case "startScheduler": target.setStartScheduler(property(camelContext, boolean.class, value)); return true;
+        case "syncflow":
+        case "syncFlow": target.getConfiguration().setSyncFlow(property(camelContext, boolean.class, value)); return true;
+        case "timeunit":
+        case "timeUnit": target.setTimeUnit(property(camelContext, java.util.concurrent.TimeUnit.class, value)); return true;
+        case "usefixeddelay":
+        case "useFixedDelay": target.setUseFixedDelay(property(camelContext, boolean.class, value)); return true;
+        case "user": target.getConfiguration().setUser(property(camelContext, java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "accessToken": return java.lang.String.class;
+        case "applicationname":
+        case "applicationName": return java.lang.String.class;
+        case "backofferrorthreshold":
+        case "backoffErrorThreshold": return int.class;
+        case "backoffidlethreshold":
+        case "backoffIdleThreshold": return int.class;
+        case "backoffmultiplier":
+        case "backoffMultiplier": return int.class;
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return boolean.class;
+        case "calendarid":
+        case "calendarId": return java.lang.String.class;
+        case "clientid":
+        case "clientId": return java.lang.String.class;
+        case "clientsecret":
+        case "clientSecret": return java.lang.String.class;
+        case "considerlastupdate":
+        case "considerLastUpdate": return boolean.class;
+        case "consumefromnow":
+        case "consumeFromNow": return boolean.class;
+        case "delay": return long.class;
+        case "emailaddress":
+        case "emailAddress": return java.lang.String.class;
+        case "exceptionhandler":
+        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
+        case "exchangepattern":
+        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
+        case "greedy": return boolean.class;
+        case "initialdelay":
+        case "initialDelay": return long.class;
+        case "maxresults":
+        case "maxResults": return int.class;
+        case "p12filename":
+        case "p12FileName": return java.lang.String.class;
+        case "pollstrategy":
+        case "pollStrategy": return org.apache.camel.spi.PollingConsumerPollStrategy.class;
+        case "query": return java.lang.String.class;
+        case "refreshtoken":
+        case "refreshToken": return java.lang.String.class;
+        case "repeatcount":
+        case "repeatCount": return long.class;
+        case "runlogginglevel":
+        case "runLoggingLevel": return org.apache.camel.LoggingLevel.class;
+        case "scheduledexecutorservice":
+        case "scheduledExecutorService": return java.util.concurrent.ScheduledExecutorService.class;
+        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":
+        case "startScheduler": return boolean.class;
+        case "syncflow":
+        case "syncFlow": return boolean.class;
+        case "timeunit":
+        case "timeUnit": return java.util.concurrent.TimeUnit.class;
+        case "usefixeddelay":
+        case "useFixedDelay": return boolean.class;
+        case "user": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        GoogleCalendarStreamEndpoint target = (GoogleCalendarStreamEndpoint) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "accesstoken":
+        case "accessToken": return target.getConfiguration().getAccessToken();
+        case "applicationname":
+        case "applicationName": return target.getConfiguration().getApplicationName();
+        case "backofferrorthreshold":
+        case "backoffErrorThreshold": return target.getBackoffErrorThreshold();
+        case "backoffidlethreshold":
+        case "backoffIdleThreshold": return target.getBackoffIdleThreshold();
+        case "backoffmultiplier":
+        case "backoffMultiplier": return target.getBackoffMultiplier();
+        case "bridgeerrorhandler":
+        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
+        case "calendarid":
+        case "calendarId": return target.getConfiguration().getCalendarId();
+        case "clientid":
+        case "clientId": return target.getConfiguration().getClientId();
+        case "clientsecret":
+        case "clientSecret": return target.getConfiguration().getClientSecret();
+        case "considerlastupdate":
+        case "considerLastUpdate": return target.getConfiguration().isConsiderLastUpdate();
+        case "consumefromnow":
+        case "consumeFromNow": return target.getConfiguration().isConsumeFromNow();
+        case "delay": return target.getDelay();
+        case "emailaddress":
+        case "emailAddress": return target.getConfiguration().getEmailAddress();
+        case "exceptionhandler":
+        case "exceptionHandler": return target.getExceptionHandler();
+        case "exchangepattern":
+        case "exchangePattern": return target.getExchangePattern();
+        case "greedy": return target.isGreedy();
+        case "initialdelay":
+        case "initialDelay": return target.getInitialDelay();
+        case "maxresults":
+        case "maxResults": return target.getConfiguration().getMaxResults();
+        case "p12filename":
+        case "p12FileName": return target.getConfiguration().getP12FileName();
+        case "pollstrategy":
+        case "pollStrategy": return target.getPollStrategy();
+        case "query": return target.getConfiguration().getQuery();
+        case "refreshtoken":
+        case "refreshToken": return target.getConfiguration().getRefreshToken();
+        case "repeatcount":
+        case "repeatCount": return target.getRepeatCount();
+        case "runlogginglevel":
+        case "runLoggingLevel": return target.getRunLoggingLevel();
+        case "scheduledexecutorservice":
+        case "scheduledExecutorService": return target.getScheduledExecutorService();
+        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":
+        case "startScheduler": return target.isStartScheduler();
+        case "syncflow":
+        case "syncFlow": return target.getConfiguration().isSyncFlow();
+        case "timeunit":
+        case "timeUnit": return target.getTimeUnit();
+        case "usefixeddelay":
+        case "useFixedDelay": return target.isUseFixedDelay();
+        case "user": return target.getConfiguration().getUser();
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
+        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-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointUriFactory.java b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointUriFactory.java
new file mode 100644
index 0000000..1c2da8d
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointUriFactory.java
@@ -0,0 +1,109 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.component.google.calendar.stream;
+
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.spi.EndpointUriFactory;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+public class GoogleCalendarStreamEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
+
+    private static final String BASE = ":index";
+
+    private static final Set<String> PROPERTY_NAMES;
+    private static final Set<String> SECRET_PROPERTY_NAMES;
+    static {
+        Set<String> props = new HashSet<>(42);
+        props.add("backoffMultiplier");
+        props.add("destination");
+        props.add("initialDelay");
+        props.add("consumeFromNow");
+        props.add("content");
+        props.add("setting");
+        props.add("scheduler");
+        props.add("emailAddress");
+        props.add("bridgeErrorHandler");
+        props.add("useFixedDelay");
+        props.add("runLoggingLevel");
+        props.add("maxResults");
+        props.add("backoffErrorThreshold");
+        props.add("greedy");
+        props.add("clientSecret");
+        props.add("text");
+        props.add("scheduledExecutorService");
+        props.add("ruleId");
+        props.add("applicationName");
+        props.add("repeatCount");
+        props.add("timeUnit");
+        props.add("eventId");
+        props.add("p12FileName");
+        props.add("clientId");
+        props.add("considerLastUpdate");
+        props.add("query");
+        props.add("sendEmptyMessageWhenIdle");
+        props.add("schedulerProperties");
+        props.add("exchangePattern");
+        props.add("index");
+        props.add("syncFlow");
+        props.add("accessToken");
+        props.add("backoffIdleThreshold");
+        props.add("contentChannel");
+        props.add("delay");
+        props.add("calendarId");
+        props.add("pollStrategy");
+        props.add("startScheduler");
+        props.add("scopes");
+        props.add("exceptionHandler");
+        props.add("user");
+        props.add("refreshToken");
+        PROPERTY_NAMES = Collections.unmodifiableSet(props);
+        Set<String> secretProps = new HashSet<>(6);
+        secretProps.add("emailAddress");
+        secretProps.add("p12FileName");
+        secretProps.add("clientSecret");
+        secretProps.add("accessToken");
+        secretProps.add("user");
+        secretProps.add("refreshToken");
+        SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
+    }
+
+    @Override
+    public boolean isEnabled(String scheme) {
+        return "google-calendar-stream".equals(scheme);
+    }
+
+    @Override
+    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
+        String syntax = scheme + BASE;
+        String uri = syntax;
+
+        Map<String, Object> copy = new HashMap<>(properties);
+
+        uri = buildPathParameter(syntax, uri, "index", null, true, copy);
+        uri = buildQueryParameters(uri, copy, encode);
+        return uri;
+    }
+
+    @Override
+    public Set<String> propertyNames() {
+        return PROPERTY_NAMES;
+    }
+
+    @Override
+    public Set<String> secretPropertyNames() {
+        return SECRET_PROPERTY_NAMES;
+    }
+
+    @Override
+    public boolean isLenientProperties() {
+        return false;
+    }
+}
+
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component.properties
new file mode 100644
index 0000000..2b42cb1
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+components=google-calendar google-calendar-stream
+groupId=org.apache.camel
+artifactId=camel-google-calendar
+version=3.9.0-SNAPSHOT
+projectName=Camel :: Google Calendar
+projectDescription=Camel Component for GoogleCalendar
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar
new file mode 100644
index 0000000..24ad33b
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.GoogleCalendarComponent
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar-stream b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar-stream
new file mode 100644
index 0000000..e0236d0
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar-stream
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamComponent
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-component b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-component
new file mode 100644
index 0000000..d044dd7
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-component
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.GoogleCalendarComponentConfigurer
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-endpoint b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-endpoint
new file mode 100644
index 0000000..ae79126
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.GoogleCalendarEndpointConfigurer
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-component b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-component
new file mode 100644
index 0000000..3d35733
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-component
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamComponentConfigurer
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-endpoint b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-endpoint
new file mode 100644
index 0000000..9d9f3bd
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamEndpointConfigurer
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration
new file mode 100644
index 0000000..ea1c73f
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.CalendarAclEndpointConfigurationConfigurer
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration
new file mode 100644
index 0000000..ac3f3d5
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfigurationConfigurer
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration
new file mode 100644
index 0000000..4caa55b
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfigurationConfigurer
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration
new file mode 100644
index 0000000..6d3b53d
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfigurationConfigurer
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration
new file mode 100644
index 0000000..2f54641
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.CalendarColorsEndpointConfigurationConfigurer
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration
new file mode 100644
index 0000000..0fd6bb1
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.CalendarEventsEndpointConfigurationConfigurer
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration
new file mode 100644
index 0000000..5de9b66
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfigurationConfigurer
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration
new file mode 100644
index 0000000..7f7092a
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfigurationConfigurer
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.GoogleCalendarConfiguration b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.GoogleCalendarConfiguration
new file mode 100644
index 0000000..5847e8b
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.GoogleCalendarConfiguration
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.GoogleCalendarConfigurationConfigurer
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-endpoint b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-endpoint
new file mode 100644
index 0000000..fda9fd7
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.GoogleCalendarEndpointUriFactory
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-stream-endpoint b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-stream-endpoint
new file mode 100644
index 0000000..ae5a539
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-stream-endpoint
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamEndpointUriFactory
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/google-calendar.json b/components/camel-google/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/google-calendar.json
new file mode 100644
index 0000000..7f75749
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/google-calendar.json
@@ -0,0 +1,93 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "google-calendar",
+    "title": "Google Calendar",
+    "description": "Perform various operations on a Google Calendar.",
+    "deprecated": false,
+    "firstVersion": "2.15.0",
+    "label": "api,cloud",
+    "javaType": "org.apache.camel.component.google.calendar.GoogleCalendarComponent",
+    "supportLevel": "Stable",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-google-calendar",
+    "version": "3.9.0-SNAPSHOT",
+    "scheme": "google-calendar",
+    "extendsScheme": "",
+    "syntax": "google-calendar:apiName\/methodName",
+    "async": false,
+    "api": true,
+    "apiSyntax": "apiName\/methodName",
+    "consumerOnly": false,
+    "producerOnly": false,
+    "lenientProperties": false
+  },
+  "componentProperties": {
+    "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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Google calendar application name. Example would be camel-google-calendar\/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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Client ID of the calendar application" },
+    "configuration": { "kind": "property", "displayName": "Configuration", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "To use the shared configuration" },
+    "scopes": { "kind": "property", "displayName": "Scopes", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "https:\/\/www.googleapis.com\/auth\/calendar", "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Specifies the level of permissions you want a calendar ap [...]
+    "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.calendar.GoogleCalendarClientFactory", "deprecated": false, "autowired": false, "secret": false, "description": "To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleCalendarClientFactory" },
+    "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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long te [...]
+    "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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Client secret of the calendar application" },
+    "emailAddress": { "kind": "property", "displayName": "Email Address", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "The emailAddress of the Google Service Account." },
+    "p12FileName": { "kind": "property", "displayName": "P12 File Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "The name of the p12 file which has the private key to use with the Google 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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whene [...]
+    "user": { "kind": "property", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "The email address of the user the application is trying to impersonate in the service account flow" }
+  },
+  "properties": {
+    "apiName": { "kind": "path", "displayName": "Api Name", "group": "common", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName", "enum": [ "ACL", "LIST", "CALENDARS", "CHANNELS", "COLORS", "FREEBUSY", "EVENTS", "SETTINGS" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "c [...]
+    "methodName": { "kind": "path", "displayName": "Method Name", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "enum": [ "calendarImport", "clear", "delete", "get", "insert", "instances", "list", "move", "patch", "query", "quickAdd", "stop", "update", "watch" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration [...]
+    "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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Google calendar application name. Example would be camel-google-calendar\/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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Client ID of the calendar application" },
+    "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": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "https:\/\/www.googleapis.com\/auth\/calendar", "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Specifies the level of permissions you want a calendar a [...]
+    "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 [...]
+    "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
+    "pollStrategy": { "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation  [...]
+    "lazyStartProducer": { "kind": "parameter", "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 sta [...]
+    "backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." },
+    "backoffIdleThreshold": { "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." },
+    "backoffMultiplier": { "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening agai [...]
+    "delay": { "kind": "parameter", "displayName": "Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "description": "Milliseconds before the next poll." },
+    "greedy": { "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." },
+    "initialDelay": { "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." },
+    "repeatCount": { "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." },
+    "runLoggingLevel": { "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the logging level  [...]
+    "scheduledExecutorService": { "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." },
+    "scheduler": { "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" },
+    "schedulerProperties": { "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler." },
+    "startScheduler": { "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." },
+    "timeUnit": { "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." },
+    "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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long t [...]
+    "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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Client secret of the calendar application" },
+    "emailAddress": { "kind": "parameter", "displayName": "Email Address", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "The emailAddress of the Google Service Account." },
+    "p12FileName": { "kind": "parameter", "displayName": "P12 File Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "The name of the p12 file which has the private key to use with the Google 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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken when [...]
+    "user": { "kind": "parameter", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "The email address of the user the application is trying to impersonate in the service account flow" }
+  },
+  "apis": {
+    "acl": { "consumerOnly": false, "producerOnly": false, "description": "The acl collection of methods", "methods": { "delete": { "description": "Deletes an access control rule", "signatures": [ "com.google.api.services.calendar.Calendar$Acl$Delete delete(String calendarId, String ruleId)" ] }, "get": { "description": "Returns an access control rule", "signatures": [ "com.google.api.services.calendar.Calendar$Acl$Get get(String calendarId, String ruleId)" ] }, "insert": { "description" [...]
+    "calendars": { "consumerOnly": false, "producerOnly": false, "description": "The calendars collection of methods", "methods": { "clear": { "description": "Clears a primary calendar", "signatures": [ "com.google.api.services.calendar.Calendar$Calendars$Clear clear(String calendarId)" ] }, "delete": { "description": "Deletes a secondary calendar", "signatures": [ "com.google.api.services.calendar.Calendar$Calendars$Delete delete(String calendarId)" ] }, "get": { "description": "Returns [...]
+    "channels": { "consumerOnly": false, "producerOnly": false, "description": "The channels collection of methods", "methods": { "stop": { "description": "Stop watching resources through this channel", "signatures": [ "com.google.api.services.calendar.Calendar$Channels$Stop stop(com.google.api.services.calendar.model.Channel content)" ] } } },
+    "events": { "consumerOnly": false, "producerOnly": false, "description": "The events collection of methods", "methods": { "calendarImport": { "description": "Imports an event", "signatures": [ "com.google.api.services.calendar.Calendar$Events$CalendarImport calendarImport(String calendarId, com.google.api.services.calendar.model.Event content)" ] }, "delete": { "description": "Deletes an event", "signatures": [ "com.google.api.services.calendar.Calendar$Events$Delete delete(String ca [...]
+    "freebusy": { "consumerOnly": false, "producerOnly": false, "description": "The freebusy collection of methods", "methods": { "query": { "description": "Returns free\/busy information for a set of calendars", "signatures": [ "com.google.api.services.calendar.Calendar$Freebusy$Query query(com.google.api.services.calendar.model.FreeBusyRequest content)" ] } } },
+    "list": { "consumerOnly": false, "producerOnly": false, "description": "The calendarList collection of methods", "methods": { "delete": { "description": "Deletes an entry on the user's calendar list", "signatures": [ "com.google.api.services.calendar.Calendar$CalendarList$Delete delete(String calendarId)" ] }, "get": { "description": "Returns an entry on the user's calendar list", "signatures": [ "com.google.api.services.calendar.Calendar$CalendarList$Get get(String calendarId)" ] }, [...]
+    "settings": { "consumerOnly": false, "producerOnly": false, "description": "The settings collection of methods", "methods": { "get": { "description": "Returns a single user setting", "signatures": [ "com.google.api.services.calendar.Calendar$Settings$Get get(String setting)" ] }, "watch": { "description": "Watch for changes to Settings resources", "signatures": [ "com.google.api.services.calendar.Calendar$Settings$Watch watch(com.google.api.services.calendar.model.Channel content)" ] } } }
+  },
+  "apiProperties": {
+    "acl": { "methods": { "delete": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", "optional":  [...]
+    "calendars": { "methods": { "clear": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", "option [...]
+    "channels": { "methods": { "stop": { "properties": { "contentChannel": { "kind": "parameter", "displayName": "Content Channel", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.google.api.services.calendar.model.Channel", "deprecated": false, "autowired": false, "secret": false, "description": "The com.google.api.services.calendar.model.Channel", "optional": false } } } } },
+    "events": { "methods": { "calendarImport": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", " [...]
+    "freebusy": { "methods": { "query": { "properties": { "content": { "kind": "parameter", "displayName": "Content", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.google.api.services.calendar.model.FreeBusyRequest", "deprecated": false, "autowired": false, "secret": false, "description": "The com.google.api.services.calendar.model.FreeBusyRequest", "optional": false } } } } },
+    "list": { "methods": { "delete": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", "optional": [...]
+    "settings": { "methods": { "get": { "properties": { "setting": { "kind": "parameter", "displayName": "Setting", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The id of the user setting", "optional": false } } }, "watch": { "properties": { "contentChannel": { "kind": "parameter", "displayName": "Content Channel", "group": "common", "label": "", "required": f [...]
+  }
+}
diff --git a/components/camel-google/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/stream/google-calendar-stream.json b/components/camel-google/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/stream/google-calendar-stream.json
new file mode 100644
index 0000000..57fcf5e
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/stream/google-calendar-stream.json
@@ -0,0 +1,100 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "google-calendar-stream",
+    "title": "Google Calendar Stream",
+    "description": "Poll for changes in a Google Calendar.",
+    "deprecated": false,
+    "firstVersion": "2.23.0",
+    "label": "api,cloud",
+    "javaType": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamComponent",
+    "supportLevel": "Stable",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-google-calendar",
+    "version": "3.9.0-SNAPSHOT",
+    "scheme": "google-calendar-stream",
+    "extendsScheme": "",
+    "syntax": "google-calendar-stream:index",
+    "async": false,
+    "api": false,
+    "consumerOnly": true,
+    "producerOnly": false,
+    "lenientProperties": false
+  },
+  "componentProperties": {
+    "applicationName": { "kind": "property", "displayName": "Application Name", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Google Calendar application name. Example would be camel-google-calendar\/1.0" },
+    "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 [...]
+    "calendarId": { "kind": "property", "displayName": "Calendar Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "primary", "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The calendarId to be used" },
+    "clientId": { "kind": "property", "displayName": "Client Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Client ID of the calendar application" },
+    "configuration": { "kind": "property", "displayName": "Configuration", "group": "consumer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "The configuration" },
+    "considerLastUpdate": { "kind": "property", "displayName": "Consider Last Update", "group": "consumer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Take into account the lastUpdate of the last event polled as star [...]
+    "consumeFromNow": { "kind": "property", "displayName": "Consume From Now", "group": "consumer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Consume events in the selected calendar from now on" },
+    "maxResults": { "kind": "property", "displayName": "Max Results", "group": "consumer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Max results to be returned" },
+    "query": { "kind": "property", "displayName": "Query", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The query to execute on calendar" },
+    "scopes": { "kind": "property", "displayName": "Scopes", "group": "consumer", "label": "", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Specifies the level of permissions you want a calendar application to have to a user accoun [...]
+    "syncFlow": { "kind": "property", "displayName": "Sync Flow", "group": "consumer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Sync events, see https:\/\/developers.google.com\/calendar\/v3\/sync Note: not compati [...]
+    "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.calendar.GoogleCalendarClientFactory", "deprecated": false, "autowired": false, "secret": false, "description": "The client Factory" },
+    "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.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "OAuth 2 access token. This typically expires after an hour so refreshToken is recommende [...]
+    "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.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Client secret of the calendar application" },
+    "emailAddress": { "kind": "property", "displayName": "Email Address", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The emailAddress of the Google Service Account." },
+    "p12FileName": { "kind": "property", "displayName": "P12 File Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The name of the p12 file which has the private key to use with the Google 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.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new acce [...]
+    "user": { "kind": "property", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The email address of the user the application is trying to impersonate in the service account flow." }
+  },
+  "properties": {
+    "index": { "kind": "path", "displayName": "Index", "group": "consumer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Specifies an index for the endpoint" },
+    "applicationName": { "kind": "parameter", "displayName": "Application Name", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Google Calendar application name. Example would be camel-google-calendar\/1.0" },
+    "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 [...]
+    "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "primary", "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The calendarId to be used" },
+    "clientId": { "kind": "parameter", "displayName": "Client Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Client ID of the calendar application" },
+    "considerLastUpdate": { "kind": "parameter", "displayName": "Consider Last Update", "group": "consumer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Take into account the lastUpdate of the last event polled as sta [...]
+    "consumeFromNow": { "kind": "parameter", "displayName": "Consume From Now", "group": "consumer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Consume events in the selected calendar from now on" },
+    "maxResults": { "kind": "parameter", "displayName": "Max Results", "group": "consumer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Max results to be returned" },
+    "query": { "kind": "parameter", "displayName": "Query", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The query to execute on calendar" },
+    "scopes": { "kind": "parameter", "displayName": "Scopes", "group": "consumer", "label": "", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Specifies the level of permissions you want a calendar application to have to a user accou [...]
+    "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." },
+    "syncFlow": { "kind": "parameter", "displayName": "Sync Flow", "group": "consumer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Sync events, see https:\/\/developers.google.com\/calendar\/v3\/sync Note: not compat [...]
+    "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 [...]
+    "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
+    "pollStrategy": { "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation  [...]
+    "backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." },
+    "backoffIdleThreshold": { "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." },
+    "backoffMultiplier": { "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening agai [...]
+    "delay": { "kind": "parameter", "displayName": "Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "description": "Milliseconds before the next poll." },
+    "greedy": { "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." },
+    "initialDelay": { "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." },
+    "repeatCount": { "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." },
+    "runLoggingLevel": { "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the logging level  [...]
+    "scheduledExecutorService": { "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." },
+    "scheduler": { "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" },
+    "schedulerProperties": { "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler." },
+    "startScheduler": { "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." },
+    "timeUnit": { "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." },
+    "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.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "OAuth 2 access token. This typically expires after an hour so refreshToken is recommend [...]
+    "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.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Client secret of the calendar application" },
+    "emailAddress": { "kind": "parameter", "displayName": "Email Address", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The emailAddress of the Google Service Account." },
+    "p12FileName": { "kind": "parameter", "displayName": "P12 File Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The name of the p12 file which has the private key to use with the Google Service Acco [...]
+    "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.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new acc [...]
+    "user": { "kind": "parameter", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The email address of the user the application is trying to impersonate in the service account flow." }
+  },
+  "apis": {
+    "acl": { "consumerOnly": true, "producerOnly": false, "description": "The acl collection of methods", "methods": { "delete": { "description": "Deletes an access control rule", "signatures": [ "com.google.api.services.calendar.Calendar$Acl$Delete delete(String calendarId, String ruleId)" ] }, "get": { "description": "Returns an access control rule", "signatures": [ "com.google.api.services.calendar.Calendar$Acl$Get get(String calendarId, String ruleId)" ] }, "insert": { "description": [...]
+    "calendars": { "consumerOnly": true, "producerOnly": false, "description": "The calendars collection of methods", "methods": { "clear": { "description": "Clears a primary calendar", "signatures": [ "com.google.api.services.calendar.Calendar$Calendars$Clear clear(String calendarId)" ] }, "delete": { "description": "Deletes a secondary calendar", "signatures": [ "com.google.api.services.calendar.Calendar$Calendars$Delete delete(String calendarId)" ] }, "get": { "description": "Returns  [...]
+    "channels": { "consumerOnly": true, "producerOnly": false, "description": "The channels collection of methods", "methods": { "stop": { "description": "Stop watching resources through this channel", "signatures": [ "com.google.api.services.calendar.Calendar$Channels$Stop stop(com.google.api.services.calendar.model.Channel content)" ] } } },
+    "events": { "consumerOnly": true, "producerOnly": false, "description": "The events collection of methods", "methods": { "calendarImport": { "description": "Imports an event", "signatures": [ "com.google.api.services.calendar.Calendar$Events$CalendarImport calendarImport(String calendarId, com.google.api.services.calendar.model.Event content)" ] }, "delete": { "description": "Deletes an event", "signatures": [ "com.google.api.services.calendar.Calendar$Events$Delete delete(String cal [...]
+    "freebusy": { "consumerOnly": true, "producerOnly": false, "description": "The freebusy collection of methods", "methods": { "query": { "description": "Returns free\/busy information for a set of calendars", "signatures": [ "com.google.api.services.calendar.Calendar$Freebusy$Query query(com.google.api.services.calendar.model.FreeBusyRequest content)" ] } } },
+    "list": { "consumerOnly": true, "producerOnly": false, "description": "The calendarList collection of methods", "methods": { "delete": { "description": "Deletes an entry on the user's calendar list", "signatures": [ "com.google.api.services.calendar.Calendar$CalendarList$Delete delete(String calendarId)" ] }, "get": { "description": "Returns an entry on the user's calendar list", "signatures": [ "com.google.api.services.calendar.Calendar$CalendarList$Get get(String calendarId)" ] },  [...]
+    "settings": { "consumerOnly": true, "producerOnly": false, "description": "The settings collection of methods", "methods": { "get": { "description": "Returns a single user setting", "signatures": [ "com.google.api.services.calendar.Calendar$Settings$Get get(String setting)" ] }, "watch": { "description": "Watch for changes to Settings resources", "signatures": [ "com.google.api.services.calendar.Calendar$Settings$Watch watch(com.google.api.services.calendar.model.Channel content)" ] } } }
+  },
+  "apiProperties": {
+    "acl": { "methods": { "delete": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", "optional" [...]
+    "calendars": { "methods": { "clear": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", "opti [...]
+    "channels": { "methods": { "stop": { "properties": { "contentChannel": { "kind": "parameter", "displayName": "Content Channel", "group": "consumer", "label": "", "required": false, "type": "object", "javaType": "com.google.api.services.calendar.model.Channel", "deprecated": false, "autowired": false, "secret": false, "description": "The com.google.api.services.calendar.model.Channel", "optional": false } } } } },
+    "events": { "methods": { "calendarImport": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", [...]
+    "freebusy": { "methods": { "query": { "properties": { "content": { "kind": "parameter", "displayName": "Content", "group": "consumer", "label": "", "required": false, "type": "object", "javaType": "com.google.api.services.calendar.model.FreeBusyRequest", "deprecated": false, "autowired": false, "secret": false, "description": "The com.google.api.services.calendar.model.FreeBusyRequest", "optional": false } } } } },
+    "list": { "methods": { "delete": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", "optional [...]
+    "settings": { "methods": { "get": { "properties": { "setting": { "kind": "parameter", "displayName": "Setting", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The id of the user setting", "optional": false } } }, "watch": { "properties": { "contentChannel": { "kind": "parameter", "displayName": "Content Channel", "group": "consumer", "label": "", "required [...]
+  }
+}
diff --git a/components/camel-google/camel-google-calendar/src/main/docs/google-calendar-component.adoc b/components/camel-google/camel-google-calendar/src/main/docs/google-calendar-component.adoc
new file mode 100644
index 0000000..baf63b9
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/main/docs/google-calendar-component.adoc
@@ -0,0 +1,636 @@
+[[google-calendar-component]]
+= Google Calendar Component
+:docTitle: Google Calendar
+:artifactId: camel-google-calendar
+:description: Perform various operations on a Google Calendar.
+:since: 2.15
+:supportLevel: Stable
+:component-header: Both producer and consumer are supported
+include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/google-calendar.adoc[opts=optional]
+//Manually maintained attributes
+:group: Google
+
+*Since Camel {since}*
+
+*{component-header}*
+
+The Google Calendar component provides access
+to http://google.com/calendar[Google Calendar] via
+the https://developers.google.com/google-apps/calendar/v3/reference/[Google
+Calendar Web APIs].
+
+Google Calendar uses
+the https://developers.google.com/accounts/docs/OAuth2[OAuth 2.0
+protocol] for authenticating a Google account and authorizing access to
+user data. Before you can use this component, you will need
+to https://developers.google.com/google-apps/calendar/auth[create an
+account and generate OAuth credentials]. Credentials comprise of a
+clientId, clientSecret, and a refreshToken. A handy resource for
+generating a long-lived refreshToken is
+the https://developers.google.com/oauthplayground[OAuth playground].
+
+Maven users will need to add the following dependency to their pom.xml
+for this component:
+
+[source,xml]
+----
+<dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-google-calendar</artifactId>
+        <!-- use the same version as your Camel core version -->
+        <version>x.x.x</version>
+</dependency>
+----
+
+== Component options
+
+// component options: START
+The Google Calendar component supports 14 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *applicationName* (common) | Google calendar application name. Example would be camel-google-calendar/1.0 |  | String
+| *clientId* (common) | Client ID of the calendar application |  | String
+| *configuration* (common) | To use the shared configuration |  | GoogleCalendarConfiguration
+| *scopes* (common) | Specifies the level of permissions you want a calendar application to have to a user account. You can separate multiple scopes by comma. See \https://developers.google.com/google-apps/calendar/auth for more info. | https://www.googleapis.com/auth/calendar | String
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *lazyStartProducer* (producer) | 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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *autowiredEnabled* (advanced) | 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 then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
+| *clientFactory* (advanced) | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleCalendarClientFactory |  | GoogleCalendarClientFactory
+| *accessToken* (security) | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. |  | String
+| *clientSecret* (security) | Client secret of the calendar application |  | String
+| *emailAddress* (security) | The emailAddress of the Google Service Account. |  | String
+| *p12FileName* (security) | The name of the p12 file which has the private key to use with the Google Service Account. |  | String
+| *refreshToken* (security) | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. |  | String
+| *user* (security) | The email address of the user the application is trying to impersonate in the service account flow |  | String
+|===
+// component options: END
+
+
+// endpoint options: START
+The Google Calendar endpoint is configured using URI syntax:
+
+----
+google-calendar:apiName/methodName
+----
+
+with the following path and query parameters:
+
+=== Path Parameters (2 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *apiName* | *Required* What kind of operation to perform. There are 8 enums and the value can be one of: ACL, LIST, CALENDARS, CHANNELS, COLORS, FREEBUSY, EVENTS, SETTINGS |  | GoogleCalendarApiName
+| *methodName* | *Required* What sub operation to use for the selected operation. There are 14 enums and the value can be one of: calendarImport, clear, delete, get, insert, instances, list, move, patch, query, quickAdd, stop, update, watch |  | String
+|===
+
+
+=== Query Parameters (30 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *applicationName* (common) | Google calendar application name. Example would be camel-google-calendar/1.0 |  | String
+| *clientId* (common) | Client ID of the calendar application |  | String
+| *inBody* (common) | Sets the name of a parameter to be passed in the exchange In Body |  | String
+| *scopes* (common) | Specifies the level of permissions you want a calendar application to have to a user account. You can separate multiple scopes by comma. See \https://developers.google.com/google-apps/calendar/auth for more info. | https://www.googleapis.com/auth/calendar | String
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
+| *exceptionHandler* (consumer) | 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 consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. There are 3 enums and the value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
+| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPollStrategy
+| *lazyStartProducer* (producer) | 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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
+| *delay* (scheduler) | Milliseconds before the next poll. | 500 | long
+| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
+| *initialDelay* (scheduler) | Milliseconds before the first poll starts. | 1000 | long
+| *repeatCount* (scheduler) | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0 | long
+| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. There are 6 enums and the value can be one of: TRACE, DEBUG, INFO, WARN, ERROR, OFF | TRACE | LoggingLevel
+| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutorService
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler | none | Object
+| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
+| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
+| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. There are 7 enums and the value can be one of: NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS | MILLISECONDS | TimeUnit
+| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
+| *accessToken* (security) | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. |  | String
+| *clientSecret* (security) | Client secret of the calendar application |  | String
+| *emailAddress* (security) | The emailAddress of the Google Service Account. |  | String
+| *p12FileName* (security) | The name of the p12 file which has the private key to use with the Google Service Account. |  | String
+| *refreshToken* (security) | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. |  | String
+| *user* (security) | The email address of the user the application is trying to impersonate in the service account flow |  | String
+|===
+
+
+
+
+=== API Parameters (7 APIs):
+
+The Google Calendar endpoint is an API based component and has additional parameters based on which API name and API method is used.
+The API name and API method is located in the endpoint URI as the apiName/methodName path parameters:
+
+----
+google-calendar:apiName/methodName
+----
+
+There are 7 API names as listed in the table below:
+
+[width="100%",cols="2,2,6",options="header"]
+|===
+| API Name | Type | Description
+| *acl* | Both | The acl collection of methods
+| *calendars* | Both | The calendars collection of methods
+| *channels* | Both | The channels collection of methods
+| *events* | Both | The events collection of methods
+| *freebusy* | Both | The freebusy collection of methods
+| *list* | Both | The calendarList collection of methods
+| *settings* | Both | The settings collection of methods
+|===
+
+Each API is documented in the following sections to come.
+
+
+==== API: acl
+
+*Both producer and consumer are supported*
+
+
+
+
+The acl API has 7 method(s) which is represented by the following method signatures
+(an API method may have multiple signatures due to overloading):
+
+[source,java]
+----
+
+com.google.api.services.calendar.Calendar.Acl.Delete delete(String calendarId, String ruleId);
+
+com.google.api.services.calendar.Calendar.Acl.Get get(String calendarId, String ruleId);
+
+com.google.api.services.calendar.Calendar.Acl.Insert insert(String calendarId, com.google.api.services.calendar.model.AclRule content);
+
+com.google.api.services.calendar.Calendar.Acl.List list(String calendarId);
+
+com.google.api.services.calendar.Calendar.Acl.Patch patch(String calendarId, String ruleId, com.google.api.services.calendar.model.AclRule content);
+
+com.google.api.services.calendar.Calendar.Acl.Update update(String calendarId, String ruleId, com.google.api.services.calendar.model.AclRule content);
+
+com.google.api.services.calendar.Calendar.Acl.Watch watch(String calendarId, com.google.api.services.calendar.model.Channel content);
+
+----
+
+The acl API is defined in the syntax as follows:
+
+----
+google-calendar:acl/methodName?[parameters]
+----
+
+The 7 method(s) is listed in the table below.
+(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
+
+[width="100%",cols="2,2,6",options="header"]
+|===
+| Method | Alias | Description
+| *delete* |  | Deletes an access control rule
+| *get* |  | Returns an access control rule
+| *insert* |  | Creates an access control rule
+| *list* |  | Returns the rules in the access control list for the calendar
+| *patch* |  | Updates an access control rule
+| *update* |  | Updates an access control rule
+| *watch* |  | Watch for changes to ACL resources
+|===
+
+The acl API method(s) has the following set of parameters listed in the table below:
+[width="100%",cols="2,2,4,2",options="header"]
+|===
+| Method | Parameter | Description | Type
+| delete | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| delete | *ruleId* |  ACL rule identifier | String
+| get | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| get | *ruleId* |  ACL rule identifier | String
+| insert | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| insert | *content* |  The com.google.api.services.calendar.model.AclRule | AclRule
+| list | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| patch | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| patch | *content* |  The com.google.api.services.calendar.model.AclRule | AclRule
+| patch | *ruleId* |  ACL rule identifier | String
+| update | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| update | *content* |  The com.google.api.services.calendar.model.AclRule | AclRule
+| update | *ruleId* |  ACL rule identifier | String
+| watch | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| watch | *contentChannel* |  The com.google.api.services.calendar.model.Channel | Channel
+|===
+
+In addition to the parameters above, the acl API can also use from the 30 endpoint query option
+which is listed in the _Query Parameters_ section.
+
+Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
+The message header name must be of the format `CamelGoogleCalendar.parameter`.
+The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
+would override a `CamelGoogleCalendar.myParameterNameHere` header.
+
+
+
+==== API: calendars
+
+*Both producer and consumer are supported*
+
+
+
+
+The calendars API has 6 method(s) which is represented by the following method signatures
+(an API method may have multiple signatures due to overloading):
+
+[source,java]
+----
+
+com.google.api.services.calendar.Calendar.Calendars.Clear clear(String calendarId);
+
+com.google.api.services.calendar.Calendar.Calendars.Delete delete(String calendarId);
+
+com.google.api.services.calendar.Calendar.Calendars.Get get(String calendarId);
+
+com.google.api.services.calendar.Calendar.Calendars.Insert insert(com.google.api.services.calendar.model.Calendar content);
+
+com.google.api.services.calendar.Calendar.Calendars.Patch patch(String calendarId, com.google.api.services.calendar.model.Calendar content);
+
+com.google.api.services.calendar.Calendar.Calendars.Update update(String calendarId, com.google.api.services.calendar.model.Calendar content);
+
+----
+
+The calendars API is defined in the syntax as follows:
+
+----
+google-calendar:calendars/methodName?[parameters]
+----
+
+The 6 method(s) is listed in the table below.
+(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
+
+[width="100%",cols="2,2,6",options="header"]
+|===
+| Method | Alias | Description
+| *clear* |  | Clears a primary calendar
+| *delete* |  | Deletes a secondary calendar
+| *get* |  | Returns metadata for a calendar
+| *insert* |  | Creates a secondary calendar
+| *patch* |  | Updates metadata for a calendar
+| *update* |  | Updates metadata for a calendar
+|===
+
+The calendars API method(s) has the following set of parameters listed in the table below:
+[width="100%",cols="2,2,4,2",options="header"]
+|===
+| Method | Parameter | Description | Type
+| clear | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| delete | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| get | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| insert | *content* |  The com.google.api.services.calendar.model.Calendar | Calendar
+| patch | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| patch | *content* |  The com.google.api.services.calendar.model.Calendar | Calendar
+| update | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| update | *content* |  The com.google.api.services.calendar.model.Calendar | Calendar
+|===
+
+In addition to the parameters above, the calendars API can also use from the 30 endpoint query option
+which is listed in the _Query Parameters_ section.
+
+Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
+The message header name must be of the format `CamelGoogleCalendar.parameter`.
+The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
+would override a `CamelGoogleCalendar.myParameterNameHere` header.
+
+
+
+==== API: channels
+
+*Both producer and consumer are supported*
+
+
+
+
+The channels API has 1 method(s) which is represented by the following method signatures
+(an API method may have multiple signatures due to overloading):
+
+[source,java]
+----
+
+com.google.api.services.calendar.Calendar.Channels.Stop stop(com.google.api.services.calendar.model.Channel content);
+
+----
+
+The channels API is defined in the syntax as follows:
+
+----
+google-calendar:channels/methodName?[parameters]
+----
+
+The 1 method(s) is listed in the table below.
+(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
+
+[width="100%",cols="2,2,6",options="header"]
+|===
+| Method | Alias | Description
+| *stop* |  | Stop watching resources through this channel
+|===
+
+The channels API method(s) has the following set of parameters listed in the table below:
+[width="100%",cols="2,2,4,2",options="header"]
+|===
+| Method | Parameter | Description | Type
+| stop | *contentChannel* |  The com.google.api.services.calendar.model.Channel | Channel
+|===
+
+In addition to the parameters above, the channels API can also use from the 30 endpoint query option
+which is listed in the _Query Parameters_ section.
+
+Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
+The message header name must be of the format `CamelGoogleCalendar.parameter`.
+The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
+would override a `CamelGoogleCalendar.myParameterNameHere` header.
+
+
+
+==== API: events
+
+*Both producer and consumer are supported*
+
+
+
+
+The events API has 11 method(s) which is represented by the following method signatures
+(an API method may have multiple signatures due to overloading):
+
+[source,java]
+----
+
+com.google.api.services.calendar.Calendar.Events.CalendarImport calendarImport(String calendarId, com.google.api.services.calendar.model.Event content);
+
+com.google.api.services.calendar.Calendar.Events.Delete delete(String calendarId, String eventId);
+
+com.google.api.services.calendar.Calendar.Events.Get get(String calendarId, String eventId);
+
+com.google.api.services.calendar.Calendar.Events.Insert insert(String calendarId, com.google.api.services.calendar.model.Event content);
+
+com.google.api.services.calendar.Calendar.Events.Instances instances(String calendarId, String eventId);
+
+com.google.api.services.calendar.Calendar.Events.List list(String calendarId);
+
+com.google.api.services.calendar.Calendar.Events.Move move(String calendarId, String eventId, String destination);
+
+com.google.api.services.calendar.Calendar.Events.Patch patch(String calendarId, String eventId, com.google.api.services.calendar.model.Event content);
+
+com.google.api.services.calendar.Calendar.Events.QuickAdd quickAdd(String calendarId, String text);
+
+com.google.api.services.calendar.Calendar.Events.Update update(String calendarId, String eventId, com.google.api.services.calendar.model.Event content);
+
+com.google.api.services.calendar.Calendar.Events.Watch watch(String calendarId, com.google.api.services.calendar.model.Channel content);
+
+----
+
+The events API is defined in the syntax as follows:
+
+----
+google-calendar:events/methodName?[parameters]
+----
+
+The 11 method(s) is listed in the table below.
+(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
+
+[width="100%",cols="2,2,6",options="header"]
+|===
+| Method | Alias | Description
+| *calendarImport* |  | Imports an event
+| *delete* |  | Deletes an event
+| *get* |  | Returns an event
+| *insert* |  | Creates an event
+| *instances* |  | Returns instances of the specified recurring event
+| *list* |  | Returns events on the specified calendar
+| *move* |  | Moves an event to another calendar, i
+| *patch* |  | Updates an event
+| *quickAdd* |  | Creates an event based on a simple text string
+| *update* |  | Updates an event
+| *watch* |  | Watch for changes to Events resources
+|===
+
+The events API method(s) has the following set of parameters listed in the table below:
+[width="100%",cols="2,2,4,2",options="header"]
+|===
+| Method | Parameter | Description | Type
+| calendarImport | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| calendarImport | *content* |  The com.google.api.services.calendar.model.Event | Event
+| delete | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| delete | *eventId* |  Event identifier | String
+| get | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| get | *eventId* |  Event identifier | String
+| insert | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| insert | *content* |  The com.google.api.services.calendar.model.Event | Event
+| instances | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| instances | *eventId* |  Recurring event identifier | String
+| list | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| move | *calendarId* |  Calendar identifier of the source calendar where the event currently is on | String
+| move | *destination* |  Calendar identifier of the target calendar where the event is to be moved to | String
+| move | *eventId* |  Event identifier | String
+| patch | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| patch | *content* |  The com.google.api.services.calendar.model.Event | Event
+| patch | *eventId* |  Event identifier | String
+| quickAdd | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| quickAdd | *text* |  The text describing the event to be created | String
+| update | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| update | *content* |  The com.google.api.services.calendar.model.Event | Event
+| update | *eventId* |  Event identifier | String
+| watch | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| watch | *contentChannel* |  The com.google.api.services.calendar.model.Channel | Channel
+|===
+
+In addition to the parameters above, the events API can also use from the 30 endpoint query option
+which is listed in the _Query Parameters_ section.
+
+Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
+The message header name must be of the format `CamelGoogleCalendar.parameter`.
+The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
+would override a `CamelGoogleCalendar.myParameterNameHere` header.
+
+
+
+==== API: freebusy
+
+*Both producer and consumer are supported*
+
+
+
+
+The freebusy API has 1 method(s) which is represented by the following method signatures
+(an API method may have multiple signatures due to overloading):
+
+[source,java]
+----
+
+com.google.api.services.calendar.Calendar.Freebusy.Query query(com.google.api.services.calendar.model.FreeBusyRequest content);
+
+----
+
+The freebusy API is defined in the syntax as follows:
+
+----
+google-calendar:freebusy/methodName?[parameters]
+----
+
+The 1 method(s) is listed in the table below.
+(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
+
+[width="100%",cols="2,2,6",options="header"]
+|===
+| Method | Alias | Description
+| *query* |  | Returns free/busy information for a set of calendars
+|===
+
+The freebusy API method(s) has the following set of parameters listed in the table below:
+[width="100%",cols="2,2,4,2",options="header"]
+|===
+| Method | Parameter | Description | Type
+| query | *content* |  The com.google.api.services.calendar.model.FreeBusyRequest | FreeBusyRequest
+|===
+
+In addition to the parameters above, the freebusy API can also use from the 30 endpoint query option
+which is listed in the _Query Parameters_ section.
+
+Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
+The message header name must be of the format `CamelGoogleCalendar.parameter`.
+The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
+would override a `CamelGoogleCalendar.myParameterNameHere` header.
+
+
+
+==== API: list
+
+*Both producer and consumer are supported*
+
+
+
+
+The list API has 6 method(s) which is represented by the following method signatures
+(an API method may have multiple signatures due to overloading):
+
+[source,java]
+----
+
+com.google.api.services.calendar.Calendar.CalendarList.Delete delete(String calendarId);
+
+com.google.api.services.calendar.Calendar.CalendarList.Get get(String calendarId);
+
+com.google.api.services.calendar.Calendar.CalendarList.Insert insert(com.google.api.services.calendar.model.CalendarListEntry content);
+
+com.google.api.services.calendar.Calendar.CalendarList.Patch patch(String calendarId, com.google.api.services.calendar.model.CalendarListEntry content);
+
+com.google.api.services.calendar.Calendar.CalendarList.Update update(String calendarId, com.google.api.services.calendar.model.CalendarListEntry content);
+
+com.google.api.services.calendar.Calendar.CalendarList.Watch watch(com.google.api.services.calendar.model.Channel content);
+
+----
+
+The list API is defined in the syntax as follows:
+
+----
+google-calendar:list/methodName?[parameters]
+----
+
+The 6 method(s) is listed in the table below.
+(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
+
+[width="100%",cols="2,2,6",options="header"]
+|===
+| Method | Alias | Description
+| *delete* |  | Deletes an entry on the user's calendar list
+| *get* |  | Returns an entry on the user's calendar list
+| *insert* |  | Adds an entry to the user's calendar list
+| *patch* |  | Updates an entry on the user's calendar list
+| *update* |  | Updates an entry on the user's calendar list
+| *watch* |  | Watch for changes to CalendarList resources
+|===
+
+The list API method(s) has the following set of parameters listed in the table below:
+[width="100%",cols="2,2,4,2",options="header"]
+|===
+| Method | Parameter | Description | Type
+| delete | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| get | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| insert | *content* |  The com.google.api.services.calendar.model.CalendarListEntry | CalendarListEntry
+| patch | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| patch | *content* |  The com.google.api.services.calendar.model.CalendarListEntry | CalendarListEntry
+| update | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
+| update | *content* |  The com.google.api.services.calendar.model.CalendarListEntry | CalendarListEntry
+| watch | *contentChannel* |  The com.google.api.services.calendar.model.Channel | Channel
+|===
+
+In addition to the parameters above, the list API can also use from the 30 endpoint query option
+which is listed in the _Query Parameters_ section.
+
+Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
+The message header name must be of the format `CamelGoogleCalendar.parameter`.
+The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
+would override a `CamelGoogleCalendar.myParameterNameHere` header.
+
+
+
+==== API: settings
+
+*Both producer and consumer are supported*
+
+
+
+
+The settings API has 2 method(s) which is represented by the following method signatures
+(an API method may have multiple signatures due to overloading):
+
+[source,java]
+----
+
+com.google.api.services.calendar.Calendar.Settings.Get get(String setting);
+
+com.google.api.services.calendar.Calendar.Settings.Watch watch(com.google.api.services.calendar.model.Channel content);
+
+----
+
+The settings API is defined in the syntax as follows:
+
+----
+google-calendar:settings/methodName?[parameters]
+----
+
+The 2 method(s) is listed in the table below.
+(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
+
+[width="100%",cols="2,2,6",options="header"]
+|===
+| Method | Alias | Description
+| *get* |  | Returns a single user setting
+| *watch* |  | Watch for changes to Settings resources
+|===
+
+The settings API method(s) has the following set of parameters listed in the table below:
+[width="100%",cols="2,2,4,2",options="header"]
+|===
+| Method | Parameter | Description | Type
+| get | *setting* |  The id of the user setting | String
+| watch | *contentChannel* |  The com.google.api.services.calendar.model.Channel | Channel
+|===
+
+In addition to the parameters above, the settings API can also use from the 30 endpoint query option
+which is listed in the _Query Parameters_ section.
+
+Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
+The message header name must be of the format `CamelGoogleCalendar.parameter`.
+The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
+would override a `CamelGoogleCalendar.myParameterNameHere` header.
+// endpoint options: END
+
+
+include::camel-spring-boot::page$google-calendar-starter.adoc[]
diff --git a/components/camel-google/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc b/components/camel-google/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
new file mode 100644
index 0000000..ef75fce
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
@@ -0,0 +1,147 @@
+[[google-calendar-stream-component]]
+= Google Calendar Stream Component
+:docTitle: Google Calendar Stream
+:artifactId: camel-google-calendar
+:description: Poll for changes in a Google Calendar.
+:since: 2.23
+:supportLevel: Stable
+:component-header: Only consumer is supported
+include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/google-calendar-stream.adoc[opts=optional]
+//Manually maintained attributes
+:group: Google
+
+*Since Camel {since}*
+
+*{component-header}*
+
+The Google Calendar Stream component provides access
+to https://calendar.google.com[Calendar] via
+the https://developers.google.com/calendar/overview[Google Calendar
+Web APIs]. This component provides the streaming feature for Calendar events.
+
+Google Calendar uses
+the https://developers.google.com/accounts/docs/OAuth2[OAuth 2.0
+protocol] for authenticating a Google account and authorizing access to
+user data. Before you can use this component, you will need
+to https://developers.google.com/calendar/auth[create an
+account and generate OAuth credentials]. Credentials comprise of a
+clientId, clientSecret, and a refreshToken. A handy resource for
+generating a long-lived refreshToken is
+the https://developers.google.com/oauthplayground[OAuth playground].
+
+Maven users will need to add the following dependency to their pom.xml
+for this component:
+
+[source,xml]
+----
+<dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-google-calendar</artifactId>
+        <!-- use the same version as your Camel core version -->
+        <version>x.x.x</version>
+</dependency>
+----
+
+== URI Format
+
+The Google Calendar Component uses the following URI format:
+
+----
+google-calendar-stream://index?[options]
+----
+
+== Component options
+
+
+// component options: START
+The Google Calendar Stream component supports 19 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *applicationName* (consumer) | Google Calendar application name. Example would be camel-google-calendar/1.0 |  | String
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *calendarId* (consumer) | The calendarId to be used | primary | String
+| *clientId* (consumer) | Client ID of the calendar application |  | String
+| *configuration* (consumer) | The configuration |  | GoogleCalendarStreamConfiguration
+| *considerLastUpdate* (consumer) | Take into account the lastUpdate of the last event polled as start date for the next poll | false | boolean
+| *consumeFromNow* (consumer) | Consume events in the selected calendar from now on | true | boolean
+| *maxResults* (consumer) | Max results to be returned | 10 | int
+| *query* (consumer) | The query to execute on calendar |  | String
+| *scopes* (consumer) | Specifies the level of permissions you want a calendar application to have to a user account. See \https://developers.google.com/calendar/auth for more info. |  | List
+| *syncFlow* (consumer) | Sync events, see \https://developers.google.com/calendar/v3/sync Note: not compatible with: 'query' and 'considerLastUpdate' parameters | false | boolean
+| *autowiredEnabled* (advanced) | 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 then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
+| *clientFactory* (advanced) | The client Factory |  | GoogleCalendarClientFactory
+| *accessToken* (security) | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. |  | String
+| *clientSecret* (security) | Client secret of the calendar application |  | String
+| *emailAddress* (security) | The emailAddress of the Google Service Account. |  | String
+| *p12FileName* (security) | The name of the p12 file which has the private key to use with the Google Service Account. |  | String
+| *refreshToken* (security) | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. |  | String
+| *user* (security) | The email address of the user the application is trying to impersonate in the service account flow. |  | String
+|===
+// component options: END
+
+
+
+
+// endpoint options: START
+The Google Calendar Stream endpoint is configured using URI syntax:
+
+----
+google-calendar-stream:index
+----
+
+with the following path and query parameters:
+
+=== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *index* | *Required* Specifies an index for the endpoint |  | String
+|===
+
+
+=== Query Parameters (31 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *applicationName* (consumer) | Google Calendar application name. Example would be camel-google-calendar/1.0 |  | String
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *calendarId* (consumer) | The calendarId to be used | primary | String
+| *clientId* (consumer) | Client ID of the calendar application |  | String
+| *considerLastUpdate* (consumer) | Take into account the lastUpdate of the last event polled as start date for the next poll | false | boolean
+| *consumeFromNow* (consumer) | Consume events in the selected calendar from now on | true | boolean
+| *maxResults* (consumer) | Max results to be returned | 10 | int
+| *query* (consumer) | The query to execute on calendar |  | String
+| *scopes* (consumer) | Specifies the level of permissions you want a calendar application to have to a user account. See \https://developers.google.com/calendar/auth for more info. |  | List
+| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
+| *exceptionHandler* (consumer) | 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 consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. There are 3 enums and the value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
+| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPollStrategy
+| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
+| *delay* (scheduler) | Milliseconds before the next poll. | 500 | long
+| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
+| *initialDelay* (scheduler) | Milliseconds before the first poll starts. | 1000 | long
+| *repeatCount* (scheduler) | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0 | long
+| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. There are 6 enums and the value can be one of: TRACE, DEBUG, INFO, WARN, ERROR, OFF | TRACE | LoggingLevel
+| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutorService
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler | none | Object
+| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
+| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
+| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. There are 7 enums and the value can be one of: NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS | MILLISECONDS | TimeUnit
+| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
+| *accessToken* (security) | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. |  | String
+| *clientSecret* (security) | Client secret of the calendar application |  | String
+| *refreshToken* (security) | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. |  | String
+|===
+
+include::camel-spring-boot::page$google-calendar-starter.adoc[]
diff --git a/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java
new file mode 100644
index 0000000..dd99736
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java
@@ -0,0 +1,101 @@
+/*
+ * 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.calendar;
+
+import java.io.File;
+import java.util.Collection;
+
+import com.google.api.client.auth.oauth2.Credential;
+import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
+import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
+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.apache.camel.RuntimeCamelException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BatchGoogleCalendarClientFactory implements GoogleCalendarClientFactory {
+
+    private static final Logger LOG = LoggerFactory.getLogger(BatchGoogleCalendarClientFactory.class);
+    private NetHttpTransport transport;
+    private JacksonFactory jsonFactory;
+
+    public BatchGoogleCalendarClientFactory() {
+        this.transport = new NetHttpTransport();
+        this.jsonFactory = new JacksonFactory();
+    }
+
+    @Override
+    public Calendar makeClient(
+            String clientId, String clientSecret,
+            Collection<String> scopes, String applicationName, String refreshToken,
+            String accessToken, String emailAddress, String p12FileName, String user) {
+        boolean serviceAccount = false;
+        // if emailAddress and p12FileName values are present, assume Google Service Account
+        if (null != emailAddress && !"".equals(emailAddress) && null != p12FileName && !"".equals(p12FileName)) {
+            serviceAccount = true;
+        }
+        if (!serviceAccount && (clientId == null || clientSecret == null)) {
+            throw new IllegalArgumentException("clientId and clientSecret are required to create Google Calendar client.");
+        }
+
+        try {
+            Credential credential;
+            if (serviceAccount) {
+                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) {
+            throw new RuntimeCamelException("Could not create Google Calendar client.", e);
+        }
+    }
+
+    // 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();
+    }
+
+    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;
+    }
+}
diff --git a/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java
new file mode 100644
index 0000000..a81a3a6
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java
@@ -0,0 +1,30 @@
+/*
+ * 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.calendar;
+
+import java.util.Collection;
+
+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 user);
+
+}
diff --git a/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
new file mode 100644
index 0000000..6a0641b
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
@@ -0,0 +1,112 @@
+/*
+ * 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.calendar;
+
+import java.util.Arrays;
+import java.util.List;
+
+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;
+import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.annotations.Component;
+import org.apache.camel.support.component.AbstractApiComponent;
+
+@Component("google-calendar")
+public class GoogleCalendarComponent
+        extends AbstractApiComponent<GoogleCalendarApiName, GoogleCalendarConfiguration, GoogleCalendarApiCollection> {
+
+    @Metadata
+    GoogleCalendarConfiguration configuration;
+    @Metadata(label = "advanced")
+    private Calendar client;
+    @Metadata(label = "advanced")
+    private GoogleCalendarClientFactory clientFactory;
+
+    public GoogleCalendarComponent() {
+        super(GoogleCalendarEndpoint.class, GoogleCalendarApiName.class, GoogleCalendarApiCollection.getCollection());
+    }
+
+    public GoogleCalendarComponent(CamelContext context) {
+        super(context, GoogleCalendarEndpoint.class, GoogleCalendarApiName.class, GoogleCalendarApiCollection.getCollection());
+    }
+
+    @Override
+    protected GoogleCalendarApiName getApiName(String apiNameStr) {
+        return getCamelContext().getTypeConverter().convertTo(GoogleCalendarApiName.class, apiNameStr);
+    }
+
+    public Calendar getClient(GoogleCalendarConfiguration config) {
+        if (client == null) {
+
+            List<String> list = null;
+            if (config.getScopes() != null) {
+                String[] arr = config.getScopes().split(",");
+                list = Arrays.asList(arr);
+            }
+
+            client = getClientFactory().makeClient(config.getClientId(),
+                    config.getClientSecret(), list,
+                    config.getApplicationName(), config.getRefreshToken(),
+                    config.getAccessToken(), config.getEmailAddress(),
+                    config.getP12FileName(), config.getUser());
+        }
+        return client;
+    }
+
+    public GoogleCalendarClientFactory getClientFactory() {
+        if (clientFactory == null) {
+            clientFactory = new BatchGoogleCalendarClientFactory();
+        }
+        return clientFactory;
+    }
+
+    @Override
+    public GoogleCalendarConfiguration getConfiguration() {
+        if (configuration == null) {
+            configuration = new GoogleCalendarConfiguration();
+        }
+        return super.getConfiguration();
+    }
+
+    /**
+     * To use the shared configuration
+     */
+    @Override
+    public void setConfiguration(GoogleCalendarConfiguration configuration) {
+        super.setConfiguration(configuration);
+    }
+
+    /**
+     * To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use
+     * {@link BatchGoogleCalendarClientFactory}
+     */
+    public void setClientFactory(GoogleCalendarClientFactory clientFactory) {
+        this.clientFactory = clientFactory;
+    }
+
+    @Override
+    protected Endpoint createEndpoint(
+            String uri, String methodName, GoogleCalendarApiName apiName,
+            GoogleCalendarConfiguration endpointConfiguration) {
+        endpointConfiguration.setApiName(apiName);
+        endpointConfiguration.setMethodName(methodName);
+        return new GoogleCalendarEndpoint(uri, this, apiName, methodName, endpointConfiguration);
+    }
+}
diff --git a/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java
new file mode 100644
index 0000000..b0631437
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java
@@ -0,0 +1,182 @@
+/*
+ * 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.calendar;
+
+import com.google.api.services.calendar.CalendarScopes;
+import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName;
+import org.apache.camel.spi.Configurer;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriParams;
+import org.apache.camel.spi.UriPath;
+
+/**
+ * Component configuration for GoogleCalendar component.
+ */
+@UriParams
+@Configurer(extended = true)
+public class GoogleCalendarConfiguration {
+
+    @UriPath
+    @Metadata(required = true)
+    private GoogleCalendarApiName apiName;
+    @UriPath(enums = "calendarImport,clear,delete,get,insert,instances,list,move,patch,query,quickAdd,stop,update,watch")
+    @Metadata(required = true)
+    private String methodName;
+    @UriParam(defaultValue = CalendarScopes.CALENDAR)
+    private String scopes = CalendarScopes.CALENDAR;
+    @UriParam
+    private String clientId;
+    @UriParam
+    private String applicationName;
+    @UriParam(label = "security", secret = true)
+    private String emailAddress;
+    @UriParam(label = "security", secret = true)
+    private String clientSecret;
+    @UriParam(label = "security", secret = true)
+    private String accessToken;
+    @UriParam(label = "security", secret = true)
+    private String refreshToken;
+    @UriParam(label = "security", secret = true)
+    private String p12FileName;
+    @UriParam(label = "security", secret = true)
+    private String user;
+
+    public GoogleCalendarApiName getApiName() {
+        return apiName;
+    }
+
+    /**
+     * What kind of operation to perform
+     */
+    public void setApiName(GoogleCalendarApiName apiName) {
+        this.apiName = apiName;
+    }
+
+    public String getMethodName() {
+        return methodName;
+    }
+
+    /**
+     * What sub operation to use for the selected operation
+     */
+    public void setMethodName(String methodName) {
+        this.methodName = methodName;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    /**
+     * Client ID of the calendar application
+     */
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public String getEmailAddress() {
+        return emailAddress;
+    }
+
+    /**
+     * The emailAddress of the Google Service Account.
+     */
+    public void setEmailAddress(String emailAddress) {
+        this.emailAddress = emailAddress;
+    }
+
+    public String getClientSecret() {
+        return clientSecret;
+    }
+
+    /**
+     * Client secret of the calendar application
+     */
+    public void setClientSecret(String clientSecret) {
+        this.clientSecret = clientSecret;
+    }
+
+    public String getAccessToken() {
+        return accessToken;
+    }
+
+    /**
+     * OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage.
+     */
+    public void setAccessToken(String accessToken) {
+        this.accessToken = accessToken;
+    }
+
+    public String getRefreshToken() {
+        return refreshToken;
+    }
+
+    /**
+     * OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the
+     * current one expires - a necessity if the application is long-lived.
+     */
+    public void setRefreshToken(String refreshToken) {
+        this.refreshToken = refreshToken;
+    }
+
+    public String getApplicationName() {
+        return applicationName;
+    }
+
+    /**
+     * Google calendar application name. Example would be "camel-google-calendar/1.0"
+     */
+    public void setApplicationName(String applicationName) {
+        this.applicationName = applicationName;
+    }
+
+    public String getScopes() {
+        return scopes;
+    }
+
+    /**
+     * Specifies the level of permissions you want a calendar application to have to a user account. You can separate
+     * multiple scopes by comma. See https://developers.google.com/google-apps/calendar/auth for more info.
+     */
+    public void setScopes(String scopes) {
+        this.scopes = scopes;
+    }
+
+    public String getP12FileName() {
+        return p12FileName;
+    }
+
+    /**
+     * The name of the p12 file which has the private key to use with the Google Service Account.
+     */
+    public void setP12FileName(String p12FileName) {
+        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;
+    }
+
+}
diff --git a/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConsumer.java b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConsumer.java
new file mode 100644
index 0000000..5fc2204
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConsumer.java
@@ -0,0 +1,54 @@
+/*
+ * 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.calendar;
+
+import java.util.Map;
+import java.util.Map.Entry;
+
+import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
+import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.Processor;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName;
+import org.apache.camel.spi.BeanIntrospection;
+import org.apache.camel.support.component.AbstractApiConsumer;
+
+/**
+ * The GoogleCalendar consumer.
+ */
+public class GoogleCalendarConsumer extends AbstractApiConsumer<GoogleCalendarApiName, GoogleCalendarConfiguration> {
+
+    public GoogleCalendarConsumer(GoogleCalendarEndpoint endpoint, Processor processor) {
+        super(endpoint, processor);
+    }
+
+    @Override
+    protected Object doInvokeMethod(Map<String, Object> properties) throws RuntimeCamelException {
+        AbstractGoogleClientRequest request = (AbstractGoogleClientRequest) super.doInvokeMethod(properties);
+        try {
+            BeanIntrospection beanIntrospection
+                    = getEndpoint().getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
+            for (Entry<String, Object> p : properties.entrySet()) {
+                beanIntrospection.setProperty(getEndpoint().getCamelContext(), request, p.getKey(), p.getValue());
+            }
+            return request.execute();
+        } catch (Exception e) {
+            throw new RuntimeCamelException(e);
+        }
+    }
+
+}
diff --git a/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpoint.java b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpoint.java
new file mode 100644
index 0000000..4cb22fb
--- /dev/null
+++ b/components/camel-google/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpoint.java
@@ -0,0 +1,125 @@
+/*
+ * 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.calendar;
+
+import java.util.Map;
+
+import com.google.api.services.calendar.Calendar;
+import org.apache.camel.Category;
+import org.apache.camel.Consumer;
+import org.apache.camel.Processor;
+import org.apache.camel.Producer;
+import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiCollection;
+import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName;
+import org.apache.camel.component.google.calendar.internal.GoogleCalendarConstants;
+import org.apache.camel.component.google.calendar.internal.GoogleCalendarPropertiesHelper;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
+import org.apache.camel.support.component.AbstractApiEndpoint;
+import org.apache.camel.support.component.ApiMethod;
+import org.apache.camel.support.component.ApiMethodPropertiesHelper;
+
+/**
+ * Perform various operations on a Google Calendar.
+ */
+@UriEndpoint(firstVersion = "2.15.0", scheme = "google-calendar", title = "Google Calendar",
+             syntax = "google-calendar:apiName/methodName", apiSyntax = "apiName/methodName",
+             consumerPrefix = "consumer", category = { Category.API, Category.CLOUD })
+public class GoogleCalendarEndpoint extends AbstractApiEndpoint<GoogleCalendarApiName, GoogleCalendarConfiguration> {
+
+    @UriParam
+    private GoogleCalendarConfiguration configuration;
+
+    private Object apiProxy;
+
+    public GoogleCalendarEndpoint(String uri, GoogleCalendarComponent component,
+                                  GoogleCalendarApiName apiName, String methodName,
+                                  GoogleCalendarConfiguration endpointConfiguration) {
+        super(uri, component, apiName, methodName, GoogleCalendarApiCollection.getCollection().getHelper(apiName),
+              endpointConfiguration);
... 32019 lines suppressed ...


[camel] 04/06: CAMEL-16322 - Have a middle folder for google components

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 724a19f58663a1c97c0d86c6f3f3123c1fef07cc
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Mar 10 11:50:23 2021 +0100

    CAMEL-16322 - Have a middle folder for google components
---
 components/pom.xml | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/components/pom.xml b/components/pom.xml
index a795d3e..2a4c057 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -171,13 +171,7 @@
         <module>camel-geocoder</module>
         <module>camel-git</module>
         <module>camel-github</module>
-        <module>camel-google-bigquery</module>
-        <module>camel-google-calendar</module>
-        <module>camel-google-drive</module>
-        <module>camel-google-mail</module>
-        <module>camel-google-pubsub</module>
-        <module>camel-google-sheets</module>
-	<module>camel-google-storage</module>
+        <module>camel-google</module>
         <module>camel-gora</module>
         <module>camel-grape</module>
         <module>camel-graphql</module>


[camel] 05/06: CAMEL-16322 - Have a middle folder for google components

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 820342db0dcd4a72b7d0b43f05f9f5229b2ded4e
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Mar 10 11:51:58 2021 +0100

    CAMEL-16322 - Have a middle folder for google components
---
 bom/camel-bom/pom.xml | 5 +++++
 parent/pom.xml        | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 2009240..42dc0f3 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -754,6 +754,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-google-parent</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-google-bigquery</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/parent/pom.xml b/parent/pom.xml
index 3837cf4..80f474e 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -1386,6 +1386,11 @@
 			</dependency>
 			<dependency>
 				<groupId>org.apache.camel</groupId>
+				<artifactId>camel-google-parent</artifactId>
+				<version>${project.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>org.apache.camel</groupId>
 				<artifactId>camel-google-bigquery</artifactId>
 				<version>${project.version}</version>
 			</dependency>


[camel] 01/06: CAMEL-16322 - Have a middle folder for google components

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 87c5f9730ffdab923fa44793db3db143de8c93bd
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Mar 10 11:44:22 2021 +0100

    CAMEL-16322 - Have a middle folder for google components
---
 components/camel-google-bigquery/.gitignore        |   7 -
 components/camel-google-bigquery/ReadMe.md         |  43 -
 components/camel-google-bigquery/pom.xml           | 128 ---
 .../GoogleBigQueryComponentConfigurer.java         |  78 --
 .../bigquery/GoogleBigQueryEndpointConfigurer.java |  66 --
 .../bigquery/GoogleBigQueryEndpointUriFactory.java |  68 --
 .../sql/GoogleBigQuerySQLComponentConfigurer.java  |  72 --
 .../sql/GoogleBigQuerySQLEndpointConfigurer.java   |  60 --
 .../sql/GoogleBigQuerySQLEndpointUriFactory.java   |  65 --
 .../services/org/apache/camel/component.properties |   7 -
 .../org/apache/camel/component/google-bigquery     |   2 -
 .../org/apache/camel/component/google-bigquery-sql |   2 -
 .../camel/configurer/google-bigquery-component     |   2 -
 .../camel/configurer/google-bigquery-endpoint      |   2 -
 .../camel/configurer/google-bigquery-sql-component |   2 -
 .../camel/configurer/google-bigquery-sql-endpoint  |   2 -
 .../camel/urifactory/google-bigquery-endpoint      |   2 -
 .../camel/urifactory/google-bigquery-sql-endpoint  |   2 -
 .../component/google/bigquery/google-bigquery.json |  39 -
 .../google/bigquery/sql/google-bigquery-sql.json   |  36 -
 .../src/main/docs/google-bigquery-component.adoc   | 170 ----
 .../main/docs/google-bigquery-sql-component.adoc   | 148 ---
 .../src/main/docs/google-summary.adoc              |  14 -
 .../google/bigquery/GoogleBigQueryComponent.java   | 100 ---
 .../bigquery/GoogleBigQueryConfiguration.java      | 103 ---
 .../bigquery/GoogleBigQueryConnectionFactory.java  | 130 ---
 .../google/bigquery/GoogleBigQueryConstants.java   |  32 -
 .../google/bigquery/GoogleBigQueryEndpoint.java    |  75 --
 .../google/bigquery/GoogleBigQueryProducer.java    | 195 ----
 .../bigquery/sql/GoogleBigQuerySQLComponent.java   |  88 --
 .../sql/GoogleBigQuerySQLConfiguration.java        |  77 --
 .../bigquery/sql/GoogleBigQuerySQLEndpoint.java    |  73 --
 .../bigquery/sql/GoogleBigQuerySQLProducer.java    | 172 ----
 .../component/google/bigquery/sql/SqlHelper.java   | 103 ---
 .../google/bigquery/integration/AsyncTest.java     |  97 --
 .../bigquery/integration/BigQueryTestSupport.java  | 158 ----
 .../bigquery/integration/DynamicTableIdTest.java   | 100 ---
 .../google/bigquery/integration/InsertIdTest.java  | 142 ---
 .../google/bigquery/integration/SingleRowTest.java |  84 --
 .../integration/sql/SqlQueryFromResourceTest.java  |  86 --
 .../bigquery/integration/sql/SqlQueryTest.java     |  87 --
 .../google/bigquery/unit/BaseBigQueryTest.java     |  64 --
 .../bigquery/unit/GoogleBigQueryProducerTest.java  |  86 --
 .../unit/sql/GoogleBigQuerySQLComponentTest.java   |  49 -
 .../sql/GoogleBigQuerySQLProducerBaseTest.java     |  55 --
 .../GoogleBigQuerySQLProducerWithParamersTest.java | 137 ---
 .../GoogleBigQuerySQLProducerWithPatternTest.java  |  71 --
 .../google/bigquery/unit/sql/SqlHelperTest.java    |  99 --
 .../src/test/resources/log4j.properties            |  37 -
 .../src/test/resources/log4j2.properties           |  30 -
 .../src/test/resources/logging.properties          |  21 -
 .../src/test/resources/simple.properties           |  24 -
 .../src/test/resources/sql/delete.sql              |  18 -
 .../src/test/resources/sql/insert.sql              |  19 -
 components/camel-google-calendar/pom.xml           | 223 -----
 .../calendar/CalendarAclEndpointConfiguration.java |  67 --
 ...CalendarAclEndpointConfigurationConfigurer.java | 159 ----
 .../CalendarCalendarListEndpointConfiguration.java |  56 --
 ...alendarListEndpointConfigurationConfigurer.java | 152 ----
 .../CalendarCalendarsEndpointConfiguration.java    |  45 -
 ...arCalendarsEndpointConfigurationConfigurer.java | 145 ---
 .../CalendarChannelsEndpointConfiguration.java     |  34 -
 ...darChannelsEndpointConfigurationConfigurer.java | 138 ---
 .../CalendarColorsEndpointConfiguration.java       |  23 -
 ...endarColorsEndpointConfigurationConfigurer.java | 131 ---
 .../CalendarEventsEndpointConfiguration.java       |  89 --
 ...endarEventsEndpointConfigurationConfigurer.java | 173 ----
 .../CalendarFreebusyEndpointConfiguration.java     |  34 -
 ...darFreebusyEndpointConfigurationConfigurer.java | 138 ---
 .../CalendarSettingsEndpointConfiguration.java     |  45 -
 ...darSettingsEndpointConfigurationConfigurer.java | 145 ---
 .../GoogleCalendarComponentConfigurer.java         | 150 ----
 .../GoogleCalendarConfigurationConfigurer.java     | 131 ---
 .../calendar/GoogleCalendarEndpointConfigurer.java | 260 ------
 .../calendar/GoogleCalendarEndpointUriFactory.java | 108 ---
 .../calendar/internal/CalendarAclApiMethod.java    |  86 --
 .../internal/CalendarCalendarListApiMethod.java    |  79 --
 .../internal/CalendarCalendarsApiMethod.java       |  75 --
 .../internal/CalendarChannelsApiMethod.java        |  48 -
 .../calendar/internal/CalendarColorsApiMethod.java |  47 -
 .../calendar/internal/CalendarEventsApiMethod.java | 111 ---
 .../internal/CalendarFreebusyApiMethod.java        |  48 -
 .../internal/CalendarSettingsApiMethod.java        |  57 --
 .../internal/GoogleCalendarApiCollection.java      | 122 ---
 .../calendar/internal/GoogleCalendarApiName.java   |  42 -
 .../GoogleCalendarStreamComponentConfigurer.java   | 160 ----
 .../GoogleCalendarStreamEndpointConfigurer.java    | 239 -----
 .../GoogleCalendarStreamEndpointUriFactory.java    | 109 ---
 .../services/org/apache/camel/component.properties |   7 -
 .../org/apache/camel/component/google-calendar     |   2 -
 .../apache/camel/component/google-calendar-stream  |   2 -
 .../camel/configurer/google-calendar-component     |   2 -
 .../camel/configurer/google-calendar-endpoint      |   2 -
 .../configurer/google-calendar-stream-component    |   2 -
 .../configurer/google-calendar-stream-endpoint     |   2 -
 ...oogle.calendar.CalendarAclEndpointConfiguration |   2 -
 ...endar.CalendarCalendarListEndpointConfiguration |   2 -
 ...calendar.CalendarCalendarsEndpointConfiguration |   2 -
 ....calendar.CalendarChannelsEndpointConfiguration |   2 -
 ...le.calendar.CalendarColorsEndpointConfiguration |   2 -
 ...le.calendar.CalendarEventsEndpointConfiguration |   2 -
 ....calendar.CalendarFreebusyEndpointConfiguration |   2 -
 ....calendar.CalendarSettingsEndpointConfiguration |   2 -
 ...ent.google.calendar.GoogleCalendarConfiguration |   2 -
 .../camel/urifactory/google-calendar-endpoint      |   2 -
 .../urifactory/google-calendar-stream-endpoint     |   2 -
 .../component/google/calendar/google-calendar.json |  93 --
 .../calendar/stream/google-calendar-stream.json    | 100 ---
 .../src/main/docs/google-calendar-component.adoc   | 636 -------------
 .../docs/google-calendar-stream-component.adoc     | 147 ---
 .../calendar/BatchGoogleCalendarClientFactory.java | 101 ---
 .../calendar/GoogleCalendarClientFactory.java      |  30 -
 .../google/calendar/GoogleCalendarComponent.java   | 112 ---
 .../calendar/GoogleCalendarConfiguration.java      | 182 ----
 .../google/calendar/GoogleCalendarConsumer.java    |  54 --
 .../google/calendar/GoogleCalendarEndpoint.java    | 125 ---
 .../google/calendar/GoogleCalendarProducer.java    |  55 --
 .../calendar/internal/GoogleCalendarConstants.java |  35 -
 .../internal/GoogleCalendarPropertiesHelper.java   |  40 -
 .../stream/GoogleCalendarStreamComponent.java      |  93 --
 .../stream/GoogleCalendarStreamConfiguration.java  | 260 ------
 .../stream/GoogleCalendarStreamConstants.java      |  31 -
 .../stream/GoogleCalendarStreamConsumer.java       | 188 ----
 .../stream/GoogleCalendarStreamEndpoint.java       |  90 --
 .../AbstractGoogleCalendarTestSupport.java         | 116 ---
 .../calendar/CalendarAclIntegrationTest.java       |  77 --
 .../CalendarCalendarListIntegrationTest.java       |  90 --
 .../calendar/CalendarCalendarsIntegrationTest.java |  93 --
 .../calendar/CalendarColorsIntegrationTest.java    |  56 --
 .../google/calendar/CalendarConfigurationTest.java |  83 --
 .../calendar/CalendarEventsIntegrationTest.java    | 165 ----
 .../calendar/CalendarFreebusyIntegrationTest.java  |  72 --
 .../calendar/CalendarSettingsIntegrationTest.java  |  71 --
 .../AbstractGoogleCalendarStreamTestSupport.java   |  68 --
 ...oogleCalendarStreamConsumerIntegrationTest.java |  45 -
 .../src/test/resources/log4j2.properties           |  28 -
 .../src/test/resources/test-options.properties     |  28 -
 components/camel-google-drive/pom.xml              | 253 ------
 .../drive/DriveAboutEndpointConfiguration.java     |  23 -
 .../DriveAboutEndpointConfigurationConfigurer.java | 119 ---
 .../drive/DriveAppsEndpointConfiguration.java      |  34 -
 .../DriveAppsEndpointConfigurationConfigurer.java  | 126 ---
 .../drive/DriveChangesEndpointConfiguration.java   |  45 -
 ...riveChangesEndpointConfigurationConfigurer.java | 133 ---
 .../drive/DriveChannelsEndpointConfiguration.java  |  34 -
 ...iveChannelsEndpointConfigurationConfigurer.java | 126 ---
 .../drive/DriveChildrenEndpointConfiguration.java  |  56 --
 ...iveChildrenEndpointConfigurationConfigurer.java | 140 ---
 .../drive/DriveCommentsEndpointConfiguration.java  |  56 --
 ...iveCommentsEndpointConfigurationConfigurer.java | 140 ---
 .../drive/DriveFilesEndpointConfiguration.java     |  78 --
 .../DriveFilesEndpointConfigurationConfigurer.java | 154 ----
 .../drive/DriveParentsEndpointConfiguration.java   |  56 --
 ...riveParentsEndpointConfigurationConfigurer.java | 140 ---
 .../DrivePermissionsEndpointConfiguration.java     |  67 --
 ...PermissionsEndpointConfigurationConfigurer.java | 147 ---
 .../DrivePropertiesEndpointConfiguration.java      |  56 --
 ...ePropertiesEndpointConfigurationConfigurer.java | 140 ---
 .../drive/DriveRealtimeEndpointConfiguration.java  |  45 -
 ...iveRealtimeEndpointConfigurationConfigurer.java | 133 ---
 .../drive/DriveRepliesEndpointConfiguration.java   |  67 --
 ...riveRepliesEndpointConfigurationConfigurer.java | 147 ---
 .../drive/DriveRevisionsEndpointConfiguration.java |  56 --
 ...veRevisionsEndpointConfigurationConfigurer.java | 140 ---
 .../drive/GoogleDriveComponentConfigurer.java      | 140 ---
 .../drive/GoogleDriveConfigurationConfigurer.java  | 119 ---
 .../drive/GoogleDriveEndpointConfigurer.java       | 250 ------
 .../drive/GoogleDriveEndpointUriFactory.java       | 111 ---
 .../drive/GoogleDriveFilesConverterLoader.java     |  42 -
 .../google/drive/internal/DriveAboutApiMethod.java |  47 -
 .../google/drive/internal/DriveAppsApiMethod.java  |  52 --
 .../drive/internal/DriveChangesApiMethod.java      |  61 --
 .../drive/internal/DriveChannelsApiMethod.java     |  48 -
 .../drive/internal/DriveChildrenApiMethod.java     |  66 --
 .../drive/internal/DriveCommentsApiMethod.java     |  80 --
 .../google/drive/internal/DriveFilesApiMethod.java | 128 ---
 .../drive/internal/DriveParentsApiMethod.java      |  66 --
 .../drive/internal/DrivePermissionsApiMethod.java  |  85 --
 .../drive/internal/DrivePropertiesApiMethod.java   |  80 --
 .../drive/internal/DriveRealtimeApiMethod.java     |  59 --
 .../drive/internal/DriveRepliesApiMethod.java      |  86 --
 .../drive/internal/DriveRevisionsApiMethod.java    |  74 --
 .../drive/internal/GoogleDriveApiCollection.java   | 167 ----
 .../google/drive/internal/GoogleDriveApiName.java  |  52 --
 .../services/org/apache/camel/TypeConverterLoader  |   2 -
 .../services/org/apache/camel/component.properties |   7 -
 .../org/apache/camel/component/google-drive        |   2 -
 .../apache/camel/configurer/google-drive-component |   2 -
 .../apache/camel/configurer/google-drive-endpoint  |   2 -
 ...nt.google.drive.DriveAboutEndpointConfiguration |   2 -
 ...ent.google.drive.DriveAppsEndpointConfiguration |   2 -
 ....google.drive.DriveChangesEndpointConfiguration |   2 -
 ...google.drive.DriveChannelsEndpointConfiguration |   2 -
 ...google.drive.DriveChildrenEndpointConfiguration |   2 -
 ...google.drive.DriveCommentsEndpointConfiguration |   2 -
 ...nt.google.drive.DriveFilesEndpointConfiguration |   2 -
 ....google.drive.DriveParentsEndpointConfiguration |   2 -
 ...gle.drive.DrivePermissionsEndpointConfiguration |   2 -
 ...ogle.drive.DrivePropertiesEndpointConfiguration |   2 -
 ...google.drive.DriveRealtimeEndpointConfiguration |   2 -
 ....google.drive.DriveRepliesEndpointConfiguration |   2 -
 ...oogle.drive.DriveRevisionsEndpointConfiguration |   2 -
 ...component.google.drive.GoogleDriveConfiguration |   2 -
 .../apache/camel/urifactory/google-drive-endpoint  |   2 -
 .../camel/component/google/drive/google-drive.json |  98 --
 .../src/main/docs/google-drive-component.adoc      | 995 ---------------------
 .../drive/BatchGoogleDriveClientFactory.java       |  87 --
 .../google/drive/GoogleDriveClientFactory.java     |  29 -
 .../google/drive/GoogleDriveComponent.java         | 112 ---
 .../google/drive/GoogleDriveConfiguration.java     | 148 ---
 .../google/drive/GoogleDriveConsumer.java          |  58 --
 .../google/drive/GoogleDriveEndpoint.java          | 152 ----
 .../google/drive/GoogleDriveFilesConverter.java    | 118 ---
 .../google/drive/GoogleDriveProducer.java          |  60 --
 .../drive/InteractiveGoogleDriveClientFactory.java |  73 --
 .../drive/internal/GoogleDriveConstants.java       |  35 -
 .../internal/GoogleDrivePropertiesHelper.java      |  40 -
 .../drive/AbstractGoogleDriveTestSupport.java      | 140 ---
 .../google/drive/CustomClientFactoryTest.java      |  49 -
 .../google/drive/DriveAboutIntegrationTest.java    |  56 --
 .../google/drive/DriveAppsIntegrationTest.java     |  64 --
 .../google/drive/DriveChangesIntegrationTest.java  |  83 --
 .../google/drive/DriveChildrenIntegrationTest.java | 137 ---
 .../google/drive/DriveCommentsIntegrationTest.java | 145 ---
 .../google/drive/DriveConfigurationTest.java       |  71 --
 .../google/drive/DriveFilesIntegrationTest.java    | 325 -------
 .../drive/DrivePermissionsIntegrationTest.java     |  91 --
 .../drive/DrivePropertiesIntegrationTest.java      |  84 --
 .../google/drive/DriveRepliesIntegrationTest.java  | 144 ---
 .../drive/DriveRevisionsIntegrationTest.java       |  80 --
 .../google/drive/FileConverterIntegrationTest.java |  74 --
 .../google/drive/FilesConsumerIntegrationTest.java |  73 --
 .../drive/GoogleDriveFilesConverterTest.java       |  62 --
 .../component/google/drive/MyClientFactory.java    |  36 -
 .../src/test/resources/camel-box-small.png         | Bin 38856 -> 0 bytes
 .../src/test/resources/log4j2.properties           |  28 -
 .../src/test/resources/test-options.properties     |  26 -
 components/camel-google-mail/pom.xml               | 272 ------
 .../GmailUsersDraftsEndpointConfiguration.java     |  67 --
 ...UsersDraftsEndpointConfigurationConfigurer.java | 131 ---
 .../mail/GmailUsersEndpointConfiguration.java      |  45 -
 .../GmailUsersEndpointConfigurationConfigurer.java | 117 ---
 .../GmailUsersHistoryEndpointConfiguration.java    |  34 -
 ...sersHistoryEndpointConfigurationConfigurer.java | 110 ---
 .../GmailUsersLabelsEndpointConfiguration.java     |  56 --
 ...UsersLabelsEndpointConfigurationConfigurer.java | 124 ---
 ...rsMessagesAttachmentsEndpointConfiguration.java |  56 --
 ...AttachmentsEndpointConfigurationConfigurer.java | 124 ---
 .../GmailUsersMessagesEndpointConfiguration.java   | 100 ---
 ...ersMessagesEndpointConfigurationConfigurer.java | 152 ----
 .../GmailUsersThreadsEndpointConfiguration.java    |  56 --
 ...sersThreadsEndpointConfigurationConfigurer.java | 124 ---
 .../google/mail/GoogleMailComponentConfigurer.java | 128 ---
 .../mail/GoogleMailConfigurationConfigurer.java    | 103 ---
 .../google/mail/GoogleMailEndpointConfigurer.java  | 238 -----
 .../google/mail/GoogleMailEndpointUriFactory.java  | 101 ---
 .../google/mail/internal/GmailUsersApiMethod.java  |  59 --
 .../mail/internal/GmailUsersDraftsApiMethod.java   | 101 ---
 .../mail/internal/GmailUsersHistoryApiMethod.java  |  48 -
 .../mail/internal/GmailUsersLabelsApiMethod.java   |  80 --
 .../mail/internal/GmailUsersMessagesApiMethod.java | 134 ---
 .../GmailUsersMessagesAttachmentsApiMethod.java    |  50 --
 .../mail/internal/GmailUsersThreadsApiMethod.java  |  79 --
 .../mail/internal/GoogleMailApiCollection.java     | 113 ---
 .../google/mail/internal/GoogleMailApiName.java    |  40 -
 .../GoogleMailStreamComponentConfigurer.java       | 119 ---
 .../stream/GoogleMailStreamEndpointConfigurer.java | 205 -----
 .../stream/GoogleMailStreamEndpointUriFactory.java | 101 ---
 .../services/org/apache/camel/component.properties |   7 -
 .../org/apache/camel/component/google-mail         |   2 -
 .../org/apache/camel/component/google-mail-stream  |   2 -
 .../apache/camel/configurer/google-mail-component  |   2 -
 .../apache/camel/configurer/google-mail-endpoint   |   2 -
 .../camel/configurer/google-mail-stream-component  |   2 -
 .../camel/configurer/google-mail-stream-endpoint   |   2 -
 ...ogle.mail.GmailUsersDraftsEndpointConfiguration |   2 -
 ...ent.google.mail.GmailUsersEndpointConfiguration |   2 -
 ...gle.mail.GmailUsersHistoryEndpointConfiguration |   2 -
 ...ogle.mail.GmailUsersLabelsEndpointConfiguration |   2 -
 ...ilUsersMessagesAttachmentsEndpointConfiguration |   2 -
 ...le.mail.GmailUsersMessagesEndpointConfiguration |   2 -
 ...gle.mail.GmailUsersThreadsEndpointConfiguration |   2 -
 ...l.component.google.mail.GoogleMailConfiguration |   2 -
 .../apache/camel/urifactory/google-mail-endpoint   |   2 -
 .../camel/urifactory/google-mail-stream-endpoint   |   2 -
 .../camel/component/google/mail/google-mail.json   |  85 --
 .../google/mail/stream/google-mail-stream.json     |  88 --
 .../src/main/docs/google-mail-component.adoc       | 667 --------------
 .../main/docs/google-mail-stream-component.adoc    | 139 ---
 .../google/mail/BatchGoogleMailClientFactory.java  |  65 --
 .../google/mail/GoogleMailClientFactory.java       |  25 -
 .../component/google/mail/GoogleMailComponent.java | 102 ---
 .../mail/GoogleMailComponentVerifierExtension.java |  80 --
 .../google/mail/GoogleMailConfiguration.java       | 127 ---
 .../component/google/mail/GoogleMailConsumer.java  |  54 --
 .../component/google/mail/GoogleMailEndpoint.java  | 132 ---
 .../component/google/mail/GoogleMailProducer.java  |  55 --
 .../google/mail/internal/GoogleMailConstants.java  |  35 -
 .../mail/internal/GoogleMailPropertiesHelper.java  |  40 -
 .../mail/stream/GoogleMailStreamComponent.java     |  96 --
 ...GoogleMailStreamComponentVerifierExtension.java |  83 --
 .../mail/stream/GoogleMailStreamConfiguration.java | 175 ----
 .../mail/stream/GoogleMailStreamConstants.java     |  36 -
 .../mail/stream/GoogleMailStreamConsumer.java      | 215 -----
 .../mail/stream/GoogleMailStreamEndpoint.java      | 107 ---
 .../google/mail/AbstractGoogleMailTestSupport.java |  79 --
 .../google/mail/GmailConfigurationTest.java        |  77 --
 .../google/mail/GmailUsersIntegrationTest.java     |  58 --
 .../mail/GmailUsersLabelsIntegrationTest.java      | 118 ---
 .../GmailUsersMessagesConsumerIntegrationTest.java |  62 --
 .../mail/GmailUsersMessagesIntegrationTest.java    | 213 -----
 .../mail/GmailUsersThreadsIntegrationTest.java     | 133 ---
 .../GoogleMailComponentVerifierExtensionTest.java  |  71 --
 .../AbstractGoogleMailStreamTestSupport.java       |  68 --
 ...leMailStreamComponentVerifierExtensionTest.java |  71 --
 .../GoogleMailStreamConsumerIntegrationTest.java   |  43 -
 .../src/test/resources/log4j2.properties           |  28 -
 .../src/test/resources/test-options.properties     |  26 -
 components/camel-google-pubsub/.gitignore          |   7 -
 components/camel-google-pubsub/ReadMe.md           |  36 -
 components/camel-google-pubsub/pom.xml             | 163 ----
 .../pubsub/GooglePubsubComponentConfigurer.java    |  88 --
 .../pubsub/GooglePubsubEndpointConfigurer.java     | 123 ---
 .../pubsub/GooglePubsubEndpointUriFactory.java     |  76 --
 .../services/org/apache/camel/component.properties |   7 -
 .../org/apache/camel/component/google-pubsub       |   2 -
 .../camel/configurer/google-pubsub-component       |   2 -
 .../apache/camel/configurer/google-pubsub-endpoint |   2 -
 .../apache/camel/urifactory/google-pubsub-endpoint |   2 -
 .../component/google/pubsub/google-pubsub.json     |  51 --
 .../src/main/docs/google-pubsub-component.adoc     | 204 -----
 .../google/pubsub/GooglePubsubComponent.java       | 252 ------
 .../google/pubsub/GooglePubsubConstants.java       |  36 -
 .../google/pubsub/GooglePubsubConsumer.java        | 184 ----
 .../google/pubsub/GooglePubsubEndpoint.java        | 241 -----
 .../google/pubsub/GooglePubsubProducer.java        | 119 ---
 .../google/pubsub/consumer/AcknowledgeAsync.java   |  40 -
 .../google/pubsub/consumer/AcknowledgeSync.java    |  75 --
 .../pubsub/consumer/CamelMessageReceiver.java      |  76 --
 .../serializer/DefaultGooglePubsubSerializer.java  |  35 -
 .../pubsub/serializer/GooglePubsubSerializer.java  |  34 -
 .../component/google/pubsub/PubsubTestSupport.java | 170 ----
 .../google/pubsub/integration/AckModeNoneTest.java |  89 --
 .../pubsub/integration/AcknowledgementTest.java    | 120 ---
 .../google/pubsub/integration/BodyTypesTest.java   | 170 ----
 .../pubsub/integration/CustomSerializerTest.java   |  90 --
 .../google/pubsub/integration/DeadLetterTest.java  | 154 ----
 .../integration/GroupedExchangeRoundtripTest.java  | 116 ---
 .../pubsub/integration/MessageOrderingTest.java    | 103 ---
 .../integration/SingleExchangeRoundtripTest.java   | 124 ---
 .../google/pubsub/unit/PubsubEndpointTest.java     |  75 --
 .../google/pubsub/unit/PubsubProducerTest.java     |  59 --
 .../src/test/resources/camel-pubsub-component.json |  12 -
 .../src/test/resources/log4j.properties            |  37 -
 .../src/test/resources/log4j2.properties           |  30 -
 .../src/test/resources/logging.properties          |  21 -
 .../src/test/resources/simple.properties           |  20 -
 components/camel-google-sheets/pom.xml             | 321 -------
 .../sheets/GoogleSheetsComponentConfigurer.java    | 135 ---
 .../GoogleSheetsConfigurationConfigurer.java       | 110 ---
 .../sheets/GoogleSheetsEndpointConfigurer.java     | 245 -----
 .../sheets/GoogleSheetsEndpointUriFactory.java     | 105 ---
 .../SheetsSpreadsheetsEndpointConfiguration.java   |  67 --
 ...preadsheetsEndpointConfigurationConfigurer.java | 138 ---
 ...etsSpreadsheetsValuesEndpointConfiguration.java | 122 ---
 ...heetsValuesEndpointConfigurationConfigurer.java | 173 ----
 .../sheets/internal/GoogleSheetsApiCollection.java |  68 --
 .../sheets/internal/GoogleSheetsApiName.java       |  30 -
 .../internal/SheetsSpreadsheetsApiMethod.java      |  77 --
 .../SheetsSpreadsheetsValuesApiMethod.java         | 105 ---
 .../GoogleSheetsStreamComponentConfigurer.java     | 151 ----
 .../GoogleSheetsStreamEndpointConfigurer.java      | 230 -----
 .../GoogleSheetsStreamEndpointUriFactory.java      | 106 ---
 .../services/org/apache/camel/component.properties |   7 -
 .../org/apache/camel/component/google-sheets       |   2 -
 .../apache/camel/component/google-sheets-stream    |   2 -
 .../camel/configurer/google-sheets-component       |   2 -
 .../apache/camel/configurer/google-sheets-endpoint |   2 -
 .../configurer/google-sheets-stream-component      |   2 -
 .../camel/configurer/google-sheets-stream-endpoint |   2 -
 ...mponent.google.sheets.GoogleSheetsConfiguration |   2 -
 ....sheets.SheetsSpreadsheetsEndpointConfiguration |   2 -
 ...s.SheetsSpreadsheetsValuesEndpointConfiguration |   2 -
 .../apache/camel/urifactory/google-sheets-endpoint |   2 -
 .../camel/urifactory/google-sheets-stream-endpoint |   2 -
 .../component/google/sheets/google-sheets.json     |  78 --
 .../google/sheets/stream/google-sheets-stream.json |  87 --
 .../src/main/docs/google-sheets-component.adoc     | 327 -------
 .../main/docs/google-sheets-stream-component.adoc  | 334 -------
 .../sheets/BatchGoogleSheetsClientFactory.java     |  97 --
 .../google/sheets/GoogleSheetsClientFactory.java   |  30 -
 .../google/sheets/GoogleSheetsComponent.java       | 105 ---
 .../google/sheets/GoogleSheetsConfiguration.java   | 128 ---
 .../google/sheets/GoogleSheetsConsumer.java        |  53 --
 .../google/sheets/GoogleSheetsEndpoint.java        | 112 ---
 .../google/sheets/GoogleSheetsProducer.java        |  55 --
 .../sheets/GoogleSheetsVerifierExtension.java      |  84 --
 .../sheets/internal/GoogleSheetsConstants.java     |  34 -
 .../internal/GoogleSheetsPropertiesHelper.java     |  40 -
 .../sheets/stream/GoogleSheetsStreamComponent.java |  96 --
 .../stream/GoogleSheetsStreamConfiguration.java    | 241 -----
 .../sheets/stream/GoogleSheetsStreamConstants.java |  38 -
 .../sheets/stream/GoogleSheetsStreamConsumer.java  | 194 ----
 .../sheets/stream/GoogleSheetsStreamEndpoint.java  |  77 --
 .../sheets/AbstractGoogleSheetsTestSupport.java    | 183 ----
 .../sheets/GoogleSheetsVerifierExtensionTest.java  |  69 --
 .../google/sheets/SheetsConfigurationTest.java     |  69 --
 .../sheets/SheetsSpreadsheetsIntegrationTest.java  | 149 ---
 .../SheetsSpreadsheetsValuesIntegrationTest.java   | 224 -----
 .../sheets/server/GoogleSheetsApiTestServer.java   | 353 --------
 .../server/GoogleSheetsApiTestServerAssert.java    | 365 --------
 .../server/GoogleSheetsApiTestServerRule.java      |  99 --
 .../AbstractGoogleSheetsStreamTestSupport.java     |  60 --
 .../SheetsStreamConsumerIntegrationTest.java       | 169 ----
 .../src/test/resources/googleapis.jks              | Bin 2695 -> 0 bytes
 .../src/test/resources/log4j2.properties           |  28 -
 .../src/test/resources/test-options.properties     |  26 -
 components/camel-google-storage/ReadMe.md          |  43 -
 components/camel-google-storage/pom.xml            | 125 ---
 .../GoogleCloudStorageComponentConfigurer.java     | 145 ---
 .../GoogleCloudStorageEndpointConfigurer.java      | 237 -----
 .../GoogleCloudStorageEndpointUriFactory.java      |  93 --
 .../services/org/apache/camel/component.properties |   7 -
 .../org/apache/camel/component/google-storage      |   2 -
 .../camel/configurer/google-storage-component      |   2 -
 .../camel/configurer/google-storage-endpoint       |   2 -
 .../camel/urifactory/google-storage-endpoint       |   2 -
 .../component/google/storage/google-storage.json   |  77 --
 .../src/main/docs/google-storage-component.adoc    | 397 --------
 .../storage/GoogleCloudStorageComponent.java       |  68 --
 .../storage/GoogleCloudStorageConfiguration.java   | 241 -----
 .../GoogleCloudStorageConnectionFactory.java       |  51 --
 .../storage/GoogleCloudStorageConstants.java       |  52 --
 .../google/storage/GoogleCloudStorageConsumer.java | 306 -------
 .../google/storage/GoogleCloudStorageEndpoint.java | 118 ---
 .../storage/GoogleCloudStorageOperations.java      |  27 -
 .../google/storage/GoogleCloudStorageProducer.java | 365 --------
 .../org/apache/camel/component/google-storage      |   1 -
 .../integration/ComplexIntegrationTest.java        | 147 ---
 .../storage/localstorage/FakeStorageRpc.java       | 583 ------------
 .../storage/localstorage/LocalStorageHelper.java   | 102 ---
 .../google/storage/unit/ConsumerLocalTest.java     |  87 --
 .../storage/unit/GoogleCloudStorageBaseTest.java   |  45 -
 ...ogleCloudStorageComponentConfigurationTest.java |  70 --
 .../google/storage/unit/ProducerLocalTest.java     | 147 ---
 .../src/test/resources/log4j2.properties           |  31 -
 446 files changed, 38838 deletions(-)

diff --git a/components/camel-google-bigquery/.gitignore b/components/camel-google-bigquery/.gitignore
deleted file mode 100644
index d10190d..0000000
--- a/components/camel-google-bigquery/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-.idea
-*.iml
-.settings
-.project
-.classpath
-target
-deploy*.cmd
diff --git a/components/camel-google-bigquery/ReadMe.md b/components/camel-google-bigquery/ReadMe.md
deleted file mode 100644
index d29580b..0000000
--- a/components/camel-google-bigquery/ReadMe.md
+++ /dev/null
@@ -1,43 +0,0 @@
-## Camel Google BigQuery Component testing
-
-The unit tests provided are somewhat limited.
-
-Due to the nature of the component, it needs to be tested against a google BigQuery instance as no
-emulator is available.
-
-* Unit : <br>
-  Standalone tests that can be conducted on their own
-* Integration : <br>
-  Tests against a Google BigQuery instance
-
-### Execution of integration tests
-
-A Google Cloud account with a configured BigQuery instance is required with a dataset created.
-
-Google BigQuery component authentication is targeted for use with the GCP Service Accounts.
-For more information please refer to https://cloud.google.com/docs/authentication[Google Cloud Platform Auth Guide]
-
-Google security credentials for the tests can be set in the `src/test/resources/simple.properties` file by setting
-either one of the following in order of preference:
-
-* Service Account Email and Service Account Key (PEM format) (`service.account` and `service.key`)
-* GCP credentials file location (`service.credentialsFileLocation`)
-
-Or implicitly, where the connection factory falls back on
-https://developers.google.com/identity/protocols/application-default-credentials#howtheywork[Application Default Credentials].
-
-*OBS!* The location of the default credentials file is configurable - via GOOGLE_APPLICATION_CREDENTIALS environment variable.
-
-Service Account Email and Service Account Key can be found in the GCP JSON credentials file as client_email and private_key respectively.
-
-For the tests the `project.id` and `bigquery.datasetId` needs to be configured. By default
-the current google user will be used to connect but credentials can be provided either by
-account/key (via `service.account` and `service.key`) or a credentials file (`service.credentialsFileLocation`)
-
-Running tests against BigQuery instance:
-
-```
-mvn -Pgoogle-bigquery-test verify
-```
-
-
diff --git a/components/camel-google-bigquery/pom.xml b/components/camel-google-bigquery/pom.xml
deleted file mode 100644
index efec2c1..0000000
--- a/components/camel-google-bigquery/pom.xml
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.camel</groupId>
-        <artifactId>components</artifactId>
-        <version>3.9.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>camel-google-bigquery</artifactId>
-    <packaging>jar</packaging>
-    <name>Camel :: Google BigQuery</name>
-    <description>Camel Component for Google Cloud Platform BigQuery</description>
-
-    <properties>
-    </properties>
-
-    <dependencyManagement>
-        <dependencies>
-            <!-- Override the android JDK 7 guava in libraries-bom -->
-            <dependency>
-                <groupId>com.google.guava</groupId>
-                <artifactId>guava</artifactId>
-                <version>${google-cloud-guava-version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.google.cloud</groupId>
-                <artifactId>libraries-bom</artifactId>
-                <version>${google-cloud-bom-version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-support</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.cloud</groupId>
-            <artifactId>google-cloud-bigquery</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test-junit5</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-junit-jupiter</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <childDelegation>false</childDelegation>
-                    <useFile>true</useFile>
-                    <forkCount>1</forkCount>
-                    <reuseForks>true</reuseForks>
-                    <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds>
-                    <includes>
-                        <!-- Here we only run test of  -->
-                        <include>**/unit/**/*.java</include>
-                    </includes>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>google-bigquery-test</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <childDelegation>false</childDelegation>
-                            <useFile>true</useFile>
-                            <forkCount>1</forkCount>
-                            <reuseForks>true</reuseForks>
-                            <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds>
-                            <includes>
-                                <include>**/*Test.java</include>
-                            </includes>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-</project>
diff --git a/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponentConfigurer.java b/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponentConfigurer.java
deleted file mode 100644
index 2c05091..0000000
--- a/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponentConfigurer.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.bigquery;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.support.component.PropertyConfigurerSupport;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class GoogleBigQueryComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        GoogleBigQueryComponent target = (GoogleBigQueryComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
-        case "connectionfactory":
-        case "connectionFactory": target.setConnectionFactory(property(camelContext, org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class, value)); return true;
-        case "datasetid":
-        case "datasetId": target.setDatasetId(property(camelContext, java.lang.String.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        case "projectid":
-        case "projectId": target.setProjectId(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public String[] getAutowiredNames() {
-        return new String[]{"connectionFactory"};
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": return boolean.class;
-        case "connectionfactory":
-        case "connectionFactory": return org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class;
-        case "datasetid":
-        case "datasetId": return java.lang.String.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        case "projectid":
-        case "projectId": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        GoogleBigQueryComponent target = (GoogleBigQueryComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": return target.isAutowiredEnabled();
-        case "connectionfactory":
-        case "connectionFactory": return target.getConnectionFactory();
-        case "datasetid":
-        case "datasetId": return target.getDatasetId();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        case "projectid":
-        case "projectId": return target.getProjectId();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointConfigurer.java b/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointConfigurer.java
deleted file mode 100644
index 65a33c5..0000000
--- a/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointConfigurer.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.bigquery;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.support.component.PropertyConfigurerSupport;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class GoogleBigQueryEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        GoogleBigQueryEndpoint target = (GoogleBigQueryEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "connectionfactory":
-        case "connectionFactory": target.getConfiguration().setConnectionFactory(property(camelContext, org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        case "useasinsertid":
-        case "useAsInsertId": target.getConfiguration().setUseAsInsertId(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public String[] getAutowiredNames() {
-        return new String[]{"connectionFactory"};
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "connectionfactory":
-        case "connectionFactory": return org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        case "useasinsertid":
-        case "useAsInsertId": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        GoogleBigQueryEndpoint target = (GoogleBigQueryEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "connectionfactory":
-        case "connectionFactory": return target.getConfiguration().getConnectionFactory();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        case "useasinsertid":
-        case "useAsInsertId": return target.getConfiguration().getUseAsInsertId();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointUriFactory.java b/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointUriFactory.java
deleted file mode 100644
index 163c3d1..0000000
--- a/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpointUriFactory.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.bigquery;
-
-import java.net.URISyntaxException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.camel.spi.EndpointUriFactory;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-public class GoogleBigQueryEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
-
-    private static final String BASE = ":projectId:datasetId:tableId";
-
-    private static final Set<String> PROPERTY_NAMES;
-    private static final Set<String> SECRET_PROPERTY_NAMES;
-    static {
-        Set<String> props = new HashSet<>(6);
-        props.add("lazyStartProducer");
-        props.add("connectionFactory");
-        props.add("datasetId");
-        props.add("tableId");
-        props.add("projectId");
-        props.add("useAsInsertId");
-        PROPERTY_NAMES = Collections.unmodifiableSet(props);
-        SECRET_PROPERTY_NAMES = Collections.emptySet();
-    }
-
-    @Override
-    public boolean isEnabled(String scheme) {
-        return "google-bigquery".equals(scheme);
-    }
-
-    @Override
-    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
-        String syntax = scheme + BASE;
-        String uri = syntax;
-
-        Map<String, Object> copy = new HashMap<>(properties);
-
-        uri = buildPathParameter(syntax, uri, "projectId", null, true, copy);
-        uri = buildPathParameter(syntax, uri, "datasetId", null, true, copy);
-        uri = buildPathParameter(syntax, uri, "tableId", null, false, copy);
-        uri = buildQueryParameters(uri, copy, encode);
-        return uri;
-    }
-
-    @Override
-    public Set<String> propertyNames() {
-        return PROPERTY_NAMES;
-    }
-
-    @Override
-    public Set<String> secretPropertyNames() {
-        return SECRET_PROPERTY_NAMES;
-    }
-
-    @Override
-    public boolean isLenientProperties() {
-        return false;
-    }
-}
-
diff --git a/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponentConfigurer.java b/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponentConfigurer.java
deleted file mode 100644
index 6d2408e..0000000
--- a/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponentConfigurer.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.bigquery.sql;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.support.component.PropertyConfigurerSupport;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class GoogleBigQuerySQLComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        GoogleBigQuerySQLComponent target = (GoogleBigQuerySQLComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
-        case "connectionfactory":
-        case "connectionFactory": target.setConnectionFactory(property(camelContext, org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        case "projectid":
-        case "projectId": target.setProjectId(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public String[] getAutowiredNames() {
-        return new String[]{"connectionFactory"};
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": return boolean.class;
-        case "connectionfactory":
-        case "connectionFactory": return org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        case "projectid":
-        case "projectId": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        GoogleBigQuerySQLComponent target = (GoogleBigQuerySQLComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "autowiredenabled":
-        case "autowiredEnabled": return target.isAutowiredEnabled();
-        case "connectionfactory":
-        case "connectionFactory": return target.getConnectionFactory();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        case "projectid":
-        case "projectId": return target.getProjectId();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointConfigurer.java b/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointConfigurer.java
deleted file mode 100644
index 5bc9b81..0000000
--- a/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointConfigurer.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.bigquery.sql;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.support.component.PropertyConfigurerSupport;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class GoogleBigQuerySQLEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        GoogleBigQuerySQLEndpoint target = (GoogleBigQuerySQLEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "connectionfactory":
-        case "connectionFactory": target.getConfiguration().setConnectionFactory(property(camelContext, org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public String[] getAutowiredNames() {
-        return new String[]{"connectionFactory"};
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "connectionfactory":
-        case "connectionFactory": return org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        GoogleBigQuerySQLEndpoint target = (GoogleBigQuerySQLEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "connectionfactory":
-        case "connectionFactory": return target.getConfiguration().getConnectionFactory();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointUriFactory.java b/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointUriFactory.java
deleted file mode 100644
index b715a92..0000000
--- a/components/camel-google-bigquery/src/generated/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpointUriFactory.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.bigquery.sql;
-
-import java.net.URISyntaxException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.camel.spi.EndpointUriFactory;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-public class GoogleBigQuerySQLEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
-
-    private static final String BASE = ":projectId:queryString";
-
-    private static final Set<String> PROPERTY_NAMES;
-    private static final Set<String> SECRET_PROPERTY_NAMES;
-    static {
-        Set<String> props = new HashSet<>(4);
-        props.add("lazyStartProducer");
-        props.add("connectionFactory");
-        props.add("queryString");
-        props.add("projectId");
-        PROPERTY_NAMES = Collections.unmodifiableSet(props);
-        SECRET_PROPERTY_NAMES = Collections.emptySet();
-    }
-
-    @Override
-    public boolean isEnabled(String scheme) {
-        return "google-bigquery-sql".equals(scheme);
-    }
-
-    @Override
-    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
-        String syntax = scheme + BASE;
-        String uri = syntax;
-
-        Map<String, Object> copy = new HashMap<>(properties);
-
-        uri = buildPathParameter(syntax, uri, "projectId", null, true, copy);
-        uri = buildPathParameter(syntax, uri, "queryString", null, true, copy);
-        uri = buildQueryParameters(uri, copy, encode);
-        return uri;
-    }
-
-    @Override
-    public Set<String> propertyNames() {
-        return PROPERTY_NAMES;
-    }
-
-    @Override
-    public Set<String> secretPropertyNames() {
-        return SECRET_PROPERTY_NAMES;
-    }
-
-    @Override
-    public boolean isLenientProperties() {
-        return false;
-    }
-}
-
diff --git a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component.properties
deleted file mode 100644
index 8ddc81e..0000000
--- a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-components=google-bigquery google-bigquery-sql
-groupId=org.apache.camel
-artifactId=camel-google-bigquery
-version=3.9.0-SNAPSHOT
-projectName=Camel :: Google BigQuery
-projectDescription=Camel Component for Google Cloud Platform BigQuery
diff --git a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery b/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery
deleted file mode 100644
index 9e840db..0000000
--- a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.bigquery.GoogleBigQueryComponent
diff --git a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery-sql b/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery-sql
deleted file mode 100644
index 47f5e5b..0000000
--- a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/component/google-bigquery-sql
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLComponent
diff --git a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-component b/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-component
deleted file mode 100644
index 70ac85f..0000000
--- a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-component
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.bigquery.GoogleBigQueryComponentConfigurer
diff --git a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-endpoint b/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-endpoint
deleted file mode 100644
index f9bcfad..0000000
--- a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.bigquery.GoogleBigQueryEndpointConfigurer
diff --git a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-component b/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-component
deleted file mode 100644
index 4c7a787..0000000
--- a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-component
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLComponentConfigurer
diff --git a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-endpoint b/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-endpoint
deleted file mode 100644
index 8e7d900..0000000
--- a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-bigquery-sql-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLEndpointConfigurer
diff --git a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-endpoint b/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-endpoint
deleted file mode 100644
index 5bd5a61..0000000
--- a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.bigquery.GoogleBigQueryEndpointUriFactory
diff --git a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-sql-endpoint b/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-sql-endpoint
deleted file mode 100644
index e6caa39..0000000
--- a/components/camel-google-bigquery/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-bigquery-sql-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLEndpointUriFactory
diff --git a/components/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/google-bigquery.json b/components/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/google-bigquery.json
deleted file mode 100644
index 313444f..0000000
--- a/components/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/google-bigquery.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "component": {
-    "kind": "component",
-    "name": "google-bigquery",
-    "title": "Google BigQuery",
-    "description": "Google BigQuery data warehouse for analytics.",
-    "deprecated": false,
-    "firstVersion": "2.20.0",
-    "label": "cloud,bigdata",
-    "javaType": "org.apache.camel.component.google.bigquery.GoogleBigQueryComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-google-bigquery",
-    "version": "3.9.0-SNAPSHOT",
-    "scheme": "google-bigquery",
-    "extendsScheme": "",
-    "syntax": "google-bigquery:projectId:datasetId:tableId",
-    "async": false,
-    "api": false,
-    "consumerOnly": false,
-    "producerOnly": true,
-    "lenientProperties": false
-  },
-  "componentProperties": {
-    "connectionFactory": { "kind": "property", "displayName": "Connection Factory", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory", "deprecated": false, "autowired": true, "secret": false, "description": "ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used" },
-    "datasetId": { "kind": "property", "displayName": "Dataset Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "BigQuery Dataset Id" },
-    "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 [...]
-    "projectId": { "kind": "property", "displayName": "Project Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Google Cloud Project Id" },
-    "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 [...]
-  },
-  "properties": {
-    "projectId": { "kind": "path", "displayName": "Project Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "Google Cloud Project Id" },
-    "datasetId": { "kind": "path", "displayName": "Dataset Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "BigQuery Dataset Id" },
-    "tableId": { "kind": "path", "displayName": "Table Id", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "BigQuery table id" },
-    "connectionFactory": { "kind": "parameter", "displayName": "Connection Factory", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "ConnectionFacto [...]
-    "lazyStartProducer": { "kind": "parameter", "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 sta [...]
-    "useAsInsertId": { "kind": "parameter", "displayName": "Use As Insert Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "Field name to use as insert id" }
-  }
-}
diff --git a/components/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json b/components/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json
deleted file mode 100644
index 39476c8..0000000
--- a/components/camel-google-bigquery/src/generated/resources/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-  "component": {
-    "kind": "component",
-    "name": "google-bigquery-sql",
-    "title": "Google BigQuery Standard SQL",
-    "description": "Access Google Cloud BigQuery service using SQL queries.",
-    "deprecated": false,
-    "firstVersion": "2.23.0",
-    "label": "cloud,messaging",
-    "javaType": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-google-bigquery",
-    "version": "3.9.0-SNAPSHOT",
-    "scheme": "google-bigquery-sql",
-    "extendsScheme": "",
-    "syntax": "google-bigquery-sql:projectId:queryString",
-    "async": false,
-    "api": false,
-    "consumerOnly": false,
-    "producerOnly": true,
-    "lenientProperties": false
-  },
-  "componentProperties": {
-    "connectionFactory": { "kind": "property", "displayName": "Connection Factory", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory", "deprecated": false, "autowired": true, "secret": false, "description": "ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used" },
-    "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 [...]
-    "projectId": { "kind": "property", "displayName": "Project Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Google Cloud Project Id" },
-    "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 [...]
-  },
-  "properties": {
-    "projectId": { "kind": "path", "displayName": "Project Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "Google Cloud Project Id" },
-    "queryString": { "kind": "path", "displayName": "Query String", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "BigQuery standard SQL query" },
-    "connectionFactory": { "kind": "parameter", "displayName": "Connection Factory", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "Connecti [...]
-    "lazyStartProducer": { "kind": "parameter", "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 sta [...]
-  }
-}
diff --git a/components/camel-google-bigquery/src/main/docs/google-bigquery-component.adoc b/components/camel-google-bigquery/src/main/docs/google-bigquery-component.adoc
deleted file mode 100644
index 7134337..0000000
--- a/components/camel-google-bigquery/src/main/docs/google-bigquery-component.adoc
+++ /dev/null
@@ -1,170 +0,0 @@
-[[google-bigquery-component]]
-= Google BigQuery Component
-:docTitle: Google BigQuery
-:artifactId: camel-google-bigquery
-:description: Google BigQuery data warehouse for analytics.
-:since: 2.20
-:supportLevel: Stable
-:component-header: Only producer is supported
-include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/google-bigquery.adoc[opts=optional]
-//Manually maintained attributes
-:group: Google
-
-*Since Camel {since}*
-
-*{component-header}*
-
-The Google Bigquery component provides access
-to https://cloud.google.com/bigquery/[Cloud BigQuery Infrastructure] via
-the https://developers.google.com/api-client-library/java/apis/bigquery/v2[Google Client Services API].
-
-The current implementation does not use gRPC.
-
-The current implementation does not support querying BigQuery i.e. is a producer only.
-
-Maven users will need to add the following dependency to their pom.xml
-for this component:
-
-[source,xml]
-------------------------------------------------------
-<dependency>
-    <groupId>org.apache.camel</groupId>
-    <artifactId>camel-google-bigquery</artifactId>
-    <!-- use the same version as your Camel core version -->
-    <version>x.x.x</version>
-</dependency>
-
-------------------------------------------------------
-
-[[GoogleBigQuery-AuthenticationConfiguration]]
-
-== Authentication Configuration
-
-Google BigQuery component authentication is targeted for use with the GCP Service Accounts.
-For more information please refer to https://cloud.google.com/docs/authentication[Google Cloud Platform Auth Guide]
-
-Google security credentials can be set explicitly by providing the path to the GCP credentials file location.
-
-Or they are set implicitly, where the connection factory falls back on
-https://developers.google.com/identity/protocols/application-default-credentials#howtheywork[Application Default Credentials].
-
-*OBS!* The location of the default credentials file is configurable - via GOOGLE_APPLICATION_CREDENTIALS environment variable.
-
-== URI Format
-
-[source,text]
---------------------------------------------------------
-        google-bigquery://project-id:datasetId[:tableId]?[options]
---------------------------------------------------------
-
-
-== Options
-
-// component options: START
-The Google BigQuery component supports 5 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *connectionFactory* (producer) | *Autowired* ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used |  | GoogleBigQueryConnectionFactory
-| *datasetId* (producer) | BigQuery Dataset Id |  | String
-| *lazyStartProducer* (producer) | 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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *projectId* (producer) | Google Cloud Project Id |  | String
-| *autowiredEnabled* (advanced) | 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 then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
-|===
-// component options: END
-
-// endpoint options: START
-The Google BigQuery endpoint is configured using URI syntax:
-
-----
-google-bigquery:projectId:datasetId:tableId
-----
-
-with the following path and query parameters:
-
-=== Path Parameters (3 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *projectId* | *Required* Google Cloud Project Id |  | String
-| *datasetId* | *Required* BigQuery Dataset Id |  | String
-| *tableId* | BigQuery table id |  | String
-|===
-
-
-=== Query Parameters (3 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *connectionFactory* (producer) | *Autowired* ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used |  | GoogleBigQueryConnectionFactory
-| *lazyStartProducer* (producer) | 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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *useAsInsertId* (producer) | Field name to use as insert id |  | String
-|===
-// endpoint options: END
-
-
-== Message Headers
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-|Name |Type |Description
-|`CamelGoogleBigQueryTableSuffix` |`String` |Table suffix to use when inserting data
-|`CamelGoogleBigQueryInsertId` |`String` |InsertId to use when inserting data
-|`CamelGoogleBigQueryPartitionDecorator` |`String` |Partition decorator to indicate partition to use when inserting data
-|`CamelGoogleBigQueryTableId` |`String` |Table id where data will be submitted. If specified will override endpoint configuration
-|=======================================================================
-
-
-== Producer Endpoints
-
-Producer endpoints can accept and deliver to BigQuery individual and grouped
-exchanges alike. Grouped exchanges have `Exchange.GROUPED_EXCHANGE` property set.
-
-Google BigQuery producer will send a grouped exchange in a single api call unless different table suffix or
-partition decorators are specified in which case it will break it down to ensure data is written with the
-correct suffix or partition decorator.
-
-Google BigQuery endpoint expects the payload to be either a map or list of maps. A payload containing a map
-will insert a single row and a payload containing a list of map's will insert a row for each entry in the list.
-
-== Template tables
-
-Reference: https://cloud.google.com/bigquery/streaming-data-into-bigquery#template-tables
-
-Templated tables can be specified using the `GoogleBigQueryConstants.TABLE_SUFFIX` header.
-
-I.e. the following route will create tables and insert records sharded on a per day basis:
-
-[source,java]
-------------------------------------------------------
-from("direct:start")
-  .header(GoogleBigQueryConstants.TABLE_SUFFIX, "_${date:now:yyyyMMdd}")
-  .to("google-bigquery:sampleDataset:sampleTable")
-------------------------------------------------------
-Note it is recommended to use partitioning for this use case.
-
-== Partitioning
-
-Reference: https://cloud.google.com/bigquery/docs/creating-partitioned-tables
-
-Partitioning is specified when creating a table and if set data will be automatically partitioned into
-separate tables. When inserting data a specific partition can be specified by setting the
-`GoogleBigQueryConstants.PARTITION_DECORATOR` header on the exchange.
-
-== Ensuring data consistency
-
-Reference: https://cloud.google.com/bigquery/streaming-data-into-bigquery#dataconsistency
-
-A insert id can be set on the exchange with the header `GoogleBigQueryConstants.INSERT_ID` or by specifying
-query parameter `useAsInsertId`. As an insert id need to be specified per row inserted the exchange header can't
-be used when the payload is a list - if the payload is a list the `GoogleBigQueryConstants.INSERT_ID` will
-be ignored. In that case use the query parameter `useAsInsertId`.
-
-include::camel-spring-boot::page$google-bigquery-starter.adoc[]
diff --git a/components/camel-google-bigquery/src/main/docs/google-bigquery-sql-component.adoc b/components/camel-google-bigquery/src/main/docs/google-bigquery-sql-component.adoc
deleted file mode 100644
index 2cae5d3..0000000
--- a/components/camel-google-bigquery/src/main/docs/google-bigquery-sql-component.adoc
+++ /dev/null
@@ -1,148 +0,0 @@
-[[google-bigquery-sql-component]]
-= Google BigQuery Standard SQL Component
-:docTitle: Google BigQuery Standard SQL
-:artifactId: camel-google-bigquery
-:description: Access Google Cloud BigQuery service using SQL queries.
-:since: 2.23
-:supportLevel: Stable
-:component-header: Only producer is supported
-include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/google-bigquery-sql.adoc[opts=optional]
-//Manually maintained attributes
-:group: Google
-
-*Since Camel {since}*
-
-*{component-header}*
-
-The Google BigQuery SQL component provides access
-to https://cloud.google.com/bigquery/[Cloud BigQuery Infrastructure] via
-the https://developers.google.com/apis-explorer/#p/bigquery/v2/bigquery.jobs.query[Google Client Services API].
-
-The current implementation supports only standard SQL
-https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax[DML queries].
-
-Maven users will need to add the following dependency to their pom.xml
-for this component:
-
-[source,xml]
-------------------------------------------------------
-<dependency>
-    <groupId>org.apache.camel</groupId>
-    <artifactId>camel-google-bigquery</artifactId>
-    <!-- use the same version as your Camel core version -->
-    <version>x.x.x</version>
-</dependency>
-
-------------------------------------------------------
-
-[[GoogleBigQuery-AuthenticationConfiguration]]
-
-== Authentication Configuration
-
-Google BigQuery component authentication is targeted for use with the GCP Service Accounts.
-For more information please refer to https://cloud.google.com/docs/authentication[Google Cloud Platform Auth Guide]
-
-Google security credentials can be set explicitly by providing the path to the GCP credentials file location.
-
-Or they are set implicitly, where the connection factory falls back on
-https://developers.google.com/identity/protocols/application-default-credentials#howtheywork[Application Default Credentials].
-
-*OBS!* The location of the default credentials file is configurable - via GOOGLE_APPLICATION_CREDENTIALS environment variable.
-
-== URI Format
-
-[source,text]
---------------------------------------------------------
-        google-bigquery-sql://project-id:query?[options]
---------------------------------------------------------
-
-Examples:
-[source,text]
---------------------------------------------------------
-        google-bigquery-sql://project-17248459:delete * from test.table where id=@myId
-        google-bigquery-sql://project-17248459:delete * from ${datasetId}.${tableId} where id=@myId
---------------------------------------------------------
-where
-
- * parameters in form $\{name} are extracted from message headers and formed the translated query
- * parameters in form @name are extracted from body or message headers and sent to Google Bigquery
-
-You can externalize your SQL queries to files in the classpath or file system as shown:
-[source,text]
---------------------------------------------------------
-        google-bigquery-sql://project-17248459::classpath:delete.sql
---------------------------------------------------------
-
-
-
-== Options
-
-// component options: START
-The Google BigQuery Standard SQL component supports 4 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *connectionFactory* (producer) | *Autowired* ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used |  | GoogleBigQueryConnectionFactory
-| *lazyStartProducer* (producer) | 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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *projectId* (producer) | Google Cloud Project Id |  | String
-| *autowiredEnabled* (advanced) | 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 then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
-|===
-// component options: END
-
-// endpoint options: START
-The Google BigQuery Standard SQL endpoint is configured using URI syntax:
-
-----
-google-bigquery-sql:projectId:queryString
-----
-
-with the following path and query parameters:
-
-=== Path Parameters (2 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *projectId* | *Required* Google Cloud Project Id |  | String
-| *queryString* | *Required* BigQuery standard SQL query |  | String
-|===
-
-
-=== Query Parameters (2 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *connectionFactory* (producer) | *Autowired* ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used |  | GoogleBigQueryConnectionFactory
-| *lazyStartProducer* (producer) | 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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-|===
-// endpoint options: END
-
-
-== Message Headers
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-|Name |Type |Description
-|`CamelGoogleBigQueryJobId` |`JobId` |A custom `JobId` to use
-|=======================================================================
-
-== Output Message Headers
-
-[width="100%",cols="10%,10%,80%",options="header",]
-|=======================================================================
-|Name |Type |Description
-|`CamelGoogleBigQueryTranslatedQuery` |`String` | Preprocessed query text
-|=======================================================================
-
-
-== Producer Endpoints
-
-Google BigQuery SQL endpoint expects the payload to be either empty or a map of query parameters.
-
-include::camel-spring-boot::page$google-bigquery-starter.adoc[]
diff --git a/components/camel-google-bigquery/src/main/docs/google-summary.adoc b/components/camel-google-bigquery/src/main/docs/google-summary.adoc
deleted file mode 100644
index 09d9e50..0000000
--- a/components/camel-google-bigquery/src/main/docs/google-summary.adoc
+++ /dev/null
@@ -1,14 +0,0 @@
-= Google Component
-//attributes written by hand, not generated
-:docTitle: Google
-
-The *google-* component allows you to work with the
-https://gsuite.google.co.in/[G Suite].
-Google offers a great palette of different components like use of calender, mail, sheets and 
-drive . The main reason to use Google is the G Suite features.
-
-== {docTitle} components
-
-See the following for usage of each component:
-
-indexDescriptionList::[attributes='group={docTitle}',descAttribute=description]
diff --git a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponent.java b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponent.java
deleted file mode 100644
index 8737c08..0000000
--- a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryComponent.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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.bigquery;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.annotations.Component;
-import org.apache.camel.support.DefaultComponent;
-
-@Component("google-bigquery")
-public class GoogleBigQueryComponent extends DefaultComponent {
-
-    @Metadata
-    private String projectId;
-    @Metadata
-    private String datasetId;
-    @Metadata(autowired = true)
-    private GoogleBigQueryConnectionFactory connectionFactory;
-
-    public GoogleBigQueryComponent() {
-    }
-
-    public GoogleBigQueryComponent(CamelContext camelContext) {
-        super(camelContext);
-    }
-
-    // Endpoint represents a single table
-    @Override
-    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
-        String[] parts = remaining.split(":");
-
-        if (parts.length < 2) {
-            throw new IllegalArgumentException("Google BigQuery Endpoint format \"projectId:datasetId:tableName\"");
-        }
-
-        GoogleBigQueryConfiguration configuration = new GoogleBigQueryConfiguration();
-        configuration.parseRemaining(remaining);
-
-        if (configuration.getConnectionFactory() == null) {
-            if (connectionFactory == null) {
-                connectionFactory = new GoogleBigQueryConnectionFactory();
-            }
-            configuration.setConnectionFactory(getConnectionFactory());
-        }
-
-        GoogleBigQueryEndpoint endpoint = new GoogleBigQueryEndpoint(uri, this, configuration);
-        setProperties(endpoint, parameters);
-        return endpoint;
-    }
-
-    public String getProjectId() {
-        return projectId;
-    }
-
-    /**
-     * Google Cloud Project Id
-     */
-    public void setProjectId(String projectId) {
-        this.projectId = projectId;
-    }
-
-    public String getDatasetId() {
-        return datasetId;
-    }
-
-    /**
-     * BigQuery Dataset Id
-     */
-    public void setDatasetId(String datasetId) {
-        this.datasetId = datasetId;
-    }
-
-    public GoogleBigQueryConnectionFactory getConnectionFactory() {
-        return connectionFactory;
-    }
-
-    /**
-     * ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used
-     */
-    public void setConnectionFactory(GoogleBigQueryConnectionFactory connectionFactory) {
-        this.connectionFactory = connectionFactory;
-    }
-}
diff --git a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConfiguration.java b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConfiguration.java
deleted file mode 100644
index fbc70bc..0000000
--- a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConfiguration.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.bigquery;
-
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-import org.apache.camel.spi.UriPath;
-
-@UriParams
-public class GoogleBigQueryConfiguration {
-
-    @UriParam(description = "ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used")
-    @Metadata(autowired = true)
-    private GoogleBigQueryConnectionFactory connectionFactory;
-    @UriParam(description = "Field name to use as insert id")
-    private String useAsInsertId;
-    @UriPath(label = "common", description = "Google Cloud Project Id")
-    @Metadata(required = true)
-    private String projectId;
-    @UriPath(label = "common", description = "BigQuery Dataset Id")
-    @Metadata(required = true)
-    private String datasetId;
-    @UriPath(label = "common", description = "BigQuery table id")
-    @Metadata(required = false)
-    private String tableId;
-
-    public void parseRemaining(String remaining) {
-        String[] parts = remaining.split(":");
-
-        if (parts.length < 2) {
-            throw new IllegalArgumentException("Google BigQuery Endpoint format \"projectId:datasetId[:tableName]\"");
-        }
-
-        int c = 0;
-        projectId = parts[c++];
-        datasetId = parts[c++];
-        if (parts.length > 2) {
-            tableId = parts[c++];
-        }
-    }
-
-    /**
-     * ConnectionFactory to obtain connection to Bigquery Service. If non provided the default will be used.
-     */
-    public GoogleBigQueryConnectionFactory getConnectionFactory() {
-        return connectionFactory;
-    }
-
-    public void setConnectionFactory(GoogleBigQueryConnectionFactory connectionFactory) {
-        this.connectionFactory = connectionFactory;
-    }
-
-    public String getUseAsInsertId() {
-        return useAsInsertId;
-    }
-
-    public GoogleBigQueryConfiguration setUseAsInsertId(String useAsInsertId) {
-        this.useAsInsertId = useAsInsertId;
-        return this;
-    }
-
-    public String getProjectId() {
-        return projectId;
-    }
-
-    public GoogleBigQueryConfiguration setProjectId(String projectId) {
-        this.projectId = projectId;
-        return this;
-    }
-
-    public String getDatasetId() {
-        return datasetId;
-    }
-
-    public GoogleBigQueryConfiguration setDatasetId(String datasetId) {
-        this.datasetId = datasetId;
-        return this;
-    }
-
-    public String getTableId() {
-        return tableId;
-    }
-
-    public GoogleBigQueryConfiguration setTableId(String tableId) {
-        this.tableId = tableId;
-        return this;
-    }
-}
diff --git a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConnectionFactory.java b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConnectionFactory.java
deleted file mode 100644
index 3662cdf..0000000
--- a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConnectionFactory.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * 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.bigquery;
-
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Collections;
-
-import com.google.api.client.util.Strings;
-import com.google.api.services.bigquery.BigqueryScopes;
-import com.google.auth.oauth2.GoogleCredentials;
-import com.google.cloud.bigquery.BigQuery;
-import com.google.cloud.bigquery.BigQueryOptions;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class GoogleBigQueryConnectionFactory {
-
-    private final Logger logger = LoggerFactory.getLogger(GoogleBigQueryConnectionFactory.class);
-
-    private String credentialsFileLocation;
-    private String serviceURL;
-    private BigQuery client;
-
-    public GoogleBigQueryConnectionFactory() {
-    }
-
-    public GoogleBigQueryConnectionFactory(BigQuery client) {
-        this.client = client;
-    }
-
-    public synchronized BigQuery getDefaultClient() throws Exception {
-        if (this.client == null) {
-            this.client = buildClient();
-        }
-        return this.client;
-    }
-
-    private BigQuery buildClient() throws Exception {
-
-        GoogleCredentials credentials = null;
-
-        if (credentials == null && !Strings.isNullOrEmpty(credentialsFileLocation)) {
-            logger.debug("Key File Name has been set explicitly. Initialising BigQuery using Key File {}",
-                    credentialsFileLocation);
-
-            credentials = createFromFile();
-        }
-
-        if (credentials == null) {
-            logger.debug(
-                    "No explicit Service Account or Key File Name have been provided. Initialising BigQuery using defaults");
-
-            credentials = createDefault();
-        }
-
-        BigQueryOptions.Builder builder = BigQueryOptions.newBuilder()
-                .setCredentials(credentials);
-
-        if (ObjectHelper.isNotEmpty(serviceURL)) {
-            builder.setHost(serviceURL);
-        }
-
-        return builder.build().getService();
-    }
-
-    private GoogleCredentials createFromFile() throws Exception {
-        try (InputStream is = new FileInputStream(credentialsFileLocation)) {
-            GoogleCredentials credentials = GoogleCredentials.fromStream(is);
-
-            if (credentials.createScopedRequired()) {
-                credentials = credentials.createScoped(BigqueryScopes.all());
-            }
-
-            return credentials;
-        }
-    }
-
-    private GoogleCredentials createDefault() throws Exception {
-        GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
-
-        Collection<String> scopes = Collections.singletonList(BigqueryScopes.BIGQUERY);
-
-        if (credentials.createScopedRequired()) {
-            credentials = credentials.createScoped(scopes);
-        }
-
-        return credentials;
-    }
-
-    public String getCredentialsFileLocation() {
-        return credentialsFileLocation;
-    }
-
-    public GoogleBigQueryConnectionFactory setCredentialsFileLocation(String credentialsFileLocation) {
-        this.credentialsFileLocation = credentialsFileLocation;
-        resetClient();
-        return this;
-    }
-
-    public String getServiceURL() {
-        return serviceURL;
-    }
-
-    public GoogleBigQueryConnectionFactory setServiceURL(String serviceURL) {
-        this.serviceURL = serviceURL;
-        resetClient();
-        return this;
-    }
-
-    private synchronized void resetClient() {
-        this.client = null;
-    }
-}
diff --git a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConstants.java b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConstants.java
deleted file mode 100644
index dc33212..0000000
--- a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryConstants.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.bigquery;
-
-public final class GoogleBigQueryConstants {
-    public static final String TABLE_SUFFIX = "CamelGoogleBigQueryTableSuffix";
-    public static final String TABLE_ID = "CamelGoogleBigQueryTableId";
-    public static final String INSERT_ID = "CamelGoogleBigQueryInsertId";
-    public static final String PARTITION_DECORATOR = "CamelGoogleBigQueryPartitionDecorator";
-    public static final String TRANSLATED_QUERY = "CamelGoogleBigQueryTranslatedQuery";
-    public static final String JOB_ID = "CamelGoogleBigQueryJobId";
-
-    /**
-     * Prevent instantiation.
-     */
-    private GoogleBigQueryConstants() {
-    }
-}
diff --git a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpoint.java b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpoint.java
deleted file mode 100644
index 6f527d9..0000000
--- a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpoint.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.bigquery;
-
-import com.google.cloud.bigquery.BigQuery;
-import org.apache.camel.Category;
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.support.DefaultEndpoint;
-
-/**
- * Google BigQuery data warehouse for analytics.
- *
- * BigQuery Endpoint Definition Represents a table within a BigQuery dataset Contains configuration details for a single
- * table and the utility methods (such as check, create) to ease operations URI Parameters: * Logger ID - To ensure that
- * logging is unified under Route Logger, the logger ID can be passed on via an endpoint URI parameter * Partitioned -
- * to indicate that the table needs to be partitioned - every UTC day to be written into a timestamped separate table
- * side effect: Australian operational day is always split between two UTC days, and, therefore, tables
- *
- * Another consideration is that exceptions are not handled within the class. They are expected to bubble up and be
- * handled by Camel.
- */
-@UriEndpoint(firstVersion = "2.20.0", scheme = "google-bigquery", title = "Google BigQuery",
-             syntax = "google-bigquery:projectId:datasetId:tableId",
-             category = { Category.CLOUD, Category.BIGDATA }, producerOnly = true)
-public class GoogleBigQueryEndpoint extends DefaultEndpoint {
-
-    @UriParam
-    protected final GoogleBigQueryConfiguration configuration;
-
-    protected GoogleBigQueryEndpoint(String endpointUri, GoogleBigQueryComponent component,
-                                     GoogleBigQueryConfiguration configuration) {
-        super(endpointUri, component);
-        this.configuration = configuration;
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        BigQuery bigquery = getConfiguration().getConnectionFactory().getDefaultClient();
-        GoogleBigQueryProducer producer = new GoogleBigQueryProducer(bigquery, this, configuration);
-        return producer;
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        throw new UnsupportedOperationException("Cannot consume from the BigQuery endpoint: " + getEndpointUri());
-    }
-
-    public GoogleBigQueryConfiguration getConfiguration() {
-        return configuration;
-    }
-
-    @Override
-    public GoogleBigQueryComponent getComponent() {
-        return (GoogleBigQueryComponent) super.getComponent();
-    }
-
-}
diff --git a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryProducer.java b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryProducer.java
deleted file mode 100644
index 8438008..0000000
--- a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryProducer.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * 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.bigquery;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import com.google.api.client.util.Strings;
-import com.google.cloud.bigquery.BigQuery;
-import com.google.cloud.bigquery.InsertAllRequest;
-import com.google.cloud.bigquery.InsertAllResponse;
-import org.apache.camel.Exchange;
-import org.apache.camel.support.DefaultProducer;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Generic BigQuery Producer
- */
-public class GoogleBigQueryProducer extends DefaultProducer {
-
-    private static final Logger LOG = LoggerFactory.getLogger(GoogleBigQueryProducer.class);
-
-    private final GoogleBigQueryConfiguration configuration;
-    private BigQuery bigquery;
-
-    public GoogleBigQueryProducer(BigQuery bigquery, GoogleBigQueryEndpoint endpoint,
-                                  GoogleBigQueryConfiguration configuration) {
-        super(endpoint);
-        this.bigquery = bigquery;
-        this.configuration = configuration;
-    }
-
-    /**
-     * The method converts a single incoming message into a List
-     */
-    private static List<Exchange> prepareExchangeList(Exchange exchange) {
-        List<Exchange> entryList;
-
-        if (null == exchange.getProperty(Exchange.GROUPED_EXCHANGE)) {
-            entryList = new ArrayList<>();
-            entryList.add(exchange);
-        } else {
-            entryList = (List<Exchange>) exchange.getProperty(Exchange.GROUPED_EXCHANGE);
-        }
-
-        return entryList;
-    }
-
-    /**
-     * Process the exchange
-     *
-     * The incoming exchange can be a grouped exchange in which case all the exchanges will be combined.
-     *
-     * The incoming can be
-     * <ul>
-     * <li>A map where all map keys will map to field records. One map object maps to one bigquery row</li>
-     * <li>A list of maps. Each entry in the list will map to one bigquery row</li>
-     * </ul>
-     * The incoming message is expected to be a List of Maps The assumptions: - All incoming records go into the same
-     * table - Incoming records sorted by the timestamp
-     */
-    @Override
-    public void process(Exchange exchange) throws Exception {
-        List<Exchange> exchanges = prepareExchangeList(exchange);
-
-        List<Exchange> processGroup = new ArrayList<>();
-
-        String partitionDecorator = "";
-        String suffix = "";
-        String tableId = configuration.getTableId() == null ? "" : configuration.getTableId();
-        int totalProcessed = 0;
-
-        for (Exchange ex : exchanges) {
-            String tmpPartitionDecorator = ex.getIn().getHeader(GoogleBigQueryConstants.PARTITION_DECORATOR, "", String.class);
-            String tmpSuffix = ex.getIn().getHeader(GoogleBigQueryConstants.TABLE_SUFFIX, "", String.class);
-            String tmpTableId = ex.getIn().getHeader(GoogleBigQueryConstants.TABLE_ID, tableId, String.class);
-
-            if (tmpTableId.isEmpty()) {
-                throw new IllegalArgumentException(
-                        "tableId need to be specified in one of endpoint configuration or exchange header");
-            }
-
-            // Ensure all rows of same request goes to same table and suffix
-            if (!tmpPartitionDecorator.equals(partitionDecorator) || !tmpSuffix.equals(suffix) || !tmpTableId.equals(tableId)) {
-                if (!processGroup.isEmpty()) {
-                    totalProcessed += process(tableId, partitionDecorator, suffix, processGroup, exchange.getExchangeId());
-                }
-                processGroup.clear();
-                partitionDecorator = tmpPartitionDecorator;
-                suffix = tmpSuffix;
-                tableId = tmpTableId;
-            }
-            processGroup.add(ex);
-        }
-        if (!processGroup.isEmpty()) {
-            totalProcessed += process(tableId, partitionDecorator, suffix, processGroup, exchange.getExchangeId());
-        }
-
-        if (totalProcessed == 0) {
-            LOG.debug("The incoming message is either null or empty for exchange {}", exchange.getExchangeId());
-        }
-    }
-
-    private int process(String tableId, String partitionDecorator, String suffix, List<Exchange> exchanges, String exchangeId)
-            throws Exception {
-        String tableIdWithPartition = Strings.isNullOrEmpty(partitionDecorator)
-                ? tableId
-                : (tableId + "$" + partitionDecorator);
-
-        List<InsertAllRequest.RowToInsert> apiRequestRows = new ArrayList<>();
-        for (Exchange ex : exchanges) {
-            Object entryObject = ex.getIn().getBody();
-            if (entryObject instanceof List) {
-                for (Map<String, Object> entry : (List<Map<String, Object>>) entryObject) {
-                    apiRequestRows.add(createRowRequest(null, entry));
-                }
-            } else if (entryObject instanceof Map) {
-                apiRequestRows.add(createRowRequest(ex, (Map<String, Object>) entryObject));
-            } else {
-                ex.setException(new IllegalArgumentException("Cannot handle body type " + entryObject.getClass()));
-            }
-        }
-
-        if (apiRequestRows.isEmpty()) {
-            return 0;
-        }
-
-        InsertAllRequest.Builder builder = InsertAllRequest.newBuilder(configuration.getDatasetId(), tableIdWithPartition)
-                .setRows(apiRequestRows);
-
-        if (ObjectHelper.isNotEmpty(suffix)) {
-            builder.setTemplateSuffix(suffix);
-        }
-
-        InsertAllRequest insertAllRequest = builder.build();
-
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Sending {} messages to bigquery table {}, suffix {}, partition {}",
-                    apiRequestRows.size(), tableId, suffix, partitionDecorator);
-        }
-
-        InsertAllResponse apiResponse = bigquery.insertAll(insertAllRequest);
-
-        if (apiResponse.getInsertErrors() != null && !apiResponse.getInsertErrors().isEmpty()) {
-            throw new Exception("InsertAll into " + tableId + " failed: " + apiResponse.getInsertErrors());
-        }
-
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("Sent {} messages to bigquery table {}, suffix {}, partition {}",
-                    apiRequestRows.size(), tableId, suffix, partitionDecorator);
-        }
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("uploader thread/id: {} / {} . api call completed.", Thread.currentThread().getId(), exchangeId);
-        }
-        return insertAllRequest.getRows().size();
-    }
-
-    private InsertAllRequest.RowToInsert createRowRequest(Exchange exchange, Map<String, Object> object) {
-        String insertId = null;
-        if (configuration.getUseAsInsertId() != null) {
-            insertId = (String) (object.get(configuration.getUseAsInsertId()));
-        } else {
-            if (exchange != null) {
-                insertId = exchange.getIn().getHeader(GoogleBigQueryConstants.INSERT_ID, String.class);
-            }
-        }
-        if (insertId != null) {
-            return InsertAllRequest.RowToInsert.of(insertId, object);
-        }
-        return InsertAllRequest.RowToInsert.of(object);
-    }
-
-    @Override
-    public GoogleBigQueryEndpoint getEndpoint() {
-        return (GoogleBigQueryEndpoint) super.getEndpoint();
-    }
-
-}
diff --git a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponent.java b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponent.java
deleted file mode 100644
index 31e75a5..0000000
--- a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLComponent.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * 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.bigquery.sql;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
-import org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.annotations.Component;
-import org.apache.camel.support.DefaultComponent;
-
-@Component("google-bigquery-sql")
-public class GoogleBigQuerySQLComponent extends DefaultComponent {
-
-    @Metadata
-    private String projectId;
-    @Metadata(autowired = true)
-    private GoogleBigQueryConnectionFactory connectionFactory;
-
-    public GoogleBigQuerySQLComponent() {
-    }
-
-    public GoogleBigQuerySQLComponent(CamelContext camelContext) {
-        super(camelContext);
-    }
-
-    // Endpoint represents a single table
-    @Override
-    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
-        String[] parts = remaining.split(":");
-
-        if (parts.length < 2) {
-            throw new IllegalArgumentException("Google BigQuery Endpoint format \"projectId:<query>\"");
-        }
-
-        GoogleBigQuerySQLConfiguration configuration = new GoogleBigQuerySQLConfiguration();
-        configuration.parseRemaining(remaining);
-
-        if (configuration.getConnectionFactory() == null) {
-            if (connectionFactory == null) {
-                connectionFactory = new GoogleBigQueryConnectionFactory();
-            }
-            configuration.setConnectionFactory(getConnectionFactory());
-        }
-
-        GoogleBigQuerySQLEndpoint endpoint = new GoogleBigQuerySQLEndpoint(uri, this, configuration);
-        setProperties(endpoint, parameters);
-        return endpoint;
-    }
-
-    public String getProjectId() {
-        return projectId;
-    }
-
-    /**
-     * Google Cloud Project Id
-     */
-    public void setProjectId(String projectId) {
-        this.projectId = projectId;
-    }
-
-    public GoogleBigQueryConnectionFactory getConnectionFactory() {
-        return connectionFactory;
-    }
-
-    /**
-     * ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used
-     */
-    public void setConnectionFactory(GoogleBigQueryConnectionFactory connectionFactory) {
-        this.connectionFactory = connectionFactory;
-    }
-}
diff --git a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLConfiguration.java b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLConfiguration.java
deleted file mode 100644
index 6287405..0000000
--- a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLConfiguration.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.bigquery.sql;
-
-import org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-import org.apache.camel.spi.UriPath;
-
-@UriParams
-public class GoogleBigQuerySQLConfiguration {
-
-    @UriParam(description = "ConnectionFactory to obtain connection to Bigquery Service. If not provided the default one will be used")
-    @Metadata(autowired = true)
-    private GoogleBigQueryConnectionFactory connectionFactory;
-    @UriPath(label = "common", description = "Google Cloud Project Id")
-    @Metadata(required = true)
-    private String projectId;
-    @UriPath(label = "common", description = "BigQuery standard SQL query")
-    @Metadata(required = true)
-    private String queryString;
-
-    public void parseRemaining(String remaining) {
-        int indexOfColon = remaining.indexOf(':');
-
-        if (indexOfColon < 0) {
-            throw new IllegalArgumentException("Google BigQuery Endpoint format \"projectId:query\"");
-        }
-
-        projectId = remaining.substring(0, indexOfColon);
-        queryString = remaining.substring(indexOfColon + 1);
-    }
-
-    /**
-     * ConnectionFactory to obtain connection to Bigquery Service. If non provided the default will be used.
-     */
-    public GoogleBigQueryConnectionFactory getConnectionFactory() {
-        return connectionFactory;
-    }
-
-    public void setConnectionFactory(GoogleBigQueryConnectionFactory connectionFactory) {
-        this.connectionFactory = connectionFactory;
-    }
-
-    public String getQueryString() {
-        return queryString;
-    }
-
-    public GoogleBigQuerySQLConfiguration setQueryString(String queryString) {
-        this.queryString = queryString;
-        return this;
-    }
-
-    public String getProjectId() {
-        return projectId;
-    }
-
-    public GoogleBigQuerySQLConfiguration setProjectId(String projectId) {
-        this.projectId = projectId;
-        return this;
-    }
-}
diff --git a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpoint.java b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpoint.java
deleted file mode 100644
index 5549a3c..0000000
--- a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpoint.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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.bigquery.sql;
-
-import com.google.cloud.bigquery.BigQuery;
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.support.DefaultEndpoint;
-
-/**
- * Access Google Cloud BigQuery service using SQL queries.
- *
- * BigQuery Endpoint Definition Represents a table within a BigQuery dataset Contains configuration details for a single
- * table and the utility methods (such as check, create) to ease operations URI Parameters: * Logger ID - To ensure that
- * logging is unified under Route Logger, the logger ID can be passed on via an endpoint URI parameter * Partitioned -
- * to indicate that the table needs to be partitioned - every UTC day to be written into a timestamped separate table
- * side effect: Australian operational day is always split between two UTC days, and, therefore, tables
- *
- * Another consideration is that exceptions are not handled within the class. They are expected to bubble up and be
- * handled by Camel.
- */
-@UriEndpoint(firstVersion = "2.23.0", scheme = "google-bigquery-sql", title = "Google BigQuery Standard SQL",
-             syntax = "google-bigquery-sql:projectId:queryString", label = "cloud,messaging", producerOnly = true)
-public class GoogleBigQuerySQLEndpoint extends DefaultEndpoint {
-
-    @UriParam
-    protected final GoogleBigQuerySQLConfiguration configuration;
-
-    protected GoogleBigQuerySQLEndpoint(String endpointUri, GoogleBigQuerySQLComponent component,
-                                        GoogleBigQuerySQLConfiguration configuration) {
-        super(endpointUri, component);
-        this.configuration = configuration;
-    }
-
-    @Override
-    public Producer createProducer() throws Exception {
-        BigQuery bigquery = getConfiguration().getConnectionFactory().getDefaultClient();
-        GoogleBigQuerySQLProducer producer = new GoogleBigQuerySQLProducer(bigquery, this, configuration);
-        return producer;
-    }
-
-    @Override
-    public Consumer createConsumer(Processor processor) throws Exception {
-        throw new UnsupportedOperationException("Cannot consume from the BigQuery endpoint: " + getEndpointUri());
-    }
-
-    public GoogleBigQuerySQLConfiguration getConfiguration() {
-        return configuration;
-    }
-
-    @Override
-    public GoogleBigQuerySQLComponent getComponent() {
-        return (GoogleBigQuerySQLComponent) super.getComponent();
-    }
-
-}
diff --git a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLProducer.java b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLProducer.java
deleted file mode 100644
index 7ab6b7a..0000000
--- a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLProducer.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * 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.bigquery.sql;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-
-import com.google.cloud.bigquery.BigQuery;
-import com.google.cloud.bigquery.BigQueryException;
-import com.google.cloud.bigquery.JobException;
-import com.google.cloud.bigquery.JobId;
-import com.google.cloud.bigquery.QueryJobConfiguration;
-import com.google.cloud.bigquery.QueryParameterValue;
-import com.google.cloud.bigquery.StandardSQLTypeName;
-import com.google.cloud.bigquery.TableResult;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.RuntimeExchangeException;
-import org.apache.camel.component.google.bigquery.GoogleBigQueryConstants;
-import org.apache.camel.support.DefaultProducer;
-import org.apache.camel.util.ObjectHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Generic BigQuery Producer
- */
-public class GoogleBigQuerySQLProducer extends DefaultProducer {
-
-    private static final Logger LOG = LoggerFactory.getLogger(GoogleBigQuerySQLProducer.class);
-
-    private final GoogleBigQuerySQLConfiguration configuration;
-    private BigQuery bigquery;
-    private String query;
-    private Set<String> queryParameterNames;
-
-    public GoogleBigQuerySQLProducer(BigQuery bigquery, GoogleBigQuerySQLEndpoint endpoint,
-                                     GoogleBigQuerySQLConfiguration configuration) {
-        super(endpoint);
-        this.bigquery = bigquery;
-        this.configuration = configuration;
-    }
-
-    /**
-     * Process the exchange The incoming exchange can be a grouped exchange in which case all the exchanges will be
-     * combined. The incoming can be
-     * <ul>
-     * <li>A map where all map keys will map to field records. One map object maps to one bigquery row</li>
-     * <li>A list of maps. Each entry in the list will map to one bigquery row</li>
-     * </ul>
-     * The incoming message is expected to be a List of Maps The assumptions: - All incoming records go into the same
-     * table - Incoming records sorted by the timestamp
-     */
-    @Override
-    public void process(Exchange exchange) throws Exception {
-        String translatedQuery = SqlHelper.translateQuery(query, exchange);
-        Map<String, Object> queryParameters = extractParameters(exchange);
-
-        Message message = exchange.getMessage();
-        message.setHeader(GoogleBigQueryConstants.TRANSLATED_QUERY, translatedQuery);
-        JobId jobId = message.getHeader(GoogleBigQueryConstants.JOB_ID, JobId.class);
-
-        Long affectedRows = executeSQL(jobId, translatedQuery, queryParameters);
-
-        LOG.debug("The query {} affected {} rows", query, affectedRows);
-        message.setBody(affectedRows);
-    }
-
-    private Long executeSQL(JobId jobId, String translatedQuery, Map<String, Object> queryParameters) throws Exception {
-        QueryJobConfiguration.Builder builder = QueryJobConfiguration.newBuilder(translatedQuery)
-                .setUseLegacySql(false);
-
-        setQueryParameters(queryParameters, builder);
-
-        QueryJobConfiguration queryJobConfiguration = builder.build();
-
-        try {
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Sending query to bigquery standard sql: {}", translatedQuery);
-            }
-
-            JobId queryJobId;
-            if (ObjectHelper.isNotEmpty(jobId)) {
-                queryJobId = jobId;
-            } else {
-                queryJobId = JobId.of(configuration.getProjectId(), UUID.randomUUID().toString());
-            }
-
-            TableResult result = bigquery.query(queryJobConfiguration, queryJobId);
-
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Result of query {} is {}", translatedQuery, result.toString());
-            }
-
-            return result.getTotalRows();
-        } catch (JobException e) {
-            throw new Exception("Query " + translatedQuery + " failed: " + e.getErrors(), e);
-        } catch (BigQueryException e) {
-            throw new Exception("Query " + translatedQuery + " failed: " + e.getError(), e);
-        }
-    }
-
-    private Map<String, Object> extractParameters(Exchange exchange) {
-        if (queryParameterNames == null || queryParameterNames.size() == 0) {
-            return null;
-        }
-
-        Message message = exchange.getMessage();
-
-        HashMap<String, Object> headers = new HashMap<>(message.getHeaders());
-        if (message.getBody() instanceof Map) {
-            try {
-                headers.putAll(message.getBody(Map.class));
-            } catch (ClassCastException e) {
-                LOG.warn("Unable to perform cast while extracting header parameters: {}", e.getMessage(), e);
-            }
-        }
-
-        HashMap<String, Object> result = new HashMap<>(queryParameterNames.size());
-        queryParameterNames.forEach(s -> {
-            Object value = headers.get(s);
-            if (value == null) {
-                throw new RuntimeExchangeException(
-                        "SQL parameter with name '" + s + "' not found in the message headers", exchange);
-            }
-
-            result.put(s, headers.get(s));
-        });
-
-        return result;
-    }
-
-    private void setQueryParameters(Map<String, Object> params, QueryJobConfiguration.Builder builder) {
-        if (params == null) {
-            return;
-        }
-
-        params.forEach((key, value) -> {
-            QueryParameterValue parameterValue = QueryParameterValue.of(value.toString(), StandardSQLTypeName.STRING);
-            builder.addNamedParameter(key, parameterValue);
-        });
-    }
-
-    @Override
-    public GoogleBigQuerySQLEndpoint getEndpoint() {
-        return (GoogleBigQuerySQLEndpoint) super.getEndpoint();
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-        String placeholder = ":#";
-        query = SqlHelper.resolveQuery(getEndpoint().getCamelContext(), configuration.getQueryString(), placeholder);
-        queryParameterNames = SqlHelper.extractParameterNames(query);
-    }
-}
diff --git a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/SqlHelper.java b/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/SqlHelper.java
deleted file mode 100644
index a48e969..0000000
--- a/components/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/SqlHelper.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.bigquery.sql;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.NoTypeConversionAvailableException;
-import org.apache.camel.RuntimeExchangeException;
-import org.apache.camel.support.ResourceHelper;
-
-public final class SqlHelper {
-
-    private static Pattern pattern = Pattern.compile("\\$\\{(\\w+)}");
-    private static Pattern parameterPattern = Pattern.compile("@(\\w+)");
-
-    private SqlHelper() {
-    }
-
-    /**
-     * Resolve the query by loading the query from the classpath or file resource if needed.
-     */
-    public static String resolveQuery(CamelContext camelContext, String query, String placeholder)
-            throws NoTypeConversionAvailableException, IOException {
-        String answer = query;
-        if (ResourceHelper.hasScheme(query)) {
-            try (InputStream is = ResourceHelper.resolveMandatoryResourceAsInputStream(camelContext, query)) {
-                answer = camelContext.getTypeConverter().mandatoryConvertTo(String.class, is);
-                if (placeholder != null) {
-                    answer = answer.replaceAll(placeholder, "@");
-                }
-            }
-        }
-        return answer;
-    }
-
-    /**
-     * Replaces pattern in query in form of "${param}" with values from message header Raises an error if param value
-     * not found in headers
-     * 
-     * @param  exchange
-     * @return          Translated query text
-     */
-    public static String translateQuery(String query, Exchange exchange) {
-        Message message = exchange.getMessage();
-        Matcher matcher = pattern.matcher(query);
-        StringBuffer stringBuffer = new StringBuffer();
-        while (matcher.find()) {
-            String paramKey = matcher.group(1);
-
-            String value = message.getHeader(paramKey, String.class);
-            if (value == null) {
-                value = exchange.getProperty(paramKey, String.class);
-                if (value == null) {
-                    throw new RuntimeExchangeException(
-                            "SQL pattern with name '" + paramKey + "' not found in the message headers", exchange);
-                }
-            }
-
-            String replacement = Matcher.quoteReplacement(value);
-            matcher.appendReplacement(stringBuffer, replacement);
-        }
-        matcher.appendTail(stringBuffer);
-        return stringBuffer.toString();
-    }
-
-    /**
-     * Extracts list of parameters in form "@name" from query text
-     * 
-     * @param  query
-     * @return       list of parameter names
-     */
-    public static Set<String> extractParameterNames(String query) {
-        Matcher matcher = parameterPattern.matcher(query);
-        Set<String> result = new HashSet<>();
-        while (matcher.find()) {
-            String paramName = matcher.group(1);
-            result.add(paramName);
-        }
-        return result;
-    }
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/AsyncTest.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/AsyncTest.java
deleted file mode 100644
index 297de66..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/AsyncTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * 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.bigquery.integration;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.LoggingLevel;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.DefaultExchange;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-public class AsyncTest extends BigQueryTestSupport {
-    private static final String TABLE_ID = "asynctest";
-
-    @EndpointInject("direct:in")
-    private Endpoint directIn;
-
-    @EndpointInject("google-bigquery:{{project.id}}:{{bigquery.datasetId}}:" + TABLE_ID)
-    private Endpoint bigqueryEndpoint;
-
-    @EndpointInject("mock:sendResult")
-    private MockEndpoint sendResult;
-
-    @Produce("direct:in")
-    private ProducerTemplate producer;
-
-    @BeforeEach
-    public void init() throws Exception {
-        createBqTable(TABLE_ID);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() {
-                from(directIn)
-                        .to("seda:seda");
-                from("seda:seda")
-                        .routeId("Async")
-                        .to(ExchangePattern.InOnly, bigqueryEndpoint)
-                        .log(LoggingLevel.INFO, "To sendresult")
-                        .to(sendResult);
-            }
-        };
-    }
-
-    @Test
-    public void sendAsync() throws Exception {
-        List<Map> objects = new ArrayList<>();
-        for (int i = 0; i < 5; i++) {
-            Exchange exchange = new DefaultExchange(context);
-            String uuidCol1 = UUID.randomUUID().toString();
-            String uuidCol2 = UUID.randomUUID().toString();
-
-            Map<String, String> object = new HashMap<>();
-            object.put("col1", uuidCol1);
-            object.put("col2", uuidCol2);
-            objects.add(object);
-            exchange.getIn().setBody(object);
-            producer.send(exchange);
-        }
-        sendResult.expectedMessageCount(5);
-
-        sendResult.assertIsSatisfied(4000);
-
-        for (Map object : objects) {
-            assertRowExist(TABLE_ID, object);
-        }
-    }
-
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/BigQueryTestSupport.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/BigQueryTestSupport.java
deleted file mode 100644
index 0436148..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/BigQueryTestSupport.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * 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.bigquery.integration;
-
-import java.io.InputStream;
-import java.util.Map;
-import java.util.Properties;
-import java.util.UUID;
-import java.util.stream.Collectors;
-
-import com.google.api.client.googleapis.json.GoogleJsonResponseException;
-import com.google.cloud.bigquery.Field;
-import com.google.cloud.bigquery.FieldList;
-import com.google.cloud.bigquery.JobId;
-import com.google.cloud.bigquery.QueryJobConfiguration;
-import com.google.cloud.bigquery.Schema;
-import com.google.cloud.bigquery.StandardSQLTypeName;
-import com.google.cloud.bigquery.StandardTableDefinition;
-import com.google.cloud.bigquery.TableDefinition;
-import com.google.cloud.bigquery.TableId;
-import com.google.cloud.bigquery.TableInfo;
-import com.google.cloud.bigquery.TableResult;
-import org.apache.camel.BindToRegistry;
-import org.apache.camel.CamelContext;
-import org.apache.camel.component.google.bigquery.GoogleBigQueryComponent;
-import org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory;
-import org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLComponent;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class BigQueryTestSupport extends CamelTestSupport {
-    public static final String SERVICE_KEY;
-    public static final String SERVICE_ACCOUNT;
-    public static final String PROJECT_ID;
-    public static final String DATASET_ID;
-    public static final String CREDENTIALS_FILE_LOCATION;
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(BigQueryTestSupport.class);
-
-    private GoogleBigQueryConnectionFactory connectionFactory;
-
-    static {
-        Properties testProperties = loadProperties();
-        SERVICE_KEY = testProperties.getProperty("service.key");
-        SERVICE_ACCOUNT = testProperties.getProperty("service.account");
-        PROJECT_ID = testProperties.getProperty("project.id");
-        DATASET_ID = testProperties.getProperty("bigquery.datasetId");
-        CREDENTIALS_FILE_LOCATION = testProperties.getProperty("service.credentialsFileLocation");
-    }
-
-    private static Properties loadProperties() {
-        Properties testProperties = new Properties();
-        InputStream fileIn = BigQueryTestSupport.class.getClassLoader().getResourceAsStream("simple.properties");
-        try {
-            testProperties.load(fileIn);
-
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-
-        return testProperties;
-    }
-
-    protected void addBigqueryComponent(CamelContext context) {
-
-        connectionFactory = new GoogleBigQueryConnectionFactory()
-                .setCredentialsFileLocation(CREDENTIALS_FILE_LOCATION);
-
-        GoogleBigQueryComponent component = new GoogleBigQueryComponent();
-        component.setConnectionFactory(connectionFactory);
-
-        context.addComponent("google-bigquery", component);
-        context.getPropertiesComponent().setLocation("ref:prop");
-    }
-
-    protected void addBigquerySqlComponent(CamelContext context) {
-
-        connectionFactory = new GoogleBigQueryConnectionFactory()
-                .setCredentialsFileLocation(CREDENTIALS_FILE_LOCATION);
-
-        GoogleBigQuerySQLComponent component = new GoogleBigQuerySQLComponent();
-        component.setConnectionFactory(connectionFactory);
-
-        context.addComponent("google-bigquery-sql", component);
-        context.getPropertiesComponent().setLocation("ref:prop");
-    }
-
-    @Override
-    protected CamelContext createCamelContext() throws Exception {
-        CamelContext context = super.createCamelContext();
-        addBigqueryComponent(context);
-        addBigquerySqlComponent(context);
-        return context;
-    }
-
-    @BindToRegistry("prop")
-    public Properties loadRegProperties() throws Exception {
-        return loadProperties();
-    }
-
-    public GoogleBigQueryConnectionFactory getConnectionFactory() {
-        return connectionFactory;
-    }
-
-    protected void assertRowExist(String tableName, Map<String, String> row) throws Exception {
-        String query = "SELECT * FROM " + DATASET_ID + "." + tableName + " WHERE "
-                       + row.entrySet().stream()
-                               .map(e -> e.getKey() + " = '" + e.getValue() + "'")
-                               .collect(Collectors.joining(" AND "));
-        LOGGER.debug("Query: {}", query);
-        QueryJobConfiguration queryJobConfiguration = QueryJobConfiguration.of(query);
-        TableResult tableResult = getConnectionFactory()
-                .getDefaultClient()
-                .query(queryJobConfiguration, JobId.of(PROJECT_ID, UUID.randomUUID().toString()));
-        assertEquals(1, tableResult.getTotalRows());
-    }
-
-    protected void createBqTable(String tableId) throws Exception {
-        Schema schema = createSchema();
-        TableId id = TableId.of(PROJECT_ID, DATASET_ID, tableId);
-        TableDefinition.Builder builder = StandardTableDefinition.newBuilder().setSchema(schema);
-        TableInfo tableInfo = TableInfo.of(id, builder.build());
-        try {
-            getConnectionFactory().getDefaultClient().create(tableInfo);
-        } catch (GoogleJsonResponseException e) {
-            if (e.getDetails().getCode() == 409) {
-                LOGGER.info("Table {} already exist");
-            } else {
-                throw e;
-            }
-        }
-    }
-
-    private Schema createSchema() throws Exception {
-        FieldList fields = FieldList.of(
-                Field.of("id", StandardSQLTypeName.NUMERIC),
-                Field.of("col1", StandardSQLTypeName.STRING),
-                Field.of("col2", StandardSQLTypeName.STRING));
-        return Schema.of(fields);
-    }
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/DynamicTableIdTest.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/DynamicTableIdTest.java
deleted file mode 100644
index f567ada..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/DynamicTableIdTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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.bigquery.integration;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.google.bigquery.GoogleBigQueryConstants;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.DefaultExchange;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-public class DynamicTableIdTest extends BigQueryTestSupport {
-    private static final String TABLE_ID_1 = "dynamic_table_1";
-    private static final String TABLE_ID_2 = "dynamic_table_2";
-
-    @EndpointInject("direct:in")
-    private Endpoint directIn;
-
-    @EndpointInject("google-bigquery:{{project.id}}:{{bigquery.datasetId}}")
-    private Endpoint bigqueryEndpoint;
-
-    @EndpointInject("mock:sendResult")
-    private MockEndpoint sendResult;
-
-    @Produce("direct:in")
-    private ProducerTemplate producer;
-
-    @BeforeEach
-    public void init() throws Exception {
-        createBqTable(TABLE_ID_1);
-        createBqTable(TABLE_ID_2);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() {
-                from(directIn)
-                        .routeId("DynamicTable")
-                        .to(bigqueryEndpoint)
-                        .to(sendResult);
-            }
-        };
-    }
-
-    @Test
-    public void dynamicTable() throws Exception {
-        Exchange exchange1 = new DefaultExchange(context);
-        String uuidCol11 = UUID.randomUUID().toString();
-        String uuidCol21 = UUID.randomUUID().toString();
-        exchange1.getIn().setHeader(GoogleBigQueryConstants.TABLE_ID, TABLE_ID_1);
-
-        Map<String, String> object1 = new HashMap<>();
-        object1.put("col1", uuidCol11);
-        object1.put("col2", uuidCol21);
-        exchange1.getIn().setBody(object1);
-
-        Exchange exchange2 = new DefaultExchange(context);
-        String uuidCol12 = UUID.randomUUID().toString();
-        String uuidCol22 = UUID.randomUUID().toString();
-        exchange2.getIn().setHeader(GoogleBigQueryConstants.TABLE_ID, TABLE_ID_2);
-
-        Map<String, String> object2 = new HashMap<>();
-        object2.put("col1", uuidCol12);
-        object2.put("col2", uuidCol22);
-        exchange2.getIn().setBody(object2);
-
-        sendResult.expectedMessageCount(2);
-        producer.send(exchange1);
-        producer.send(exchange2);
-        sendResult.assertIsSatisfied(4000);
-
-        assertRowExist(TABLE_ID_1, object1);
-        assertRowExist(TABLE_ID_2, object2);
-    }
-
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/InsertIdTest.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/InsertIdTest.java
deleted file mode 100644
index bca8e3e..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/InsertIdTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * 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.bigquery.integration;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.google.bigquery.GoogleBigQueryConstants;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.DefaultExchange;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-public class InsertIdTest extends BigQueryTestSupport {
-    private static final String TABLE_ID = "insertId";
-
-    @EndpointInject("direct:withInsertId")
-    private Endpoint directInWithInsertId;
-
-    @EndpointInject("direct:in")
-    private Endpoint directIn;
-
-    @EndpointInject("google-bigquery:{{project.id}}:{{bigquery.datasetId}}:"
-                    + TABLE_ID + "?useAsInsertId=col1")
-    private Endpoint bigqueryEndpointWithInsertId;
-
-    @EndpointInject("google-bigquery:{{project.id}}:{{bigquery.datasetId}}:"
-                    + TABLE_ID)
-    private Endpoint bigqueryEndpoint;
-
-    @EndpointInject("mock:sendResult")
-    private MockEndpoint sendResult;
-
-    @EndpointInject("mock:sendResultWithInsertId")
-    private MockEndpoint sendResultWithInsertId;
-
-    @Produce("direct:withInsertId")
-    private ProducerTemplate producerWithInsertId;
-
-    @Produce("direct:in")
-    private ProducerTemplate producer;
-
-    @BeforeEach
-    public void init() throws Exception {
-        createBqTable(TABLE_ID);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() {
-                from(directInWithInsertId)
-                        .routeId("SingleRowWithInsertId")
-                        .to(bigqueryEndpointWithInsertId)
-                        .to(sendResultWithInsertId);
-
-                from(directIn)
-                        .routeId("SingleRow")
-                        .to(bigqueryEndpoint)
-                        .to(sendResult);
-            }
-        };
-    }
-
-    @Test
-    public void sendTwoMessagesExpectOneRowUsingConfig() throws Exception {
-
-        Exchange exchange = new DefaultExchange(context);
-        String uuidCol1 = UUID.randomUUID().toString();
-        String uuidCol2 = UUID.randomUUID().toString();
-
-        Map<String, String> object = new HashMap<>();
-        object.put("col1", uuidCol1);
-        object.put("col2", uuidCol2);
-        exchange.getIn().setBody(object);
-
-        Exchange exchange2 = new DefaultExchange(context);
-        String uuid2Col2 = UUID.randomUUID().toString();
-
-        object.put("col1", uuidCol1);
-        object.put("col2", uuid2Col2);
-        exchange2.getIn().setBody(object);
-
-        sendResultWithInsertId.expectedMessageCount(2);
-        producerWithInsertId.send(exchange);
-        producerWithInsertId.send(exchange2);
-        sendResultWithInsertId.assertIsSatisfied(4000);
-
-        assertRowExist(TABLE_ID, object);
-    }
-
-    @Test
-    public void sendTwoMessagesExpectOneRowUsingExchange() throws Exception {
-
-        Exchange exchange = new DefaultExchange(context);
-        String uuidCol1 = UUID.randomUUID().toString();
-        String uuidCol2 = UUID.randomUUID().toString();
-
-        Map<String, String> object = new HashMap<>();
-        object.put("col1", uuidCol1);
-        object.put("col2", uuidCol2);
-        exchange.getIn().setBody(object);
-        exchange.getIn().setHeader(GoogleBigQueryConstants.INSERT_ID, uuidCol1);
-
-        Exchange exchange2 = new DefaultExchange(context);
-        String uuid2Col2 = UUID.randomUUID().toString();
-
-        object.put("col1", uuidCol1);
-        object.put("col2", uuid2Col2);
-        exchange2.getIn().setBody(object);
-        exchange2.getIn().setHeader(GoogleBigQueryConstants.INSERT_ID, uuidCol1);
-
-        sendResult.expectedMessageCount(2);
-        producer.send(exchange);
-        producer.send(exchange2);
-        sendResult.assertIsSatisfied(4000);
-
-        assertRowExist(TABLE_ID, object);
-    }
-
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/SingleRowTest.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/SingleRowTest.java
deleted file mode 100644
index 4786cb4..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/SingleRowTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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.bigquery.integration;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.DefaultExchange;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-public class SingleRowTest extends BigQueryTestSupport {
-    private static final String TABLE_ID = "singlerow";
-
-    @EndpointInject("direct:in")
-    private Endpoint directIn;
-
-    @EndpointInject("google-bigquery:{{project.id}}:{{bigquery.datasetId}}:" + TABLE_ID)
-    private Endpoint bigqueryEndpoint;
-
-    @EndpointInject("mock:sendResult")
-    private MockEndpoint sendResult;
-
-    @Produce("direct:in")
-    private ProducerTemplate producer;
-
-    @BeforeEach
-    public void init() throws Exception {
-        createBqTable(TABLE_ID);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() {
-                from(directIn)
-                        .routeId("SingleRow")
-                        .to(bigqueryEndpoint)
-                        .to(sendResult);
-            }
-        };
-    }
-
-    @Test
-    public void singleMessage() throws Exception {
-        Exchange exchange = new DefaultExchange(context);
-        String uuidCol1 = UUID.randomUUID().toString();
-        String uuidCol2 = UUID.randomUUID().toString();
-
-        Map<String, String> object = new HashMap<>();
-        object.put("col1", uuidCol1);
-        object.put("col2", uuidCol2);
-        exchange.getIn().setBody(object);
-
-        sendResult.expectedMessageCount(1);
-        producer.send(exchange);
-        sendResult.assertIsSatisfied(4000);
-
-        assertRowExist(TABLE_ID, object);
-    }
-
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryFromResourceTest.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryFromResourceTest.java
deleted file mode 100644
index f0af94a..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryFromResourceTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.bigquery.integration.sql;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.google.bigquery.integration.BigQueryTestSupport;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.DefaultExchange;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-public class SqlQueryFromResourceTest extends BigQueryTestSupport {
-    private static final String TABLE_ID = "test_sql_table";
-
-    @EndpointInject("direct:in")
-    private Endpoint directIn;
-
-    @EndpointInject("google-bigquery-sql:{{project.id}}:classpath:sql/insert.sql")
-    private Endpoint bigqueryEndpoint;
-
-    @EndpointInject("mock:sendResult")
-    private MockEndpoint sendResult;
-
-    @Produce("direct:in")
-    private ProducerTemplate producer;
-
-    @BeforeEach
-    public void init() throws Exception {
-        createBqTable(TABLE_ID);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() {
-                from(directIn)
-                        .routeId("InsertRow")
-                        .to(bigqueryEndpoint)
-                        .to(sendResult);
-            }
-        };
-    }
-
-    @Test
-    public void insertRecordBySql() throws Exception {
-        Exchange exchange = new DefaultExchange(context);
-        String uuidCol1 = UUID.randomUUID().toString();
-        String uuidCol2 = UUID.randomUUID().toString();
-
-        Map<String, String> object = new HashMap<>();
-        object.put("col1", uuidCol1);
-        object.put("col2", uuidCol2);
-        exchange.getIn().setBody(object);
-
-        sendResult.expectedMessageCount(1);
-        sendResult.expectedBodiesReceived(1);
-        producer.send(exchange);
-        sendResult.assertIsSatisfied(4000);
-
-        assertRowExist(TABLE_ID, object);
-    }
-
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryTest.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryTest.java
deleted file mode 100644
index 564cd8f..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/integration/sql/SqlQueryTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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.bigquery.integration.sql;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.google.bigquery.integration.BigQueryTestSupport;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.DefaultExchange;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-public class SqlQueryTest extends BigQueryTestSupport {
-    private static final String TABLE_ID = "test_sql_table";
-
-    @EndpointInject("direct:in")
-    private Endpoint directIn;
-
-    @EndpointInject("google-bigquery-sql:{{project.id}}: insert into {{bigquery.datasetId}}." + TABLE_ID
-                    + "(col1, col2) values (@col1, @col2)")
-    private Endpoint bigqueryEndpoint;
-
-    @EndpointInject("mock:sendResult")
-    private MockEndpoint sendResult;
-
-    @Produce("direct:in")
-    private ProducerTemplate producer;
-
-    @BeforeEach
-    public void init() throws Exception {
-        createBqTable(TABLE_ID);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() {
-                from(directIn)
-                        .routeId("InsertRow")
-                        .to(bigqueryEndpoint)
-                        .to(sendResult);
-            }
-        };
-    }
-
-    @Test
-    public void insertRecordBySql() throws Exception {
-        Exchange exchange = new DefaultExchange(context);
-        String uuidCol1 = UUID.randomUUID().toString();
-        String uuidCol2 = UUID.randomUUID().toString();
-
-        Map<String, String> object = new HashMap<>();
-        object.put("col1", uuidCol1);
-        object.put("col2", uuidCol2);
-        exchange.getIn().setBody(object);
-
-        sendResult.expectedMessageCount(1);
-        sendResult.expectedBodiesReceived(1);
-        producer.send(exchange);
-        sendResult.assertIsSatisfied(4000);
-
-        assertRowExist(TABLE_ID, object);
-    }
-
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/BaseBigQueryTest.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/BaseBigQueryTest.java
deleted file mode 100644
index 29df5e5..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/BaseBigQueryTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.bigquery.unit;
-
-import com.google.api.services.bigquery.Bigquery;
-import com.google.cloud.bigquery.BigQuery;
-import com.google.cloud.bigquery.InsertAllResponse;
-import org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration;
-import org.apache.camel.component.google.bigquery.GoogleBigQueryEndpoint;
-import org.apache.camel.component.google.bigquery.GoogleBigQueryProducer;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.BeforeEach;
-
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public class BaseBigQueryTest extends CamelTestSupport {
-    protected GoogleBigQueryEndpoint endpoint = mock(GoogleBigQueryEndpoint.class);
-    protected GoogleBigQueryProducer producer;
-    protected Bigquery.Tabledata tabledataMock;
-    protected String tableId = "testTableId";
-    protected String datasetId = "testDatasetId";
-    protected String projectId = "testProjectId";
-    protected GoogleBigQueryConfiguration configuration = new GoogleBigQueryConfiguration();
-    protected BigQuery bigquery;
-
-    @BeforeEach
-    public void init() throws Exception {
-        setupBigqueryMock();
-        producer = createProducer();
-
-    }
-
-    protected GoogleBigQueryProducer createProducer() throws Exception {
-        configuration.setProjectId(projectId);
-        configuration.setTableId(tableId);
-        configuration.setDatasetId(datasetId);
-        configuration.setTableId("testTableId");
-
-        return new GoogleBigQueryProducer(bigquery, endpoint, configuration);
-    }
-
-    protected void setupBigqueryMock() throws Exception {
-        bigquery = mock(BigQuery.class);
-        tabledataMock = mock(Bigquery.Tabledata.class);
-        InsertAllResponse mockResponse = mock(InsertAllResponse.class);
-        when(bigquery.insertAll(any())).thenReturn(mockResponse);
-    }
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/GoogleBigQueryProducerTest.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/GoogleBigQueryProducerTest.java
deleted file mode 100644
index 2658257..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/GoogleBigQueryProducerTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.bigquery.unit;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import com.google.cloud.bigquery.InsertAllRequest;
-import org.apache.camel.Exchange;
-import org.apache.camel.component.google.bigquery.GoogleBigQueryConstants;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.mockito.Mockito.verify;
-
-public class GoogleBigQueryProducerTest extends BaseBigQueryTest {
-
-    @Test
-    public void sendMessage() throws Exception {
-        producer.process(createExchangeWithBody(new HashMap<>()));
-        ArgumentCaptor<InsertAllRequest> dataCaptor = ArgumentCaptor.forClass(InsertAllRequest.class);
-        verify(bigquery).insertAll(dataCaptor.capture());
-        List<InsertAllRequest> requests = dataCaptor.getAllValues();
-        assertEquals(1, requests.size());
-        assertEquals(1, requests.get(0).getRows().size());
-        assertNull(requests.get(0).getRows().get(0).getId());
-    }
-
-    @Test
-    public void sendMessageWithTableId() throws Exception {
-        Exchange exchange = createExchangeWithBody(new HashMap<>());
-        exchange.getIn().setHeader(GoogleBigQueryConstants.TABLE_ID, "exchange_table_id");
-        producer.process(exchange);
-        ArgumentCaptor<InsertAllRequest> dataCaptor = ArgumentCaptor.forClass(InsertAllRequest.class);
-        verify(bigquery).insertAll(dataCaptor.capture());
-        List<InsertAllRequest> requests = dataCaptor.getAllValues();
-        assertEquals(1, requests.size());
-        assertEquals(1, requests.get(0).getRows().size());
-        assertNull(requests.get(0).getRows().get(0).getId());
-    }
-
-    @Test
-    public void useAsInsertIdConfig() throws Exception {
-        configuration.setUseAsInsertId("row1");
-        Map<String, String> object = new HashMap<>();
-        object.put("row1", "value1");
-        producer.process(createExchangeWithBody(object));
-        ArgumentCaptor<InsertAllRequest> dataCaptor = ArgumentCaptor.forClass(InsertAllRequest.class);
-        verify(bigquery).insertAll(dataCaptor.capture());
-        List<InsertAllRequest> requests = dataCaptor.getAllValues();
-        assertEquals(1, requests.size());
-        assertEquals(1, requests.get(0).getRows().size());
-        assertEquals("value1", requests.get(0).getRows().get(0).getId());
-    }
-
-    @Test
-    public void listOfMessages() throws Exception {
-        List<Map<String, String>> messages = new ArrayList<>();
-        messages.add(new HashMap<>());
-        messages.add(new HashMap<>());
-        producer.process(createExchangeWithBody(messages));
-        ArgumentCaptor<InsertAllRequest> dataCaptor = ArgumentCaptor.forClass(InsertAllRequest.class);
-        verify(bigquery).insertAll(dataCaptor.capture());
-        List<InsertAllRequest> requests = dataCaptor.getAllValues();
-        assertEquals(1, requests.size());
-        assertEquals(2, requests.get(0).getRows().size());
-    }
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLComponentTest.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLComponentTest.java
deleted file mode 100644
index e05d002..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLComponentTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.bigquery.unit.sql;
-
-import org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLComponent;
-import org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class GoogleBigQuerySQLComponentTest extends CamelTestSupport {
-
-    @Test
-    public void testQuerySet() throws Exception {
-        String uri = "google-bigquery-sql:myproject:insert into testDatasetId.testTableId(id) values(1)";
-
-        GoogleBigQuerySQLEndpoint endpoint
-                = (GoogleBigQuerySQLEndpoint) new GoogleBigQuerySQLComponent(context).createEndpoint(uri);
-
-        assertEquals("myproject", endpoint.getConfiguration().getProjectId());
-        assertEquals("insert into testDatasetId.testTableId(id) values(1)", endpoint.getConfiguration().getQueryString());
-    }
-
-    @Test
-    public void testQueryFromResourceSet() throws Exception {
-        String uri = "google-bigquery-sql:myproject:classpath:sql/delete.sql";
-
-        GoogleBigQuerySQLEndpoint endpoint
-                = (GoogleBigQuerySQLEndpoint) new GoogleBigQuerySQLComponent(context).createEndpoint(uri);
-
-        assertEquals("myproject", endpoint.getConfiguration().getProjectId());
-        assertEquals("classpath:sql/delete.sql", endpoint.getConfiguration().getQueryString());
-    }
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerBaseTest.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerBaseTest.java
deleted file mode 100644
index 0c99830..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerBaseTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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.bigquery.unit.sql;
-
-import com.google.cloud.bigquery.BigQuery;
-import com.google.cloud.bigquery.JobId;
-import com.google.cloud.bigquery.QueryJobConfiguration;
-import com.google.cloud.bigquery.TableResult;
-import org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration;
-import org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLEndpoint;
-import org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLProducer;
-import org.apache.camel.test.junit5.CamelTestSupport;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public class GoogleBigQuerySQLProducerBaseTest extends CamelTestSupport {
-    protected GoogleBigQuerySQLEndpoint endpoint = mock(GoogleBigQuerySQLEndpoint.class);
-    protected GoogleBigQuerySQLProducer producer;
-    protected String sql;
-    protected String projectId = "testProjectId";
-    protected GoogleBigQuerySQLConfiguration configuration = new GoogleBigQuerySQLConfiguration();
-    protected BigQuery bigquery;
-    protected TableResult tableResult;
-
-    protected GoogleBigQuerySQLProducer createAndStartProducer() throws Exception {
-        configuration.setProjectId(projectId);
-        configuration.setQueryString(sql);
-
-        GoogleBigQuerySQLProducer sqlProducer = new GoogleBigQuerySQLProducer(bigquery, endpoint, configuration);
-        sqlProducer.start();
-        return sqlProducer;
-    }
-
-    protected void setupBigqueryMock() throws Exception {
-        bigquery = mock(BigQuery.class);
-        tableResult = mock(TableResult.class);
-        when(bigquery.query(any(QueryJobConfiguration.class), any(JobId.class))).thenReturn(tableResult);
-    }
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithParamersTest.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithParamersTest.java
deleted file mode 100644
index 1812b22..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithParamersTest.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * 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.bigquery.unit.sql;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.google.cloud.bigquery.JobId;
-import com.google.cloud.bigquery.QueryJobConfiguration;
-import com.google.cloud.bigquery.QueryParameterValue;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.RuntimeExchangeException;
-import org.apache.camel.component.google.bigquery.GoogleBigQueryConstants;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-
-import static org.apache.camel.component.google.bigquery.integration.BigQueryTestSupport.PROJECT_ID;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.verify;
-
-public class GoogleBigQuerySQLProducerWithParamersTest extends GoogleBigQuerySQLProducerBaseTest {
-
-    @BeforeEach
-    public void init() throws Exception {
-        sql = "insert into testDatasetId.testTableId(id, data) values(@id, @data)";
-        setupBigqueryMock();
-        producer = createAndStartProducer();
-    }
-
-    @Test
-    public void sendMessageWithParametersInBody() throws Exception {
-        Map<String, String> body = new HashMap<>();
-        body.put("id", "100");
-        body.put("data", "some data");
-        producer.process(createExchangeWithBody(body));
-
-        ArgumentCaptor<QueryJobConfiguration> dataCaptor = ArgumentCaptor.forClass(QueryJobConfiguration.class);
-        verify(bigquery).query(dataCaptor.capture(), any(JobId.class));
-
-        QueryJobConfiguration request = dataCaptor.getValue();
-        assertEquals(sql, request.getQuery());
-
-        Map<String, QueryParameterValue> namedParameters = request.getNamedParameters();
-        assertEquals(2, namedParameters.size());
-
-        assertTrue(namedParameters.containsKey("id"));
-        assertEquals("100", namedParameters.get("id").getValue());
-
-        assertTrue(namedParameters.containsKey("data"));
-        assertEquals("some data", namedParameters.get("data").getValue());
-    }
-
-    @Test
-    public void sendMessageWithParametersInBodyAndHeaders() throws Exception {
-        Map<String, String> body = new HashMap<>();
-        body.put("id", "100");
-
-        Exchange exchange = createExchangeWithBody(body);
-        Message message = exchange.getMessage();
-        message.setHeader("id", "200");
-        message.setHeader("data", "some data");
-
-        producer.process(exchange);
-
-        ArgumentCaptor<QueryJobConfiguration> dataCaptor = ArgumentCaptor.forClass(QueryJobConfiguration.class);
-        verify(bigquery).query(dataCaptor.capture(), any(JobId.class));
-
-        QueryJobConfiguration request = dataCaptor.getValue();
-        assertEquals(sql, request.getQuery());
-
-        Map<String, QueryParameterValue> namedParameters = request.getNamedParameters();
-        assertEquals(2, namedParameters.size());
-
-        assertTrue(namedParameters.containsKey("id"));
-        assertEquals("100", namedParameters.get("id").getValue(), "Body data must have higher priority");
-
-        assertTrue(namedParameters.containsKey("data"));
-        assertEquals("some data", namedParameters.get("data").getValue());
-    }
-
-    @Test
-    public void sendMessageWithJobIdHeader() throws Exception {
-        Map<String, String> body = new HashMap<>();
-        body.put("id", "100");
-
-        Exchange exchange = createExchangeWithBody(body);
-        Message message = exchange.getMessage();
-        message.setHeader("id", "200");
-        message.setHeader("data", "some data");
-
-        JobId jobId = JobId.of(PROJECT_ID, "a-test-job");
-        message.setHeader(GoogleBigQueryConstants.JOB_ID, jobId);
-
-        producer.process(exchange);
-
-        ArgumentCaptor<QueryJobConfiguration> dataCaptor = ArgumentCaptor.forClass(QueryJobConfiguration.class);
-        verify(bigquery).query(dataCaptor.capture(), eq(jobId));
-
-        QueryJobConfiguration request = dataCaptor.getValue();
-        assertEquals(sql, request.getQuery());
-
-        Map<String, QueryParameterValue> namedParameters = request.getNamedParameters();
-        assertEquals(2, namedParameters.size());
-
-        assertTrue(namedParameters.containsKey("id"));
-        assertEquals("100", namedParameters.get("id").getValue(), "Body data must have higher priority");
-
-        assertTrue(namedParameters.containsKey("data"));
-        assertEquals("some data", namedParameters.get("data").getValue());
-    }
-
-    @Test
-    public void sendMessageWithoutParameters() throws Exception {
-        assertThrows(RuntimeExchangeException.class,
-                () -> producer.process(createExchangeWithBody(new HashMap<>())));
-    }
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithPatternTest.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithPatternTest.java
deleted file mode 100644
index 4b51046..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/GoogleBigQuerySQLProducerWithPatternTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.bigquery.unit.sql;
-
-import java.util.List;
-
-import com.google.cloud.bigquery.JobId;
-import com.google.cloud.bigquery.QueryJobConfiguration;
-import org.apache.camel.Exchange;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.verify;
-
-public class GoogleBigQuerySQLProducerWithPatternTest extends GoogleBigQuerySQLProducerBaseTest {
-
-    @BeforeEach
-    public void init() throws Exception {
-        sql = "insert into ${testDatasetId}.testTableId(id, data) values(1, 'test')";
-        setupBigqueryMock();
-        producer = createAndStartProducer();
-    }
-
-    @Test
-    public void sendExchangeWithProperties() throws Exception {
-        Exchange exchange = createExchangeWithBody(null);
-        exchange.getProperties().put("testDatasetId", "dataset");
-        String expected = "insert into dataset.testTableId(id, data) values(1, 'test')";
-        producer.process(exchange);
-
-        ArgumentCaptor<QueryJobConfiguration> dataCaptor = ArgumentCaptor.forClass(QueryJobConfiguration.class);
-        verify(bigquery).query(dataCaptor.capture(), any(JobId.class));
-
-        List<QueryJobConfiguration> requests = dataCaptor.getAllValues();
-        assertEquals(1, requests.size());
-        assertEquals(expected, requests.get(0).getQuery());
-    }
-
-    @Test
-    public void sendMessageWithHeaders() throws Exception {
-        Exchange exchange = createExchangeWithBody(null);
-        exchange.getMessage().getHeaders().put("testDatasetId", "dataset");
-        String expected = "insert into dataset.testTableId(id, data) values(1, 'test')";
-        producer.process(exchange);
-
-        ArgumentCaptor<QueryJobConfiguration> dataCaptor = ArgumentCaptor.forClass(QueryJobConfiguration.class);
-        verify(bigquery).query(dataCaptor.capture(), any(JobId.class));
-
-        List<QueryJobConfiguration> requests = dataCaptor.getAllValues();
-        assertEquals(1, requests.size());
-        assertEquals(expected, requests.get(0).getQuery());
-    }
-
-}
diff --git a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/SqlHelperTest.java b/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/SqlHelperTest.java
deleted file mode 100644
index 913962c..0000000
--- a/components/camel-google-bigquery/src/test/java/org/apache/camel/component/google/bigquery/unit/sql/SqlHelperTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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.bigquery.unit.sql;
-
-import java.util.Set;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.RuntimeExchangeException;
-import org.apache.camel.component.google.bigquery.sql.SqlHelper;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.when;
-
-public class SqlHelperTest {
-
-    String query = "INSERT INTO ${report}.test( -- TODO \n" + "  id,\n" + "  region\n" + ")\n" + "SELECT\n" + "  id,\n"
-                   + "  region\n" + "FROM\n" + "  ${import}.test\n" + "WHERE\n"
-                   + "  rec_date = @date AND id = @id\n";
-
-    String expected = "INSERT INTO report_data.test( -- TODO \n" + "  id,\n" + "  region\n" + ")\n" + "SELECT\n" + "  id,\n"
-                      + "  region\n" + "FROM\n" + "  import_data.test\n"
-                      + "WHERE\n" + "  rec_date = @date AND id = @id\n";
-
-    Exchange exchange = Mockito.mock(Exchange.class);
-    Message message = Mockito.mock(Message.class);
-
-    private CamelContext context = Mockito.mock(CamelContext.class);
-
-    @Test
-    public void testResolveQuery() throws Exception {
-        String answer = SqlHelper.resolveQuery(context, "delete from test.test_sql_table where id = 1", null);
-        assertEquals("delete from test.test_sql_table where id = 1", answer);
-    }
-
-    @Test
-    @Disabled
-    public void testResolveClasspathQuery() throws Exception {
-        String answer = SqlHelper.resolveQuery(context, "classpath:sql/delete.sql", ":");
-        assertEquals("delete from test.test_sql_table where id = @id", answer);
-    }
-
-    @Test
-    public void testTranslateQuery() {
-        when(exchange.getMessage()).thenReturn(message);
-        when(message.getHeader(eq("report"), eq(String.class))).thenReturn("report_data");
-        when(message.getHeader(eq("import"), eq(String.class))).thenReturn("import_data");
-
-        String answer = SqlHelper.translateQuery(query, exchange);
-        assertEquals(expected, answer);
-    }
-
-    @Test
-    public void testTranslateQueryProperties() {
-        when(exchange.getMessage()).thenReturn(message);
-        when(exchange.getProperty(eq("report"), eq(String.class))).thenReturn("report_data");
-        when(exchange.getProperty(eq("import"), eq(String.class))).thenReturn("import_data");
-
-        String answer = SqlHelper.translateQuery(query, exchange);
-        assertEquals(expected, answer);
-    }
-
-    @Test
-    public void testTranslateQueryWithoutParam() {
-        when(exchange.getMessage()).thenReturn(message);
-        when(message.getHeader(eq("report"), eq(String.class))).thenReturn("report_data");
-        assertThrows(RuntimeExchangeException.class,
-                () -> SqlHelper.translateQuery(query, exchange));
-    }
-
-    @Test
-    public void testExtractParameterNames() {
-        Set<String> answer = SqlHelper.extractParameterNames(query);
-        assertEquals(2, answer.size());
-        assertTrue(answer.contains("date"), "Parameter 'date' not found");
-        assertTrue(answer.contains("id"), "Parameter 'id' not found");
-    }
-}
diff --git a/components/camel-google-bigquery/src/test/resources/log4j.properties b/components/camel-google-bigquery/src/test/resources/log4j.properties
deleted file mode 100644
index 4180b0d..0000000
--- a/components/camel-google-bigquery/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-## ---------------------------------------------------------------------------
-## 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.
-## ---------------------------------------------------------------------------
-
-#
-# The logging properties used during tests..
-#
-log4j.rootLogger=INFO, out
-
-#log4j.logger.org.apache.camel.component.google.pubsub=TRACE
-#log4j.logger.org.apache.camel=DEBUG
-#log4j.logger.org.apache.camel.impl=WARN
-
-# CONSOLE appender not used by default
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-
-# File appender
-log4j.appender.out=org.apache.log4j.FileAppender
-log4j.appender.out.layout=org.apache.log4j.PatternLayout
-log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-log4j.appender.out.file=target/camel-google-bigquery-test.log
-log4j.appender.out.append=true
diff --git a/components/camel-google-bigquery/src/test/resources/log4j2.properties b/components/camel-google-bigquery/src/test/resources/log4j2.properties
deleted file mode 100644
index 3f9aba8..0000000
--- a/components/camel-google-bigquery/src/test/resources/log4j2.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-## ---------------------------------------------------------------------------
-## 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.
-## ---------------------------------------------------------------------------
-
-
-appender.file.type = File
-appender.file.name = file
-appender.file.fileName = target/camel-google-bigquery-test.log
-appender.file.layout.type = PatternLayout
-appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-appender.out.type = Console
-appender.out.name = out
-appender.out.layout.type = PatternLayout
-appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-rootLogger.level = INFO
-rootLogger.appenderRef.file.ref = file
-
diff --git a/components/camel-google-bigquery/src/test/resources/logging.properties b/components/camel-google-bigquery/src/test/resources/logging.properties
deleted file mode 100644
index 0cc82a5..0000000
--- a/components/camel-google-bigquery/src/test/resources/logging.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-## ---------------------------------------------------------------------------
-## 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.
-## ---------------------------------------------------------------------------
-
-.level=SEVERE
-handlers= java.util.logging.ConsoleHandler
-java.util.logging.ConsoleHandler.level = SEVERE
-java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
diff --git a/components/camel-google-bigquery/src/test/resources/simple.properties b/components/camel-google-bigquery/src/test/resources/simple.properties
deleted file mode 100644
index 88c4916..0000000
--- a/components/camel-google-bigquery/src/test/resources/simple.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-## ---------------------------------------------------------------------------
-## 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.
-## ---------------------------------------------------------------------------
-
-project.id=scg-bi-sandbox
-bigquery.datasetId=test_dataset
-# Service Account Name and Key do not belong to any project
-# Have been generated for BigQuery Emulator
-#service.account=
-#service.key=
-#service.credentialsFileLocation=
diff --git a/components/camel-google-bigquery/src/test/resources/sql/delete.sql b/components/camel-google-bigquery/src/test/resources/sql/delete.sql
deleted file mode 100644
index 1a05bfd..0000000
--- a/components/camel-google-bigquery/src/test/resources/sql/delete.sql
+++ /dev/null
@@ -1,18 +0,0 @@
---
--- 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.
---
-
-delete from test.test_sql_table where id = :id
\ No newline at end of file
diff --git a/components/camel-google-bigquery/src/test/resources/sql/insert.sql b/components/camel-google-bigquery/src/test/resources/sql/insert.sql
deleted file mode 100644
index 05d19bd..0000000
--- a/components/camel-google-bigquery/src/test/resources/sql/insert.sql
+++ /dev/null
@@ -1,19 +0,0 @@
---
--- 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.
---
-
-insert into test.test_sql_table (col1, col2)
-values (@col1, @col2)
\ No newline at end of file
diff --git a/components/camel-google-calendar/pom.xml b/components/camel-google-calendar/pom.xml
deleted file mode 100644
index 305a15b..0000000
--- a/components/camel-google-calendar/pom.xml
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.camel</groupId>
-        <artifactId>components</artifactId>
-        <version>3.9.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>camel-google-calendar</artifactId>
-    <packaging>jar</packaging>
-    <name>Camel :: Google Calendar</name>
-    <description>Camel Component for GoogleCalendar</description>
-
-    <properties>
-        <schemeName>google-calendar</schemeName>
-        <componentName>GoogleCalendar</componentName>
-        <componentPackage>org.apache.camel.component.google.calendar</componentPackage>
-        <outPackage>org.apache.camel.component.google.calendar.internal</outPackage>
-        <camel.osgi.private.pkg>org.apache.camel.component.google.calendar.internal</camel.osgi.private.pkg>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-support</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.api-client</groupId>
-            <artifactId>google-api-client</artifactId>
-            <version>${google-api-client-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.oauth-client</groupId>
-            <artifactId>google-oauth-client-jetty</artifactId>
-            <version>${google-api-client-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.http-client</groupId>
-            <artifactId>google-http-client-jackson2</artifactId>
-            <version>${google-api-client-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.apis</groupId>
-            <artifactId>google-api-services-calendar</artifactId>
-            <version>${google-api-services-calendar-version}</version>
-        </dependency>
-
-        <!-- logging -->
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <!-- testing -->
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test-junit5</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <defaultGoal>install</defaultGoal>
-
-        <plugins>
-
-            <!-- generate Component source and test source -->
-            <plugin>
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-api-component-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>generate-test-component-classes</id>
-                        <goals>
-                            <goal>fromApis</goal>
-                        </goals>
-                        <configuration>
-                            <apis>
-                                <api>
-                                    <apiName>acl</apiName>
-                                    <proxyClass>com.google.api.services.calendar.Calendar$Acl</proxyClass>
-                                    <fromJavasource />
-                                </api>
-                                <api>
-                                    <apiName>list</apiName>
-                                    <proxyClass>com.google.api.services.calendar.Calendar$CalendarList</proxyClass>
-                                    <fromJavasource />
-                                </api>
-                                <api>
-                                    <apiName>calendars</apiName>
-                                    <proxyClass>com.google.api.services.calendar.Calendar$Calendars</proxyClass>
-                                    <fromJavasource />
-                                </api>
-                                <api>
-                                    <apiName>channels</apiName>
-                                    <proxyClass>com.google.api.services.calendar.Calendar$Channels</proxyClass>
-                                    <fromJavasource />
-                                </api>
-                                <api>
-                                    <apiName>colors</apiName>
-                                    <proxyClass>com.google.api.services.calendar.Calendar$Colors</proxyClass>
-                                    <fromJavasource />
-                                </api>
-                                <api>
-                                    <apiName>freebusy</apiName>
-                                    <proxyClass>com.google.api.services.calendar.Calendar$Freebusy</proxyClass>
-                                    <fromJavasource />
-                                </api>
-                                <api>
-                                    <apiName>events</apiName>
-                                    <proxyClass>com.google.api.services.calendar.Calendar$Events</proxyClass>
-                                    <fromJavasource />
-                                </api>
-                                <api>
-                                    <apiName>settings</apiName>
-                                    <proxyClass>com.google.api.services.calendar.Calendar$Settings</proxyClass>
-                                    <fromJavasource />
-                                </api>
-                            </apis>
-                            <substitutions>
-                                <substitution>
-                                    <method>^.+$</method>
-                                    <argName>content</argName>
-                                    <argType>com.google.api.services.calendar.model.Channel</argType>
-                                    <replacement>contentChannel</replacement>
-                                </substitution>
-                            </substitutions>
-                        </configuration>
-                    </execution>
-                </executions>
-                <dependencies>
-                    <!-- Component API to read API signatures -->
-                    <dependency>
-                        <groupId>com.google.apis</groupId>
-                        <artifactId>google-api-services-calendar</artifactId>
-                        <version>${google-api-services-calendar-version}</version>
-                        <classifier>sources</classifier>
-                    </dependency>
-                </dependencies>
-            </plugin>
-            <plugin>
-                <!-- we need to generate additional configurer classes -->
-                <groupId>org.apache.camel</groupId>
-                <artifactId>camel-package-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>generate-configurer</id>
-                        <phase>process-classes</phase>
-                        <goals>
-                            <goal>generate-configurer</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.apache.camel</groupId>
-                    <artifactId>camel-api-component-maven-plugin</artifactId>
-                    <version>${project.version}</version>
-                    <configuration>
-                        <scheme>${schemeName}</scheme>
-                        <componentName>${componentName}</componentName>
-                        <componentPackage>${componentPackage}</componentPackage>
-                        <outPackage>${outPackage}</outPackage>
-                    </configuration>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-
-    </build>
-
-    <profiles>
-        <profile>
-            <id>google-calendar-test</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <childDelegation>false</childDelegation>
-                            <useFile>true</useFile>
-                            <forkCount>1</forkCount>
-                            <reuseForks>true</reuseForks>
-                            <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds>
-                            <excludes>
-                                <exclude>**/*XXXTest.java</exclude>
-                            </excludes>
-                            <includes>
-                                <include>**/*Test.java</include>
-                            </includes>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
-</project>
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfiguration.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfiguration.java
deleted file mode 100644
index 2f24e7d..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfiguration.java
+++ /dev/null
@@ -1,67 +0,0 @@
-
-/*
- * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar;
-
-import org.apache.camel.spi.ApiMethod;
-import org.apache.camel.spi.ApiParam;
-import org.apache.camel.spi.ApiParams;
-import org.apache.camel.spi.Configurer;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-
-/**
- * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Acl}.
- */
-@ApiParams(apiName = "acl", 
-           description = "The acl collection of methods",
-           apiMethods = {@ApiMethod(methodName = "delete", description="Deletes an access control rule", signatures={"com.google.api.services.calendar.Calendar$Acl$Delete delete(String calendarId, String ruleId)"}), @ApiMethod(methodName = "get", description="Returns an access control rule", signatures={"com.google.api.services.calendar.Calendar$Acl$Get get(String calendarId, String ruleId)"}), @ApiMethod(methodName = "insert", description="Creates an access control rule", signatures={"c [...]
-@UriParams
-@Configurer(extended = true)
-public final class CalendarAclEndpointConfiguration extends GoogleCalendarConfiguration {
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "delete", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword."), @ApiMethod(methodName = "get", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the prima [...]
-    private String calendarId;
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "insert", description="The com.google.api.services.calendar.model.AclRule"), @ApiMethod(methodName = "patch", description="The com.google.api.services.calendar.model.AclRule"), @ApiMethod(methodName = "update", description="The com.google.api.services.calendar.model.AclRule")})
-    private com.google.api.services.calendar.model.AclRule content;
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "watch", description="The com.google.api.services.calendar.model.Channel")})
-    private com.google.api.services.calendar.model.Channel contentChannel;
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "delete", description="ACL rule identifier"), @ApiMethod(methodName = "get", description="ACL rule identifier"), @ApiMethod(methodName = "patch", description="ACL rule identifier"), @ApiMethod(methodName = "update", description="ACL rule identifier")})
-    private String ruleId;
-
-    public String getCalendarId() {
-        return calendarId;
-    }
-
-    public void setCalendarId(String calendarId) {
-        this.calendarId = calendarId;
-    }
-
-    public com.google.api.services.calendar.model.AclRule getContent() {
-        return content;
-    }
-
-    public void setContent(com.google.api.services.calendar.model.AclRule content) {
-        this.content = content;
-    }
-
-    public com.google.api.services.calendar.model.Channel getContentChannel() {
-        return contentChannel;
-    }
-
-    public void setContentChannel(com.google.api.services.calendar.model.Channel contentChannel) {
-        this.contentChannel = contentChannel;
-    }
-
-    public String getRuleId() {
-        return ruleId;
-    }
-
-    public void setRuleId(String ruleId) {
-        this.ruleId = ruleId;
-    }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfigurationConfigurer.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfigurationConfigurer.java
deleted file mode 100644
index dd4e552..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarAclEndpointConfigurationConfigurer.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class CalendarAclEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
-
-    private static final Map<String, Object> ALL_OPTIONS;
-    static {
-        Map<String, Object> map = new CaseInsensitiveMap();
-        map.put("AccessToken", java.lang.String.class);
-        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
-        map.put("ApplicationName", java.lang.String.class);
-        map.put("CalendarId", java.lang.String.class);
-        map.put("ClientId", java.lang.String.class);
-        map.put("ClientSecret", java.lang.String.class);
-        map.put("Content", com.google.api.services.calendar.model.AclRule.class);
-        map.put("ContentChannel", com.google.api.services.calendar.model.Channel.class);
-        map.put("EmailAddress", java.lang.String.class);
-        map.put("MethodName", java.lang.String.class);
-        map.put("P12FileName", java.lang.String.class);
-        map.put("RefreshToken", java.lang.String.class);
-        map.put("RuleId", java.lang.String.class);
-        map.put("Scopes", java.lang.String.class);
-        map.put("User", java.lang.String.class);
-        ALL_OPTIONS = map;
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "apiname":
-        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
-        case "applicationname":
-        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
-        case "calendarid":
-        case "CalendarId": target.setCalendarId(property(camelContext, java.lang.String.class, value)); return true;
-        case "clientid":
-        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 "content":
-        case "Content": target.setContent(property(camelContext, com.google.api.services.calendar.model.AclRule.class, value)); return true;
-        case "contentchannel":
-        case "ContentChannel": target.setContentChannel(property(camelContext, com.google.api.services.calendar.model.Channel.class, value)); return true;
-        case "emailaddress":
-        case "EmailAddress": target.setEmailAddress(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 "p12filename":
-        case "P12FileName": target.setP12FileName(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 "ruleid":
-        case "RuleId": target.setRuleId(property(camelContext, java.lang.String.class, value)); return true;
-        case "scopes":
-        case "Scopes": target.setScopes(property(camelContext, java.lang.String.class, value)); return true;
-        case "user":
-        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Map<String, Object> getAllOptions(Object target) {
-        return ALL_OPTIONS;
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return java.lang.String.class;
-        case "apiname":
-        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
-        case "applicationname":
-        case "ApplicationName": return java.lang.String.class;
-        case "calendarid":
-        case "CalendarId": return java.lang.String.class;
-        case "clientid":
-        case "ClientId": return java.lang.String.class;
-        case "clientsecret":
-        case "ClientSecret": return java.lang.String.class;
-        case "content":
-        case "Content": return com.google.api.services.calendar.model.AclRule.class;
-        case "contentchannel":
-        case "ContentChannel": return com.google.api.services.calendar.model.Channel.class;
-        case "emailaddress":
-        case "EmailAddress": return java.lang.String.class;
-        case "methodname":
-        case "MethodName": return java.lang.String.class;
-        case "p12filename":
-        case "P12FileName": return java.lang.String.class;
-        case "refreshtoken":
-        case "RefreshToken": return java.lang.String.class;
-        case "ruleid":
-        case "RuleId": return java.lang.String.class;
-        case "scopes":
-        case "Scopes": return java.lang.String.class;
-        case "user":
-        case "User": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return target.getAccessToken();
-        case "apiname":
-        case "ApiName": return target.getApiName();
-        case "applicationname":
-        case "ApplicationName": return target.getApplicationName();
-        case "calendarid":
-        case "CalendarId": return target.getCalendarId();
-        case "clientid":
-        case "ClientId": return target.getClientId();
-        case "clientsecret":
-        case "ClientSecret": return target.getClientSecret();
-        case "content":
-        case "Content": return target.getContent();
-        case "contentchannel":
-        case "ContentChannel": return target.getContentChannel();
-        case "emailaddress":
-        case "EmailAddress": return target.getEmailAddress();
-        case "methodname":
-        case "MethodName": return target.getMethodName();
-        case "p12filename":
-        case "P12FileName": return target.getP12FileName();
-        case "refreshtoken":
-        case "RefreshToken": return target.getRefreshToken();
-        case "ruleid":
-        case "RuleId": return target.getRuleId();
-        case "scopes":
-        case "Scopes": return target.getScopes();
-        case "user":
-        case "User": return target.getUser();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfiguration.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfiguration.java
deleted file mode 100644
index 6c84b2e..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfiguration.java
+++ /dev/null
@@ -1,56 +0,0 @@
-
-/*
- * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar;
-
-import org.apache.camel.spi.ApiMethod;
-import org.apache.camel.spi.ApiParam;
-import org.apache.camel.spi.ApiParams;
-import org.apache.camel.spi.Configurer;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-
-/**
- * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.CalendarList}.
- */
-@ApiParams(apiName = "list", 
-           description = "The calendarList collection of methods",
-           apiMethods = {@ApiMethod(methodName = "delete", description="Deletes an entry on the user's calendar list", signatures={"com.google.api.services.calendar.Calendar$CalendarList$Delete delete(String calendarId)"}), @ApiMethod(methodName = "get", description="Returns an entry on the user's calendar list", signatures={"com.google.api.services.calendar.Calendar$CalendarList$Get get(String calendarId)"}), @ApiMethod(methodName = "insert", description="Adds an entry to the user's cal [...]
-@UriParams
-@Configurer(extended = true)
-public final class CalendarCalendarListEndpointConfiguration extends GoogleCalendarConfiguration {
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "delete", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword."), @ApiMethod(methodName = "get", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the prima [...]
-    private String calendarId;
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "insert", description="The com.google.api.services.calendar.model.CalendarListEntry"), @ApiMethod(methodName = "patch", description="The com.google.api.services.calendar.model.CalendarListEntry"), @ApiMethod(methodName = "update", description="The com.google.api.services.calendar.model.CalendarListEntry")})
-    private com.google.api.services.calendar.model.CalendarListEntry content;
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "watch", description="The com.google.api.services.calendar.model.Channel")})
-    private com.google.api.services.calendar.model.Channel contentChannel;
-
-    public String getCalendarId() {
-        return calendarId;
-    }
-
-    public void setCalendarId(String calendarId) {
-        this.calendarId = calendarId;
-    }
-
-    public com.google.api.services.calendar.model.CalendarListEntry getContent() {
-        return content;
-    }
-
-    public void setContent(com.google.api.services.calendar.model.CalendarListEntry content) {
-        this.content = content;
-    }
-
-    public com.google.api.services.calendar.model.Channel getContentChannel() {
-        return contentChannel;
-    }
-
-    public void setContentChannel(com.google.api.services.calendar.model.Channel contentChannel) {
-        this.contentChannel = contentChannel;
-    }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfigurationConfigurer.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfigurationConfigurer.java
deleted file mode 100644
index 5739f72..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarListEndpointConfigurationConfigurer.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class CalendarCalendarListEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
-
-    private static final Map<String, Object> ALL_OPTIONS;
-    static {
-        Map<String, Object> map = new CaseInsensitiveMap();
-        map.put("AccessToken", java.lang.String.class);
-        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
-        map.put("ApplicationName", java.lang.String.class);
-        map.put("CalendarId", java.lang.String.class);
-        map.put("ClientId", java.lang.String.class);
-        map.put("ClientSecret", java.lang.String.class);
-        map.put("Content", com.google.api.services.calendar.model.CalendarListEntry.class);
-        map.put("ContentChannel", com.google.api.services.calendar.model.Channel.class);
-        map.put("EmailAddress", java.lang.String.class);
-        map.put("MethodName", java.lang.String.class);
-        map.put("P12FileName", java.lang.String.class);
-        map.put("RefreshToken", java.lang.String.class);
-        map.put("Scopes", java.lang.String.class);
-        map.put("User", java.lang.String.class);
-        ALL_OPTIONS = map;
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "apiname":
-        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
-        case "applicationname":
-        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
-        case "calendarid":
-        case "CalendarId": target.setCalendarId(property(camelContext, java.lang.String.class, value)); return true;
-        case "clientid":
-        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 "content":
-        case "Content": target.setContent(property(camelContext, com.google.api.services.calendar.model.CalendarListEntry.class, value)); return true;
-        case "contentchannel":
-        case "ContentChannel": target.setContentChannel(property(camelContext, com.google.api.services.calendar.model.Channel.class, value)); return true;
-        case "emailaddress":
-        case "EmailAddress": target.setEmailAddress(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 "p12filename":
-        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
-        case "user":
-        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Map<String, Object> getAllOptions(Object target) {
-        return ALL_OPTIONS;
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return java.lang.String.class;
-        case "apiname":
-        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
-        case "applicationname":
-        case "ApplicationName": return java.lang.String.class;
-        case "calendarid":
-        case "CalendarId": return java.lang.String.class;
-        case "clientid":
-        case "ClientId": return java.lang.String.class;
-        case "clientsecret":
-        case "ClientSecret": return java.lang.String.class;
-        case "content":
-        case "Content": return com.google.api.services.calendar.model.CalendarListEntry.class;
-        case "contentchannel":
-        case "ContentChannel": return com.google.api.services.calendar.model.Channel.class;
-        case "emailaddress":
-        case "EmailAddress": return java.lang.String.class;
-        case "methodname":
-        case "MethodName": return java.lang.String.class;
-        case "p12filename":
-        case "P12FileName": return java.lang.String.class;
-        case "refreshtoken":
-        case "RefreshToken": return java.lang.String.class;
-        case "scopes":
-        case "Scopes": return java.lang.String.class;
-        case "user":
-        case "User": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return target.getAccessToken();
-        case "apiname":
-        case "ApiName": return target.getApiName();
-        case "applicationname":
-        case "ApplicationName": return target.getApplicationName();
-        case "calendarid":
-        case "CalendarId": return target.getCalendarId();
-        case "clientid":
-        case "ClientId": return target.getClientId();
-        case "clientsecret":
-        case "ClientSecret": return target.getClientSecret();
-        case "content":
-        case "Content": return target.getContent();
-        case "contentchannel":
-        case "ContentChannel": return target.getContentChannel();
-        case "emailaddress":
-        case "EmailAddress": return target.getEmailAddress();
-        case "methodname":
-        case "MethodName": return target.getMethodName();
-        case "p12filename":
-        case "P12FileName": return target.getP12FileName();
-        case "refreshtoken":
-        case "RefreshToken": return target.getRefreshToken();
-        case "scopes":
-        case "Scopes": return target.getScopes();
-        case "user":
-        case "User": return target.getUser();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfiguration.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfiguration.java
deleted file mode 100644
index 973f5af..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfiguration.java
+++ /dev/null
@@ -1,45 +0,0 @@
-
-/*
- * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar;
-
-import org.apache.camel.spi.ApiMethod;
-import org.apache.camel.spi.ApiParam;
-import org.apache.camel.spi.ApiParams;
-import org.apache.camel.spi.Configurer;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-
-/**
- * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Calendars}.
- */
-@ApiParams(apiName = "calendars", 
-           description = "The calendars collection of methods",
-           apiMethods = {@ApiMethod(methodName = "clear", description="Clears a primary calendar", signatures={"com.google.api.services.calendar.Calendar$Calendars$Clear clear(String calendarId)"}), @ApiMethod(methodName = "delete", description="Deletes a secondary calendar", signatures={"com.google.api.services.calendar.Calendar$Calendars$Delete delete(String calendarId)"}), @ApiMethod(methodName = "get", description="Returns metadata for a calendar", signatures={"com.google.api.service [...]
-@UriParams
-@Configurer(extended = true)
-public final class CalendarCalendarsEndpointConfiguration extends GoogleCalendarConfiguration {
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "clear", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword."), @ApiMethod(methodName = "delete", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the pri [...]
-    private String calendarId;
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "insert", description="The com.google.api.services.calendar.model.Calendar"), @ApiMethod(methodName = "patch", description="The com.google.api.services.calendar.model.Calendar"), @ApiMethod(methodName = "update", description="The com.google.api.services.calendar.model.Calendar")})
-    private com.google.api.services.calendar.model.Calendar content;
-
-    public String getCalendarId() {
-        return calendarId;
-    }
-
-    public void setCalendarId(String calendarId) {
-        this.calendarId = calendarId;
-    }
-
-    public com.google.api.services.calendar.model.Calendar getContent() {
-        return content;
-    }
-
-    public void setContent(com.google.api.services.calendar.model.Calendar content) {
-        this.content = content;
-    }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfigurationConfigurer.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfigurationConfigurer.java
deleted file mode 100644
index edd7d26..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarCalendarsEndpointConfigurationConfigurer.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class CalendarCalendarsEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
-
-    private static final Map<String, Object> ALL_OPTIONS;
-    static {
-        Map<String, Object> map = new CaseInsensitiveMap();
-        map.put("AccessToken", java.lang.String.class);
-        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
-        map.put("ApplicationName", java.lang.String.class);
-        map.put("CalendarId", java.lang.String.class);
-        map.put("ClientId", java.lang.String.class);
-        map.put("ClientSecret", java.lang.String.class);
-        map.put("Content", com.google.api.services.calendar.model.Calendar.class);
-        map.put("EmailAddress", java.lang.String.class);
-        map.put("MethodName", java.lang.String.class);
-        map.put("P12FileName", java.lang.String.class);
-        map.put("RefreshToken", java.lang.String.class);
-        map.put("Scopes", java.lang.String.class);
-        map.put("User", java.lang.String.class);
-        ALL_OPTIONS = map;
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "apiname":
-        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
-        case "applicationname":
-        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
-        case "calendarid":
-        case "CalendarId": target.setCalendarId(property(camelContext, java.lang.String.class, value)); return true;
-        case "clientid":
-        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 "content":
-        case "Content": target.setContent(property(camelContext, com.google.api.services.calendar.model.Calendar.class, value)); return true;
-        case "emailaddress":
-        case "EmailAddress": target.setEmailAddress(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 "p12filename":
-        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
-        case "user":
-        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Map<String, Object> getAllOptions(Object target) {
-        return ALL_OPTIONS;
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return java.lang.String.class;
-        case "apiname":
-        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
-        case "applicationname":
-        case "ApplicationName": return java.lang.String.class;
-        case "calendarid":
-        case "CalendarId": return java.lang.String.class;
-        case "clientid":
-        case "ClientId": return java.lang.String.class;
-        case "clientsecret":
-        case "ClientSecret": return java.lang.String.class;
-        case "content":
-        case "Content": return com.google.api.services.calendar.model.Calendar.class;
-        case "emailaddress":
-        case "EmailAddress": return java.lang.String.class;
-        case "methodname":
-        case "MethodName": return java.lang.String.class;
-        case "p12filename":
-        case "P12FileName": return java.lang.String.class;
-        case "refreshtoken":
-        case "RefreshToken": return java.lang.String.class;
-        case "scopes":
-        case "Scopes": return java.lang.String.class;
-        case "user":
-        case "User": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return target.getAccessToken();
-        case "apiname":
-        case "ApiName": return target.getApiName();
-        case "applicationname":
-        case "ApplicationName": return target.getApplicationName();
-        case "calendarid":
-        case "CalendarId": return target.getCalendarId();
-        case "clientid":
-        case "ClientId": return target.getClientId();
-        case "clientsecret":
-        case "ClientSecret": return target.getClientSecret();
-        case "content":
-        case "Content": return target.getContent();
-        case "emailaddress":
-        case "EmailAddress": return target.getEmailAddress();
-        case "methodname":
-        case "MethodName": return target.getMethodName();
-        case "p12filename":
-        case "P12FileName": return target.getP12FileName();
-        case "refreshtoken":
-        case "RefreshToken": return target.getRefreshToken();
-        case "scopes":
-        case "Scopes": return target.getScopes();
-        case "user":
-        case "User": return target.getUser();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfiguration.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfiguration.java
deleted file mode 100644
index 585d1f8..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfiguration.java
+++ /dev/null
@@ -1,34 +0,0 @@
-
-/*
- * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar;
-
-import org.apache.camel.spi.ApiMethod;
-import org.apache.camel.spi.ApiParam;
-import org.apache.camel.spi.ApiParams;
-import org.apache.camel.spi.Configurer;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-
-/**
- * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Channels}.
- */
-@ApiParams(apiName = "channels", 
-           description = "The channels collection of methods",
-           apiMethods = {@ApiMethod(methodName = "stop", description="Stop watching resources through this channel", signatures={"com.google.api.services.calendar.Calendar$Channels$Stop stop(com.google.api.services.calendar.model.Channel content)"})}, aliases = {})
-@UriParams
-@Configurer(extended = true)
-public final class CalendarChannelsEndpointConfiguration extends GoogleCalendarConfiguration {
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "stop", description="The com.google.api.services.calendar.model.Channel")})
-    private com.google.api.services.calendar.model.Channel contentChannel;
-
-    public com.google.api.services.calendar.model.Channel getContentChannel() {
-        return contentChannel;
-    }
-
-    public void setContentChannel(com.google.api.services.calendar.model.Channel contentChannel) {
-        this.contentChannel = contentChannel;
-    }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfigurationConfigurer.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfigurationConfigurer.java
deleted file mode 100644
index c94f0f8..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarChannelsEndpointConfigurationConfigurer.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class CalendarChannelsEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
-
-    private static final Map<String, Object> ALL_OPTIONS;
-    static {
-        Map<String, Object> map = new CaseInsensitiveMap();
-        map.put("AccessToken", java.lang.String.class);
-        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
-        map.put("ApplicationName", java.lang.String.class);
-        map.put("ClientId", java.lang.String.class);
-        map.put("ClientSecret", java.lang.String.class);
-        map.put("ContentChannel", com.google.api.services.calendar.model.Channel.class);
-        map.put("EmailAddress", java.lang.String.class);
-        map.put("MethodName", java.lang.String.class);
-        map.put("P12FileName", java.lang.String.class);
-        map.put("RefreshToken", java.lang.String.class);
-        map.put("Scopes", java.lang.String.class);
-        map.put("User", java.lang.String.class);
-        ALL_OPTIONS = map;
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "apiname":
-        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
-        case "applicationname":
-        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
-        case "clientid":
-        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 "contentchannel":
-        case "ContentChannel": target.setContentChannel(property(camelContext, com.google.api.services.calendar.model.Channel.class, value)); return true;
-        case "emailaddress":
-        case "EmailAddress": target.setEmailAddress(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 "p12filename":
-        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
-        case "user":
-        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Map<String, Object> getAllOptions(Object target) {
-        return ALL_OPTIONS;
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return java.lang.String.class;
-        case "apiname":
-        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
-        case "applicationname":
-        case "ApplicationName": return java.lang.String.class;
-        case "clientid":
-        case "ClientId": return java.lang.String.class;
-        case "clientsecret":
-        case "ClientSecret": return java.lang.String.class;
-        case "contentchannel":
-        case "ContentChannel": return com.google.api.services.calendar.model.Channel.class;
-        case "emailaddress":
-        case "EmailAddress": return java.lang.String.class;
-        case "methodname":
-        case "MethodName": return java.lang.String.class;
-        case "p12filename":
-        case "P12FileName": return java.lang.String.class;
-        case "refreshtoken":
-        case "RefreshToken": return java.lang.String.class;
-        case "scopes":
-        case "Scopes": return java.lang.String.class;
-        case "user":
-        case "User": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return target.getAccessToken();
-        case "apiname":
-        case "ApiName": return target.getApiName();
-        case "applicationname":
-        case "ApplicationName": return target.getApplicationName();
-        case "clientid":
-        case "ClientId": return target.getClientId();
-        case "clientsecret":
-        case "ClientSecret": return target.getClientSecret();
-        case "contentchannel":
-        case "ContentChannel": return target.getContentChannel();
-        case "emailaddress":
-        case "EmailAddress": return target.getEmailAddress();
-        case "methodname":
-        case "MethodName": return target.getMethodName();
-        case "p12filename":
-        case "P12FileName": return target.getP12FileName();
-        case "refreshtoken":
-        case "RefreshToken": return target.getRefreshToken();
-        case "scopes":
-        case "Scopes": return target.getScopes();
-        case "user":
-        case "User": return target.getUser();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfiguration.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfiguration.java
deleted file mode 100644
index b2e8fdb..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfiguration.java
+++ /dev/null
@@ -1,23 +0,0 @@
-
-/*
- * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar;
-
-import org.apache.camel.spi.ApiMethod;
-import org.apache.camel.spi.ApiParam;
-import org.apache.camel.spi.ApiParams;
-import org.apache.camel.spi.Configurer;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-
-/**
- * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Colors}.
- */
-@ApiParams(apiName = "colors", 
-           description = "The colors collection of methods",
-           apiMethods = {@ApiMethod(methodName = "get", description="Returns the color definitions for calendars and events", signatures={"com.google.api.services.calendar.Calendar$Colors$Get get()"})}, aliases = {})
-@UriParams
-@Configurer(extended = true)
-public final class CalendarColorsEndpointConfiguration extends GoogleCalendarConfiguration {
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfigurationConfigurer.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfigurationConfigurer.java
deleted file mode 100644
index 814c4cf..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarColorsEndpointConfigurationConfigurer.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class CalendarColorsEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
-
-    private static final Map<String, Object> ALL_OPTIONS;
-    static {
-        Map<String, Object> map = new CaseInsensitiveMap();
-        map.put("AccessToken", java.lang.String.class);
-        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
-        map.put("ApplicationName", java.lang.String.class);
-        map.put("ClientId", java.lang.String.class);
-        map.put("ClientSecret", java.lang.String.class);
-        map.put("EmailAddress", java.lang.String.class);
-        map.put("MethodName", java.lang.String.class);
-        map.put("P12FileName", java.lang.String.class);
-        map.put("RefreshToken", java.lang.String.class);
-        map.put("Scopes", java.lang.String.class);
-        map.put("User", java.lang.String.class);
-        ALL_OPTIONS = map;
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "apiname":
-        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
-        case "applicationname":
-        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
-        case "clientid":
-        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 "emailaddress":
-        case "EmailAddress": target.setEmailAddress(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 "p12filename":
-        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
-        case "user":
-        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Map<String, Object> getAllOptions(Object target) {
-        return ALL_OPTIONS;
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return java.lang.String.class;
-        case "apiname":
-        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
-        case "applicationname":
-        case "ApplicationName": return java.lang.String.class;
-        case "clientid":
-        case "ClientId": return java.lang.String.class;
-        case "clientsecret":
-        case "ClientSecret": return java.lang.String.class;
-        case "emailaddress":
-        case "EmailAddress": return java.lang.String.class;
-        case "methodname":
-        case "MethodName": return java.lang.String.class;
-        case "p12filename":
-        case "P12FileName": return java.lang.String.class;
-        case "refreshtoken":
-        case "RefreshToken": return java.lang.String.class;
-        case "scopes":
-        case "Scopes": return java.lang.String.class;
-        case "user":
-        case "User": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return target.getAccessToken();
-        case "apiname":
-        case "ApiName": return target.getApiName();
-        case "applicationname":
-        case "ApplicationName": return target.getApplicationName();
-        case "clientid":
-        case "ClientId": return target.getClientId();
-        case "clientsecret":
-        case "ClientSecret": return target.getClientSecret();
-        case "emailaddress":
-        case "EmailAddress": return target.getEmailAddress();
-        case "methodname":
-        case "MethodName": return target.getMethodName();
-        case "p12filename":
-        case "P12FileName": return target.getP12FileName();
-        case "refreshtoken":
-        case "RefreshToken": return target.getRefreshToken();
-        case "scopes":
-        case "Scopes": return target.getScopes();
-        case "user":
-        case "User": return target.getUser();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfiguration.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfiguration.java
deleted file mode 100644
index 12b6907..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfiguration.java
+++ /dev/null
@@ -1,89 +0,0 @@
-
-/*
- * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar;
-
-import org.apache.camel.spi.ApiMethod;
-import org.apache.camel.spi.ApiParam;
-import org.apache.camel.spi.ApiParams;
-import org.apache.camel.spi.Configurer;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-
-/**
- * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Events}.
- */
-@ApiParams(apiName = "events", 
-           description = "The events collection of methods",
-           apiMethods = {@ApiMethod(methodName = "calendarImport", description="Imports an event", signatures={"com.google.api.services.calendar.Calendar$Events$CalendarImport calendarImport(String calendarId, com.google.api.services.calendar.model.Event content)"}), @ApiMethod(methodName = "delete", description="Deletes an event", signatures={"com.google.api.services.calendar.Calendar$Events$Delete delete(String calendarId, String eventId)"}), @ApiMethod(methodName = "get", description= [...]
-@UriParams
-@Configurer(extended = true)
-public final class CalendarEventsEndpointConfiguration extends GoogleCalendarConfiguration {
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "calendarImport", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword."), @ApiMethod(methodName = "delete", description="Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, us [...]
-    private String calendarId;
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "calendarImport", description="The com.google.api.services.calendar.model.Event"), @ApiMethod(methodName = "insert", description="The com.google.api.services.calendar.model.Event"), @ApiMethod(methodName = "patch", description="The com.google.api.services.calendar.model.Event"), @ApiMethod(methodName = "update", description="The com.google.api.services.calendar.model.Event")})
-    private com.google.api.services.calendar.model.Event content;
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "watch", description="The com.google.api.services.calendar.model.Channel")})
-    private com.google.api.services.calendar.model.Channel contentChannel;
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "move", description="Calendar identifier of the target calendar where the event is to be moved to")})
-    private String destination;
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "delete", description="Event identifier"), @ApiMethod(methodName = "get", description="Event identifier"), @ApiMethod(methodName = "instances", description="Recurring event identifier"), @ApiMethod(methodName = "move", description="Event identifier"), @ApiMethod(methodName = "patch", description="Event identifier"), @ApiMethod(methodName = "update", description="Event identifier")})
-    private String eventId;
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "quickAdd", description="The text describing the event to be created")})
-    private String text;
-
-    public String getCalendarId() {
-        return calendarId;
-    }
-
-    public void setCalendarId(String calendarId) {
-        this.calendarId = calendarId;
-    }
-
-    public com.google.api.services.calendar.model.Event getContent() {
-        return content;
-    }
-
-    public void setContent(com.google.api.services.calendar.model.Event content) {
-        this.content = content;
-    }
-
-    public com.google.api.services.calendar.model.Channel getContentChannel() {
-        return contentChannel;
-    }
-
-    public void setContentChannel(com.google.api.services.calendar.model.Channel contentChannel) {
-        this.contentChannel = contentChannel;
-    }
-
-    public String getDestination() {
-        return destination;
-    }
-
-    public void setDestination(String destination) {
-        this.destination = destination;
-    }
-
-    public String getEventId() {
-        return eventId;
-    }
-
-    public void setEventId(String eventId) {
-        this.eventId = eventId;
-    }
-
-    public String getText() {
-        return text;
-    }
-
-    public void setText(String text) {
-        this.text = text;
-    }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfigurationConfigurer.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfigurationConfigurer.java
deleted file mode 100644
index 149ff8b..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarEventsEndpointConfigurationConfigurer.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class CalendarEventsEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
-
-    private static final Map<String, Object> ALL_OPTIONS;
-    static {
-        Map<String, Object> map = new CaseInsensitiveMap();
-        map.put("AccessToken", java.lang.String.class);
-        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
-        map.put("ApplicationName", java.lang.String.class);
-        map.put("CalendarId", java.lang.String.class);
-        map.put("ClientId", java.lang.String.class);
-        map.put("ClientSecret", java.lang.String.class);
-        map.put("Content", com.google.api.services.calendar.model.Event.class);
-        map.put("ContentChannel", com.google.api.services.calendar.model.Channel.class);
-        map.put("Destination", java.lang.String.class);
-        map.put("EmailAddress", java.lang.String.class);
-        map.put("EventId", java.lang.String.class);
-        map.put("MethodName", java.lang.String.class);
-        map.put("P12FileName", java.lang.String.class);
-        map.put("RefreshToken", java.lang.String.class);
-        map.put("Scopes", java.lang.String.class);
-        map.put("Text", java.lang.String.class);
-        map.put("User", java.lang.String.class);
-        ALL_OPTIONS = map;
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "apiname":
-        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
-        case "applicationname":
-        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
-        case "calendarid":
-        case "CalendarId": target.setCalendarId(property(camelContext, java.lang.String.class, value)); return true;
-        case "clientid":
-        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 "content":
-        case "Content": target.setContent(property(camelContext, com.google.api.services.calendar.model.Event.class, value)); return true;
-        case "contentchannel":
-        case "ContentChannel": target.setContentChannel(property(camelContext, com.google.api.services.calendar.model.Channel.class, value)); return true;
-        case "destination":
-        case "Destination": target.setDestination(property(camelContext, java.lang.String.class, value)); return true;
-        case "emailaddress":
-        case "EmailAddress": target.setEmailAddress(property(camelContext, java.lang.String.class, value)); return true;
-        case "eventid":
-        case "EventId": target.setEventId(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 "p12filename":
-        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
-        case "text":
-        case "Text": target.setText(property(camelContext, java.lang.String.class, value)); return true;
-        case "user":
-        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Map<String, Object> getAllOptions(Object target) {
-        return ALL_OPTIONS;
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return java.lang.String.class;
-        case "apiname":
-        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
-        case "applicationname":
-        case "ApplicationName": return java.lang.String.class;
-        case "calendarid":
-        case "CalendarId": return java.lang.String.class;
-        case "clientid":
-        case "ClientId": return java.lang.String.class;
-        case "clientsecret":
-        case "ClientSecret": return java.lang.String.class;
-        case "content":
-        case "Content": return com.google.api.services.calendar.model.Event.class;
-        case "contentchannel":
-        case "ContentChannel": return com.google.api.services.calendar.model.Channel.class;
-        case "destination":
-        case "Destination": return java.lang.String.class;
-        case "emailaddress":
-        case "EmailAddress": return java.lang.String.class;
-        case "eventid":
-        case "EventId": return java.lang.String.class;
-        case "methodname":
-        case "MethodName": return java.lang.String.class;
-        case "p12filename":
-        case "P12FileName": return java.lang.String.class;
-        case "refreshtoken":
-        case "RefreshToken": return java.lang.String.class;
-        case "scopes":
-        case "Scopes": return java.lang.String.class;
-        case "text":
-        case "Text": return java.lang.String.class;
-        case "user":
-        case "User": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return target.getAccessToken();
-        case "apiname":
-        case "ApiName": return target.getApiName();
-        case "applicationname":
-        case "ApplicationName": return target.getApplicationName();
-        case "calendarid":
-        case "CalendarId": return target.getCalendarId();
-        case "clientid":
-        case "ClientId": return target.getClientId();
-        case "clientsecret":
-        case "ClientSecret": return target.getClientSecret();
-        case "content":
-        case "Content": return target.getContent();
-        case "contentchannel":
-        case "ContentChannel": return target.getContentChannel();
-        case "destination":
-        case "Destination": return target.getDestination();
-        case "emailaddress":
-        case "EmailAddress": return target.getEmailAddress();
-        case "eventid":
-        case "EventId": return target.getEventId();
-        case "methodname":
-        case "MethodName": return target.getMethodName();
-        case "p12filename":
-        case "P12FileName": return target.getP12FileName();
-        case "refreshtoken":
-        case "RefreshToken": return target.getRefreshToken();
-        case "scopes":
-        case "Scopes": return target.getScopes();
-        case "text":
-        case "Text": return target.getText();
-        case "user":
-        case "User": return target.getUser();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfiguration.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfiguration.java
deleted file mode 100644
index 333c5f2..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfiguration.java
+++ /dev/null
@@ -1,34 +0,0 @@
-
-/*
- * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar;
-
-import org.apache.camel.spi.ApiMethod;
-import org.apache.camel.spi.ApiParam;
-import org.apache.camel.spi.ApiParams;
-import org.apache.camel.spi.Configurer;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-
-/**
- * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Freebusy}.
- */
-@ApiParams(apiName = "freebusy", 
-           description = "The freebusy collection of methods",
-           apiMethods = {@ApiMethod(methodName = "query", description="Returns free/busy information for a set of calendars", signatures={"com.google.api.services.calendar.Calendar$Freebusy$Query query(com.google.api.services.calendar.model.FreeBusyRequest content)"})}, aliases = {})
-@UriParams
-@Configurer(extended = true)
-public final class CalendarFreebusyEndpointConfiguration extends GoogleCalendarConfiguration {
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "query", description="The com.google.api.services.calendar.model.FreeBusyRequest")})
-    private com.google.api.services.calendar.model.FreeBusyRequest content;
-
-    public com.google.api.services.calendar.model.FreeBusyRequest getContent() {
-        return content;
-    }
-
-    public void setContent(com.google.api.services.calendar.model.FreeBusyRequest content) {
-        this.content = content;
-    }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfigurationConfigurer.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfigurationConfigurer.java
deleted file mode 100644
index 098a65c..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarFreebusyEndpointConfigurationConfigurer.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class CalendarFreebusyEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
-
-    private static final Map<String, Object> ALL_OPTIONS;
-    static {
-        Map<String, Object> map = new CaseInsensitiveMap();
-        map.put("AccessToken", java.lang.String.class);
-        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
-        map.put("ApplicationName", java.lang.String.class);
-        map.put("ClientId", java.lang.String.class);
-        map.put("ClientSecret", java.lang.String.class);
-        map.put("Content", com.google.api.services.calendar.model.FreeBusyRequest.class);
-        map.put("EmailAddress", java.lang.String.class);
-        map.put("MethodName", java.lang.String.class);
-        map.put("P12FileName", java.lang.String.class);
-        map.put("RefreshToken", java.lang.String.class);
-        map.put("Scopes", java.lang.String.class);
-        map.put("User", java.lang.String.class);
-        ALL_OPTIONS = map;
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "apiname":
-        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
-        case "applicationname":
-        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
-        case "clientid":
-        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 "content":
-        case "Content": target.setContent(property(camelContext, com.google.api.services.calendar.model.FreeBusyRequest.class, value)); return true;
-        case "emailaddress":
-        case "EmailAddress": target.setEmailAddress(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 "p12filename":
-        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
-        case "user":
-        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Map<String, Object> getAllOptions(Object target) {
-        return ALL_OPTIONS;
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return java.lang.String.class;
-        case "apiname":
-        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
-        case "applicationname":
-        case "ApplicationName": return java.lang.String.class;
-        case "clientid":
-        case "ClientId": return java.lang.String.class;
-        case "clientsecret":
-        case "ClientSecret": return java.lang.String.class;
-        case "content":
-        case "Content": return com.google.api.services.calendar.model.FreeBusyRequest.class;
-        case "emailaddress":
-        case "EmailAddress": return java.lang.String.class;
-        case "methodname":
-        case "MethodName": return java.lang.String.class;
-        case "p12filename":
-        case "P12FileName": return java.lang.String.class;
-        case "refreshtoken":
-        case "RefreshToken": return java.lang.String.class;
-        case "scopes":
-        case "Scopes": return java.lang.String.class;
-        case "user":
-        case "User": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return target.getAccessToken();
-        case "apiname":
-        case "ApiName": return target.getApiName();
-        case "applicationname":
-        case "ApplicationName": return target.getApplicationName();
-        case "clientid":
-        case "ClientId": return target.getClientId();
-        case "clientsecret":
-        case "ClientSecret": return target.getClientSecret();
-        case "content":
-        case "Content": return target.getContent();
-        case "emailaddress":
-        case "EmailAddress": return target.getEmailAddress();
-        case "methodname":
-        case "MethodName": return target.getMethodName();
-        case "p12filename":
-        case "P12FileName": return target.getP12FileName();
-        case "refreshtoken":
-        case "RefreshToken": return target.getRefreshToken();
-        case "scopes":
-        case "Scopes": return target.getScopes();
-        case "user":
-        case "User": return target.getUser();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfiguration.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfiguration.java
deleted file mode 100644
index fd5c781..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfiguration.java
+++ /dev/null
@@ -1,45 +0,0 @@
-
-/*
- * Camel EndpointConfiguration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar;
-
-import org.apache.camel.spi.ApiMethod;
-import org.apache.camel.spi.ApiParam;
-import org.apache.camel.spi.ApiParams;
-import org.apache.camel.spi.Configurer;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-
-/**
- * Camel endpoint configuration for {@link com.google.api.services.calendar.Calendar.Settings}.
- */
-@ApiParams(apiName = "settings", 
-           description = "The settings collection of methods",
-           apiMethods = {@ApiMethod(methodName = "get", description="Returns a single user setting", signatures={"com.google.api.services.calendar.Calendar$Settings$Get get(String setting)"}), @ApiMethod(methodName = "list", description="Returns all user settings for the authenticated user", signatures={"com.google.api.services.calendar.Calendar$Settings$List list()"}), @ApiMethod(methodName = "watch", description="Watch for changes to Settings resources", signatures={"com.google.api.ser [...]
-@UriParams
-@Configurer(extended = true)
-public final class CalendarSettingsEndpointConfiguration extends GoogleCalendarConfiguration {
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "watch", description="The com.google.api.services.calendar.model.Channel")})
-    private com.google.api.services.calendar.model.Channel contentChannel;
-    @UriParam
-    @ApiParam(optional = false, apiMethods = {@ApiMethod(methodName = "get", description="The id of the user setting")})
-    private String setting;
-
-    public com.google.api.services.calendar.model.Channel getContentChannel() {
-        return contentChannel;
-    }
-
-    public void setContentChannel(com.google.api.services.calendar.model.Channel contentChannel) {
-        this.contentChannel = contentChannel;
-    }
-
-    public String getSetting() {
-        return setting;
-    }
-
-    public void setSetting(String setting) {
-        this.setting = setting;
-    }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfigurationConfigurer.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfigurationConfigurer.java
deleted file mode 100644
index 02cba0d..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/CalendarSettingsEndpointConfigurationConfigurer.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class CalendarSettingsEndpointConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
-
-    private static final Map<String, Object> ALL_OPTIONS;
-    static {
-        Map<String, Object> map = new CaseInsensitiveMap();
-        map.put("AccessToken", java.lang.String.class);
-        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
-        map.put("ApplicationName", java.lang.String.class);
-        map.put("ClientId", java.lang.String.class);
-        map.put("ClientSecret", java.lang.String.class);
-        map.put("ContentChannel", com.google.api.services.calendar.model.Channel.class);
-        map.put("EmailAddress", java.lang.String.class);
-        map.put("MethodName", java.lang.String.class);
-        map.put("P12FileName", java.lang.String.class);
-        map.put("RefreshToken", java.lang.String.class);
-        map.put("Scopes", java.lang.String.class);
-        map.put("Setting", java.lang.String.class);
-        map.put("User", java.lang.String.class);
-        ALL_OPTIONS = map;
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "apiname":
-        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
-        case "applicationname":
-        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
-        case "clientid":
-        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 "contentchannel":
-        case "ContentChannel": target.setContentChannel(property(camelContext, com.google.api.services.calendar.model.Channel.class, value)); return true;
-        case "emailaddress":
-        case "EmailAddress": target.setEmailAddress(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 "p12filename":
-        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
-        case "setting":
-        case "Setting": target.setSetting(property(camelContext, java.lang.String.class, value)); return true;
-        case "user":
-        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Map<String, Object> getAllOptions(Object target) {
-        return ALL_OPTIONS;
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return java.lang.String.class;
-        case "apiname":
-        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
-        case "applicationname":
-        case "ApplicationName": return java.lang.String.class;
-        case "clientid":
-        case "ClientId": return java.lang.String.class;
-        case "clientsecret":
-        case "ClientSecret": return java.lang.String.class;
-        case "contentchannel":
-        case "ContentChannel": return com.google.api.services.calendar.model.Channel.class;
-        case "emailaddress":
-        case "EmailAddress": return java.lang.String.class;
-        case "methodname":
-        case "MethodName": return java.lang.String.class;
-        case "p12filename":
-        case "P12FileName": return java.lang.String.class;
-        case "refreshtoken":
-        case "RefreshToken": return java.lang.String.class;
-        case "scopes":
-        case "Scopes": return java.lang.String.class;
-        case "setting":
-        case "Setting": return java.lang.String.class;
-        case "user":
-        case "User": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration target = (org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return target.getAccessToken();
-        case "apiname":
-        case "ApiName": return target.getApiName();
-        case "applicationname":
-        case "ApplicationName": return target.getApplicationName();
-        case "clientid":
-        case "ClientId": return target.getClientId();
-        case "clientsecret":
-        case "ClientSecret": return target.getClientSecret();
-        case "contentchannel":
-        case "ContentChannel": return target.getContentChannel();
-        case "emailaddress":
-        case "EmailAddress": return target.getEmailAddress();
-        case "methodname":
-        case "MethodName": return target.getMethodName();
-        case "p12filename":
-        case "P12FileName": return target.getP12FileName();
-        case "refreshtoken":
-        case "RefreshToken": return target.getRefreshToken();
-        case "scopes":
-        case "Scopes": return target.getScopes();
-        case "setting":
-        case "Setting": return target.getSetting();
-        case "user":
-        case "User": return target.getUser();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarComponentConfigurer.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarComponentConfigurer.java
deleted file mode 100644
index 465a53f..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarComponentConfigurer.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.support.component.PropertyConfigurerSupport;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class GoogleCalendarComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
-
-    private static final Map<String, Object> ALL_OPTIONS;
-    static {
-        Map<String, Object> map = new CaseInsensitiveMap();
-        map.put("applicationName", java.lang.String.class);
-        map.put("clientId", java.lang.String.class);
-        map.put("configuration", org.apache.camel.component.google.calendar.GoogleCalendarConfiguration.class);
-        map.put("scopes", java.lang.String.class);
-        map.put("bridgeErrorHandler", boolean.class);
-        map.put("lazyStartProducer", boolean.class);
-        map.put("autowiredEnabled", boolean.class);
-        map.put("clientFactory", org.apache.camel.component.google.calendar.GoogleCalendarClientFactory.class);
-        map.put("accessToken", java.lang.String.class);
-        map.put("clientSecret", java.lang.String.class);
-        map.put("emailAddress", java.lang.String.class);
-        map.put("p12FileName", java.lang.String.class);
-        map.put("refreshToken", java.lang.String.class);
-        map.put("user", java.lang.String.class);
-        ALL_OPTIONS = map;
-    }
-
-    private org.apache.camel.component.google.calendar.GoogleCalendarConfiguration getOrCreateConfiguration(GoogleCalendarComponent target) {
-        if (target.getConfiguration() == null) {
-            target.setConfiguration(new org.apache.camel.component.google.calendar.GoogleCalendarConfiguration());
-        }
-        return target.getConfiguration();
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        GoogleCalendarComponent target = (GoogleCalendarComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "accessToken": getOrCreateConfiguration(target).setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "applicationname":
-        case "applicationName": getOrCreateConfiguration(target).setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
-        case "autowiredenabled":
-        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "clientfactory":
-        case "clientFactory": target.setClientFactory(property(camelContext, org.apache.camel.component.google.calendar.GoogleCalendarClientFactory.class, value)); return true;
-        case "clientid":
-        case "clientId": getOrCreateConfiguration(target).setClientId(property(camelContext, java.lang.String.class, value)); return true;
-        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.calendar.GoogleCalendarConfiguration.class, value)); return true;
-        case "emailaddress":
-        case "emailAddress": getOrCreateConfiguration(target).setEmailAddress(property(camelContext, java.lang.String.class, value)); return true;
-        case "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        case "p12filename":
-        case "p12FileName": getOrCreateConfiguration(target).setP12FileName(property(camelContext, java.lang.String.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.lang.String.class, value)); return true;
-        case "user": getOrCreateConfiguration(target).setUser(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Map<String, Object> getAllOptions(Object target) {
-        return ALL_OPTIONS;
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "accessToken": return java.lang.String.class;
-        case "applicationname":
-        case "applicationName": return java.lang.String.class;
-        case "autowiredenabled":
-        case "autowiredEnabled": return boolean.class;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "clientfactory":
-        case "clientFactory": return org.apache.camel.component.google.calendar.GoogleCalendarClientFactory.class;
-        case "clientid":
-        case "clientId": return java.lang.String.class;
-        case "clientsecret":
-        case "clientSecret": return java.lang.String.class;
-        case "configuration": return org.apache.camel.component.google.calendar.GoogleCalendarConfiguration.class;
-        case "emailaddress":
-        case "emailAddress": return java.lang.String.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        case "p12filename":
-        case "p12FileName": return java.lang.String.class;
-        case "refreshtoken":
-        case "refreshToken": return java.lang.String.class;
-        case "scopes": return java.lang.String.class;
-        case "user": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        GoogleCalendarComponent target = (GoogleCalendarComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "accessToken": return getOrCreateConfiguration(target).getAccessToken();
-        case "applicationname":
-        case "applicationName": return getOrCreateConfiguration(target).getApplicationName();
-        case "autowiredenabled":
-        case "autowiredEnabled": return target.isAutowiredEnabled();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "clientfactory":
-        case "clientFactory": return target.getClientFactory();
-        case "clientid":
-        case "clientId": return getOrCreateConfiguration(target).getClientId();
-        case "clientsecret":
-        case "clientSecret": return getOrCreateConfiguration(target).getClientSecret();
-        case "configuration": return target.getConfiguration();
-        case "emailaddress":
-        case "emailAddress": return getOrCreateConfiguration(target).getEmailAddress();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        case "p12filename":
-        case "p12FileName": return getOrCreateConfiguration(target).getP12FileName();
-        case "refreshtoken":
-        case "refreshToken": return getOrCreateConfiguration(target).getRefreshToken();
-        case "scopes": return getOrCreateConfiguration(target).getScopes();
-        case "user": return getOrCreateConfiguration(target).getUser();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarConfigurationConfigurer.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarConfigurationConfigurer.java
deleted file mode 100644
index 52ff68e..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarConfigurationConfigurer.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.component.google.calendar.GoogleCalendarConfiguration;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class GoogleCalendarConfigurationConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
-
-    private static final Map<String, Object> ALL_OPTIONS;
-    static {
-        Map<String, Object> map = new CaseInsensitiveMap();
-        map.put("AccessToken", java.lang.String.class);
-        map.put("ApiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
-        map.put("ApplicationName", java.lang.String.class);
-        map.put("ClientId", java.lang.String.class);
-        map.put("ClientSecret", java.lang.String.class);
-        map.put("EmailAddress", java.lang.String.class);
-        map.put("MethodName", java.lang.String.class);
-        map.put("P12FileName", java.lang.String.class);
-        map.put("RefreshToken", java.lang.String.class);
-        map.put("Scopes", java.lang.String.class);
-        map.put("User", java.lang.String.class);
-        ALL_OPTIONS = map;
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.GoogleCalendarConfiguration target = (org.apache.camel.component.google.calendar.GoogleCalendarConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": target.setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "apiname":
-        case "ApiName": target.setApiName(property(camelContext, org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class, value)); return true;
-        case "applicationname":
-        case "ApplicationName": target.setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
-        case "clientid":
-        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 "emailaddress":
-        case "EmailAddress": target.setEmailAddress(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 "p12filename":
-        case "P12FileName": target.setP12FileName(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.lang.String.class, value)); return true;
-        case "user":
-        case "User": target.setUser(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Map<String, Object> getAllOptions(Object target) {
-        return ALL_OPTIONS;
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return java.lang.String.class;
-        case "apiname":
-        case "ApiName": return org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class;
-        case "applicationname":
-        case "ApplicationName": return java.lang.String.class;
-        case "clientid":
-        case "ClientId": return java.lang.String.class;
-        case "clientsecret":
-        case "ClientSecret": return java.lang.String.class;
-        case "emailaddress":
-        case "EmailAddress": return java.lang.String.class;
-        case "methodname":
-        case "MethodName": return java.lang.String.class;
-        case "p12filename":
-        case "P12FileName": return java.lang.String.class;
-        case "refreshtoken":
-        case "RefreshToken": return java.lang.String.class;
-        case "scopes":
-        case "Scopes": return java.lang.String.class;
-        case "user":
-        case "User": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.component.google.calendar.GoogleCalendarConfiguration target = (org.apache.camel.component.google.calendar.GoogleCalendarConfiguration) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "AccessToken": return target.getAccessToken();
-        case "apiname":
-        case "ApiName": return target.getApiName();
-        case "applicationname":
-        case "ApplicationName": return target.getApplicationName();
-        case "clientid":
-        case "ClientId": return target.getClientId();
-        case "clientsecret":
-        case "ClientSecret": return target.getClientSecret();
-        case "emailaddress":
-        case "EmailAddress": return target.getEmailAddress();
-        case "methodname":
-        case "MethodName": return target.getMethodName();
-        case "p12filename":
-        case "P12FileName": return target.getP12FileName();
-        case "refreshtoken":
-        case "RefreshToken": return target.getRefreshToken();
-        case "scopes":
-        case "Scopes": return target.getScopes();
-        case "user":
-        case "User": return target.getUser();
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointConfigurer.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointConfigurer.java
deleted file mode 100644
index a60d053..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointConfigurer.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.support.component.PropertyConfigurerSupport;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class GoogleCalendarEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
-
-    private static final Map<String, Object> ALL_OPTIONS;
-    static {
-        Map<String, Object> map = new CaseInsensitiveMap();
-        map.put("apiName", org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName.class);
-        map.put("methodName", java.lang.String.class);
-        map.put("applicationName", java.lang.String.class);
-        map.put("clientId", java.lang.String.class);
-        map.put("inBody", java.lang.String.class);
-        map.put("scopes", java.lang.String.class);
-        map.put("bridgeErrorHandler", boolean.class);
-        map.put("sendEmptyMessageWhenIdle", boolean.class);
-        map.put("exceptionHandler", org.apache.camel.spi.ExceptionHandler.class);
-        map.put("exchangePattern", org.apache.camel.ExchangePattern.class);
-        map.put("pollStrategy", org.apache.camel.spi.PollingConsumerPollStrategy.class);
-        map.put("lazyStartProducer", boolean.class);
-        map.put("backoffErrorThreshold", int.class);
-        map.put("backoffIdleThreshold", int.class);
-        map.put("backoffMultiplier", int.class);
-        map.put("delay", long.class);
-        map.put("greedy", boolean.class);
-        map.put("initialDelay", long.class);
-        map.put("repeatCount", long.class);
-        map.put("runLoggingLevel", org.apache.camel.LoggingLevel.class);
-        map.put("scheduledExecutorService", java.util.concurrent.ScheduledExecutorService.class);
-        map.put("scheduler", java.lang.Object.class);
-        map.put("schedulerProperties", java.util.Map.class);
-        map.put("startScheduler", boolean.class);
-        map.put("timeUnit", java.util.concurrent.TimeUnit.class);
-        map.put("useFixedDelay", boolean.class);
-        map.put("accessToken", java.lang.String.class);
-        map.put("clientSecret", java.lang.String.class);
-        map.put("emailAddress", java.lang.String.class);
-        map.put("p12FileName", java.lang.String.class);
-        map.put("refreshToken", java.lang.String.class);
-        map.put("user", java.lang.String.class);
-        ALL_OPTIONS = map;
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        GoogleCalendarEndpoint target = (GoogleCalendarEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "accessToken": target.getConfiguration().setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "applicationname":
-        case "applicationName": target.getConfiguration().setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
-        case "backofferrorthreshold":
-        case "backoffErrorThreshold": target.setBackoffErrorThreshold(property(camelContext, int.class, value)); return true;
-        case "backoffidlethreshold":
-        case "backoffIdleThreshold": target.setBackoffIdleThreshold(property(camelContext, int.class, value)); return true;
-        case "backoffmultiplier":
-        case "backoffMultiplier": target.setBackoffMultiplier(property(camelContext, int.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "clientid":
-        case "clientId": target.getConfiguration().setClientId(property(camelContext, java.lang.String.class, value)); return true;
-        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 "emailaddress":
-        case "emailAddress": target.getConfiguration().setEmailAddress(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":
-        case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true;
-        case "greedy": target.setGreedy(property(camelContext, boolean.class, value)); return true;
-        case "inbody":
-        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 "lazystartproducer":
-        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
-        case "p12filename":
-        case "p12FileName": target.getConfiguration().setP12FileName(property(camelContext, java.lang.String.class, value)); return true;
-        case "pollstrategy":
-        case "pollStrategy": target.setPollStrategy(property(camelContext, org.apache.camel.spi.PollingConsumerPollStrategy.class, value)); return true;
-        case "refreshtoken":
-        case "refreshToken": target.getConfiguration().setRefreshToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "repeatcount":
-        case "repeatCount": target.setRepeatCount(property(camelContext, long.class, value)); return true;
-        case "runlogginglevel":
-        case "runLoggingLevel": target.setRunLoggingLevel(property(camelContext, org.apache.camel.LoggingLevel.class, value)); return true;
-        case "scheduledexecutorservice":
-        case "scheduledExecutorService": target.setScheduledExecutorService(property(camelContext, java.util.concurrent.ScheduledExecutorService.class, value)); return true;
-        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.lang.String.class, value)); return true;
-        case "sendemptymessagewhenidle":
-        case "sendEmptyMessageWhenIdle": target.setSendEmptyMessageWhenIdle(property(camelContext, boolean.class, value)); return true;
-        case "startscheduler":
-        case "startScheduler": target.setStartScheduler(property(camelContext, boolean.class, value)); return true;
-        case "timeunit":
-        case "timeUnit": target.setTimeUnit(property(camelContext, java.util.concurrent.TimeUnit.class, value)); return true;
-        case "usefixeddelay":
-        case "useFixedDelay": target.setUseFixedDelay(property(camelContext, boolean.class, value)); return true;
-        case "user": target.getConfiguration().setUser(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Map<String, Object> getAllOptions(Object target) {
-        return ALL_OPTIONS;
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "accessToken": return java.lang.String.class;
-        case "applicationname":
-        case "applicationName": return java.lang.String.class;
-        case "backofferrorthreshold":
-        case "backoffErrorThreshold": return int.class;
-        case "backoffidlethreshold":
-        case "backoffIdleThreshold": return int.class;
-        case "backoffmultiplier":
-        case "backoffMultiplier": return int.class;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "clientid":
-        case "clientId": return java.lang.String.class;
-        case "clientsecret":
-        case "clientSecret": return java.lang.String.class;
-        case "delay": return long.class;
-        case "emailaddress":
-        case "emailAddress": return java.lang.String.class;
-        case "exceptionhandler":
-        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
-        case "exchangepattern":
-        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
-        case "greedy": return boolean.class;
-        case "inbody":
-        case "inBody": return java.lang.String.class;
-        case "initialdelay":
-        case "initialDelay": return long.class;
-        case "lazystartproducer":
-        case "lazyStartProducer": return boolean.class;
-        case "p12filename":
-        case "p12FileName": return java.lang.String.class;
-        case "pollstrategy":
-        case "pollStrategy": return org.apache.camel.spi.PollingConsumerPollStrategy.class;
-        case "refreshtoken":
-        case "refreshToken": return java.lang.String.class;
-        case "repeatcount":
-        case "repeatCount": return long.class;
-        case "runlogginglevel":
-        case "runLoggingLevel": return org.apache.camel.LoggingLevel.class;
-        case "scheduledexecutorservice":
-        case "scheduledExecutorService": return java.util.concurrent.ScheduledExecutorService.class;
-        case "scheduler": return java.lang.Object.class;
-        case "schedulerproperties":
-        case "schedulerProperties": return java.util.Map.class;
-        case "scopes": return java.lang.String.class;
-        case "sendemptymessagewhenidle":
-        case "sendEmptyMessageWhenIdle": return boolean.class;
-        case "startscheduler":
-        case "startScheduler": return boolean.class;
-        case "timeunit":
-        case "timeUnit": return java.util.concurrent.TimeUnit.class;
-        case "usefixeddelay":
-        case "useFixedDelay": return boolean.class;
-        case "user": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        GoogleCalendarEndpoint target = (GoogleCalendarEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "accessToken": return target.getConfiguration().getAccessToken();
-        case "applicationname":
-        case "applicationName": return target.getConfiguration().getApplicationName();
-        case "backofferrorthreshold":
-        case "backoffErrorThreshold": return target.getBackoffErrorThreshold();
-        case "backoffidlethreshold":
-        case "backoffIdleThreshold": return target.getBackoffIdleThreshold();
-        case "backoffmultiplier":
-        case "backoffMultiplier": return target.getBackoffMultiplier();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "clientid":
-        case "clientId": return target.getConfiguration().getClientId();
-        case "clientsecret":
-        case "clientSecret": return target.getConfiguration().getClientSecret();
-        case "delay": return target.getDelay();
-        case "emailaddress":
-        case "emailAddress": return target.getConfiguration().getEmailAddress();
-        case "exceptionhandler":
-        case "exceptionHandler": return target.getExceptionHandler();
-        case "exchangepattern":
-        case "exchangePattern": return target.getExchangePattern();
-        case "greedy": return target.isGreedy();
-        case "inbody":
-        case "inBody": return target.getInBody();
-        case "initialdelay":
-        case "initialDelay": return target.getInitialDelay();
-        case "lazystartproducer":
-        case "lazyStartProducer": return target.isLazyStartProducer();
-        case "p12filename":
-        case "p12FileName": return target.getConfiguration().getP12FileName();
-        case "pollstrategy":
-        case "pollStrategy": return target.getPollStrategy();
-        case "refreshtoken":
-        case "refreshToken": return target.getConfiguration().getRefreshToken();
-        case "repeatcount":
-        case "repeatCount": return target.getRepeatCount();
-        case "runlogginglevel":
-        case "runLoggingLevel": return target.getRunLoggingLevel();
-        case "scheduledexecutorservice":
-        case "scheduledExecutorService": return target.getScheduledExecutorService();
-        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":
-        case "startScheduler": return target.isStartScheduler();
-        case "timeunit":
-        case "timeUnit": return target.getTimeUnit();
-        case "usefixeddelay":
-        case "useFixedDelay": return target.isUseFixedDelay();
-        case "user": return target.getConfiguration().getUser();
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "schedulerproperties":
-        case "schedulerProperties": return java.lang.Object.class;
-        default: return null;
-        }
-    }
-}
-
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointUriFactory.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointUriFactory.java
deleted file mode 100644
index 8137d11..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpointUriFactory.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar;
-
-import java.net.URISyntaxException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.camel.spi.EndpointUriFactory;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-public class GoogleCalendarEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
-
-    private static final String BASE = ":apiName/methodName";
-
-    private static final Set<String> PROPERTY_NAMES;
-    private static final Set<String> SECRET_PROPERTY_NAMES;
-    static {
-        Set<String> props = new HashSet<>(40);
-        props.add("backoffMultiplier");
-        props.add("apiName");
-        props.add("destination");
-        props.add("initialDelay");
-        props.add("content");
-        props.add("setting");
-        props.add("scheduler");
-        props.add("emailAddress");
-        props.add("bridgeErrorHandler");
-        props.add("useFixedDelay");
-        props.add("runLoggingLevel");
-        props.add("backoffErrorThreshold");
-        props.add("greedy");
-        props.add("clientSecret");
-        props.add("text");
-        props.add("scheduledExecutorService");
-        props.add("ruleId");
-        props.add("applicationName");
-        props.add("repeatCount");
-        props.add("timeUnit");
-        props.add("eventId");
-        props.add("p12FileName");
-        props.add("clientId");
-        props.add("sendEmptyMessageWhenIdle");
-        props.add("schedulerProperties");
-        props.add("exchangePattern");
-        props.add("methodName");
-        props.add("accessToken");
-        props.add("backoffIdleThreshold");
-        props.add("lazyStartProducer");
-        props.add("contentChannel");
-        props.add("delay");
-        props.add("pollStrategy");
-        props.add("calendarId");
-        props.add("startScheduler");
-        props.add("scopes");
-        props.add("inBody");
-        props.add("exceptionHandler");
-        props.add("user");
-        props.add("refreshToken");
-        PROPERTY_NAMES = Collections.unmodifiableSet(props);
-        Set<String> secretProps = new HashSet<>(6);
-        secretProps.add("emailAddress");
-        secretProps.add("p12FileName");
-        secretProps.add("clientSecret");
-        secretProps.add("accessToken");
-        secretProps.add("user");
-        secretProps.add("refreshToken");
-        SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
-    }
-
-    @Override
-    public boolean isEnabled(String scheme) {
-        return "google-calendar".equals(scheme);
-    }
-
-    @Override
-    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
-        String syntax = scheme + BASE;
-        String uri = syntax;
-
-        Map<String, Object> copy = new HashMap<>(properties);
-
-        uri = buildPathParameter(syntax, uri, "apiName", null, true, copy);
-        uri = buildPathParameter(syntax, uri, "methodName", null, true, copy);
-        uri = buildQueryParameters(uri, copy, encode);
-        return uri;
-    }
-
-    @Override
-    public Set<String> propertyNames() {
-        return PROPERTY_NAMES;
-    }
-
-    @Override
-    public Set<String> secretPropertyNames() {
-        return SECRET_PROPERTY_NAMES;
-    }
-
-    @Override
-    public boolean isLenientProperties() {
-        return false;
-    }
-}
-
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarAclApiMethod.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarAclApiMethod.java
deleted file mode 100644
index de28b57..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarAclApiMethod.java
+++ /dev/null
@@ -1,86 +0,0 @@
-
-/*
- * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar.internal;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import com.google.api.services.calendar.Calendar.Acl;
-
-import org.apache.camel.support.component.ApiMethod;
-import org.apache.camel.support.component.ApiMethodArg;
-import org.apache.camel.support.component.ApiMethodImpl;
-
-import static org.apache.camel.support.component.ApiMethodArg.arg;
-
-/**
- * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Acl
- */
-public enum CalendarAclApiMethod implements ApiMethod {
-
-    DELETE(
-        com.google.api.services.calendar.Calendar.Acl.Delete.class,
-        "delete",
-        arg("calendarId", String.class),
-        arg("ruleId", String.class)),
-
-    GET(
-        com.google.api.services.calendar.Calendar.Acl.Get.class,
-        "get",
-        arg("calendarId", String.class),
-        arg("ruleId", String.class)),
-
-    INSERT(
-        com.google.api.services.calendar.Calendar.Acl.Insert.class,
-        "insert",
-        arg("calendarId", String.class),
-        arg("content", com.google.api.services.calendar.model.AclRule.class)),
-
-    LIST(
-        com.google.api.services.calendar.Calendar.Acl.List.class,
-        "list",
-        arg("calendarId", String.class)),
-
-    PATCH(
-        com.google.api.services.calendar.Calendar.Acl.Patch.class,
-        "patch",
-        arg("calendarId", String.class),
-        arg("ruleId", String.class),
-        arg("content", com.google.api.services.calendar.model.AclRule.class)),
-
-    UPDATE(
-        com.google.api.services.calendar.Calendar.Acl.Update.class,
-        "update",
-        arg("calendarId", String.class),
-        arg("ruleId", String.class),
-        arg("content", com.google.api.services.calendar.model.AclRule.class)),
-
-    WATCH(
-        com.google.api.services.calendar.Calendar.Acl.Watch.class,
-        "watch",
-        arg("calendarId", String.class),
-        arg("contentChannel", com.google.api.services.calendar.model.Channel.class));
-
-    private final ApiMethod apiMethod;
-
-    private CalendarAclApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
-        this.apiMethod = new ApiMethodImpl(Acl.class, resultType, name, args);
-    }
-
-    @Override
-    public String getName() { return apiMethod.getName(); }
-
-    @Override
-    public Class<?> getResultType() { return apiMethod.getResultType(); }
-
-    @Override
-    public List<String> getArgNames() { return apiMethod.getArgNames(); }
-
-    @Override
-    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
-
-    @Override
-    public Method getMethod() { return apiMethod.getMethod(); }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarListApiMethod.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarListApiMethod.java
deleted file mode 100644
index 040aea2..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarListApiMethod.java
+++ /dev/null
@@ -1,79 +0,0 @@
-
-/*
- * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar.internal;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import com.google.api.services.calendar.Calendar.CalendarList;
-
-import org.apache.camel.support.component.ApiMethod;
-import org.apache.camel.support.component.ApiMethodArg;
-import org.apache.camel.support.component.ApiMethodImpl;
-
-import static org.apache.camel.support.component.ApiMethodArg.arg;
-
-/**
- * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$CalendarList
- */
-public enum CalendarCalendarListApiMethod implements ApiMethod {
-
-    DELETE(
-        com.google.api.services.calendar.Calendar.CalendarList.Delete.class,
-        "delete",
-        arg("calendarId", String.class)),
-
-    GET(
-        com.google.api.services.calendar.Calendar.CalendarList.Get.class,
-        "get",
-        arg("calendarId", String.class)),
-
-    INSERT(
-        com.google.api.services.calendar.Calendar.CalendarList.Insert.class,
-        "insert",
-        arg("content", com.google.api.services.calendar.model.CalendarListEntry.class)),
-
-    LIST(
-        com.google.api.services.calendar.Calendar.CalendarList.List.class,
-        "list"),
-
-    PATCH(
-        com.google.api.services.calendar.Calendar.CalendarList.Patch.class,
-        "patch",
-        arg("calendarId", String.class),
-        arg("content", com.google.api.services.calendar.model.CalendarListEntry.class)),
-
-    UPDATE(
-        com.google.api.services.calendar.Calendar.CalendarList.Update.class,
-        "update",
-        arg("calendarId", String.class),
-        arg("content", com.google.api.services.calendar.model.CalendarListEntry.class)),
-
-    WATCH(
-        com.google.api.services.calendar.Calendar.CalendarList.Watch.class,
-        "watch",
-        arg("contentChannel", com.google.api.services.calendar.model.Channel.class));
-
-    private final ApiMethod apiMethod;
-
-    private CalendarCalendarListApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
-        this.apiMethod = new ApiMethodImpl(CalendarList.class, resultType, name, args);
-    }
-
-    @Override
-    public String getName() { return apiMethod.getName(); }
-
-    @Override
-    public Class<?> getResultType() { return apiMethod.getResultType(); }
-
-    @Override
-    public List<String> getArgNames() { return apiMethod.getArgNames(); }
-
-    @Override
-    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
-
-    @Override
-    public Method getMethod() { return apiMethod.getMethod(); }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarsApiMethod.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarsApiMethod.java
deleted file mode 100644
index 7ae2e38..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarCalendarsApiMethod.java
+++ /dev/null
@@ -1,75 +0,0 @@
-
-/*
- * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar.internal;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import com.google.api.services.calendar.Calendar.Calendars;
-
-import org.apache.camel.support.component.ApiMethod;
-import org.apache.camel.support.component.ApiMethodArg;
-import org.apache.camel.support.component.ApiMethodImpl;
-
-import static org.apache.camel.support.component.ApiMethodArg.arg;
-
-/**
- * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Calendars
- */
-public enum CalendarCalendarsApiMethod implements ApiMethod {
-
-    CLEAR(
-        com.google.api.services.calendar.Calendar.Calendars.Clear.class,
-        "clear",
-        arg("calendarId", String.class)),
-
-    DELETE(
-        com.google.api.services.calendar.Calendar.Calendars.Delete.class,
-        "delete",
-        arg("calendarId", String.class)),
-
-    GET(
-        com.google.api.services.calendar.Calendar.Calendars.Get.class,
-        "get",
-        arg("calendarId", String.class)),
-
-    INSERT(
-        com.google.api.services.calendar.Calendar.Calendars.Insert.class,
-        "insert",
-        arg("content", com.google.api.services.calendar.model.Calendar.class)),
-
-    PATCH(
-        com.google.api.services.calendar.Calendar.Calendars.Patch.class,
-        "patch",
-        arg("calendarId", String.class),
-        arg("content", com.google.api.services.calendar.model.Calendar.class)),
-
-    UPDATE(
-        com.google.api.services.calendar.Calendar.Calendars.Update.class,
-        "update",
-        arg("calendarId", String.class),
-        arg("content", com.google.api.services.calendar.model.Calendar.class));
-
-    private final ApiMethod apiMethod;
-
-    private CalendarCalendarsApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
-        this.apiMethod = new ApiMethodImpl(Calendars.class, resultType, name, args);
-    }
-
-    @Override
-    public String getName() { return apiMethod.getName(); }
-
-    @Override
-    public Class<?> getResultType() { return apiMethod.getResultType(); }
-
-    @Override
-    public List<String> getArgNames() { return apiMethod.getArgNames(); }
-
-    @Override
-    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
-
-    @Override
-    public Method getMethod() { return apiMethod.getMethod(); }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarChannelsApiMethod.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarChannelsApiMethod.java
deleted file mode 100644
index bfc8e03..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarChannelsApiMethod.java
+++ /dev/null
@@ -1,48 +0,0 @@
-
-/*
- * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar.internal;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import com.google.api.services.calendar.Calendar.Channels;
-
-import org.apache.camel.support.component.ApiMethod;
-import org.apache.camel.support.component.ApiMethodArg;
-import org.apache.camel.support.component.ApiMethodImpl;
-
-import static org.apache.camel.support.component.ApiMethodArg.arg;
-
-/**
- * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Channels
- */
-public enum CalendarChannelsApiMethod implements ApiMethod {
-
-    STOP(
-        com.google.api.services.calendar.Calendar.Channels.Stop.class,
-        "stop",
-        arg("contentChannel", com.google.api.services.calendar.model.Channel.class));
-
-    private final ApiMethod apiMethod;
-
-    private CalendarChannelsApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
-        this.apiMethod = new ApiMethodImpl(Channels.class, resultType, name, args);
-    }
-
-    @Override
-    public String getName() { return apiMethod.getName(); }
-
-    @Override
-    public Class<?> getResultType() { return apiMethod.getResultType(); }
-
-    @Override
-    public List<String> getArgNames() { return apiMethod.getArgNames(); }
-
-    @Override
-    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
-
-    @Override
-    public Method getMethod() { return apiMethod.getMethod(); }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarColorsApiMethod.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarColorsApiMethod.java
deleted file mode 100644
index 08e1887..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarColorsApiMethod.java
+++ /dev/null
@@ -1,47 +0,0 @@
-
-/*
- * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar.internal;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import com.google.api.services.calendar.Calendar.Colors;
-
-import org.apache.camel.support.component.ApiMethod;
-import org.apache.camel.support.component.ApiMethodArg;
-import org.apache.camel.support.component.ApiMethodImpl;
-
-import static org.apache.camel.support.component.ApiMethodArg.arg;
-
-/**
- * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Colors
- */
-public enum CalendarColorsApiMethod implements ApiMethod {
-
-    GET(
-        com.google.api.services.calendar.Calendar.Colors.Get.class,
-        "get");
-
-    private final ApiMethod apiMethod;
-
-    private CalendarColorsApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
-        this.apiMethod = new ApiMethodImpl(Colors.class, resultType, name, args);
-    }
-
-    @Override
-    public String getName() { return apiMethod.getName(); }
-
-    @Override
-    public Class<?> getResultType() { return apiMethod.getResultType(); }
-
-    @Override
-    public List<String> getArgNames() { return apiMethod.getArgNames(); }
-
-    @Override
-    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
-
-    @Override
-    public Method getMethod() { return apiMethod.getMethod(); }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarEventsApiMethod.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarEventsApiMethod.java
deleted file mode 100644
index a45015b..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarEventsApiMethod.java
+++ /dev/null
@@ -1,111 +0,0 @@
-
-/*
- * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar.internal;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import com.google.api.services.calendar.Calendar.Events;
-
-import org.apache.camel.support.component.ApiMethod;
-import org.apache.camel.support.component.ApiMethodArg;
-import org.apache.camel.support.component.ApiMethodImpl;
-
-import static org.apache.camel.support.component.ApiMethodArg.arg;
-
-/**
- * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Events
- */
-public enum CalendarEventsApiMethod implements ApiMethod {
-
-    CALENDAR_IMPORT(
-        com.google.api.services.calendar.Calendar.Events.CalendarImport.class,
-        "calendarImport",
-        arg("calendarId", String.class),
-        arg("content", com.google.api.services.calendar.model.Event.class)),
-
-    DELETE(
-        com.google.api.services.calendar.Calendar.Events.Delete.class,
-        "delete",
-        arg("calendarId", String.class),
-        arg("eventId", String.class)),
-
-    GET(
-        com.google.api.services.calendar.Calendar.Events.Get.class,
-        "get",
-        arg("calendarId", String.class),
-        arg("eventId", String.class)),
-
-    INSERT(
-        com.google.api.services.calendar.Calendar.Events.Insert.class,
-        "insert",
-        arg("calendarId", String.class),
-        arg("content", com.google.api.services.calendar.model.Event.class)),
-
-    INSTANCES(
-        com.google.api.services.calendar.Calendar.Events.Instances.class,
-        "instances",
-        arg("calendarId", String.class),
-        arg("eventId", String.class)),
-
-    LIST(
-        com.google.api.services.calendar.Calendar.Events.List.class,
-        "list",
-        arg("calendarId", String.class)),
-
-    MOVE(
-        com.google.api.services.calendar.Calendar.Events.Move.class,
-        "move",
-        arg("calendarId", String.class),
-        arg("eventId", String.class),
-        arg("destination", String.class)),
-
-    PATCH(
-        com.google.api.services.calendar.Calendar.Events.Patch.class,
-        "patch",
-        arg("calendarId", String.class),
-        arg("eventId", String.class),
-        arg("content", com.google.api.services.calendar.model.Event.class)),
-
-    QUICK_ADD(
-        com.google.api.services.calendar.Calendar.Events.QuickAdd.class,
-        "quickAdd",
-        arg("calendarId", String.class),
-        arg("text", String.class)),
-
-    UPDATE(
-        com.google.api.services.calendar.Calendar.Events.Update.class,
-        "update",
-        arg("calendarId", String.class),
-        arg("eventId", String.class),
-        arg("content", com.google.api.services.calendar.model.Event.class)),
-
-    WATCH(
-        com.google.api.services.calendar.Calendar.Events.Watch.class,
-        "watch",
-        arg("calendarId", String.class),
-        arg("contentChannel", com.google.api.services.calendar.model.Channel.class));
-
-    private final ApiMethod apiMethod;
-
-    private CalendarEventsApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
-        this.apiMethod = new ApiMethodImpl(Events.class, resultType, name, args);
-    }
-
-    @Override
-    public String getName() { return apiMethod.getName(); }
-
-    @Override
-    public Class<?> getResultType() { return apiMethod.getResultType(); }
-
-    @Override
-    public List<String> getArgNames() { return apiMethod.getArgNames(); }
-
-    @Override
-    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
-
-    @Override
-    public Method getMethod() { return apiMethod.getMethod(); }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarFreebusyApiMethod.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarFreebusyApiMethod.java
deleted file mode 100644
index 9f803d7..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarFreebusyApiMethod.java
+++ /dev/null
@@ -1,48 +0,0 @@
-
-/*
- * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar.internal;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import com.google.api.services.calendar.Calendar.Freebusy;
-
-import org.apache.camel.support.component.ApiMethod;
-import org.apache.camel.support.component.ApiMethodArg;
-import org.apache.camel.support.component.ApiMethodImpl;
-
-import static org.apache.camel.support.component.ApiMethodArg.arg;
-
-/**
- * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Freebusy
- */
-public enum CalendarFreebusyApiMethod implements ApiMethod {
-
-    QUERY(
-        com.google.api.services.calendar.Calendar.Freebusy.Query.class,
-        "query",
-        arg("content", com.google.api.services.calendar.model.FreeBusyRequest.class));
-
-    private final ApiMethod apiMethod;
-
-    private CalendarFreebusyApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
-        this.apiMethod = new ApiMethodImpl(Freebusy.class, resultType, name, args);
-    }
-
-    @Override
-    public String getName() { return apiMethod.getName(); }
-
-    @Override
-    public Class<?> getResultType() { return apiMethod.getResultType(); }
-
-    @Override
-    public List<String> getArgNames() { return apiMethod.getArgNames(); }
-
-    @Override
-    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
-
-    @Override
-    public Method getMethod() { return apiMethod.getMethod(); }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarSettingsApiMethod.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarSettingsApiMethod.java
deleted file mode 100644
index 8efb2dd..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/CalendarSettingsApiMethod.java
+++ /dev/null
@@ -1,57 +0,0 @@
-
-/*
- * Camel ApiMethod Enumeration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar.internal;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import com.google.api.services.calendar.Calendar.Settings;
-
-import org.apache.camel.support.component.ApiMethod;
-import org.apache.camel.support.component.ApiMethodArg;
-import org.apache.camel.support.component.ApiMethodImpl;
-
-import static org.apache.camel.support.component.ApiMethodArg.arg;
-
-/**
- * Camel {@link ApiMethod} Enumeration for com.google.api.services.calendar.Calendar$Settings
- */
-public enum CalendarSettingsApiMethod implements ApiMethod {
-
-    GET(
-        com.google.api.services.calendar.Calendar.Settings.Get.class,
-        "get",
-        arg("setting", String.class)),
-
-    LIST(
-        com.google.api.services.calendar.Calendar.Settings.List.class,
-        "list"),
-
-    WATCH(
-        com.google.api.services.calendar.Calendar.Settings.Watch.class,
-        "watch",
-        arg("contentChannel", com.google.api.services.calendar.model.Channel.class));
-
-    private final ApiMethod apiMethod;
-
-    private CalendarSettingsApiMethod(Class<?> resultType, String name, ApiMethodArg... args) {
-        this.apiMethod = new ApiMethodImpl(Settings.class, resultType, name, args);
-    }
-
-    @Override
-    public String getName() { return apiMethod.getName(); }
-
-    @Override
-    public Class<?> getResultType() { return apiMethod.getResultType(); }
-
-    @Override
-    public List<String> getArgNames() { return apiMethod.getArgNames(); }
-
-    @Override
-    public List<Class<?>> getArgTypes() { return apiMethod.getArgTypes(); }
-
-    @Override
-    public Method getMethod() { return apiMethod.getMethod(); }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiCollection.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiCollection.java
deleted file mode 100644
index 47ea5ad..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiCollection.java
+++ /dev/null
@@ -1,122 +0,0 @@
-
-/*
- * Camel ApiCollection generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar.internal;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
-
-import org.apache.camel.component.google.calendar.GoogleCalendarConfiguration;
-import org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration;
-import org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration;
-import org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration;
-import org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration;
-import org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration;
-import org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration;
-import org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration;
-import org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration;
-
-import org.apache.camel.support.component.ApiCollection;
-import org.apache.camel.support.component.ApiMethod;
-import org.apache.camel.support.component.ApiMethodHelper;
-
-/**
- * Camel {@link ApiCollection} for GoogleCalendar
- */
-public final class GoogleCalendarApiCollection extends ApiCollection<GoogleCalendarApiName, GoogleCalendarConfiguration> {
-
-    private static GoogleCalendarApiCollection collection;
-
-    private GoogleCalendarApiCollection() {
-        final Map<String, String> aliases = new HashMap<String, String>();
-        final Map<GoogleCalendarApiName, ApiMethodHelper<? extends ApiMethod>> apiHelpers = new HashMap<>();
-        final Map<Class<? extends ApiMethod>, GoogleCalendarApiName> apiMethods = new HashMap<>();
-
-        List<String> nullableArgs;
-
-        aliases.clear();
-        nullableArgs = Arrays.asList();
-        apiHelpers.put(GoogleCalendarApiName.ACL, new ApiMethodHelper<CalendarAclApiMethod>(CalendarAclApiMethod.class, aliases, nullableArgs));
-        apiMethods.put(CalendarAclApiMethod.class, GoogleCalendarApiName.ACL);
-
-        aliases.clear();
-        nullableArgs = Arrays.asList();
-        apiHelpers.put(GoogleCalendarApiName.LIST, new ApiMethodHelper<CalendarCalendarListApiMethod>(CalendarCalendarListApiMethod.class, aliases, nullableArgs));
-        apiMethods.put(CalendarCalendarListApiMethod.class, GoogleCalendarApiName.LIST);
-
-        aliases.clear();
-        nullableArgs = Arrays.asList();
-        apiHelpers.put(GoogleCalendarApiName.CALENDARS, new ApiMethodHelper<CalendarCalendarsApiMethod>(CalendarCalendarsApiMethod.class, aliases, nullableArgs));
-        apiMethods.put(CalendarCalendarsApiMethod.class, GoogleCalendarApiName.CALENDARS);
-
-        aliases.clear();
-        nullableArgs = Arrays.asList();
-        apiHelpers.put(GoogleCalendarApiName.CHANNELS, new ApiMethodHelper<CalendarChannelsApiMethod>(CalendarChannelsApiMethod.class, aliases, nullableArgs));
-        apiMethods.put(CalendarChannelsApiMethod.class, GoogleCalendarApiName.CHANNELS);
-
-        aliases.clear();
-        nullableArgs = Arrays.asList();
-        apiHelpers.put(GoogleCalendarApiName.COLORS, new ApiMethodHelper<CalendarColorsApiMethod>(CalendarColorsApiMethod.class, aliases, nullableArgs));
-        apiMethods.put(CalendarColorsApiMethod.class, GoogleCalendarApiName.COLORS);
-
-        aliases.clear();
-        nullableArgs = Arrays.asList();
-        apiHelpers.put(GoogleCalendarApiName.FREEBUSY, new ApiMethodHelper<CalendarFreebusyApiMethod>(CalendarFreebusyApiMethod.class, aliases, nullableArgs));
-        apiMethods.put(CalendarFreebusyApiMethod.class, GoogleCalendarApiName.FREEBUSY);
-
-        aliases.clear();
-        nullableArgs = Arrays.asList();
-        apiHelpers.put(GoogleCalendarApiName.EVENTS, new ApiMethodHelper<CalendarEventsApiMethod>(CalendarEventsApiMethod.class, aliases, nullableArgs));
-        apiMethods.put(CalendarEventsApiMethod.class, GoogleCalendarApiName.EVENTS);
-
-        aliases.clear();
-        nullableArgs = Arrays.asList();
-        apiHelpers.put(GoogleCalendarApiName.SETTINGS, new ApiMethodHelper<CalendarSettingsApiMethod>(CalendarSettingsApiMethod.class, aliases, nullableArgs));
-        apiMethods.put(CalendarSettingsApiMethod.class, GoogleCalendarApiName.SETTINGS);
-
-        setApiHelpers(apiHelpers);
-        setApiMethods(apiMethods);
-    }
-
-    public GoogleCalendarConfiguration getEndpointConfiguration(GoogleCalendarApiName apiName) {
-        GoogleCalendarConfiguration result = null;
-        switch (apiName) {
-            case ACL:
-                result = new CalendarAclEndpointConfiguration();
-                break;
-            case LIST:
-                result = new CalendarCalendarListEndpointConfiguration();
-                break;
-            case CALENDARS:
-                result = new CalendarCalendarsEndpointConfiguration();
-                break;
-            case CHANNELS:
-                result = new CalendarChannelsEndpointConfiguration();
-                break;
-            case COLORS:
-                result = new CalendarColorsEndpointConfiguration();
-                break;
-            case FREEBUSY:
-                result = new CalendarFreebusyEndpointConfiguration();
-                break;
-            case EVENTS:
-                result = new CalendarEventsEndpointConfiguration();
-                break;
-            case SETTINGS:
-                result = new CalendarSettingsEndpointConfiguration();
-                break;
-        }
-        return result;
-    }
-
-    public static synchronized GoogleCalendarApiCollection getCollection() {
-        if (collection == null) {
-            collection = new GoogleCalendarApiCollection();
-        }
-        return collection;
-    }
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiName.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiName.java
deleted file mode 100644
index a2aed46..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/internal/GoogleCalendarApiName.java
+++ /dev/null
@@ -1,42 +0,0 @@
-
-/*
- * Camel ApiName Enumeration generated by camel-api-component-maven-plugin
- */
-package org.apache.camel.component.google.calendar.internal;
-
-import org.apache.camel.support.component.ApiName;
-
-/**
- * Camel {@link ApiName} Enumeration for Component GoogleCalendar
- */
-public enum GoogleCalendarApiName implements ApiName {
-
-    ACL("acl"),
-
-    LIST("list"),
-
-    CALENDARS("calendars"),
-
-    CHANNELS("channels"),
-
-    COLORS("colors"),
-
-    FREEBUSY("freebusy"),
-
-    EVENTS("events"),
-
-    SETTINGS("settings");
-
-
-    private final String name;
-
-    private GoogleCalendarApiName(String name) {
-        this.name = name;
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-}
diff --git a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamComponentConfigurer.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamComponentConfigurer.java
deleted file mode 100644
index c40d3d5..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamComponentConfigurer.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar.stream;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.support.component.PropertyConfigurerSupport;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class GoogleCalendarStreamComponentConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    private org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration getOrCreateConfiguration(GoogleCalendarStreamComponent target) {
-        if (target.getConfiguration() == null) {
-            target.setConfiguration(new org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration());
-        }
-        return target.getConfiguration();
-    }
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        GoogleCalendarStreamComponent target = (GoogleCalendarStreamComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "accessToken": getOrCreateConfiguration(target).setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "applicationname":
-        case "applicationName": getOrCreateConfiguration(target).setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
-        case "autowiredenabled":
-        case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "calendarid":
-        case "calendarId": getOrCreateConfiguration(target).setCalendarId(property(camelContext, java.lang.String.class, value)); return true;
-        case "clientfactory":
-        case "clientFactory": target.setClientFactory(property(camelContext, org.apache.camel.component.google.calendar.GoogleCalendarClientFactory.class, value)); return true;
-        case "clientid":
-        case "clientId": getOrCreateConfiguration(target).setClientId(property(camelContext, java.lang.String.class, value)); return true;
-        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.calendar.stream.GoogleCalendarStreamConfiguration.class, value)); return true;
-        case "considerlastupdate":
-        case "considerLastUpdate": getOrCreateConfiguration(target).setConsiderLastUpdate(property(camelContext, boolean.class, value)); return true;
-        case "consumefromnow":
-        case "consumeFromNow": getOrCreateConfiguration(target).setConsumeFromNow(property(camelContext, boolean.class, value)); return true;
-        case "emailaddress":
-        case "emailAddress": getOrCreateConfiguration(target).setEmailAddress(property(camelContext, java.lang.String.class, value)); return true;
-        case "maxresults":
-        case "maxResults": getOrCreateConfiguration(target).setMaxResults(property(camelContext, int.class, value)); return true;
-        case "p12filename":
-        case "p12FileName": getOrCreateConfiguration(target).setP12FileName(property(camelContext, java.lang.String.class, value)); return true;
-        case "query": getOrCreateConfiguration(target).setQuery(property(camelContext, java.lang.String.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;
-        case "syncflow":
-        case "syncFlow": getOrCreateConfiguration(target).setSyncFlow(property(camelContext, boolean.class, value)); return true;
-        case "user": getOrCreateConfiguration(target).setUser(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "accessToken": return java.lang.String.class;
-        case "applicationname":
-        case "applicationName": return java.lang.String.class;
-        case "autowiredenabled":
-        case "autowiredEnabled": return boolean.class;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "calendarid":
-        case "calendarId": return java.lang.String.class;
-        case "clientfactory":
-        case "clientFactory": return org.apache.camel.component.google.calendar.GoogleCalendarClientFactory.class;
-        case "clientid":
-        case "clientId": return java.lang.String.class;
-        case "clientsecret":
-        case "clientSecret": return java.lang.String.class;
-        case "configuration": return org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration.class;
-        case "considerlastupdate":
-        case "considerLastUpdate": return boolean.class;
-        case "consumefromnow":
-        case "consumeFromNow": return boolean.class;
-        case "emailaddress":
-        case "emailAddress": return java.lang.String.class;
-        case "maxresults":
-        case "maxResults": return int.class;
-        case "p12filename":
-        case "p12FileName": return java.lang.String.class;
-        case "query": return java.lang.String.class;
-        case "refreshtoken":
-        case "refreshToken": return java.lang.String.class;
-        case "scopes": return java.util.List.class;
-        case "syncflow":
-        case "syncFlow": return boolean.class;
-        case "user": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        GoogleCalendarStreamComponent target = (GoogleCalendarStreamComponent) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "accessToken": return getOrCreateConfiguration(target).getAccessToken();
-        case "applicationname":
-        case "applicationName": return getOrCreateConfiguration(target).getApplicationName();
-        case "autowiredenabled":
-        case "autowiredEnabled": return target.isAutowiredEnabled();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "calendarid":
-        case "calendarId": return getOrCreateConfiguration(target).getCalendarId();
-        case "clientfactory":
-        case "clientFactory": return target.getClientFactory();
-        case "clientid":
-        case "clientId": return getOrCreateConfiguration(target).getClientId();
-        case "clientsecret":
-        case "clientSecret": return getOrCreateConfiguration(target).getClientSecret();
-        case "configuration": return target.getConfiguration();
-        case "considerlastupdate":
-        case "considerLastUpdate": return getOrCreateConfiguration(target).isConsiderLastUpdate();
-        case "consumefromnow":
-        case "consumeFromNow": return getOrCreateConfiguration(target).isConsumeFromNow();
-        case "emailaddress":
-        case "emailAddress": return getOrCreateConfiguration(target).getEmailAddress();
-        case "maxresults":
-        case "maxResults": return getOrCreateConfiguration(target).getMaxResults();
-        case "p12filename":
-        case "p12FileName": return getOrCreateConfiguration(target).getP12FileName();
-        case "query": return getOrCreateConfiguration(target).getQuery();
-        case "refreshtoken":
-        case "refreshToken": return getOrCreateConfiguration(target).getRefreshToken();
-        case "scopes": return getOrCreateConfiguration(target).getScopes();
-        case "syncflow":
-        case "syncFlow": return getOrCreateConfiguration(target).isSyncFlow();
-        case "user": return getOrCreateConfiguration(target).getUser();
-        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-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointConfigurer.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointConfigurer.java
deleted file mode 100644
index 102d2f0..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointConfigurer.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar.stream;
-
-import java.util.Map;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
-import org.apache.camel.spi.PropertyConfigurerGetter;
-import org.apache.camel.spi.ConfigurerStrategy;
-import org.apache.camel.spi.GeneratedPropertyConfigurer;
-import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.support.component.PropertyConfigurerSupport;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-@SuppressWarnings("unchecked")
-public class GoogleCalendarStreamEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {
-
-    @Override
-    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        GoogleCalendarStreamEndpoint target = (GoogleCalendarStreamEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "accessToken": target.getConfiguration().setAccessToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "applicationname":
-        case "applicationName": target.getConfiguration().setApplicationName(property(camelContext, java.lang.String.class, value)); return true;
-        case "backofferrorthreshold":
-        case "backoffErrorThreshold": target.setBackoffErrorThreshold(property(camelContext, int.class, value)); return true;
-        case "backoffidlethreshold":
-        case "backoffIdleThreshold": target.setBackoffIdleThreshold(property(camelContext, int.class, value)); return true;
-        case "backoffmultiplier":
-        case "backoffMultiplier": target.setBackoffMultiplier(property(camelContext, int.class, value)); return true;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
-        case "calendarid":
-        case "calendarId": target.getConfiguration().setCalendarId(property(camelContext, java.lang.String.class, value)); return true;
-        case "clientid":
-        case "clientId": target.getConfiguration().setClientId(property(camelContext, java.lang.String.class, value)); return true;
-        case "clientsecret":
-        case "clientSecret": target.getConfiguration().setClientSecret(property(camelContext, java.lang.String.class, value)); return true;
-        case "considerlastupdate":
-        case "considerLastUpdate": target.getConfiguration().setConsiderLastUpdate(property(camelContext, boolean.class, value)); return true;
-        case "consumefromnow":
-        case "consumeFromNow": target.getConfiguration().setConsumeFromNow(property(camelContext, boolean.class, value)); return true;
-        case "delay": target.setDelay(property(camelContext, long.class, value)); return true;
-        case "emailaddress":
-        case "emailAddress": target.getConfiguration().setEmailAddress(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":
-        case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true;
-        case "greedy": target.setGreedy(property(camelContext, boolean.class, value)); return true;
-        case "initialdelay":
-        case "initialDelay": target.setInitialDelay(property(camelContext, long.class, value)); return true;
-        case "maxresults":
-        case "maxResults": target.getConfiguration().setMaxResults(property(camelContext, int.class, value)); return true;
-        case "p12filename":
-        case "p12FileName": target.getConfiguration().setP12FileName(property(camelContext, java.lang.String.class, value)); return true;
-        case "pollstrategy":
-        case "pollStrategy": target.setPollStrategy(property(camelContext, org.apache.camel.spi.PollingConsumerPollStrategy.class, value)); return true;
-        case "query": target.getConfiguration().setQuery(property(camelContext, java.lang.String.class, value)); return true;
-        case "refreshtoken":
-        case "refreshToken": target.getConfiguration().setRefreshToken(property(camelContext, java.lang.String.class, value)); return true;
-        case "repeatcount":
-        case "repeatCount": target.setRepeatCount(property(camelContext, long.class, value)); return true;
-        case "runlogginglevel":
-        case "runLoggingLevel": target.setRunLoggingLevel(property(camelContext, org.apache.camel.LoggingLevel.class, value)); return true;
-        case "scheduledexecutorservice":
-        case "scheduledExecutorService": target.setScheduledExecutorService(property(camelContext, java.util.concurrent.ScheduledExecutorService.class, value)); return true;
-        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":
-        case "startScheduler": target.setStartScheduler(property(camelContext, boolean.class, value)); return true;
-        case "syncflow":
-        case "syncFlow": target.getConfiguration().setSyncFlow(property(camelContext, boolean.class, value)); return true;
-        case "timeunit":
-        case "timeUnit": target.setTimeUnit(property(camelContext, java.util.concurrent.TimeUnit.class, value)); return true;
-        case "usefixeddelay":
-        case "useFixedDelay": target.setUseFixedDelay(property(camelContext, boolean.class, value)); return true;
-        case "user": target.getConfiguration().setUser(property(camelContext, java.lang.String.class, value)); return true;
-        default: return false;
-        }
-    }
-
-    @Override
-    public Class<?> getOptionType(String name, boolean ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "accessToken": return java.lang.String.class;
-        case "applicationname":
-        case "applicationName": return java.lang.String.class;
-        case "backofferrorthreshold":
-        case "backoffErrorThreshold": return int.class;
-        case "backoffidlethreshold":
-        case "backoffIdleThreshold": return int.class;
-        case "backoffmultiplier":
-        case "backoffMultiplier": return int.class;
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return boolean.class;
-        case "calendarid":
-        case "calendarId": return java.lang.String.class;
-        case "clientid":
-        case "clientId": return java.lang.String.class;
-        case "clientsecret":
-        case "clientSecret": return java.lang.String.class;
-        case "considerlastupdate":
-        case "considerLastUpdate": return boolean.class;
-        case "consumefromnow":
-        case "consumeFromNow": return boolean.class;
-        case "delay": return long.class;
-        case "emailaddress":
-        case "emailAddress": return java.lang.String.class;
-        case "exceptionhandler":
-        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
-        case "exchangepattern":
-        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
-        case "greedy": return boolean.class;
-        case "initialdelay":
-        case "initialDelay": return long.class;
-        case "maxresults":
-        case "maxResults": return int.class;
-        case "p12filename":
-        case "p12FileName": return java.lang.String.class;
-        case "pollstrategy":
-        case "pollStrategy": return org.apache.camel.spi.PollingConsumerPollStrategy.class;
-        case "query": return java.lang.String.class;
-        case "refreshtoken":
-        case "refreshToken": return java.lang.String.class;
-        case "repeatcount":
-        case "repeatCount": return long.class;
-        case "runlogginglevel":
-        case "runLoggingLevel": return org.apache.camel.LoggingLevel.class;
-        case "scheduledexecutorservice":
-        case "scheduledExecutorService": return java.util.concurrent.ScheduledExecutorService.class;
-        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":
-        case "startScheduler": return boolean.class;
-        case "syncflow":
-        case "syncFlow": return boolean.class;
-        case "timeunit":
-        case "timeUnit": return java.util.concurrent.TimeUnit.class;
-        case "usefixeddelay":
-        case "useFixedDelay": return boolean.class;
-        case "user": return java.lang.String.class;
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        GoogleCalendarStreamEndpoint target = (GoogleCalendarStreamEndpoint) obj;
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "accesstoken":
-        case "accessToken": return target.getConfiguration().getAccessToken();
-        case "applicationname":
-        case "applicationName": return target.getConfiguration().getApplicationName();
-        case "backofferrorthreshold":
-        case "backoffErrorThreshold": return target.getBackoffErrorThreshold();
-        case "backoffidlethreshold":
-        case "backoffIdleThreshold": return target.getBackoffIdleThreshold();
-        case "backoffmultiplier":
-        case "backoffMultiplier": return target.getBackoffMultiplier();
-        case "bridgeerrorhandler":
-        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
-        case "calendarid":
-        case "calendarId": return target.getConfiguration().getCalendarId();
-        case "clientid":
-        case "clientId": return target.getConfiguration().getClientId();
-        case "clientsecret":
-        case "clientSecret": return target.getConfiguration().getClientSecret();
-        case "considerlastupdate":
-        case "considerLastUpdate": return target.getConfiguration().isConsiderLastUpdate();
-        case "consumefromnow":
-        case "consumeFromNow": return target.getConfiguration().isConsumeFromNow();
-        case "delay": return target.getDelay();
-        case "emailaddress":
-        case "emailAddress": return target.getConfiguration().getEmailAddress();
-        case "exceptionhandler":
-        case "exceptionHandler": return target.getExceptionHandler();
-        case "exchangepattern":
-        case "exchangePattern": return target.getExchangePattern();
-        case "greedy": return target.isGreedy();
-        case "initialdelay":
-        case "initialDelay": return target.getInitialDelay();
-        case "maxresults":
-        case "maxResults": return target.getConfiguration().getMaxResults();
-        case "p12filename":
-        case "p12FileName": return target.getConfiguration().getP12FileName();
-        case "pollstrategy":
-        case "pollStrategy": return target.getPollStrategy();
-        case "query": return target.getConfiguration().getQuery();
-        case "refreshtoken":
-        case "refreshToken": return target.getConfiguration().getRefreshToken();
-        case "repeatcount":
-        case "repeatCount": return target.getRepeatCount();
-        case "runlogginglevel":
-        case "runLoggingLevel": return target.getRunLoggingLevel();
-        case "scheduledexecutorservice":
-        case "scheduledExecutorService": return target.getScheduledExecutorService();
-        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":
-        case "startScheduler": return target.isStartScheduler();
-        case "syncflow":
-        case "syncFlow": return target.getConfiguration().isSyncFlow();
-        case "timeunit":
-        case "timeUnit": return target.getTimeUnit();
-        case "usefixeddelay":
-        case "useFixedDelay": return target.isUseFixedDelay();
-        case "user": return target.getConfiguration().getUser();
-        default: return null;
-        }
-    }
-
-    @Override
-    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
-        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-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointUriFactory.java b/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointUriFactory.java
deleted file mode 100644
index 1c2da8d..0000000
--- a/components/camel-google-calendar/src/generated/java/org/apache/camel/component/google/calendar/stream/GoogleCalendarStreamEndpointUriFactory.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/* Generated by camel build tools - do NOT edit this file! */
-package org.apache.camel.component.google.calendar.stream;
-
-import java.net.URISyntaxException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.camel.spi.EndpointUriFactory;
-
-/**
- * Generated by camel build tools - do NOT edit this file!
- */
-public class GoogleCalendarStreamEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory {
-
-    private static final String BASE = ":index";
-
-    private static final Set<String> PROPERTY_NAMES;
-    private static final Set<String> SECRET_PROPERTY_NAMES;
-    static {
-        Set<String> props = new HashSet<>(42);
-        props.add("backoffMultiplier");
-        props.add("destination");
-        props.add("initialDelay");
-        props.add("consumeFromNow");
-        props.add("content");
-        props.add("setting");
-        props.add("scheduler");
-        props.add("emailAddress");
-        props.add("bridgeErrorHandler");
-        props.add("useFixedDelay");
-        props.add("runLoggingLevel");
-        props.add("maxResults");
-        props.add("backoffErrorThreshold");
-        props.add("greedy");
-        props.add("clientSecret");
-        props.add("text");
-        props.add("scheduledExecutorService");
-        props.add("ruleId");
-        props.add("applicationName");
-        props.add("repeatCount");
-        props.add("timeUnit");
-        props.add("eventId");
-        props.add("p12FileName");
-        props.add("clientId");
-        props.add("considerLastUpdate");
-        props.add("query");
-        props.add("sendEmptyMessageWhenIdle");
-        props.add("schedulerProperties");
-        props.add("exchangePattern");
-        props.add("index");
-        props.add("syncFlow");
-        props.add("accessToken");
-        props.add("backoffIdleThreshold");
-        props.add("contentChannel");
-        props.add("delay");
-        props.add("calendarId");
-        props.add("pollStrategy");
-        props.add("startScheduler");
-        props.add("scopes");
-        props.add("exceptionHandler");
-        props.add("user");
-        props.add("refreshToken");
-        PROPERTY_NAMES = Collections.unmodifiableSet(props);
-        Set<String> secretProps = new HashSet<>(6);
-        secretProps.add("emailAddress");
-        secretProps.add("p12FileName");
-        secretProps.add("clientSecret");
-        secretProps.add("accessToken");
-        secretProps.add("user");
-        secretProps.add("refreshToken");
-        SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps);
-    }
-
-    @Override
-    public boolean isEnabled(String scheme) {
-        return "google-calendar-stream".equals(scheme);
-    }
-
-    @Override
-    public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
-        String syntax = scheme + BASE;
-        String uri = syntax;
-
-        Map<String, Object> copy = new HashMap<>(properties);
-
-        uri = buildPathParameter(syntax, uri, "index", null, true, copy);
-        uri = buildQueryParameters(uri, copy, encode);
-        return uri;
-    }
-
-    @Override
-    public Set<String> propertyNames() {
-        return PROPERTY_NAMES;
-    }
-
-    @Override
-    public Set<String> secretPropertyNames() {
-        return SECRET_PROPERTY_NAMES;
-    }
-
-    @Override
-    public boolean isLenientProperties() {
-        return false;
-    }
-}
-
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component.properties
deleted file mode 100644
index 2b42cb1..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-components=google-calendar google-calendar-stream
-groupId=org.apache.camel
-artifactId=camel-google-calendar
-version=3.9.0-SNAPSHOT
-projectName=Camel :: Google Calendar
-projectDescription=Camel Component for GoogleCalendar
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar
deleted file mode 100644
index 24ad33b..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.GoogleCalendarComponent
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar-stream b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar-stream
deleted file mode 100644
index e0236d0..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/component/google-calendar-stream
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamComponent
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-component b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-component
deleted file mode 100644
index d044dd7..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-component
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.GoogleCalendarComponentConfigurer
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-endpoint b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-endpoint
deleted file mode 100644
index ae79126..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.GoogleCalendarEndpointConfigurer
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-component b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-component
deleted file mode 100644
index 3d35733..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-component
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamComponentConfigurer
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-endpoint b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-endpoint
deleted file mode 100644
index 9d9f3bd..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/google-calendar-stream-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamEndpointConfigurer
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration
deleted file mode 100644
index ea1c73f..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarAclEndpointConfiguration
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.CalendarAclEndpointConfigurationConfigurer
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration
deleted file mode 100644
index ac3f3d5..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfiguration
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.CalendarCalendarListEndpointConfigurationConfigurer
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration
deleted file mode 100644
index 4caa55b..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfiguration
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.CalendarCalendarsEndpointConfigurationConfigurer
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration
deleted file mode 100644
index 6d3b53d..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfiguration
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.CalendarChannelsEndpointConfigurationConfigurer
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration
deleted file mode 100644
index 2f54641..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarColorsEndpointConfiguration
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.CalendarColorsEndpointConfigurationConfigurer
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration
deleted file mode 100644
index 0fd6bb1..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarEventsEndpointConfiguration
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.CalendarEventsEndpointConfigurationConfigurer
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration
deleted file mode 100644
index 5de9b66..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfiguration
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.CalendarFreebusyEndpointConfigurationConfigurer
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration
deleted file mode 100644
index 7f7092a..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfiguration
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.CalendarSettingsEndpointConfigurationConfigurer
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.GoogleCalendarConfiguration b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.GoogleCalendarConfiguration
deleted file mode 100644
index 5847e8b..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.component.google.calendar.GoogleCalendarConfiguration
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.GoogleCalendarConfigurationConfigurer
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-endpoint b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-endpoint
deleted file mode 100644
index fda9fd7..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.GoogleCalendarEndpointUriFactory
diff --git a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-stream-endpoint b/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-stream-endpoint
deleted file mode 100644
index ae5a539..0000000
--- a/components/camel-google-calendar/src/generated/resources/META-INF/services/org/apache/camel/urifactory/google-calendar-stream-endpoint
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-class=org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamEndpointUriFactory
diff --git a/components/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/google-calendar.json b/components/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/google-calendar.json
deleted file mode 100644
index 7f75749..0000000
--- a/components/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/google-calendar.json
+++ /dev/null
@@ -1,93 +0,0 @@
-{
-  "component": {
-    "kind": "component",
-    "name": "google-calendar",
-    "title": "Google Calendar",
-    "description": "Perform various operations on a Google Calendar.",
-    "deprecated": false,
-    "firstVersion": "2.15.0",
-    "label": "api,cloud",
-    "javaType": "org.apache.camel.component.google.calendar.GoogleCalendarComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-google-calendar",
-    "version": "3.9.0-SNAPSHOT",
-    "scheme": "google-calendar",
-    "extendsScheme": "",
-    "syntax": "google-calendar:apiName\/methodName",
-    "async": false,
-    "api": true,
-    "apiSyntax": "apiName\/methodName",
-    "consumerOnly": false,
-    "producerOnly": false,
-    "lenientProperties": false
-  },
-  "componentProperties": {
-    "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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Google calendar application name. Example would be camel-google-calendar\/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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Client ID of the calendar application" },
-    "configuration": { "kind": "property", "displayName": "Configuration", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "To use the shared configuration" },
-    "scopes": { "kind": "property", "displayName": "Scopes", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "https:\/\/www.googleapis.com\/auth\/calendar", "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Specifies the level of permissions you want a calendar ap [...]
-    "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.calendar.GoogleCalendarClientFactory", "deprecated": false, "autowired": false, "secret": false, "description": "To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleCalendarClientFactory" },
-    "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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long te [...]
-    "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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Client secret of the calendar application" },
-    "emailAddress": { "kind": "property", "displayName": "Email Address", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "The emailAddress of the Google Service Account." },
-    "p12FileName": { "kind": "property", "displayName": "P12 File Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "The name of the p12 file which has the private key to use with the Google 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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whene [...]
-    "user": { "kind": "property", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "The email address of the user the application is trying to impersonate in the service account flow" }
-  },
-  "properties": {
-    "apiName": { "kind": "path", "displayName": "Api Name", "group": "common", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName", "enum": [ "ACL", "LIST", "CALENDARS", "CHANNELS", "COLORS", "FREEBUSY", "EVENTS", "SETTINGS" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "c [...]
-    "methodName": { "kind": "path", "displayName": "Method Name", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "enum": [ "calendarImport", "clear", "delete", "get", "insert", "instances", "list", "move", "patch", "query", "quickAdd", "stop", "update", "watch" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration [...]
-    "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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Google calendar application name. Example would be camel-google-calendar\/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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Client ID of the calendar application" },
-    "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": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "https:\/\/www.googleapis.com\/auth\/calendar", "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Specifies the level of permissions you want a calendar a [...]
-    "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 [...]
-    "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
-    "pollStrategy": { "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation  [...]
-    "lazyStartProducer": { "kind": "parameter", "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 sta [...]
-    "backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." },
-    "backoffIdleThreshold": { "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." },
-    "backoffMultiplier": { "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening agai [...]
-    "delay": { "kind": "parameter", "displayName": "Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "description": "Milliseconds before the next poll." },
-    "greedy": { "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." },
-    "initialDelay": { "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." },
-    "repeatCount": { "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." },
-    "runLoggingLevel": { "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the logging level  [...]
-    "scheduledExecutorService": { "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." },
-    "scheduler": { "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" },
-    "schedulerProperties": { "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler." },
-    "startScheduler": { "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." },
-    "timeUnit": { "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." },
-    "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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long t [...]
-    "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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "Client secret of the calendar application" },
-    "emailAddress": { "kind": "parameter", "displayName": "Email Address", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "The emailAddress of the Google Service Account." },
-    "p12FileName": { "kind": "parameter", "displayName": "P12 File Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "The name of the p12 file which has the private key to use with the Google 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.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken when [...]
-    "user": { "kind": "parameter", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.GoogleCalendarConfiguration", "configurationField": "configuration", "description": "The email address of the user the application is trying to impersonate in the service account flow" }
-  },
-  "apis": {
-    "acl": { "consumerOnly": false, "producerOnly": false, "description": "The acl collection of methods", "methods": { "delete": { "description": "Deletes an access control rule", "signatures": [ "com.google.api.services.calendar.Calendar$Acl$Delete delete(String calendarId, String ruleId)" ] }, "get": { "description": "Returns an access control rule", "signatures": [ "com.google.api.services.calendar.Calendar$Acl$Get get(String calendarId, String ruleId)" ] }, "insert": { "description" [...]
-    "calendars": { "consumerOnly": false, "producerOnly": false, "description": "The calendars collection of methods", "methods": { "clear": { "description": "Clears a primary calendar", "signatures": [ "com.google.api.services.calendar.Calendar$Calendars$Clear clear(String calendarId)" ] }, "delete": { "description": "Deletes a secondary calendar", "signatures": [ "com.google.api.services.calendar.Calendar$Calendars$Delete delete(String calendarId)" ] }, "get": { "description": "Returns [...]
-    "channels": { "consumerOnly": false, "producerOnly": false, "description": "The channels collection of methods", "methods": { "stop": { "description": "Stop watching resources through this channel", "signatures": [ "com.google.api.services.calendar.Calendar$Channels$Stop stop(com.google.api.services.calendar.model.Channel content)" ] } } },
-    "events": { "consumerOnly": false, "producerOnly": false, "description": "The events collection of methods", "methods": { "calendarImport": { "description": "Imports an event", "signatures": [ "com.google.api.services.calendar.Calendar$Events$CalendarImport calendarImport(String calendarId, com.google.api.services.calendar.model.Event content)" ] }, "delete": { "description": "Deletes an event", "signatures": [ "com.google.api.services.calendar.Calendar$Events$Delete delete(String ca [...]
-    "freebusy": { "consumerOnly": false, "producerOnly": false, "description": "The freebusy collection of methods", "methods": { "query": { "description": "Returns free\/busy information for a set of calendars", "signatures": [ "com.google.api.services.calendar.Calendar$Freebusy$Query query(com.google.api.services.calendar.model.FreeBusyRequest content)" ] } } },
-    "list": { "consumerOnly": false, "producerOnly": false, "description": "The calendarList collection of methods", "methods": { "delete": { "description": "Deletes an entry on the user's calendar list", "signatures": [ "com.google.api.services.calendar.Calendar$CalendarList$Delete delete(String calendarId)" ] }, "get": { "description": "Returns an entry on the user's calendar list", "signatures": [ "com.google.api.services.calendar.Calendar$CalendarList$Get get(String calendarId)" ] }, [...]
-    "settings": { "consumerOnly": false, "producerOnly": false, "description": "The settings collection of methods", "methods": { "get": { "description": "Returns a single user setting", "signatures": [ "com.google.api.services.calendar.Calendar$Settings$Get get(String setting)" ] }, "watch": { "description": "Watch for changes to Settings resources", "signatures": [ "com.google.api.services.calendar.Calendar$Settings$Watch watch(com.google.api.services.calendar.model.Channel content)" ] } } }
-  },
-  "apiProperties": {
-    "acl": { "methods": { "delete": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", "optional":  [...]
-    "calendars": { "methods": { "clear": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", "option [...]
-    "channels": { "methods": { "stop": { "properties": { "contentChannel": { "kind": "parameter", "displayName": "Content Channel", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.google.api.services.calendar.model.Channel", "deprecated": false, "autowired": false, "secret": false, "description": "The com.google.api.services.calendar.model.Channel", "optional": false } } } } },
-    "events": { "methods": { "calendarImport": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", " [...]
-    "freebusy": { "methods": { "query": { "properties": { "content": { "kind": "parameter", "displayName": "Content", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.google.api.services.calendar.model.FreeBusyRequest", "deprecated": false, "autowired": false, "secret": false, "description": "The com.google.api.services.calendar.model.FreeBusyRequest", "optional": false } } } } },
-    "list": { "methods": { "delete": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", "optional": [...]
-    "settings": { "methods": { "get": { "properties": { "setting": { "kind": "parameter", "displayName": "Setting", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The id of the user setting", "optional": false } } }, "watch": { "properties": { "contentChannel": { "kind": "parameter", "displayName": "Content Channel", "group": "common", "label": "", "required": f [...]
-  }
-}
diff --git a/components/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/stream/google-calendar-stream.json b/components/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/stream/google-calendar-stream.json
deleted file mode 100644
index 57fcf5e..0000000
--- a/components/camel-google-calendar/src/generated/resources/org/apache/camel/component/google/calendar/stream/google-calendar-stream.json
+++ /dev/null
@@ -1,100 +0,0 @@
-{
-  "component": {
-    "kind": "component",
-    "name": "google-calendar-stream",
-    "title": "Google Calendar Stream",
-    "description": "Poll for changes in a Google Calendar.",
-    "deprecated": false,
-    "firstVersion": "2.23.0",
-    "label": "api,cloud",
-    "javaType": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamComponent",
-    "supportLevel": "Stable",
-    "groupId": "org.apache.camel",
-    "artifactId": "camel-google-calendar",
-    "version": "3.9.0-SNAPSHOT",
-    "scheme": "google-calendar-stream",
-    "extendsScheme": "",
-    "syntax": "google-calendar-stream:index",
-    "async": false,
-    "api": false,
-    "consumerOnly": true,
-    "producerOnly": false,
-    "lenientProperties": false
-  },
-  "componentProperties": {
-    "applicationName": { "kind": "property", "displayName": "Application Name", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Google Calendar application name. Example would be camel-google-calendar\/1.0" },
-    "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 [...]
-    "calendarId": { "kind": "property", "displayName": "Calendar Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "primary", "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The calendarId to be used" },
-    "clientId": { "kind": "property", "displayName": "Client Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Client ID of the calendar application" },
-    "configuration": { "kind": "property", "displayName": "Configuration", "group": "consumer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "The configuration" },
-    "considerLastUpdate": { "kind": "property", "displayName": "Consider Last Update", "group": "consumer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Take into account the lastUpdate of the last event polled as star [...]
-    "consumeFromNow": { "kind": "property", "displayName": "Consume From Now", "group": "consumer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Consume events in the selected calendar from now on" },
-    "maxResults": { "kind": "property", "displayName": "Max Results", "group": "consumer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Max results to be returned" },
-    "query": { "kind": "property", "displayName": "Query", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The query to execute on calendar" },
-    "scopes": { "kind": "property", "displayName": "Scopes", "group": "consumer", "label": "", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Specifies the level of permissions you want a calendar application to have to a user accoun [...]
-    "syncFlow": { "kind": "property", "displayName": "Sync Flow", "group": "consumer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Sync events, see https:\/\/developers.google.com\/calendar\/v3\/sync Note: not compati [...]
-    "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.calendar.GoogleCalendarClientFactory", "deprecated": false, "autowired": false, "secret": false, "description": "The client Factory" },
-    "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.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "OAuth 2 access token. This typically expires after an hour so refreshToken is recommende [...]
-    "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.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Client secret of the calendar application" },
-    "emailAddress": { "kind": "property", "displayName": "Email Address", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The emailAddress of the Google Service Account." },
-    "p12FileName": { "kind": "property", "displayName": "P12 File Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The name of the p12 file which has the private key to use with the Google 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.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new acce [...]
-    "user": { "kind": "property", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The email address of the user the application is trying to impersonate in the service account flow." }
-  },
-  "properties": {
-    "index": { "kind": "path", "displayName": "Index", "group": "consumer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Specifies an index for the endpoint" },
-    "applicationName": { "kind": "parameter", "displayName": "Application Name", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Google Calendar application name. Example would be camel-google-calendar\/1.0" },
-    "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 [...]
-    "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "primary", "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The calendarId to be used" },
-    "clientId": { "kind": "parameter", "displayName": "Client Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Client ID of the calendar application" },
-    "considerLastUpdate": { "kind": "parameter", "displayName": "Consider Last Update", "group": "consumer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Take into account the lastUpdate of the last event polled as sta [...]
-    "consumeFromNow": { "kind": "parameter", "displayName": "Consume From Now", "group": "consumer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Consume events in the selected calendar from now on" },
-    "maxResults": { "kind": "parameter", "displayName": "Max Results", "group": "consumer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 10, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Max results to be returned" },
-    "query": { "kind": "parameter", "displayName": "Query", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The query to execute on calendar" },
-    "scopes": { "kind": "parameter", "displayName": "Scopes", "group": "consumer", "label": "", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Specifies the level of permissions you want a calendar application to have to a user accou [...]
-    "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." },
-    "syncFlow": { "kind": "parameter", "displayName": "Sync Flow", "group": "consumer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Sync events, see https:\/\/developers.google.com\/calendar\/v3\/sync Note: not compat [...]
-    "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 [...]
-    "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
-    "pollStrategy": { "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation  [...]
-    "backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." },
-    "backoffIdleThreshold": { "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." },
-    "backoffMultiplier": { "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening agai [...]
-    "delay": { "kind": "parameter", "displayName": "Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "description": "Milliseconds before the next poll." },
-    "greedy": { "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." },
-    "initialDelay": { "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." },
-    "repeatCount": { "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." },
-    "runLoggingLevel": { "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the logging level  [...]
-    "scheduledExecutorService": { "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." },
-    "scheduler": { "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" },
-    "schedulerProperties": { "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler." },
-    "startScheduler": { "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." },
-    "timeUnit": { "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." },
-    "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.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "OAuth 2 access token. This typically expires after an hour so refreshToken is recommend [...]
-    "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.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "Client secret of the calendar application" },
-    "emailAddress": { "kind": "parameter", "displayName": "Email Address", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The emailAddress of the Google Service Account." },
-    "p12FileName": { "kind": "parameter", "displayName": "P12 File Name", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The name of the p12 file which has the private key to use with the Google Service Acco [...]
-    "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.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new acc [...]
-    "user": { "kind": "parameter", "displayName": "User", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamConfiguration", "configurationField": "configuration", "description": "The email address of the user the application is trying to impersonate in the service account flow." }
-  },
-  "apis": {
-    "acl": { "consumerOnly": true, "producerOnly": false, "description": "The acl collection of methods", "methods": { "delete": { "description": "Deletes an access control rule", "signatures": [ "com.google.api.services.calendar.Calendar$Acl$Delete delete(String calendarId, String ruleId)" ] }, "get": { "description": "Returns an access control rule", "signatures": [ "com.google.api.services.calendar.Calendar$Acl$Get get(String calendarId, String ruleId)" ] }, "insert": { "description": [...]
-    "calendars": { "consumerOnly": true, "producerOnly": false, "description": "The calendars collection of methods", "methods": { "clear": { "description": "Clears a primary calendar", "signatures": [ "com.google.api.services.calendar.Calendar$Calendars$Clear clear(String calendarId)" ] }, "delete": { "description": "Deletes a secondary calendar", "signatures": [ "com.google.api.services.calendar.Calendar$Calendars$Delete delete(String calendarId)" ] }, "get": { "description": "Returns  [...]
-    "channels": { "consumerOnly": true, "producerOnly": false, "description": "The channels collection of methods", "methods": { "stop": { "description": "Stop watching resources through this channel", "signatures": [ "com.google.api.services.calendar.Calendar$Channels$Stop stop(com.google.api.services.calendar.model.Channel content)" ] } } },
-    "events": { "consumerOnly": true, "producerOnly": false, "description": "The events collection of methods", "methods": { "calendarImport": { "description": "Imports an event", "signatures": [ "com.google.api.services.calendar.Calendar$Events$CalendarImport calendarImport(String calendarId, com.google.api.services.calendar.model.Event content)" ] }, "delete": { "description": "Deletes an event", "signatures": [ "com.google.api.services.calendar.Calendar$Events$Delete delete(String cal [...]
-    "freebusy": { "consumerOnly": true, "producerOnly": false, "description": "The freebusy collection of methods", "methods": { "query": { "description": "Returns free\/busy information for a set of calendars", "signatures": [ "com.google.api.services.calendar.Calendar$Freebusy$Query query(com.google.api.services.calendar.model.FreeBusyRequest content)" ] } } },
-    "list": { "consumerOnly": true, "producerOnly": false, "description": "The calendarList collection of methods", "methods": { "delete": { "description": "Deletes an entry on the user's calendar list", "signatures": [ "com.google.api.services.calendar.Calendar$CalendarList$Delete delete(String calendarId)" ] }, "get": { "description": "Returns an entry on the user's calendar list", "signatures": [ "com.google.api.services.calendar.Calendar$CalendarList$Get get(String calendarId)" ] },  [...]
-    "settings": { "consumerOnly": true, "producerOnly": false, "description": "The settings collection of methods", "methods": { "get": { "description": "Returns a single user setting", "signatures": [ "com.google.api.services.calendar.Calendar$Settings$Get get(String setting)" ] }, "watch": { "description": "Watch for changes to Settings resources", "signatures": [ "com.google.api.services.calendar.Calendar$Settings$Watch watch(com.google.api.services.calendar.model.Channel content)" ] } } }
-  },
-  "apiProperties": {
-    "acl": { "methods": { "delete": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", "optional" [...]
-    "calendars": { "methods": { "clear": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", "opti [...]
-    "channels": { "methods": { "stop": { "properties": { "contentChannel": { "kind": "parameter", "displayName": "Content Channel", "group": "consumer", "label": "", "required": false, "type": "object", "javaType": "com.google.api.services.calendar.model.Channel", "deprecated": false, "autowired": false, "secret": false, "description": "The com.google.api.services.calendar.model.Channel", "optional": false } } } } },
-    "events": { "methods": { "calendarImport": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", [...]
-    "freebusy": { "methods": { "query": { "properties": { "content": { "kind": "parameter", "displayName": "Content", "group": "consumer", "label": "", "required": false, "type": "object", "javaType": "com.google.api.services.calendar.model.FreeBusyRequest", "deprecated": false, "autowired": false, "secret": false, "description": "The com.google.api.services.calendar.model.FreeBusyRequest", "optional": false } } } } },
-    "list": { "methods": { "delete": { "properties": { "calendarId": { "kind": "parameter", "displayName": "Calendar Id", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword.", "optional [...]
-    "settings": { "methods": { "get": { "properties": { "setting": { "kind": "parameter", "displayName": "Setting", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The id of the user setting", "optional": false } } }, "watch": { "properties": { "contentChannel": { "kind": "parameter", "displayName": "Content Channel", "group": "consumer", "label": "", "required [...]
-  }
-}
diff --git a/components/camel-google-calendar/src/main/docs/google-calendar-component.adoc b/components/camel-google-calendar/src/main/docs/google-calendar-component.adoc
deleted file mode 100644
index baf63b9..0000000
--- a/components/camel-google-calendar/src/main/docs/google-calendar-component.adoc
+++ /dev/null
@@ -1,636 +0,0 @@
-[[google-calendar-component]]
-= Google Calendar Component
-:docTitle: Google Calendar
-:artifactId: camel-google-calendar
-:description: Perform various operations on a Google Calendar.
-:since: 2.15
-:supportLevel: Stable
-:component-header: Both producer and consumer are supported
-include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/google-calendar.adoc[opts=optional]
-//Manually maintained attributes
-:group: Google
-
-*Since Camel {since}*
-
-*{component-header}*
-
-The Google Calendar component provides access
-to http://google.com/calendar[Google Calendar] via
-the https://developers.google.com/google-apps/calendar/v3/reference/[Google
-Calendar Web APIs].
-
-Google Calendar uses
-the https://developers.google.com/accounts/docs/OAuth2[OAuth 2.0
-protocol] for authenticating a Google account and authorizing access to
-user data. Before you can use this component, you will need
-to https://developers.google.com/google-apps/calendar/auth[create an
-account and generate OAuth credentials]. Credentials comprise of a
-clientId, clientSecret, and a refreshToken. A handy resource for
-generating a long-lived refreshToken is
-the https://developers.google.com/oauthplayground[OAuth playground].
-
-Maven users will need to add the following dependency to their pom.xml
-for this component:
-
-[source,xml]
-----
-<dependency>
-        <groupId>org.apache.camel</groupId>
-        <artifactId>camel-google-calendar</artifactId>
-        <!-- use the same version as your Camel core version -->
-        <version>x.x.x</version>
-</dependency>
-----
-
-== Component options
-
-// component options: START
-The Google Calendar component supports 14 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *applicationName* (common) | Google calendar application name. Example would be camel-google-calendar/1.0 |  | String
-| *clientId* (common) | Client ID of the calendar application |  | String
-| *configuration* (common) | To use the shared configuration |  | GoogleCalendarConfiguration
-| *scopes* (common) | Specifies the level of permissions you want a calendar application to have to a user account. You can separate multiple scopes by comma. See \https://developers.google.com/google-apps/calendar/auth for more info. | https://www.googleapis.com/auth/calendar | String
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *lazyStartProducer* (producer) | 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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *autowiredEnabled* (advanced) | 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 then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
-| *clientFactory* (advanced) | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleCalendarClientFactory |  | GoogleCalendarClientFactory
-| *accessToken* (security) | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. |  | String
-| *clientSecret* (security) | Client secret of the calendar application |  | String
-| *emailAddress* (security) | The emailAddress of the Google Service Account. |  | String
-| *p12FileName* (security) | The name of the p12 file which has the private key to use with the Google Service Account. |  | String
-| *refreshToken* (security) | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. |  | String
-| *user* (security) | The email address of the user the application is trying to impersonate in the service account flow |  | String
-|===
-// component options: END
-
-
-// endpoint options: START
-The Google Calendar endpoint is configured using URI syntax:
-
-----
-google-calendar:apiName/methodName
-----
-
-with the following path and query parameters:
-
-=== Path Parameters (2 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *apiName* | *Required* What kind of operation to perform. There are 8 enums and the value can be one of: ACL, LIST, CALENDARS, CHANNELS, COLORS, FREEBUSY, EVENTS, SETTINGS |  | GoogleCalendarApiName
-| *methodName* | *Required* What sub operation to use for the selected operation. There are 14 enums and the value can be one of: calendarImport, clear, delete, get, insert, instances, list, move, patch, query, quickAdd, stop, update, watch |  | String
-|===
-
-
-=== Query Parameters (30 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *applicationName* (common) | Google calendar application name. Example would be camel-google-calendar/1.0 |  | String
-| *clientId* (common) | Client ID of the calendar application |  | String
-| *inBody* (common) | Sets the name of a parameter to be passed in the exchange In Body |  | String
-| *scopes* (common) | Specifies the level of permissions you want a calendar application to have to a user account. You can separate multiple scopes by comma. See \https://developers.google.com/google-apps/calendar/auth for more info. | https://www.googleapis.com/auth/calendar | String
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
-| *exceptionHandler* (consumer) | 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 consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
-| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. There are 3 enums and the value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
-| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPollStrategy
-| *lazyStartProducer* (producer) | 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 starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
-| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
-| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
-| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
-| *delay* (scheduler) | Milliseconds before the next poll. | 500 | long
-| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
-| *initialDelay* (scheduler) | Milliseconds before the first poll starts. | 1000 | long
-| *repeatCount* (scheduler) | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0 | long
-| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. There are 6 enums and the value can be one of: TRACE, DEBUG, INFO, WARN, ERROR, OFF | TRACE | LoggingLevel
-| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutorService
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler | none | Object
-| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
-| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
-| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. There are 7 enums and the value can be one of: NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS | MILLISECONDS | TimeUnit
-| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
-| *accessToken* (security) | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. |  | String
-| *clientSecret* (security) | Client secret of the calendar application |  | String
-| *emailAddress* (security) | The emailAddress of the Google Service Account. |  | String
-| *p12FileName* (security) | The name of the p12 file which has the private key to use with the Google Service Account. |  | String
-| *refreshToken* (security) | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. |  | String
-| *user* (security) | The email address of the user the application is trying to impersonate in the service account flow |  | String
-|===
-
-
-
-
-=== API Parameters (7 APIs):
-
-The Google Calendar endpoint is an API based component and has additional parameters based on which API name and API method is used.
-The API name and API method is located in the endpoint URI as the apiName/methodName path parameters:
-
-----
-google-calendar:apiName/methodName
-----
-
-There are 7 API names as listed in the table below:
-
-[width="100%",cols="2,2,6",options="header"]
-|===
-| API Name | Type | Description
-| *acl* | Both | The acl collection of methods
-| *calendars* | Both | The calendars collection of methods
-| *channels* | Both | The channels collection of methods
-| *events* | Both | The events collection of methods
-| *freebusy* | Both | The freebusy collection of methods
-| *list* | Both | The calendarList collection of methods
-| *settings* | Both | The settings collection of methods
-|===
-
-Each API is documented in the following sections to come.
-
-
-==== API: acl
-
-*Both producer and consumer are supported*
-
-
-
-
-The acl API has 7 method(s) which is represented by the following method signatures
-(an API method may have multiple signatures due to overloading):
-
-[source,java]
-----
-
-com.google.api.services.calendar.Calendar.Acl.Delete delete(String calendarId, String ruleId);
-
-com.google.api.services.calendar.Calendar.Acl.Get get(String calendarId, String ruleId);
-
-com.google.api.services.calendar.Calendar.Acl.Insert insert(String calendarId, com.google.api.services.calendar.model.AclRule content);
-
-com.google.api.services.calendar.Calendar.Acl.List list(String calendarId);
-
-com.google.api.services.calendar.Calendar.Acl.Patch patch(String calendarId, String ruleId, com.google.api.services.calendar.model.AclRule content);
-
-com.google.api.services.calendar.Calendar.Acl.Update update(String calendarId, String ruleId, com.google.api.services.calendar.model.AclRule content);
-
-com.google.api.services.calendar.Calendar.Acl.Watch watch(String calendarId, com.google.api.services.calendar.model.Channel content);
-
-----
-
-The acl API is defined in the syntax as follows:
-
-----
-google-calendar:acl/methodName?[parameters]
-----
-
-The 7 method(s) is listed in the table below.
-(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
-
-[width="100%",cols="2,2,6",options="header"]
-|===
-| Method | Alias | Description
-| *delete* |  | Deletes an access control rule
-| *get* |  | Returns an access control rule
-| *insert* |  | Creates an access control rule
-| *list* |  | Returns the rules in the access control list for the calendar
-| *patch* |  | Updates an access control rule
-| *update* |  | Updates an access control rule
-| *watch* |  | Watch for changes to ACL resources
-|===
-
-The acl API method(s) has the following set of parameters listed in the table below:
-[width="100%",cols="2,2,4,2",options="header"]
-|===
-| Method | Parameter | Description | Type
-| delete | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| delete | *ruleId* |  ACL rule identifier | String
-| get | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| get | *ruleId* |  ACL rule identifier | String
-| insert | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| insert | *content* |  The com.google.api.services.calendar.model.AclRule | AclRule
-| list | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| patch | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| patch | *content* |  The com.google.api.services.calendar.model.AclRule | AclRule
-| patch | *ruleId* |  ACL rule identifier | String
-| update | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| update | *content* |  The com.google.api.services.calendar.model.AclRule | AclRule
-| update | *ruleId* |  ACL rule identifier | String
-| watch | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| watch | *contentChannel* |  The com.google.api.services.calendar.model.Channel | Channel
-|===
-
-In addition to the parameters above, the acl API can also use from the 30 endpoint query option
-which is listed in the _Query Parameters_ section.
-
-Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
-The message header name must be of the format `CamelGoogleCalendar.parameter`.
-The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
-would override a `CamelGoogleCalendar.myParameterNameHere` header.
-
-
-
-==== API: calendars
-
-*Both producer and consumer are supported*
-
-
-
-
-The calendars API has 6 method(s) which is represented by the following method signatures
-(an API method may have multiple signatures due to overloading):
-
-[source,java]
-----
-
-com.google.api.services.calendar.Calendar.Calendars.Clear clear(String calendarId);
-
-com.google.api.services.calendar.Calendar.Calendars.Delete delete(String calendarId);
-
-com.google.api.services.calendar.Calendar.Calendars.Get get(String calendarId);
-
-com.google.api.services.calendar.Calendar.Calendars.Insert insert(com.google.api.services.calendar.model.Calendar content);
-
-com.google.api.services.calendar.Calendar.Calendars.Patch patch(String calendarId, com.google.api.services.calendar.model.Calendar content);
-
-com.google.api.services.calendar.Calendar.Calendars.Update update(String calendarId, com.google.api.services.calendar.model.Calendar content);
-
-----
-
-The calendars API is defined in the syntax as follows:
-
-----
-google-calendar:calendars/methodName?[parameters]
-----
-
-The 6 method(s) is listed in the table below.
-(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
-
-[width="100%",cols="2,2,6",options="header"]
-|===
-| Method | Alias | Description
-| *clear* |  | Clears a primary calendar
-| *delete* |  | Deletes a secondary calendar
-| *get* |  | Returns metadata for a calendar
-| *insert* |  | Creates a secondary calendar
-| *patch* |  | Updates metadata for a calendar
-| *update* |  | Updates metadata for a calendar
-|===
-
-The calendars API method(s) has the following set of parameters listed in the table below:
-[width="100%",cols="2,2,4,2",options="header"]
-|===
-| Method | Parameter | Description | Type
-| clear | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| delete | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| get | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| insert | *content* |  The com.google.api.services.calendar.model.Calendar | Calendar
-| patch | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| patch | *content* |  The com.google.api.services.calendar.model.Calendar | Calendar
-| update | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| update | *content* |  The com.google.api.services.calendar.model.Calendar | Calendar
-|===
-
-In addition to the parameters above, the calendars API can also use from the 30 endpoint query option
-which is listed in the _Query Parameters_ section.
-
-Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
-The message header name must be of the format `CamelGoogleCalendar.parameter`.
-The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
-would override a `CamelGoogleCalendar.myParameterNameHere` header.
-
-
-
-==== API: channels
-
-*Both producer and consumer are supported*
-
-
-
-
-The channels API has 1 method(s) which is represented by the following method signatures
-(an API method may have multiple signatures due to overloading):
-
-[source,java]
-----
-
-com.google.api.services.calendar.Calendar.Channels.Stop stop(com.google.api.services.calendar.model.Channel content);
-
-----
-
-The channels API is defined in the syntax as follows:
-
-----
-google-calendar:channels/methodName?[parameters]
-----
-
-The 1 method(s) is listed in the table below.
-(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
-
-[width="100%",cols="2,2,6",options="header"]
-|===
-| Method | Alias | Description
-| *stop* |  | Stop watching resources through this channel
-|===
-
-The channels API method(s) has the following set of parameters listed in the table below:
-[width="100%",cols="2,2,4,2",options="header"]
-|===
-| Method | Parameter | Description | Type
-| stop | *contentChannel* |  The com.google.api.services.calendar.model.Channel | Channel
-|===
-
-In addition to the parameters above, the channels API can also use from the 30 endpoint query option
-which is listed in the _Query Parameters_ section.
-
-Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
-The message header name must be of the format `CamelGoogleCalendar.parameter`.
-The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
-would override a `CamelGoogleCalendar.myParameterNameHere` header.
-
-
-
-==== API: events
-
-*Both producer and consumer are supported*
-
-
-
-
-The events API has 11 method(s) which is represented by the following method signatures
-(an API method may have multiple signatures due to overloading):
-
-[source,java]
-----
-
-com.google.api.services.calendar.Calendar.Events.CalendarImport calendarImport(String calendarId, com.google.api.services.calendar.model.Event content);
-
-com.google.api.services.calendar.Calendar.Events.Delete delete(String calendarId, String eventId);
-
-com.google.api.services.calendar.Calendar.Events.Get get(String calendarId, String eventId);
-
-com.google.api.services.calendar.Calendar.Events.Insert insert(String calendarId, com.google.api.services.calendar.model.Event content);
-
-com.google.api.services.calendar.Calendar.Events.Instances instances(String calendarId, String eventId);
-
-com.google.api.services.calendar.Calendar.Events.List list(String calendarId);
-
-com.google.api.services.calendar.Calendar.Events.Move move(String calendarId, String eventId, String destination);
-
-com.google.api.services.calendar.Calendar.Events.Patch patch(String calendarId, String eventId, com.google.api.services.calendar.model.Event content);
-
-com.google.api.services.calendar.Calendar.Events.QuickAdd quickAdd(String calendarId, String text);
-
-com.google.api.services.calendar.Calendar.Events.Update update(String calendarId, String eventId, com.google.api.services.calendar.model.Event content);
-
-com.google.api.services.calendar.Calendar.Events.Watch watch(String calendarId, com.google.api.services.calendar.model.Channel content);
-
-----
-
-The events API is defined in the syntax as follows:
-
-----
-google-calendar:events/methodName?[parameters]
-----
-
-The 11 method(s) is listed in the table below.
-(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
-
-[width="100%",cols="2,2,6",options="header"]
-|===
-| Method | Alias | Description
-| *calendarImport* |  | Imports an event
-| *delete* |  | Deletes an event
-| *get* |  | Returns an event
-| *insert* |  | Creates an event
-| *instances* |  | Returns instances of the specified recurring event
-| *list* |  | Returns events on the specified calendar
-| *move* |  | Moves an event to another calendar, i
-| *patch* |  | Updates an event
-| *quickAdd* |  | Creates an event based on a simple text string
-| *update* |  | Updates an event
-| *watch* |  | Watch for changes to Events resources
-|===
-
-The events API method(s) has the following set of parameters listed in the table below:
-[width="100%",cols="2,2,4,2",options="header"]
-|===
-| Method | Parameter | Description | Type
-| calendarImport | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| calendarImport | *content* |  The com.google.api.services.calendar.model.Event | Event
-| delete | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| delete | *eventId* |  Event identifier | String
-| get | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| get | *eventId* |  Event identifier | String
-| insert | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| insert | *content* |  The com.google.api.services.calendar.model.Event | Event
-| instances | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| instances | *eventId* |  Recurring event identifier | String
-| list | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| move | *calendarId* |  Calendar identifier of the source calendar where the event currently is on | String
-| move | *destination* |  Calendar identifier of the target calendar where the event is to be moved to | String
-| move | *eventId* |  Event identifier | String
-| patch | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| patch | *content* |  The com.google.api.services.calendar.model.Event | Event
-| patch | *eventId* |  Event identifier | String
-| quickAdd | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| quickAdd | *text* |  The text describing the event to be created | String
-| update | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| update | *content* |  The com.google.api.services.calendar.model.Event | Event
-| update | *eventId* |  Event identifier | String
-| watch | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| watch | *contentChannel* |  The com.google.api.services.calendar.model.Channel | Channel
-|===
-
-In addition to the parameters above, the events API can also use from the 30 endpoint query option
-which is listed in the _Query Parameters_ section.
-
-Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
-The message header name must be of the format `CamelGoogleCalendar.parameter`.
-The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
-would override a `CamelGoogleCalendar.myParameterNameHere` header.
-
-
-
-==== API: freebusy
-
-*Both producer and consumer are supported*
-
-
-
-
-The freebusy API has 1 method(s) which is represented by the following method signatures
-(an API method may have multiple signatures due to overloading):
-
-[source,java]
-----
-
-com.google.api.services.calendar.Calendar.Freebusy.Query query(com.google.api.services.calendar.model.FreeBusyRequest content);
-
-----
-
-The freebusy API is defined in the syntax as follows:
-
-----
-google-calendar:freebusy/methodName?[parameters]
-----
-
-The 1 method(s) is listed in the table below.
-(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
-
-[width="100%",cols="2,2,6",options="header"]
-|===
-| Method | Alias | Description
-| *query* |  | Returns free/busy information for a set of calendars
-|===
-
-The freebusy API method(s) has the following set of parameters listed in the table below:
-[width="100%",cols="2,2,4,2",options="header"]
-|===
-| Method | Parameter | Description | Type
-| query | *content* |  The com.google.api.services.calendar.model.FreeBusyRequest | FreeBusyRequest
-|===
-
-In addition to the parameters above, the freebusy API can also use from the 30 endpoint query option
-which is listed in the _Query Parameters_ section.
-
-Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
-The message header name must be of the format `CamelGoogleCalendar.parameter`.
-The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
-would override a `CamelGoogleCalendar.myParameterNameHere` header.
-
-
-
-==== API: list
-
-*Both producer and consumer are supported*
-
-
-
-
-The list API has 6 method(s) which is represented by the following method signatures
-(an API method may have multiple signatures due to overloading):
-
-[source,java]
-----
-
-com.google.api.services.calendar.Calendar.CalendarList.Delete delete(String calendarId);
-
-com.google.api.services.calendar.Calendar.CalendarList.Get get(String calendarId);
-
-com.google.api.services.calendar.Calendar.CalendarList.Insert insert(com.google.api.services.calendar.model.CalendarListEntry content);
-
-com.google.api.services.calendar.Calendar.CalendarList.Patch patch(String calendarId, com.google.api.services.calendar.model.CalendarListEntry content);
-
-com.google.api.services.calendar.Calendar.CalendarList.Update update(String calendarId, com.google.api.services.calendar.model.CalendarListEntry content);
-
-com.google.api.services.calendar.Calendar.CalendarList.Watch watch(com.google.api.services.calendar.model.Channel content);
-
-----
-
-The list API is defined in the syntax as follows:
-
-----
-google-calendar:list/methodName?[parameters]
-----
-
-The 6 method(s) is listed in the table below.
-(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
-
-[width="100%",cols="2,2,6",options="header"]
-|===
-| Method | Alias | Description
-| *delete* |  | Deletes an entry on the user's calendar list
-| *get* |  | Returns an entry on the user's calendar list
-| *insert* |  | Adds an entry to the user's calendar list
-| *patch* |  | Updates an entry on the user's calendar list
-| *update* |  | Updates an entry on the user's calendar list
-| *watch* |  | Watch for changes to CalendarList resources
-|===
-
-The list API method(s) has the following set of parameters listed in the table below:
-[width="100%",cols="2,2,4,2",options="header"]
-|===
-| Method | Parameter | Description | Type
-| delete | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| get | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| insert | *content* |  The com.google.api.services.calendar.model.CalendarListEntry | CalendarListEntry
-| patch | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| patch | *content* |  The com.google.api.services.calendar.model.CalendarListEntry | CalendarListEntry
-| update | *calendarId* |  Calendar identifier. To retrieve calendar IDs call the calendarList.list method. If you want to access the primary calendar of the currently logged in user, use the primary keyword. | String
-| update | *content* |  The com.google.api.services.calendar.model.CalendarListEntry | CalendarListEntry
-| watch | *contentChannel* |  The com.google.api.services.calendar.model.Channel | Channel
-|===
-
-In addition to the parameters above, the list API can also use from the 30 endpoint query option
-which is listed in the _Query Parameters_ section.
-
-Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
-The message header name must be of the format `CamelGoogleCalendar.parameter`.
-The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
-would override a `CamelGoogleCalendar.myParameterNameHere` header.
-
-
-
-==== API: settings
-
-*Both producer and consumer are supported*
-
-
-
-
-The settings API has 2 method(s) which is represented by the following method signatures
-(an API method may have multiple signatures due to overloading):
-
-[source,java]
-----
-
-com.google.api.services.calendar.Calendar.Settings.Get get(String setting);
-
-com.google.api.services.calendar.Calendar.Settings.Watch watch(com.google.api.services.calendar.model.Channel content);
-
-----
-
-The settings API is defined in the syntax as follows:
-
-----
-google-calendar:settings/methodName?[parameters]
-----
-
-The 2 method(s) is listed in the table below.
-(API methods can have a shorthand alias name which can be used in the syntax instead of the name)
-
-[width="100%",cols="2,2,6",options="header"]
-|===
-| Method | Alias | Description
-| *get* |  | Returns a single user setting
-| *watch* |  | Watch for changes to Settings resources
-|===
-
-The settings API method(s) has the following set of parameters listed in the table below:
-[width="100%",cols="2,2,4,2",options="header"]
-|===
-| Method | Parameter | Description | Type
-| get | *setting* |  The id of the user setting | String
-| watch | *contentChannel* |  The com.google.api.services.calendar.model.Channel | Channel
-|===
-
-In addition to the parameters above, the settings API can also use from the 30 endpoint query option
-which is listed in the _Query Parameters_ section.
-
-Any of the parameters can be provided in either the endpoint URI, or dynamically in a message header.
-The message header name must be of the format `CamelGoogleCalendar.parameter`.
-The `inBody` parameter overrides message header, i.e. the endpoint parameter `inBody=myParameterNameHere`
-would override a `CamelGoogleCalendar.myParameterNameHere` header.
-// endpoint options: END
-
-
-include::camel-spring-boot::page$google-calendar-starter.adoc[]
diff --git a/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc b/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
deleted file mode 100644
index ef75fce..0000000
--- a/components/camel-google-calendar/src/main/docs/google-calendar-stream-component.adoc
+++ /dev/null
@@ -1,147 +0,0 @@
-[[google-calendar-stream-component]]
-= Google Calendar Stream Component
-:docTitle: Google Calendar Stream
-:artifactId: camel-google-calendar
-:description: Poll for changes in a Google Calendar.
-:since: 2.23
-:supportLevel: Stable
-:component-header: Only consumer is supported
-include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/google-calendar-stream.adoc[opts=optional]
-//Manually maintained attributes
-:group: Google
-
-*Since Camel {since}*
-
-*{component-header}*
-
-The Google Calendar Stream component provides access
-to https://calendar.google.com[Calendar] via
-the https://developers.google.com/calendar/overview[Google Calendar
-Web APIs]. This component provides the streaming feature for Calendar events.
-
-Google Calendar uses
-the https://developers.google.com/accounts/docs/OAuth2[OAuth 2.0
-protocol] for authenticating a Google account and authorizing access to
-user data. Before you can use this component, you will need
-to https://developers.google.com/calendar/auth[create an
-account and generate OAuth credentials]. Credentials comprise of a
-clientId, clientSecret, and a refreshToken. A handy resource for
-generating a long-lived refreshToken is
-the https://developers.google.com/oauthplayground[OAuth playground].
-
-Maven users will need to add the following dependency to their pom.xml
-for this component:
-
-[source,xml]
-----
-<dependency>
-        <groupId>org.apache.camel</groupId>
-        <artifactId>camel-google-calendar</artifactId>
-        <!-- use the same version as your Camel core version -->
-        <version>x.x.x</version>
-</dependency>
-----
-
-== URI Format
-
-The Google Calendar Component uses the following URI format:
-
-----
-google-calendar-stream://index?[options]
-----
-
-== Component options
-
-
-// component options: START
-The Google Calendar Stream component supports 19 options, which are listed below.
-
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *applicationName* (consumer) | Google Calendar application name. Example would be camel-google-calendar/1.0 |  | String
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *calendarId* (consumer) | The calendarId to be used | primary | String
-| *clientId* (consumer) | Client ID of the calendar application |  | String
-| *configuration* (consumer) | The configuration |  | GoogleCalendarStreamConfiguration
-| *considerLastUpdate* (consumer) | Take into account the lastUpdate of the last event polled as start date for the next poll | false | boolean
-| *consumeFromNow* (consumer) | Consume events in the selected calendar from now on | true | boolean
-| *maxResults* (consumer) | Max results to be returned | 10 | int
-| *query* (consumer) | The query to execute on calendar |  | String
-| *scopes* (consumer) | Specifies the level of permissions you want a calendar application to have to a user account. See \https://developers.google.com/calendar/auth for more info. |  | List
-| *syncFlow* (consumer) | Sync events, see \https://developers.google.com/calendar/v3/sync Note: not compatible with: 'query' and 'considerLastUpdate' parameters | false | boolean
-| *autowiredEnabled* (advanced) | 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 then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
-| *clientFactory* (advanced) | The client Factory |  | GoogleCalendarClientFactory
-| *accessToken* (security) | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. |  | String
-| *clientSecret* (security) | Client secret of the calendar application |  | String
-| *emailAddress* (security) | The emailAddress of the Google Service Account. |  | String
-| *p12FileName* (security) | The name of the p12 file which has the private key to use with the Google Service Account. |  | String
-| *refreshToken* (security) | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. |  | String
-| *user* (security) | The email address of the user the application is trying to impersonate in the service account flow. |  | String
-|===
-// component options: END
-
-
-
-
-// endpoint options: START
-The Google Calendar Stream endpoint is configured using URI syntax:
-
-----
-google-calendar-stream:index
-----
-
-with the following path and query parameters:
-
-=== Path Parameters (1 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *index* | *Required* Specifies an index for the endpoint |  | String
-|===
-
-
-=== Query Parameters (31 parameters):
-
-
-[width="100%",cols="2,5,^1,2",options="header"]
-|===
-| Name | Description | Default | Type
-| *applicationName* (consumer) | Google Calendar application name. Example would be camel-google-calendar/1.0 |  | String
-| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
-| *calendarId* (consumer) | The calendarId to be used | primary | String
-| *clientId* (consumer) | Client ID of the calendar application |  | String
-| *considerLastUpdate* (consumer) | Take into account the lastUpdate of the last event polled as start date for the next poll | false | boolean
-| *consumeFromNow* (consumer) | Consume events in the selected calendar from now on | true | boolean
-| *maxResults* (consumer) | Max results to be returned | 10 | int
-| *query* (consumer) | The query to execute on calendar |  | String
-| *scopes* (consumer) | Specifies the level of permissions you want a calendar application to have to a user account. See \https://developers.google.com/calendar/auth for more info. |  | List
-| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
-| *exceptionHandler* (consumer) | 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 consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
-| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. There are 3 enums and the value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
-| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPollStrategy
-| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
-| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
-| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
-| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
-| *delay* (scheduler) | Milliseconds before the next poll. | 500 | long
-| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
-| *initialDelay* (scheduler) | Milliseconds before the first poll starts. | 1000 | long
-| *repeatCount* (scheduler) | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0 | long
-| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. There are 6 enums and the value can be one of: TRACE, DEBUG, INFO, WARN, ERROR, OFF | TRACE | LoggingLevel
-| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutorService
-| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler | none | Object
-| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
-| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
-| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. There are 7 enums and the value can be one of: NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS | MILLISECONDS | TimeUnit
-| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
-| *accessToken* (security) | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. |  | String
-| *clientSecret* (security) | Client secret of the calendar application |  | String
-| *refreshToken* (security) | OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. |  | String
-|===
-
-include::camel-spring-boot::page$google-calendar-starter.adoc[]
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
deleted file mode 100644
index dd99736..0000000
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/BatchGoogleCalendarClientFactory.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * 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.calendar;
-
-import java.io.File;
-import java.util.Collection;
-
-import com.google.api.client.auth.oauth2.Credential;
-import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
-import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
-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.apache.camel.RuntimeCamelException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class BatchGoogleCalendarClientFactory implements GoogleCalendarClientFactory {
-
-    private static final Logger LOG = LoggerFactory.getLogger(BatchGoogleCalendarClientFactory.class);
-    private NetHttpTransport transport;
-    private JacksonFactory jsonFactory;
-
-    public BatchGoogleCalendarClientFactory() {
-        this.transport = new NetHttpTransport();
-        this.jsonFactory = new JacksonFactory();
-    }
-
-    @Override
-    public Calendar makeClient(
-            String clientId, String clientSecret,
-            Collection<String> scopes, String applicationName, String refreshToken,
-            String accessToken, String emailAddress, String p12FileName, String user) {
-        boolean serviceAccount = false;
-        // if emailAddress and p12FileName values are present, assume Google Service Account
-        if (null != emailAddress && !"".equals(emailAddress) && null != p12FileName && !"".equals(p12FileName)) {
-            serviceAccount = true;
-        }
-        if (!serviceAccount && (clientId == null || clientSecret == null)) {
-            throw new IllegalArgumentException("clientId and clientSecret are required to create Google Calendar client.");
-        }
-
-        try {
-            Credential credential;
-            if (serviceAccount) {
-                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) {
-            throw new RuntimeCamelException("Could not create Google Calendar client.", e);
-        }
-    }
-
-    // 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();
-    }
-
-    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;
-    }
-}
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
deleted file mode 100644
index a81a3a6..0000000
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarClientFactory.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.calendar;
-
-import java.util.Collection;
-
-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 user);
-
-}
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
deleted file mode 100644
index 6a0641b..0000000
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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.calendar;
-
-import java.util.Arrays;
-import java.util.List;
-
-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;
-import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.annotations.Component;
-import org.apache.camel.support.component.AbstractApiComponent;
-
-@Component("google-calendar")
-public class GoogleCalendarComponent
-        extends AbstractApiComponent<GoogleCalendarApiName, GoogleCalendarConfiguration, GoogleCalendarApiCollection> {
-
-    @Metadata
-    GoogleCalendarConfiguration configuration;
-    @Metadata(label = "advanced")
-    private Calendar client;
-    @Metadata(label = "advanced")
-    private GoogleCalendarClientFactory clientFactory;
-
-    public GoogleCalendarComponent() {
-        super(GoogleCalendarEndpoint.class, GoogleCalendarApiName.class, GoogleCalendarApiCollection.getCollection());
-    }
-
-    public GoogleCalendarComponent(CamelContext context) {
-        super(context, GoogleCalendarEndpoint.class, GoogleCalendarApiName.class, GoogleCalendarApiCollection.getCollection());
-    }
-
-    @Override
-    protected GoogleCalendarApiName getApiName(String apiNameStr) {
-        return getCamelContext().getTypeConverter().convertTo(GoogleCalendarApiName.class, apiNameStr);
-    }
-
-    public Calendar getClient(GoogleCalendarConfiguration config) {
-        if (client == null) {
-
-            List<String> list = null;
-            if (config.getScopes() != null) {
-                String[] arr = config.getScopes().split(",");
-                list = Arrays.asList(arr);
-            }
-
-            client = getClientFactory().makeClient(config.getClientId(),
-                    config.getClientSecret(), list,
-                    config.getApplicationName(), config.getRefreshToken(),
-                    config.getAccessToken(), config.getEmailAddress(),
-                    config.getP12FileName(), config.getUser());
-        }
-        return client;
-    }
-
-    public GoogleCalendarClientFactory getClientFactory() {
-        if (clientFactory == null) {
-            clientFactory = new BatchGoogleCalendarClientFactory();
-        }
-        return clientFactory;
-    }
-
-    @Override
-    public GoogleCalendarConfiguration getConfiguration() {
-        if (configuration == null) {
-            configuration = new GoogleCalendarConfiguration();
-        }
-        return super.getConfiguration();
-    }
-
-    /**
-     * To use the shared configuration
-     */
-    @Override
-    public void setConfiguration(GoogleCalendarConfiguration configuration) {
-        super.setConfiguration(configuration);
-    }
-
-    /**
-     * To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use
-     * {@link BatchGoogleCalendarClientFactory}
-     */
-    public void setClientFactory(GoogleCalendarClientFactory clientFactory) {
-        this.clientFactory = clientFactory;
-    }
-
-    @Override
-    protected Endpoint createEndpoint(
-            String uri, String methodName, GoogleCalendarApiName apiName,
-            GoogleCalendarConfiguration endpointConfiguration) {
-        endpointConfiguration.setApiName(apiName);
-        endpointConfiguration.setMethodName(methodName);
-        return new GoogleCalendarEndpoint(uri, this, apiName, methodName, endpointConfiguration);
-    }
-}
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
deleted file mode 100644
index b0631437..0000000
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConfiguration.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * 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.calendar;
-
-import com.google.api.services.calendar.CalendarScopes;
-import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName;
-import org.apache.camel.spi.Configurer;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriParams;
-import org.apache.camel.spi.UriPath;
-
-/**
- * Component configuration for GoogleCalendar component.
- */
-@UriParams
-@Configurer(extended = true)
-public class GoogleCalendarConfiguration {
-
-    @UriPath
-    @Metadata(required = true)
-    private GoogleCalendarApiName apiName;
-    @UriPath(enums = "calendarImport,clear,delete,get,insert,instances,list,move,patch,query,quickAdd,stop,update,watch")
-    @Metadata(required = true)
-    private String methodName;
-    @UriParam(defaultValue = CalendarScopes.CALENDAR)
-    private String scopes = CalendarScopes.CALENDAR;
-    @UriParam
-    private String clientId;
-    @UriParam
-    private String applicationName;
-    @UriParam(label = "security", secret = true)
-    private String emailAddress;
-    @UriParam(label = "security", secret = true)
-    private String clientSecret;
-    @UriParam(label = "security", secret = true)
-    private String accessToken;
-    @UriParam(label = "security", secret = true)
-    private String refreshToken;
-    @UriParam(label = "security", secret = true)
-    private String p12FileName;
-    @UriParam(label = "security", secret = true)
-    private String user;
-
-    public GoogleCalendarApiName getApiName() {
-        return apiName;
-    }
-
-    /**
-     * What kind of operation to perform
-     */
-    public void setApiName(GoogleCalendarApiName apiName) {
-        this.apiName = apiName;
-    }
-
-    public String getMethodName() {
-        return methodName;
-    }
-
-    /**
-     * What sub operation to use for the selected operation
-     */
-    public void setMethodName(String methodName) {
-        this.methodName = methodName;
-    }
-
-    public String getClientId() {
-        return clientId;
-    }
-
-    /**
-     * Client ID of the calendar application
-     */
-    public void setClientId(String clientId) {
-        this.clientId = clientId;
-    }
-
-    public String getEmailAddress() {
-        return emailAddress;
-    }
-
-    /**
-     * The emailAddress of the Google Service Account.
-     */
-    public void setEmailAddress(String emailAddress) {
-        this.emailAddress = emailAddress;
-    }
-
-    public String getClientSecret() {
-        return clientSecret;
-    }
-
-    /**
-     * Client secret of the calendar application
-     */
-    public void setClientSecret(String clientSecret) {
-        this.clientSecret = clientSecret;
-    }
-
-    public String getAccessToken() {
-        return accessToken;
-    }
-
-    /**
-     * OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage.
-     */
-    public void setAccessToken(String accessToken) {
-        this.accessToken = accessToken;
-    }
-
-    public String getRefreshToken() {
-        return refreshToken;
-    }
-
-    /**
-     * OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the
-     * current one expires - a necessity if the application is long-lived.
-     */
-    public void setRefreshToken(String refreshToken) {
-        this.refreshToken = refreshToken;
-    }
-
-    public String getApplicationName() {
-        return applicationName;
-    }
-
-    /**
-     * Google calendar application name. Example would be "camel-google-calendar/1.0"
-     */
-    public void setApplicationName(String applicationName) {
-        this.applicationName = applicationName;
-    }
-
-    public String getScopes() {
-        return scopes;
-    }
-
-    /**
-     * Specifies the level of permissions you want a calendar application to have to a user account. You can separate
-     * multiple scopes by comma. See https://developers.google.com/google-apps/calendar/auth for more info.
-     */
-    public void setScopes(String scopes) {
-        this.scopes = scopes;
-    }
-
-    public String getP12FileName() {
-        return p12FileName;
-    }
-
-    /**
-     * The name of the p12 file which has the private key to use with the Google Service Account.
-     */
-    public void setP12FileName(String p12FileName) {
-        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;
-    }
-
-}
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConsumer.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConsumer.java
deleted file mode 100644
index 5fc2204..0000000
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarConsumer.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.calendar;
-
-import java.util.Map;
-import java.util.Map.Entry;
-
-import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName;
-import org.apache.camel.spi.BeanIntrospection;
-import org.apache.camel.support.component.AbstractApiConsumer;
-
-/**
- * The GoogleCalendar consumer.
- */
-public class GoogleCalendarConsumer extends AbstractApiConsumer<GoogleCalendarApiName, GoogleCalendarConfiguration> {
-
-    public GoogleCalendarConsumer(GoogleCalendarEndpoint endpoint, Processor processor) {
-        super(endpoint, processor);
-    }
-
-    @Override
-    protected Object doInvokeMethod(Map<String, Object> properties) throws RuntimeCamelException {
-        AbstractGoogleClientRequest request = (AbstractGoogleClientRequest) super.doInvokeMethod(properties);
-        try {
-            BeanIntrospection beanIntrospection
-                    = getEndpoint().getCamelContext().adapt(ExtendedCamelContext.class).getBeanIntrospection();
-            for (Entry<String, Object> p : properties.entrySet()) {
-                beanIntrospection.setProperty(getEndpoint().getCamelContext(), request, p.getKey(), p.getValue());
-            }
-            return request.execute();
-        } catch (Exception e) {
-            throw new RuntimeCamelException(e);
-        }
-    }
-
-}
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpoint.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpoint.java
deleted file mode 100644
index 4cb22fb..0000000
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarEndpoint.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * 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.calendar;
-
-import java.util.Map;
-
-import com.google.api.services.calendar.Calendar;
-import org.apache.camel.Category;
-import org.apache.camel.Consumer;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiCollection;
-import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName;
-import org.apache.camel.component.google.calendar.internal.GoogleCalendarConstants;
-import org.apache.camel.component.google.calendar.internal.GoogleCalendarPropertiesHelper;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.support.component.AbstractApiEndpoint;
-import org.apache.camel.support.component.ApiMethod;
-import org.apache.camel.support.component.ApiMethodPropertiesHelper;
-
-/**
- * Perform various operations on a Google Calendar.
- */
-@UriEndpoint(firstVersion = "2.15.0", scheme = "google-calendar", title = "Google Calendar",
-             syntax = "google-calendar:apiName/methodName", apiSyntax = "apiName/methodName",
-             consumerPrefix = "consumer", category = { Category.API, Category.CLOUD })
-public class GoogleCalendarEndpoint extends AbstractApiEndpoint<GoogleCalendarApiName, GoogleCalendarConfiguration> {
-
-    @UriParam
-    private GoogleCalendarConfiguration configuration;
-
-    private Object apiProxy;
-
-    public GoogleCalendarEndpoint(String uri, GoogleCalendarComponent component,
-                                  GoogleCalendarApiName apiName, String methodName,
-                                  GoogleCalendarConfiguration endpointConfiguration) {
-        super(uri, component, apiName, methodName, GoogleCalendarApiCollection.getCollection().getHelper(apiName),
-              endpointConfiguration);
-        this.configuration = endpointConfiguration;
... 31967 lines suppressed ...


[camel] 03/06: CAMEL-16322 - Have a middle folder for google components

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 2353d02f554a1065d91ffdfdc6e803caebfe00de
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Mar 10 11:49:51 2021 +0100

    CAMEL-16322 - Have a middle folder for google components
---
 .../java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java    | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
index ec0cb5b..5f7ede0 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
@@ -590,6 +590,7 @@ public class PrepareCatalogMojo extends AbstractMojo {
                 case "camel-vertx-kafka":
                 case "camel-infinispan":
                 case "camel-azure":
+                case "camel-google":
                 case "camel-aws":
                     return false;
                 default:
@@ -1170,6 +1171,10 @@ public class PrepareCatalogMojo extends AbstractMojo {
                 return Arrays.asList(dir.resolve("camel-azure-eventhubs"), dir.resolve("camel-azure-storage-blob"),
                         dir.resolve("camel-azure-storage-datalake"),
                         dir.resolve("camel-azure-storage-queue"));
+            case "camel-google":
+                return Arrays.asList(dir.resolve("camel-google-bigquery"), dir.resolve("camel-google-calendar"),
+                         dir.resolve("camel-google-drive"), dir.resolve("camel-google-mail"), dir.resolve("camel-google-pubsub"), dir.resolve("camel-google-sheets"), 
+                         dir.resolve("camel-google-storage"));
             case "camel-aws":
                 return Arrays.asList(dir.resolve("camel-aws2-athena"), dir.resolve("camel-aws2-cw"),
                         dir.resolve("camel-aws2-ddb"), dir.resolve("camel-aws2-ec2"),