You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/09/20 11:43:19 UTC
[camel] 04/05: CAMEL-15549: Api components now have details about
APIs being consumer or producer only.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 2a041878c09d3fc18cf818949f1623cc67f1c434
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Sep 20 13:31:56 2020 +0200
CAMEL-15549: Api components now have details about APIs being consumer or producer only.
---
.../apache/camel/catalog/docs/box-component.adoc | 64 ++++++++++++++++++----
components/camel-box/camel-box-component/pom.xml | 19 +++++--
...CollaborationsManagerEndpointConfiguration.java | 3 +-
.../BoxCommentsManagerEndpointConfiguration.java | 3 +-
.../BoxEventLogsManagerEndpointConfiguration.java | 3 +-
.../box/BoxEventsManagerEndpointConfiguration.java | 3 +-
.../box/BoxFilesManagerEndpointConfiguration.java | 3 +-
.../BoxFoldersManagerEndpointConfiguration.java | 3 +-
.../box/BoxGroupsManagerEndpointConfiguration.java | 3 +-
.../box/BoxSearchManagerEndpointConfiguration.java | 3 +-
.../box/BoxTasksManagerEndpointConfiguration.java | 3 +-
.../box/BoxUsersManagerEndpointConfiguration.java | 3 +-
.../org/apache/camel/component/box/box.json | 40 +++++++-------
.../src/main/docs/box-component.adoc | 64 ++++++++++++++++++----
.../apache/camel/component/box/BoxEndpoint.java | 10 ++--
.../java/org/apache/camel/spi/ApiParams.java | 14 +++++
.../modules/ROOT/pages/box-component.adoc | 64 ++++++++++++++++++----
.../org/apache/camel/tooling/model/ApiModel.java | 18 ++++++
.../org/apache/camel/tooling/model/JsonMapper.java | 30 ++++++----
.../maven/AbstractApiMethodGeneratorMojo.java | 8 +++
.../camel/maven/ApiComponentGeneratorMojo.java | 2 +
.../main/java/org/apache/camel/maven/ApiProxy.java | 28 ++++++----
.../src/main/resources/api-endpoint-config.vm | 3 +-
.../packaging/EndpointSchemaGeneratorMojo.java | 6 ++
.../apache/camel/maven/packaging/MvelHelper.java | 10 ++++
.../src/main/resources/endpoint-options.mvel | 14 ++++-
.../main/java/org/apache/camel/spi/ApiParams.java | 14 +++++
27 files changed, 338 insertions(+), 100 deletions(-)
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/box-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/box-component.adoc
index 4958561..fd30ada 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/box-component.adoc
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/box-component.adoc
@@ -148,19 +148,19 @@ box:apiName/methodName
There are 10 API names as listed in the table below:
-[width="100%",cols="2,8",options="header"]
+[width="100%",cols="2,1,7",options="header"]
|===
-| API Name | Description
-| *collaborations* | Provides operations to manage Box collaborations
-| *comments* | Provides operations to manage Box comments
-| *event-logs* | Provides operations to read Box enterprise (admin) event logs
-| *events* | Provides operations to manage Box events
-| *files* | Provides operations to manage Box files
-| *folders* | Provides operations to manage Box folders
-| *groups* | Provides operations to manage Box groups
-| *search* | Provides operations to manage Box searches
-| *tasks* | Provides operations to manage Box tasks
-| *users* | Provides operations to manage Box users
+| API Name | Type | Description
+| *collaborations* | Producer | Provides operations to manage Box collaborations
+| *comments* | Producer | Provides operations to manage Box comments
+| *event-logs* | Producer | Provides operations to read Box enterprise (admin) event logs
+| *events* | Consumer | Provides operations to manage Box events
+| *files* | Producer | Provides operations to manage Box files
+| *folders* | Producer | Provides operations to manage Box folders
+| *groups* | Producer | Provides operations to manage Box groups
+| *search* | Producer | Provides operations to manage Box searches
+| *tasks* | Producer | Provides operations to manage Box tasks
+| *users* | Producer | Provides operations to manage Box users
|===
Each API is documented in the following sections to come.
@@ -168,6 +168,10 @@ Each API is documented in the following sections to come.
==== API: collaborations
+*Only producer is supported*
+
+
+
The collaborations API has 6 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -238,6 +242,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: comments
+*Only producer is supported*
+
+
+
The comments API has 6 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -306,6 +314,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: event-logs
+*Only producer is supported*
+
+
+
The event-logs API has 1 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -354,6 +366,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: events
+*Only consumer is supported*
+
+
+
The events API has 1 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -399,6 +415,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: files
+*Only producer is supported*
+
+
+
The files API has 22 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -569,6 +589,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: folders
+*Only producer is supported*
+
+
+
The folders API has 10 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -667,6 +691,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: groups
+*Only producer is supported*
+
+
+
The groups API has 9 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -753,6 +781,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: search
+*Only producer is supported*
+
+
+
The search API has 1 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -799,6 +831,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: tasks
+*Only producer is supported*
+
+
+
The tasks API has 9 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -881,6 +917,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: users
+*Only producer is supported*
+
+
+
The users API has 10 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
diff --git a/components/camel-box/camel-box-component/pom.xml b/components/camel-box/camel-box-component/pom.xml
index ca674ec..00df11f 100644
--- a/components/camel-box/camel-box-component/pom.xml
+++ b/components/camel-box/camel-box-component/pom.xml
@@ -119,6 +119,7 @@
<apiName>collaborations</apiName>
<proxyClass>org.apache.camel.component.box.api.BoxCollaborationsManager</proxyClass>
<fromJavasource />
+ <producerOnly>true</producerOnly>
<aliases>
<alias>
<methodPattern>addFolderCollaboration</methodPattern>
@@ -154,6 +155,7 @@
<apiName>comments</apiName>
<proxyClass>org.apache.camel.component.box.api.BoxCommentsManager</proxyClass>
<fromJavasource />
+ <producerOnly>true</producerOnly>
<aliases>
<alias>
<methodPattern>addFileComment</methodPattern>
@@ -185,6 +187,7 @@
<apiName>event-logs</apiName>
<proxyClass>org.apache.camel.component.box.api.BoxEventLogsManager</proxyClass>
<fromJavasource />
+ <producerOnly>true</producerOnly>
<aliases>
<alias>
<methodPattern>getEnterpriseEvents</methodPattern>
@@ -200,6 +203,7 @@
<apiName>files</apiName>
<proxyClass>org.apache.camel.component.box.api.BoxFilesManager</proxyClass>
<fromJavasource />
+ <producerOnly>true</producerOnly>
<aliases>
<alias>
<methodPattern>uploadFile</methodPattern>
@@ -310,8 +314,8 @@
<api>
<apiName>folders</apiName>
<proxyClass>org.apache.camel.component.box.api.BoxFoldersManager</proxyClass>
- <fromJavasource>
- </fromJavasource>
+ <producerOnly>true</producerOnly>
+ <fromJavasource />
<aliases>
<alias>
<methodPattern>getRootFolder</methodPattern>
@@ -368,8 +372,8 @@
<api>
<apiName>groups</apiName>
<proxyClass>org.apache.camel.component.box.api.BoxGroupsManager</proxyClass>
- <fromJavasource>
- </fromJavasource>
+ <fromJavasource />
+ <producerOnly>true</producerOnly>
<aliases>
<alias>
<methodPattern>createGroup</methodPattern>
@@ -423,6 +427,7 @@
<fromJavasource>
<excludeMethods>stopListening</excludeMethods>
</fromJavasource>
+ <consumerOnly>true</consumerOnly>
<excludeConfigNames>listener</excludeConfigNames>
<nullableOptions>
<nullableOption>startingPosition</nullableOption>
@@ -432,6 +437,7 @@
<apiName>search</apiName>
<proxyClass>org.apache.camel.component.box.api.BoxSearchManager</proxyClass>
<fromJavasource />
+ <producerOnly>true</producerOnly>
<aliases>
<alias>
<methodPattern>searchFolder</methodPattern>
@@ -442,8 +448,8 @@
<api>
<apiName>tasks</apiName>
<proxyClass>org.apache.camel.component.box.api.BoxTasksManager</proxyClass>
- <fromJavasource>
- </fromJavasource>
+ <fromJavasource />
+ <producerOnly>true</producerOnly>
<aliases>
<alias>
<methodPattern>addFileTask</methodPattern>
@@ -490,6 +496,7 @@
<apiName>users</apiName>
<proxyClass>org.apache.camel.component.box.api.BoxUsersManager</proxyClass>
<fromJavasource />
+ <producerOnly>true</producerOnly>
<aliases>
<alias>
<methodPattern>getCurrentUser</methodPattern>
diff --git a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxCollaborationsManagerEndpointConfiguration.java b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxCollaborationsManagerEndpointConfiguration.java
index 6964444..a90473e 100644
--- a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxCollaborationsManagerEndpointConfiguration.java
+++ b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxCollaborationsManagerEndpointConfiguration.java
@@ -14,7 +14,8 @@ import org.apache.camel.spi.UriParams;
/**
* Camel endpoint configuration for {@link org.apache.camel.component.box.api.BoxCollaborationsManager}.
*/
-@ApiParams(apiName = "collaborations", description = "Provides operations to manage Box collaborations",
+@ApiParams(apiName = "collaborations", producerOnly = true,
+ description = "Provides operations to manage Box collaborations",
apiMethods = {@ApiMethod(methodName = "addFolderCollaboration", description="Add a collaboration to this folder", signatures={"com.box.sdk.BoxCollaboration addFolderCollaboration(String folderId, com.box.sdk.BoxCollaborator collaborator, com.box.sdk.BoxCollaboration$Role role)"}), @ApiMethod(methodName = "addFolderCollaborationByEmail", description="Add a collaboration to this folder", signatures={"com.box.sdk.BoxCollaboration addFolderCollaborationByEmail(String folderId, Str [...]
@UriParams
@Configurer
diff --git a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxCommentsManagerEndpointConfiguration.java b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxCommentsManagerEndpointConfiguration.java
index 4a6553f..3f02955 100644
--- a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxCommentsManagerEndpointConfiguration.java
+++ b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxCommentsManagerEndpointConfiguration.java
@@ -14,7 +14,8 @@ import org.apache.camel.spi.UriParams;
/**
* Camel endpoint configuration for {@link org.apache.camel.component.box.api.BoxCommentsManager}.
*/
-@ApiParams(apiName = "comments", description = "Provides operations to manage Box comments",
+@ApiParams(apiName = "comments", producerOnly = true,
+ description = "Provides operations to manage Box comments",
apiMethods = {@ApiMethod(methodName = "addFileComment", description="Add comment to file", signatures={"com.box.sdk.BoxFile addFileComment(String fileId, String message)"}), @ApiMethod(methodName = "changeCommentMessage", description="Change comment message", signatures={"com.box.sdk.BoxComment changeCommentMessage(String commentId, String message)"}), @ApiMethod(methodName = "deleteComment", description="Delete comment", signatures={"void deleteComment(String commentId)"}), @ [...]
@UriParams
@Configurer
diff --git a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxEventLogsManagerEndpointConfiguration.java b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxEventLogsManagerEndpointConfiguration.java
index f8da3fb..6192af8 100644
--- a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxEventLogsManagerEndpointConfiguration.java
+++ b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxEventLogsManagerEndpointConfiguration.java
@@ -14,7 +14,8 @@ import org.apache.camel.spi.UriParams;
/**
* Camel endpoint configuration for {@link org.apache.camel.component.box.api.BoxEventLogsManager}.
*/
-@ApiParams(apiName = "event-logs", description = "Provides operations to read Box enterprise (admin) event logs",
+@ApiParams(apiName = "event-logs", producerOnly = true,
+ description = "Provides operations to read Box enterprise (admin) event logs",
apiMethods = {@ApiMethod(methodName = "getEnterpriseEvents", description="Create an event stream with optional starting initial position and add listener that will be notified when an event is received", signatures={"java.util.List<com.box.sdk.BoxEvent> getEnterpriseEvents(String position, java.util.Date after, java.util.Date before, com.box.sdk.BoxEvent$Type[] types)"})}, aliases = {"getEnterpriseEvents=events"})
@UriParams
@Configurer
diff --git a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxEventsManagerEndpointConfiguration.java b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxEventsManagerEndpointConfiguration.java
index de2c2b5..0092044 100644
--- a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxEventsManagerEndpointConfiguration.java
+++ b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxEventsManagerEndpointConfiguration.java
@@ -14,7 +14,8 @@ import org.apache.camel.spi.UriParams;
/**
* Camel endpoint configuration for {@link org.apache.camel.component.box.api.BoxEventsManager}.
*/
-@ApiParams(apiName = "events", description = "Provides operations to manage Box events",
+@ApiParams(apiName = "events", consumerOnly = true,
+ description = "Provides operations to manage Box events",
apiMethods = {@ApiMethod(methodName = "listen", description="Create an event stream with optional starting initial position and add listener that will be notified when an event is received", signatures={"void listen(com.box.sdk.EventListener listener, Long startingPosition)"})}, aliases = {})
@UriParams
@Configurer
diff --git a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxFilesManagerEndpointConfiguration.java b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxFilesManagerEndpointConfiguration.java
index 0f088a5..2979dc2 100644
--- a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxFilesManagerEndpointConfiguration.java
+++ b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxFilesManagerEndpointConfiguration.java
@@ -14,7 +14,8 @@ import org.apache.camel.spi.UriParams;
/**
* Camel endpoint configuration for {@link org.apache.camel.component.box.api.BoxFilesManager}.
*/
-@ApiParams(apiName = "files", description = "Provides operations to manage Box files",
+@ApiParams(apiName = "files", producerOnly = true,
+ description = "Provides operations to manage Box files",
apiMethods = {@ApiMethod(methodName = "checkUpload", description="Does a pre-verification before upload, to check if the filename already exists or if there is permission to upload", signatures={"void checkUpload(String fileName, String parentFolderId, Long size)"}), @ApiMethod(methodName = "copyFile", description="Copy file to destination folder while optionally giving it a new name", signatures={"com.box.sdk.BoxFile copyFile(String fileId, String destinationFolderId, String [...]
@UriParams
@Configurer
diff --git a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxFoldersManagerEndpointConfiguration.java b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxFoldersManagerEndpointConfiguration.java
index d6f29a2..94ceef5 100644
--- a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxFoldersManagerEndpointConfiguration.java
+++ b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxFoldersManagerEndpointConfiguration.java
@@ -14,7 +14,8 @@ import org.apache.camel.spi.UriParams;
/**
* Camel endpoint configuration for {@link org.apache.camel.component.box.api.BoxFoldersManager}.
*/
-@ApiParams(apiName = "folders", description = "Provides operations to manage Box folders",
+@ApiParams(apiName = "folders", producerOnly = true,
+ description = "Provides operations to manage Box folders",
apiMethods = {@ApiMethod(methodName = "copyFolder", description="Copy folder to destination folder while optionally giving it a new name", signatures={"com.box.sdk.BoxFolder copyFolder(String folderId, String destinationFolderId, String newName)"}), @ApiMethod(methodName = "createFolder", description="Create a folder specified by path from parent folder with given parentFolderId, creating intermediate directories as required", signatures={"com.box.sdk.BoxFolder createFolder(St [...]
@UriParams
@Configurer
diff --git a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxGroupsManagerEndpointConfiguration.java b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxGroupsManagerEndpointConfiguration.java
index ada5426..5fbf2b9 100644
--- a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxGroupsManagerEndpointConfiguration.java
+++ b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxGroupsManagerEndpointConfiguration.java
@@ -14,7 +14,8 @@ import org.apache.camel.spi.UriParams;
/**
* Camel endpoint configuration for {@link org.apache.camel.component.box.api.BoxGroupsManager}.
*/
-@ApiParams(apiName = "groups", description = "Provides operations to manage Box groups",
+@ApiParams(apiName = "groups", producerOnly = true,
+ description = "Provides operations to manage Box groups",
apiMethods = {@ApiMethod(methodName = "addGroupMembership", description="Add a member to group with the specified role", signatures={"com.box.sdk.BoxGroupMembership addGroupMembership(String groupId, String userId, com.box.sdk.BoxGroupMembership$Role role)"}), @ApiMethod(methodName = "createGroup", description="Create a new group with a specified name and optional additional parameters", signatures={"com.box.sdk.BoxGroup createGroup(String name, String provenance, String exter [...]
@UriParams
@Configurer
diff --git a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxSearchManagerEndpointConfiguration.java b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxSearchManagerEndpointConfiguration.java
index 3abd1fc..6052a76 100644
--- a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxSearchManagerEndpointConfiguration.java
+++ b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxSearchManagerEndpointConfiguration.java
@@ -14,7 +14,8 @@ import org.apache.camel.spi.UriParams;
/**
* Camel endpoint configuration for {@link org.apache.camel.component.box.api.BoxSearchManager}.
*/
-@ApiParams(apiName = "search", description = "Provides operations to manage Box searches",
+@ApiParams(apiName = "search", producerOnly = true,
+ description = "Provides operations to manage Box searches",
apiMethods = {@ApiMethod(methodName = "searchFolder", description="Search folder and all descendant folders using the given query", signatures={"java.util.Collection<com.box.sdk.BoxItem> searchFolder(String folderId, String query)"})}, aliases = {"searchFolder=search"})
@UriParams
@Configurer
diff --git a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxTasksManagerEndpointConfiguration.java b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxTasksManagerEndpointConfiguration.java
index 7e116cf..361d545 100644
--- a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxTasksManagerEndpointConfiguration.java
+++ b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxTasksManagerEndpointConfiguration.java
@@ -14,7 +14,8 @@ import org.apache.camel.spi.UriParams;
/**
* Camel endpoint configuration for {@link org.apache.camel.component.box.api.BoxTasksManager}.
*/
-@ApiParams(apiName = "tasks", description = "Provides operations to manage Box tasks",
+@ApiParams(apiName = "tasks", producerOnly = true,
+ description = "Provides operations to manage Box tasks",
apiMethods = {@ApiMethod(methodName = "addAssignmentToTask", description="Add assignment for task", signatures={"com.box.sdk.BoxTask addAssignmentToTask(String taskId, com.box.sdk.BoxUser assignTo)"}), @ApiMethod(methodName = "addFileTask", description="Add task to file", signatures={"com.box.sdk.BoxTask addFileTask(String fileId, com.box.sdk.BoxTask$Action action, java.util.Date dueAt, String message)"}), @ApiMethod(methodName = "deleteTask", description="Delete task", signat [...]
@UriParams
@Configurer
diff --git a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxUsersManagerEndpointConfiguration.java b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxUsersManagerEndpointConfiguration.java
index da28b14..0dc53b3 100644
--- a/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxUsersManagerEndpointConfiguration.java
+++ b/components/camel-box/camel-box-component/src/generated/java/org/apache/camel/component/box/BoxUsersManagerEndpointConfiguration.java
@@ -14,7 +14,8 @@ import org.apache.camel.spi.UriParams;
/**
* Camel endpoint configuration for {@link org.apache.camel.component.box.api.BoxUsersManager}.
*/
-@ApiParams(apiName = "users", description = "Provides operations to manage Box users",
+@ApiParams(apiName = "users", producerOnly = true,
+ description = "Provides operations to manage Box users",
apiMethods = {@ApiMethod(methodName = "addUserEmailAlias", description="Add a new email alias to user's account", signatures={"com.box.sdk.EmailAlias addUserEmailAlias(String userId, String email)"}), @ApiMethod(methodName = "createAppUser", description="Provision a new app user in an enterprise with additional user information using Box Developer Edition", signatures={"com.box.sdk.BoxUser createAppUser(String name, com.box.sdk.CreateUserParams params)"}), @ApiMethod(methodNam [...]
@UriParams
@Configurer
diff --git a/components/camel-box/camel-box-component/src/generated/resources/org/apache/camel/component/box/box.json b/components/camel-box/camel-box-component/src/generated/resources/org/apache/camel/component/box/box.json
index b5c0153..a243e65 100644
--- a/components/camel-box/camel-box-component/src/generated/resources/org/apache/camel/component/box/box.json
+++ b/components/camel-box/camel-box-component/src/generated/resources/org/apache/camel/component/box/box.json
@@ -70,27 +70,27 @@
"userPassword": { "kind": "parameter", "displayName": "User Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "configurationClass": "org.apache.camel.component.box.BoxConfiguration", "configurationField": "configuration", "description": "Box user password, MUST be provided if authSecureStorage is not set, or returns null on first call" }
},
"apis": {
- "collaborations": { "description": "Provides operations to manage Box collaborations", "aliases": [ "addFolderCollaboration=add", "addFolderCollaborationByEmail=addByEmail", "deleteCollaboration=delete", "getFolderCollaborations=collaborations", "getPendingCollaborations=pendingCollaborations", "getCollaborationInfo=info", "updateCollaborationInfo=updateInfo" ], "methods": { "addFolderCollaboration": { "description": "Add a collaboration to this folder", "signatures": [ "com.box.sdk. [...]
- "comments": { "description": "Provides operations to manage Box comments", "aliases": [ "addFileComment=add", "changeCommentMessage=updateMessage", "deleteComment=delete", "getCommentInfo=info", "getFileComments=comments", "replyToComment=reply" ], "methods": { "addFileComment": { "description": "Add comment to file", "signatures": [ "com.box.sdk.BoxFile addFileComment(String fileId, String message)" ] }, "changeCommentMessage": { "description": "Change comment message", "signatures" [...]
- "event-logs": { "description": "Provides operations to read Box enterprise (admin) event logs", "aliases": [ "getEnterpriseEvents=events" ], "methods": { "getEnterpriseEvents": { "description": "Create an event stream with optional starting initial position and add listener that will be notified when an event is received", "signatures": [ "java.util.List<com.box.sdk.BoxEvent> getEnterpriseEvents(String position, java.util.Date after, java.util.Date before, com.box.sdk.BoxEvent$Type[] [...]
- "events": { "description": "Provides operations to manage Box events", "methods": { "listen": { "description": "Create an event stream with optional starting initial position and add listener that will be notified when an event is received", "signatures": [ "void listen(com.box.sdk.EventListener listener, Long startingPosition)" ] } } },
- "files": { "description": "Provides operations to manage Box files", "aliases": [ "uploadFile=upload", "downloadFile=download", "copyFile=copy", "moveFile=move", "renameFile=rename", "createFileSharedLink=link", "deleteFile=delete", "uploadNewFileVersion=uploadVersion", "promoteFileVersion=promoteVersion", "getFileVersions=versions", "downloadPreviousFileVersion=downloadVersion", "deleteFileVersion=deleteVersion", "getFileInfo=info", "updateFileInfo=updateInfo", "createFileMetadata=c [...]
- "folders": { "description": "Provides operations to manage Box folders", "aliases": [ "getRootFolder=root", "createFolder=create", "copyFolder=copy", "moveFolder=move", "renameFolder=rename", "createFolderSharedLink=link", "deleteFolder=delete", "getFolder=folder", "getFolderInfo=info", "getFolderItems=items", "updateFolderInfo=updateInfo" ], "methods": { "copyFolder": { "description": "Copy folder to destination folder while optionally giving it a new name", "signatures": [ "com.box [...]
- "groups": { "description": "Provides operations to manage Box groups", "aliases": [ "createGroup=create", "deleteGroup=delete", "getAllGroups=groups", "getGroupInfo=info", "addGroupMembership=addMembership", "deleteGroupMembership=deleteMembership", "getGroupMemberships=memberships", "getGroupMembershipInfo=membershipInfo", "updateGroupMembershipInfo=updateMembershipInfo" ], "methods": { "addGroupMembership": { "description": "Add a member to group with the specified role", "signatur [...]
- "search": { "description": "Provides operations to manage Box searches", "aliases": [ "searchFolder=search" ], "methods": { "searchFolder": { "description": "Search folder and all descendant folders using the given query", "signatures": [ "java.util.Collection<com.box.sdk.BoxItem> searchFolder(String folderId, String query)" ] } } },
- "tasks": { "description": "Provides operations to manage Box tasks", "aliases": [ "addFileTask=add", "deleteTask=delete", "getFileTasks=tasks", "getTaskInfo=info", "updateTaskInfo=updateInfo", "addAssignmentToTask=addAssignment", "deleteTaskAssignment=deleteAssignment", "getTaskAssignments=assignments", "getTaskAssignmentInfo=assignmentInfo" ], "methods": { "addAssignmentToTask": { "description": "Add assignment for task", "signatures": [ "com.box.sdk.BoxTask addAssignmentToTask(Stri [...]
- "users": { "description": "Provides operations to manage Box users", "aliases": [ "getCurrentUser=currentUser", "getAllEnterpriseOrExternalUsers=users", "createAppUser=create", "createEnterpriseUser=create", "deleteUser=delete", "addUserEmailAlias=addEmailAlias", "getUserEmailAlias=emailAlias", "deleteUserEmailAlias=deleteEmailAlias", "getUserInfo=info", "updateUserInfo=updateInfo" ], "methods": { "addUserEmailAlias": { "description": "Add a new email alias to user's account", "signa [...]
+ "collaborations": { "consumerOnly": false, "producerOnly": true, "description": "Provides operations to manage Box collaborations", "aliases": [ "addFolderCollaboration=add", "addFolderCollaborationByEmail=addByEmail", "deleteCollaboration=delete", "getFolderCollaborations=collaborations", "getPendingCollaborations=pendingCollaborations", "getCollaborationInfo=info", "updateCollaborationInfo=updateInfo" ], "methods": { "addFolderCollaboration": { "description": "Add a collaboration t [...]
+ "comments": { "consumerOnly": false, "producerOnly": true, "description": "Provides operations to manage Box comments", "aliases": [ "addFileComment=add", "changeCommentMessage=updateMessage", "deleteComment=delete", "getCommentInfo=info", "getFileComments=comments", "replyToComment=reply" ], "methods": { "addFileComment": { "description": "Add comment to file", "signatures": [ "com.box.sdk.BoxFile addFileComment(String fileId, String message)" ] }, "changeCommentMessage": { "descrip [...]
+ "event-logs": { "consumerOnly": false, "producerOnly": true, "description": "Provides operations to read Box enterprise (admin) event logs", "aliases": [ "getEnterpriseEvents=events" ], "methods": { "getEnterpriseEvents": { "description": "Create an event stream with optional starting initial position and add listener that will be notified when an event is received", "signatures": [ "java.util.List<com.box.sdk.BoxEvent> getEnterpriseEvents(String position, java.util.Date after, java. [...]
+ "events": { "consumerOnly": true, "producerOnly": false, "description": "Provides operations to manage Box events", "methods": { "listen": { "description": "Create an event stream with optional starting initial position and add listener that will be notified when an event is received", "signatures": [ "void listen(com.box.sdk.EventListener listener, Long startingPosition)" ] } } },
+ "files": { "consumerOnly": false, "producerOnly": true, "description": "Provides operations to manage Box files", "aliases": [ "uploadFile=upload", "downloadFile=download", "copyFile=copy", "moveFile=move", "renameFile=rename", "createFileSharedLink=link", "deleteFile=delete", "uploadNewFileVersion=uploadVersion", "promoteFileVersion=promoteVersion", "getFileVersions=versions", "downloadPreviousFileVersion=downloadVersion", "deleteFileVersion=deleteVersion", "getFileInfo=info", "upda [...]
+ "folders": { "consumerOnly": false, "producerOnly": true, "description": "Provides operations to manage Box folders", "aliases": [ "getRootFolder=root", "createFolder=create", "copyFolder=copy", "moveFolder=move", "renameFolder=rename", "createFolderSharedLink=link", "deleteFolder=delete", "getFolder=folder", "getFolderInfo=info", "getFolderItems=items", "updateFolderInfo=updateInfo" ], "methods": { "copyFolder": { "description": "Copy folder to destination folder while optionally gi [...]
+ "groups": { "consumerOnly": false, "producerOnly": true, "description": "Provides operations to manage Box groups", "aliases": [ "createGroup=create", "deleteGroup=delete", "getAllGroups=groups", "getGroupInfo=info", "addGroupMembership=addMembership", "deleteGroupMembership=deleteMembership", "getGroupMemberships=memberships", "getGroupMembershipInfo=membershipInfo", "updateGroupMembershipInfo=updateMembershipInfo" ], "methods": { "addGroupMembership": { "description": "Add a member [...]
+ "search": { "consumerOnly": false, "producerOnly": true, "description": "Provides operations to manage Box searches", "aliases": [ "searchFolder=search" ], "methods": { "searchFolder": { "description": "Search folder and all descendant folders using the given query", "signatures": [ "java.util.Collection<com.box.sdk.BoxItem> searchFolder(String folderId, String query)" ] } } },
+ "tasks": { "consumerOnly": false, "producerOnly": true, "description": "Provides operations to manage Box tasks", "aliases": [ "addFileTask=add", "deleteTask=delete", "getFileTasks=tasks", "getTaskInfo=info", "updateTaskInfo=updateInfo", "addAssignmentToTask=addAssignment", "deleteTaskAssignment=deleteAssignment", "getTaskAssignments=assignments", "getTaskAssignmentInfo=assignmentInfo" ], "methods": { "addAssignmentToTask": { "description": "Add assignment for task", "signatures": [ [...]
+ "users": { "consumerOnly": false, "producerOnly": true, "description": "Provides operations to manage Box users", "aliases": [ "getCurrentUser=currentUser", "getAllEnterpriseOrExternalUsers=users", "createAppUser=create", "createEnterpriseUser=create", "deleteUser=delete", "addUserEmailAlias=addEmailAlias", "getUserEmailAlias=emailAlias", "deleteUserEmailAlias=deleteEmailAlias", "getUserInfo=info", "updateUserInfo=updateInfo" ], "methods": { "addUserEmailAlias": { "description": "Add [...]
},
"apiProperties": {
- "collaborations": { "methods": { "addFolderCollaboration": { "properties": { "collaborator": { "kind": "parameter", "displayName": "Collaborator", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.box.sdk.BoxCollaborator", "deprecated": false, "secret": false, "description": "The collaborator to add", "optional": false }, "folderId": { "kind": "parameter", "displayName": "Folder Id", "group": "common", "label": "", "required": false, "type": "strin [...]
- "comments": { "methods": { "addFileComment": { "properties": { "fileId": { "kind": "parameter", "displayName": "File Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The id of file", "optional": false }, "message": { "kind": "parameter", "displayName": "Message", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated" [...]
- "event-logs": { "methods": { "getEnterpriseEvents": { "properties": { "after": { "kind": "parameter", "displayName": "After", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.util.Date", "deprecated": false, "secret": false, "description": "The lower bound on the timestamp of the events returned", "optional": false }, "before": { "kind": "parameter", "displayName": "Before", "group": "common", "label": "", "required": false, "type": "string", "ja [...]
- "events": { "methods": { "listen": { "properties": { "startingPosition": { "kind": "parameter", "displayName": "Starting Position", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "secret": false, "description": "The starting position of the event stream", "optional": true } } } } },
- "files": { "methods": { "checkUpload": { "properties": { "fileName": { "kind": "parameter", "displayName": "File Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The name to give the uploaded file", "optional": false }, "parentFolderId": { "kind": "parameter", "displayName": "Parent Folder Id", "group": "common", "label": "", "required": false, "type": "string", "javaType" [...]
- "folders": { "methods": { "copyFolder": { "properties": { "destinationFolderId": { "kind": "parameter", "displayName": "Destination Folder Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The id of the destination folder", "optional": false }, "folderId": { "kind": "parameter", "displayName": "Folder Id", "group": "common", "label": "", "required": false, "type": "string", " [...]
- "groups": { "methods": { "addGroupMembership": { "properties": { "groupId": { "kind": "parameter", "displayName": "Group Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The id of group", "optional": false }, "role": { "kind": "parameter", "displayName": "Role", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.box.sdk.BoxGroupMembership.R [...]
- "search": { "methods": { "searchFolder": { "properties": { "folderId": { "kind": "parameter", "displayName": "Folder Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The id of folder searched", "optional": false }, "query": { "kind": "parameter", "displayName": "Query", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "depr [...]
- "tasks": { "methods": { "addAssignmentToTask": { "properties": { "assignTo": { "kind": "parameter", "displayName": "Assign To", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.box.sdk.BoxUser", "deprecated": false, "secret": false, "description": "The user to assign to task", "optional": false }, "taskId": { "kind": "parameter", "displayName": "Task Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.S [...]
- "users": { "methods": { "addUserEmailAlias": { "properties": { "email": { "kind": "parameter", "displayName": "Email", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The email address to add as an alias", "optional": false }, "userId": { "kind": "parameter", "displayName": "User Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.Str [...]
+ "collaborations": { "methods": { "addFolderCollaboration": { "properties": { "collaborator": { "kind": "parameter", "displayName": "Collaborator", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "com.box.sdk.BoxCollaborator", "deprecated": false, "secret": false, "description": "The collaborator to add", "optional": false }, "folderId": { "kind": "parameter", "displayName": "Folder Id", "group": "producer", "label": "", "required": false, "type": "s [...]
+ "comments": { "methods": { "addFileComment": { "properties": { "fileId": { "kind": "parameter", "displayName": "File Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The id of file", "optional": false }, "message": { "kind": "parameter", "displayName": "Message", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "depreca [...]
+ "event-logs": { "methods": { "getEnterpriseEvents": { "properties": { "after": { "kind": "parameter", "displayName": "After", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.util.Date", "deprecated": false, "secret": false, "description": "The lower bound on the timestamp of the events returned", "optional": false }, "before": { "kind": "parameter", "displayName": "Before", "group": "producer", "label": "", "required": false, "type": "string", [...]
+ "events": { "methods": { "listen": { "properties": { "startingPosition": { "kind": "parameter", "displayName": "Starting Position", "group": "consumer", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "secret": false, "description": "The starting position of the event stream", "optional": true } } } } },
+ "files": { "methods": { "checkUpload": { "properties": { "fileName": { "kind": "parameter", "displayName": "File Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The name to give the uploaded file", "optional": false }, "parentFolderId": { "kind": "parameter", "displayName": "Parent Folder Id", "group": "producer", "label": "", "required": false, "type": "string", "javaT [...]
+ "folders": { "methods": { "copyFolder": { "properties": { "destinationFolderId": { "kind": "parameter", "displayName": "Destination Folder Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The id of the destination folder", "optional": false }, "folderId": { "kind": "parameter", "displayName": "Folder Id", "group": "producer", "label": "", "required": false, "type": "string [...]
+ "groups": { "methods": { "addGroupMembership": { "properties": { "groupId": { "kind": "parameter", "displayName": "Group Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The id of group", "optional": false }, "role": { "kind": "parameter", "displayName": "Role", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "com.box.sdk.BoxGroupMembersh [...]
+ "search": { "methods": { "searchFolder": { "properties": { "folderId": { "kind": "parameter", "displayName": "Folder Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The id of folder searched", "optional": false }, "query": { "kind": "parameter", "displayName": "Query", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", " [...]
+ "tasks": { "methods": { "addAssignmentToTask": { "properties": { "assignTo": { "kind": "parameter", "displayName": "Assign To", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "com.box.sdk.BoxUser", "deprecated": false, "secret": false, "description": "The user to assign to task", "optional": false }, "taskId": { "kind": "parameter", "displayName": "Task Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.la [...]
+ "users": { "methods": { "addUserEmailAlias": { "properties": { "email": { "kind": "parameter", "displayName": "Email", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The email address to add as an alias", "optional": false }, "userId": { "kind": "parameter", "displayName": "User Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang [...]
}
}
diff --git a/components/camel-box/camel-box-component/src/main/docs/box-component.adoc b/components/camel-box/camel-box-component/src/main/docs/box-component.adoc
index 4958561..fd30ada 100644
--- a/components/camel-box/camel-box-component/src/main/docs/box-component.adoc
+++ b/components/camel-box/camel-box-component/src/main/docs/box-component.adoc
@@ -148,19 +148,19 @@ box:apiName/methodName
There are 10 API names as listed in the table below:
-[width="100%",cols="2,8",options="header"]
+[width="100%",cols="2,1,7",options="header"]
|===
-| API Name | Description
-| *collaborations* | Provides operations to manage Box collaborations
-| *comments* | Provides operations to manage Box comments
-| *event-logs* | Provides operations to read Box enterprise (admin) event logs
-| *events* | Provides operations to manage Box events
-| *files* | Provides operations to manage Box files
-| *folders* | Provides operations to manage Box folders
-| *groups* | Provides operations to manage Box groups
-| *search* | Provides operations to manage Box searches
-| *tasks* | Provides operations to manage Box tasks
-| *users* | Provides operations to manage Box users
+| API Name | Type | Description
+| *collaborations* | Producer | Provides operations to manage Box collaborations
+| *comments* | Producer | Provides operations to manage Box comments
+| *event-logs* | Producer | Provides operations to read Box enterprise (admin) event logs
+| *events* | Consumer | Provides operations to manage Box events
+| *files* | Producer | Provides operations to manage Box files
+| *folders* | Producer | Provides operations to manage Box folders
+| *groups* | Producer | Provides operations to manage Box groups
+| *search* | Producer | Provides operations to manage Box searches
+| *tasks* | Producer | Provides operations to manage Box tasks
+| *users* | Producer | Provides operations to manage Box users
|===
Each API is documented in the following sections to come.
@@ -168,6 +168,10 @@ Each API is documented in the following sections to come.
==== API: collaborations
+*Only producer is supported*
+
+
+
The collaborations API has 6 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -238,6 +242,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: comments
+*Only producer is supported*
+
+
+
The comments API has 6 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -306,6 +314,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: event-logs
+*Only producer is supported*
+
+
+
The event-logs API has 1 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -354,6 +366,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: events
+*Only consumer is supported*
+
+
+
The events API has 1 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -399,6 +415,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: files
+*Only producer is supported*
+
+
+
The files API has 22 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -569,6 +589,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: folders
+*Only producer is supported*
+
+
+
The folders API has 10 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -667,6 +691,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: groups
+*Only producer is supported*
+
+
+
The groups API has 9 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -753,6 +781,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: search
+*Only producer is supported*
+
+
+
The search API has 1 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -799,6 +831,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: tasks
+*Only producer is supported*
+
+
+
The tasks API has 9 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -881,6 +917,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: users
+*Only producer is supported*
+
+
+
The users API has 10 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
diff --git a/components/camel-box/camel-box-component/src/main/java/org/apache/camel/component/box/BoxEndpoint.java b/components/camel-box/camel-box-component/src/main/java/org/apache/camel/component/box/BoxEndpoint.java
index 5f7ee62..334453f 100644
--- a/components/camel-box/camel-box-component/src/main/java/org/apache/camel/component/box/BoxEndpoint.java
+++ b/components/camel-box/camel-box-component/src/main/java/org/apache/camel/component/box/BoxEndpoint.java
@@ -59,9 +59,7 @@ public class BoxEndpoint extends AbstractApiEndpoint<BoxApiName, BoxConfiguratio
// cached connection
private BoxAPIConnection boxConnection;
-
private Object apiProxy;
-
private boolean boxConnectionShared;
public BoxEndpoint(String uri, BoxComponent component, BoxApiName apiName, String methodName,
@@ -111,8 +109,6 @@ public class BoxEndpoint extends AbstractApiEndpoint<BoxApiName, BoxConfiguratio
@Override
protected void afterConfigureProperties() {
- // create connection eagerly, a good way to validate configuration
- createBoxConnection();
}
@Override
@@ -124,6 +120,12 @@ public class BoxEndpoint extends AbstractApiEndpoint<BoxApiName, BoxConfiguratio
return apiProxy;
}
+ @Override
+ protected void doStart() throws Exception {
+ super.doStart();
+ createBoxConnection();
+ }
+
private void createBoxConnection() {
final BoxComponent component = getComponent();
this.boxConnectionShared = configuration.equals(getComponent().getConfiguration());
diff --git a/core/camel-api/src/generated/java/org/apache/camel/spi/ApiParams.java b/core/camel-api/src/generated/java/org/apache/camel/spi/ApiParams.java
index 037970d..525e0f2 100644
--- a/core/camel-api/src/generated/java/org/apache/camel/spi/ApiParams.java
+++ b/core/camel-api/src/generated/java/org/apache/camel/spi/ApiParams.java
@@ -47,6 +47,20 @@ public @interface ApiParams {
String description() default "";
/**
+ * Whether this API can only be used as a producer.
+ * <p/>
+ * By default its assumed the API can be used as both consumer and producer.
+ */
+ boolean producerOnly() default false;
+
+ /**
+ * Whether this API can only be used as a consumer.
+ * <p/>
+ * By default its assumed the API can be used as both consumer and producer.
+ */
+ boolean consumerOnly() default false;
+
+ /**
* The API methods that the API provides of this configuration class.
*/
ApiMethod[] apiMethods();
diff --git a/docs/components/modules/ROOT/pages/box-component.adoc b/docs/components/modules/ROOT/pages/box-component.adoc
index d366225..f78ed34 100644
--- a/docs/components/modules/ROOT/pages/box-component.adoc
+++ b/docs/components/modules/ROOT/pages/box-component.adoc
@@ -150,19 +150,19 @@ box:apiName/methodName
There are 10 API names as listed in the table below:
-[width="100%",cols="2,8",options="header"]
+[width="100%",cols="2,1,7",options="header"]
|===
-| API Name | Description
-| *collaborations* | Provides operations to manage Box collaborations
-| *comments* | Provides operations to manage Box comments
-| *event-logs* | Provides operations to read Box enterprise (admin) event logs
-| *events* | Provides operations to manage Box events
-| *files* | Provides operations to manage Box files
-| *folders* | Provides operations to manage Box folders
-| *groups* | Provides operations to manage Box groups
-| *search* | Provides operations to manage Box searches
-| *tasks* | Provides operations to manage Box tasks
-| *users* | Provides operations to manage Box users
+| API Name | Type | Description
+| *collaborations* | Producer | Provides operations to manage Box collaborations
+| *comments* | Producer | Provides operations to manage Box comments
+| *event-logs* | Producer | Provides operations to read Box enterprise (admin) event logs
+| *events* | Consumer | Provides operations to manage Box events
+| *files* | Producer | Provides operations to manage Box files
+| *folders* | Producer | Provides operations to manage Box folders
+| *groups* | Producer | Provides operations to manage Box groups
+| *search* | Producer | Provides operations to manage Box searches
+| *tasks* | Producer | Provides operations to manage Box tasks
+| *users* | Producer | Provides operations to manage Box users
|===
Each API is documented in the following sections to come.
@@ -170,6 +170,10 @@ Each API is documented in the following sections to come.
==== API: collaborations
+*Only producer is supported*
+
+
+
The collaborations API has 6 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -240,6 +244,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: comments
+*Only producer is supported*
+
+
+
The comments API has 6 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -308,6 +316,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: event-logs
+*Only producer is supported*
+
+
+
The event-logs API has 1 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -356,6 +368,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: events
+*Only consumer is supported*
+
+
+
The events API has 1 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -401,6 +417,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: files
+*Only producer is supported*
+
+
+
The files API has 22 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -571,6 +591,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: folders
+*Only producer is supported*
+
+
+
The folders API has 10 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -669,6 +693,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: groups
+*Only producer is supported*
+
+
+
The groups API has 9 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -755,6 +783,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: search
+*Only producer is supported*
+
+
+
The search API has 1 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -801,6 +833,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: tasks
+*Only producer is supported*
+
+
+
The tasks API has 9 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
@@ -883,6 +919,10 @@ would override a `CamelBox.myParameterNameHere` header.
==== API: users
+*Only producer is supported*
+
+
+
The users API has 10 method(s) which is represented by the following method signatures
(an API method may have multiple signatures due to overloading):
diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/ApiModel.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/ApiModel.java
index cf76a6a..205b655 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/ApiModel.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/ApiModel.java
@@ -25,6 +25,8 @@ public final class ApiModel {
private String name;
private String description;
+ private boolean consumerOnly;
+ private boolean producerOnly;
private final List<String> aliases = new ArrayList<>();
// lets sort api methods A..Z so they are always in the same order
private final Collection<ApiMethodModel> methods = new TreeSet<>(Comparators.apiMethodModelModelComparator());
@@ -45,6 +47,22 @@ public final class ApiModel {
this.description = description;
}
+ public boolean isConsumerOnly() {
+ return consumerOnly;
+ }
+
+ public void setConsumerOnly(boolean consumerOnly) {
+ this.consumerOnly = consumerOnly;
+ }
+
+ public boolean isProducerOnly() {
+ return producerOnly;
+ }
+
+ public void setProducerOnly(boolean producerOnly) {
+ this.producerOnly = producerOnly;
+ }
+
public List<String> getAliases() {
return aliases;
}
diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
index d24deb6..9590245 100644
--- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
+++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java
@@ -107,6 +107,8 @@ public final class JsonMapper {
ApiModel am = new ApiModel();
am.setName(name);
am.setDescription(mp.getStringOrDefault("description", ""));
+ am.setConsumerOnly(mp.getBooleanOrDefault("consumerOnly", false));
+ am.setProducerOnly(mp.getBooleanOrDefault("producerOnly", false));
model.getApiOptions().add(am);
Collection<String> aliases = mp.getCollection("aliases");
if (aliases != null && !aliases.isEmpty()) {
@@ -448,21 +450,29 @@ public final class JsonMapper {
model.forEach(a -> {
JsonObject json = new JsonObject();
root.put(a.getName(), json);
- if (!options && a.getDescription() != null) {
- json.put("description", a.getDescription());
- }
- if (!options && !a.getAliases().isEmpty()) {
- json.put("aliases", new JsonArray(a.getAliases()));
+ if (!options) {
+ // lets be less verbose and only output these details for the api summary and not when we have all options included
+ json.put("consumerOnly", a.isConsumerOnly());
+ json.put("producerOnly", a.isProducerOnly());
+ if (a.getDescription() != null) {
+ json.put("description", a.getDescription());
+ }
+ if (!a.getAliases().isEmpty()) {
+ json.put("aliases", new JsonArray(a.getAliases()));
+ }
}
Map<String, JsonObject> methods = new TreeMap<>();
json.put("methods", methods);
a.getMethods().forEach(m -> {
JsonObject mJson = new JsonObject();
- if (!options && m.getDescription() != null) {
- mJson.put("description", m.getDescription());
- }
- if (!options && !m.getSignatures().isEmpty()) {
- mJson.put("signatures", new JsonArray(m.getSignatures()));
+ if (!options) {
+ // lets be less verbose and only output these details for the api summary and not when we have all options included
+ if (m.getDescription() != null) {
+ mJson.put("description", m.getDescription());
+ }
+ if (!m.getSignatures().isEmpty()) {
+ mJson.put("signatures", new JsonArray(m.getSignatures()));
+ }
}
if (options) {
mJson.put("properties", asJsonObject(m.getOptions()));
diff --git a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
index e5bbf24..3d99806 100644
--- a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
+++ b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
@@ -58,6 +58,12 @@ public abstract class AbstractApiMethodGeneratorMojo extends AbstractApiMethodBa
@Parameter
protected String apiDescription;
+ @Parameter
+ protected boolean consumerOnly;
+
+ @Parameter
+ protected boolean producerOnly;
+
/**
* Method alias patterns for all APIs.
*/
@@ -202,6 +208,8 @@ public abstract class AbstractApiMethodGeneratorMojo extends AbstractApiMethodBa
VelocityContext context = getCommonContext(models);
context.put("apiName", apiName);
context.put("apiDescription", apiDescription);
+ context.put("consumerOnly", consumerOnly);
+ context.put("producerOnly", producerOnly);
context.put("configName", getConfigName());
context.put("componentName", componentName);
context.put("componentPackage", componentPackage);
diff --git a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/ApiComponentGeneratorMojo.java b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/ApiComponentGeneratorMojo.java
index 50b611c..cd1cf41 100644
--- a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/ApiComponentGeneratorMojo.java
+++ b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/ApiComponentGeneratorMojo.java
@@ -157,6 +157,8 @@ public class ApiComponentGeneratorMojo extends AbstractApiMethodBaseMojo {
mojo.classPrefix = apiProxy.getClassPrefix();
mojo.apiName = apiProxy.getApiName();
mojo.apiDescription = apiProxy.getApiDescription();
+ mojo.consumerOnly = apiProxy.isConsumerOnly();
+ mojo.producerOnly = apiProxy.isProducerOnly();
}
private AbstractApiMethodGeneratorMojo getApiMethodGenerator(ApiProxy api) {
diff --git a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/ApiProxy.java b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/ApiProxy.java
index fa88d3f..53fe7f7 100644
--- a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/ApiProxy.java
+++ b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/ApiProxy.java
@@ -27,25 +27,17 @@ import org.apache.maven.plugin.MojoExecutionException;
public class ApiProxy {
private String apiName;
-
private String apiDescription;
-
+ private boolean consumerOnly;
+ private boolean producerOnly;
private String proxyClass;
-
private FromJavasource fromJavasource;
-
private Substitution[] substitutions = new Substitution[0];
-
private String excludeConfigNames;
-
private String excludeConfigTypes;
-
private ExtraOption[] extraOptions;
-
private String[] nullableOptions;
-
private String classPrefix;
-
private List<ApiMethodAlias> aliases = Collections.emptyList();
public String getApiName() {
@@ -64,6 +56,22 @@ public class ApiProxy {
this.apiDescription = apiDescription;
}
+ public boolean isConsumerOnly() {
+ return consumerOnly;
+ }
+
+ public void setConsumerOnly(boolean consumerOnly) {
+ this.consumerOnly = consumerOnly;
+ }
+
+ public boolean isProducerOnly() {
+ return producerOnly;
+ }
+
+ public void setProducerOnly(boolean producerOnly) {
+ this.producerOnly = producerOnly;
+ }
+
public String getProxyClass() {
return proxyClass;
}
diff --git a/tooling/maven/camel-api-component-maven-plugin/src/main/resources/api-endpoint-config.vm b/tooling/maven/camel-api-component-maven-plugin/src/main/resources/api-endpoint-config.vm
index dabc896..ffcfdfb 100644
--- a/tooling/maven/camel-api-component-maven-plugin/src/main/resources/api-endpoint-config.vm
+++ b/tooling/maven/camel-api-component-maven-plugin/src/main/resources/api-endpoint-config.vm
@@ -46,7 +46,8 @@ import org.apache.camel.spi.UriParams;
/**
* Camel endpoint configuration for {@link $proxyType.Name}.
*/
-@ApiParams(apiName = "$helper.getApiName($apiName)", description = "$helper.getApiDescription($apiDescription)",
+@ApiParams(apiName = "$helper.getApiName($apiName)", #if($producerOnly)producerOnly = true,#elseif($consumerOnly)consumerOnly = true,#end
+ description = "$helper.getApiDescription($apiDescription)",
apiMethods = $helper.getApiMethods($models), aliases = $helper.getAliases())
@UriParams
@Configurer
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
index e719455..82b3af1 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
@@ -1116,6 +1116,8 @@ public class EndpointSchemaGeneratorMojo extends AbstractGeneratorMojo {
}
if (apiParams != null) {
api.setDescription(apiParams.description());
+ api.setConsumerOnly(apiParams.consumerOnly());
+ api.setProducerOnly(apiParams.producerOnly());
}
} else {
api = op.get();
@@ -1148,6 +1150,10 @@ public class EndpointSchemaGeneratorMojo extends AbstractGeneratorMojo {
apiMethod.addApiOptionModel(copy);
// the option description is stored on @ApiMethod
copy.setDescription(method.description());
+ // whether we are consumer or producer only
+ group = EndpointHelper.labelAsGroupName(copy.getLabel(), api.isConsumerOnly(),
+ api.isProducerOnly());
+ copy.setGroup(group);
copy.setOptional(apiParam.optional());
}
} else {
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MvelHelper.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MvelHelper.java
index ac2e149..9db78f0 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MvelHelper.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MvelHelper.java
@@ -69,4 +69,14 @@ public final class MvelHelper {
// empty if no alias
return "";
}
+
+ public static String producerOrConsumer(ApiModel api) {
+ if (api.isConsumerOnly()) {
+ return "Consumer";
+ } else if (api.isProducerOnly()) {
+ return "Producer";
+ }
+ return "Both";
+ }
+
}
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel b/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
index 904a7e7..97fef79 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
+++ b/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
@@ -43,16 +43,24 @@ The API name and API method is located in the endpoint URI as the @{apiSyntax} p
There are @{apiOptions.size} API names as listed in the table below:
-[width="100%",cols="2,8",options="header"]
+[width="100%",cols="2,1,7",options="header"]
|===@comment{ Render table cells. If description contains newline, prefix cell with `a`, so the content is rendered with formatting. }
-| API Name | Description
-@foreach{api : apiOptions}| *@{api.name}* | @{api.description}
+| API Name | Type | Description
+@foreach{api : apiOptions}| *@{api.name}* | @{util.producerOrConsumer(api)} | @{api.description}
@end{}|===
Each API is documented in the following sections to come.
@foreach{api : apiOptions}
==== API: @{api.name}
+@if{api.consumerOnly}
+*Only consumer is supported*
+@elseif{api.producerOnly}
+*Only producer is supported*
+@else{}
+*Both producer and consumer are supported*
+@end{}
+
@if{api.methods.isEmpty()}
The @{api.name} has no API methods.
@else{}
diff --git a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/ApiParams.java b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/ApiParams.java
index 037970d..525e0f2 100644
--- a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/ApiParams.java
+++ b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/ApiParams.java
@@ -47,6 +47,20 @@ public @interface ApiParams {
String description() default "";
/**
+ * Whether this API can only be used as a producer.
+ * <p/>
+ * By default its assumed the API can be used as both consumer and producer.
+ */
+ boolean producerOnly() default false;
+
+ /**
+ * Whether this API can only be used as a consumer.
+ * <p/>
+ * By default its assumed the API can be used as both consumer and producer.
+ */
+ boolean consumerOnly() default false;
+
+ /**
* The API methods that the API provides of this configuration class.
*/
ApiMethod[] apiMethods();