This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new c20af246d3e Fix camel-jira to add assignee using the id (#10602) c20af246d3e is described below commit c20af246d3e58f04d14b9fc3e5a69a68c2275437 Author: Claudio Miranda <clau...@claudius.com.br> AuthorDate: Thu Jul 6 02:13:01 2023 -0300 Fix camel-jira to add assignee using the id (#10602) - Jira cloud service requires the user id instead of the user name for the assignee field - Adds more context about the authentication using personal token --- .../org/apache/camel/catalog/components/jira.json | 37 +++++++++++----------- .../apache/camel/catalog/schemas/camel-spring.xsd | 2 +- .../org/apache/camel/component/jira/jira.json | 37 +++++++++++----------- .../camel-jira/src/main/docs/jira-component.adoc | 21 +++++++----- .../apache/camel/component/jira/JiraConstants.java | 2 ++ .../component/jira/producer/AddIssueProducer.java | 7 ++++ .../jira/producer/UpdateIssueProducer.java | 8 +++++ 7 files changed, 69 insertions(+), 45 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jira.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jira.json index 3b6b82ce7f0..f80cdf2e82b 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jira.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/jira.json @@ -36,24 +36,25 @@ "verificationCode": { "index": 11, "kind": "property", "displayName": "Verification Code", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jira.JiraConfiguration", "configurationField": "configuration", "description": "(OAuth only) The verification code from Jira generated in the first step of the authorization proccess." } }, "headers": { - "IssueAssignee": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The assignee's name of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_ASSIGNEE" }, - "IssueComponents": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The comma separated list of the issue's components", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_COMPONENTS" }, - "IssueChanged": { "index": 2, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the updated field (i.e Status)", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_CHANGED" }, - "IssueKey": { "index": 3, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_KEY" }, - "IssuePriorityId": { "index": 4, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The priority's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_PRIORITY_ID" }, - "IssuePriorityName": { "index": 5, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The priority's name of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_PRIORITY_NAME" }, - "ProjectKey": { "index": 6, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The project's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_PROJECT_KEY" }, - "IssueSummary": { "index": 7, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The summary of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_SUMMARY" }, - "IssueTransitionId": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The transition id", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_TRANSITION_ID" }, - "IssueTypeId": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_TYPE_ID" }, - "IssueTypeName": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type's name of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_TYPE_NAME" }, - "IssueWatchedIssues": { "index": 11, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The list of all issue keys that are watched in the time of update", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_WATCHED_ISSUES" }, - "IssueWatchersAdd": { "index": 12, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The comma separated list of watchers to add to the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_WATCHERS_ADD" }, - "IssueWatchersRemove": { "index": 13, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The watchers of the issue to remove", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_WATCHERS_REMOVE" }, - "ParentIssueKey": { "index": 14, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the parent issue", "constantName": "org.apache.camel.component.jira.JiraConstants#PARENT_ISSUE_KEY" }, - "ChildIssueKey": { "index": 15, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the child issue", "constantName": "org.apache.camel.component.jira.JiraConstants#CHILD_ISSUE_KEY" }, - "linkType": { "index": 16, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type of link", "constantName": "org.apache.camel.component.jira.JiraConstants#LINK_TYPE" }, - "minutesSpent": { "index": 17, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "-1", "description": "The minutes spent", "constantName": "org.apache.camel.component.jira.JiraConstants#MINUTES_SPENT" } + "IssueAssigneeId": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The assignee's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_ASSIGNEE_ID" }, + "IssueAssignee": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The assignee's name of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_ASSIGNEE" }, + "IssueComponents": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The comma separated list of the issue's components", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_COMPONENTS" }, + "IssueChanged": { "index": 3, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the updated field (i.e Status)", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_CHANGED" }, + "IssueKey": { "index": 4, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_KEY" }, + "IssuePriorityId": { "index": 5, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The priority's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_PRIORITY_ID" }, + "IssuePriorityName": { "index": 6, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The priority's name of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_PRIORITY_NAME" }, + "ProjectKey": { "index": 7, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The project's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_PROJECT_KEY" }, + "IssueSummary": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The summary of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_SUMMARY" }, + "IssueTransitionId": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The transition id", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_TRANSITION_ID" }, + "IssueTypeId": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_TYPE_ID" }, + "IssueTypeName": { "index": 11, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type's name of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_TYPE_NAME" }, + "IssueWatchedIssues": { "index": 12, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The list of all issue keys that are watched in the time of update", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_WATCHED_ISSUES" }, + "IssueWatchersAdd": { "index": 13, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The comma separated list of watchers to add to the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_WATCHERS_ADD" }, + "IssueWatchersRemove": { "index": 14, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The watchers of the issue to remove", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_WATCHERS_REMOVE" }, + "ParentIssueKey": { "index": 15, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the parent issue", "constantName": "org.apache.camel.component.jira.JiraConstants#PARENT_ISSUE_KEY" }, + "ChildIssueKey": { "index": 16, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the child issue", "constantName": "org.apache.camel.component.jira.JiraConstants#CHILD_ISSUE_KEY" }, + "linkType": { "index": 17, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type of link", "constantName": "org.apache.camel.component.jira.JiraConstants#LINK_TYPE" }, + "minutesSpent": { "index": 18, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "-1", "description": "The minutes spent", "constantName": "org.apache.camel.component.jira.JiraConstants#MINUTES_SPENT" } }, "properties": { "type": { "index": 0, "kind": "path", "displayName": "Type", "group": "common", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.jira.JiraType", "enum": [ "ADDCOMMENT", "ADDISSUE", "ATTACH", "DELETEISSUE", "NEWISSUES", "NEWCOMMENTS", "WATCHUPDATES", "UPDATEISSUE", "TRANSITIONISSUE", "WATCHERS", "ADDISSUELINK", "ADDWORKLOG", "FETCHISSUE", "FETCHCOMMENTS" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "descrip [...] diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd index 52d3831c7a7..84de91928ef 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd @@ -439,7 +439,7 @@ Enriches a message with data from a secondary resource <xs:annotation> <xs:documentation xml:lang="en"> <![CDATA[ -Camel error handling. +Error handler settings ]]> </xs:documentation> </xs:annotation> diff --git a/components/camel-jira/src/generated/resources/org/apache/camel/component/jira/jira.json b/components/camel-jira/src/generated/resources/org/apache/camel/component/jira/jira.json index 3b6b82ce7f0..f80cdf2e82b 100644 --- a/components/camel-jira/src/generated/resources/org/apache/camel/component/jira/jira.json +++ b/components/camel-jira/src/generated/resources/org/apache/camel/component/jira/jira.json @@ -36,24 +36,25 @@ "verificationCode": { "index": 11, "kind": "property", "displayName": "Verification Code", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.jira.JiraConfiguration", "configurationField": "configuration", "description": "(OAuth only) The verification code from Jira generated in the first step of the authorization proccess." } }, "headers": { - "IssueAssignee": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The assignee's name of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_ASSIGNEE" }, - "IssueComponents": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The comma separated list of the issue's components", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_COMPONENTS" }, - "IssueChanged": { "index": 2, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the updated field (i.e Status)", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_CHANGED" }, - "IssueKey": { "index": 3, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_KEY" }, - "IssuePriorityId": { "index": 4, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The priority's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_PRIORITY_ID" }, - "IssuePriorityName": { "index": 5, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The priority's name of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_PRIORITY_NAME" }, - "ProjectKey": { "index": 6, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The project's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_PROJECT_KEY" }, - "IssueSummary": { "index": 7, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The summary of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_SUMMARY" }, - "IssueTransitionId": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The transition id", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_TRANSITION_ID" }, - "IssueTypeId": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_TYPE_ID" }, - "IssueTypeName": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type's name of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_TYPE_NAME" }, - "IssueWatchedIssues": { "index": 11, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The list of all issue keys that are watched in the time of update", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_WATCHED_ISSUES" }, - "IssueWatchersAdd": { "index": 12, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The comma separated list of watchers to add to the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_WATCHERS_ADD" }, - "IssueWatchersRemove": { "index": 13, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The watchers of the issue to remove", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_WATCHERS_REMOVE" }, - "ParentIssueKey": { "index": 14, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the parent issue", "constantName": "org.apache.camel.component.jira.JiraConstants#PARENT_ISSUE_KEY" }, - "ChildIssueKey": { "index": 15, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the child issue", "constantName": "org.apache.camel.component.jira.JiraConstants#CHILD_ISSUE_KEY" }, - "linkType": { "index": 16, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type of link", "constantName": "org.apache.camel.component.jira.JiraConstants#LINK_TYPE" }, - "minutesSpent": { "index": 17, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "-1", "description": "The minutes spent", "constantName": "org.apache.camel.component.jira.JiraConstants#MINUTES_SPENT" } + "IssueAssigneeId": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The assignee's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_ASSIGNEE_ID" }, + "IssueAssignee": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The assignee's name of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_ASSIGNEE" }, + "IssueComponents": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The comma separated list of the issue's components", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_COMPONENTS" }, + "IssueChanged": { "index": 3, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name of the updated field (i.e Status)", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_CHANGED" }, + "IssueKey": { "index": 4, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_KEY" }, + "IssuePriorityId": { "index": 5, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The priority's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_PRIORITY_ID" }, + "IssuePriorityName": { "index": 6, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The priority's name of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_PRIORITY_NAME" }, + "ProjectKey": { "index": 7, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The project's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_PROJECT_KEY" }, + "IssueSummary": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The summary of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_SUMMARY" }, + "IssueTransitionId": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The transition id", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_TRANSITION_ID" }, + "IssueTypeId": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type's id of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_TYPE_ID" }, + "IssueTypeName": { "index": 11, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type's name of the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_TYPE_NAME" }, + "IssueWatchedIssues": { "index": 12, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The list of all issue keys that are watched in the time of update", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_WATCHED_ISSUES" }, + "IssueWatchersAdd": { "index": 13, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The comma separated list of watchers to add to the issue", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_WATCHERS_ADD" }, + "IssueWatchersRemove": { "index": 14, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The watchers of the issue to remove", "constantName": "org.apache.camel.component.jira.JiraConstants#ISSUE_WATCHERS_REMOVE" }, + "ParentIssueKey": { "index": 15, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the parent issue", "constantName": "org.apache.camel.component.jira.JiraConstants#PARENT_ISSUE_KEY" }, + "ChildIssueKey": { "index": 16, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the child issue", "constantName": "org.apache.camel.component.jira.JiraConstants#CHILD_ISSUE_KEY" }, + "linkType": { "index": 17, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type of link", "constantName": "org.apache.camel.component.jira.JiraConstants#LINK_TYPE" }, + "minutesSpent": { "index": 18, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "-1", "description": "The minutes spent", "constantName": "org.apache.camel.component.jira.JiraConstants#MINUTES_SPENT" } }, "properties": { "type": { "index": 0, "kind": "path", "displayName": "Type", "group": "common", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.jira.JiraType", "enum": [ "ADDCOMMENT", "ADDISSUE", "ATTACH", "DELETEISSUE", "NEWISSUES", "NEWCOMMENTS", "WATCHUPDATES", "UPDATEISSUE", "TRANSITIONISSUE", "WATCHERS", "ADDISSUELINK", "ADDWORKLOG", "FETCHISSUE", "FETCHCOMMENTS" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "descrip [...] diff --git a/components/camel-jira/src/main/docs/jira-component.adoc b/components/camel-jira/src/main/docs/jira-component.adoc index 12e2ad7d2ed..c8a03f8a134 100644 --- a/components/camel-jira/src/main/docs/jira-component.adoc +++ b/components/camel-jira/src/main/docs/jira-component.adoc @@ -91,13 +91,17 @@ You can bind the `JiraRestClientFactory` with name *JiraRestClientFactory* in th == Authentication -Camel-jira supports *https://developer.atlassian.com/cloud/jira/platform/jira-rest-api-basic-authentication/[Basic Authentication]*, *https://developer.atlassian.com/cloud/jira/platform/jira-rest-api-oauth-authentication/[OAuth 3 legged authentication]* and *https://confluence.atlassian.com/enterprise/using-personal-access-tokens-1026032365.html*. +Camel-jira supports the following forms of authentication: -We recommend to use OAuth whenever possible, as it provides the best security for your users and system. +* https://developer.atlassian.com/cloud/jira/platform/jira-rest-api-basic-authentication/[Basic Authentication] +* https://developer.atlassian.com/cloud/jira/platform/jira-rest-api-oauth-authentication/[OAuth 3 legged authentication] +* https://confluence.atlassian.com/enterprise/using-personal-access-tokens-1026032365.html[Personal Token]* + +We recommend to use OAuth or Personal token whenever possible, as it provides the best security for your users and system. === Basic authentication requirements: -* An username and a password or the API Token. Verify if the Jira server installation supports the use of https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/[API Tokens] instead of the user's password. This way the user's password is not exposed. +* An username and a password. === OAuth authentication requirements: @@ -111,10 +115,9 @@ to generate the client private key, consumer key, verification code and access t === Personal access token authentication requirements: -Follow the tutorial in https://confluence.atlassian.com/enterprise/using-personal-access-tokens-1026032365.html -to generate an access token bearer. +Follow the tutorial to generate the https://confluence.atlassian.com/enterprise/using-personal-access-tokens-1026032365.html[Personal Token]. -* An access token +* You have to set only the personal token in the `access-token` parameter. == JQL: @@ -169,9 +172,10 @@ Required: Optional: * `IssueAssignee`: the assignee user +* `IssueAssigneeId`: the assignee user id * `IssuePriorityId` or `IssuePriorityName`: The priority of the issue, you can see the valid list in `\http://jira_server/rest/api/2/priority`. * `IssueComponents`: A list of string with the valid component names. -* `IssueWatchersAdd`: A list of strings with the usernames to add to the watcher list. +* `IssueWatchersAdd`: A list of strings with the usernames (or id) to add to the watcher list. * `IssueDescription`: The description of the issue. == AddComment @@ -210,6 +214,7 @@ Required: * `IssueTypeId` or `IssueTypeName`: The `id` of the issue type or the name of the issue type, you can see the valid list in `\http://jira_server/rest/api/2/issue/createmeta?projectKeys=SAMPLE_KEY`. * `IssueSummary`: The summary of the issue. * `IssueAssignee`: the assignee user +* `IssueAssigneeId`: the assignee user id * `IssuePriorityId` or `IssuePriorityName`: The priority of the issue, you can see the valid list in `\http://jira_server/rest/api/2/priority`. * `IssueComponents`: A list of string with the valid component names. * `IssueDescription`: The description of the issue. @@ -217,7 +222,7 @@ Required: == Watcher * `IssueKey`: The issue key identifier. -* `IssueWatchersAdd`: A list of strings with the usernames to add to the watcher list. +* `IssueWatchersAdd`: A list of strings with the usernames (or id) to add to the watcher list. * `IssueWatchersRemove`: A list of strings with the usernames to remove from the watcher list. == WatchUpdates (consumer) diff --git a/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraConstants.java b/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraConstants.java index e7413958b3d..bf45041aade 100644 --- a/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraConstants.java +++ b/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraConstants.java @@ -26,6 +26,8 @@ public interface JiraConstants { String JIRA_URL = "jiraUrl"; String PRIVATE_KEY = "privateKey"; String CONSUMER_KEY = "consumerKey"; + @Metadata(label = "producer", description = "The assignee's id of the issue", javaType = "String") + String ISSUE_ASSIGNEE_ID = "IssueAssigneeId"; @Metadata(label = "producer", description = "The assignee's name of the issue", javaType = "String") String ISSUE_ASSIGNEE = "IssueAssignee"; @Metadata(label = "producer", description = "The comma separated list of the issue's components", javaType = "String") diff --git a/components/camel-jira/src/main/java/org/apache/camel/component/jira/producer/AddIssueProducer.java b/components/camel-jira/src/main/java/org/apache/camel/component/jira/producer/AddIssueProducer.java index 3c21bc365c2..82d3f29654e 100644 --- a/components/camel-jira/src/main/java/org/apache/camel/component/jira/producer/AddIssueProducer.java +++ b/components/camel-jira/src/main/java/org/apache/camel/component/jira/producer/AddIssueProducer.java @@ -23,8 +23,11 @@ import com.atlassian.jira.rest.client.api.IssueRestClient; import com.atlassian.jira.rest.client.api.JiraRestClient; import com.atlassian.jira.rest.client.api.domain.BasicIssue; import com.atlassian.jira.rest.client.api.domain.Issue; +import com.atlassian.jira.rest.client.api.domain.IssueFieldId; import com.atlassian.jira.rest.client.api.domain.IssueType; import com.atlassian.jira.rest.client.api.domain.Priority; +import com.atlassian.jira.rest.client.api.domain.input.ComplexIssueInputFieldValue; +import com.atlassian.jira.rest.client.api.domain.input.FieldInput; import com.atlassian.jira.rest.client.api.domain.input.IssueInputBuilder; import org.apache.camel.Exchange; import org.apache.camel.component.jira.JiraEndpoint; @@ -50,6 +53,7 @@ public class AddIssueProducer extends DefaultProducer { String summary = exchange.getIn().getHeader(ISSUE_SUMMARY, String.class); // optional fields String assigneeName = exchange.getIn().getHeader(ISSUE_ASSIGNEE, String.class); + String assigneeId = exchange.getIn().getHeader(ISSUE_ASSIGNEE_ID, String.class); String priorityName = exchange.getIn().getHeader(ISSUE_PRIORITY_NAME, String.class); Long priorityId = exchange.getIn().getHeader(ISSUE_PRIORITY_ID, Long.class); String components = exchange.getIn().getHeader(ISSUE_COMPONENTS, String.class); @@ -105,6 +109,9 @@ public class AddIssueProducer extends DefaultProducer { } if (assigneeName != null) { builder.setAssigneeName(assigneeName); + } else if (assigneeId != null) { + builder.setFieldInput( + new FieldInput(IssueFieldId.ASSIGNEE_FIELD, ComplexIssueInputFieldValue.with("id", assigneeId))); } IssueRestClient issueClient = client.getIssueClient(); diff --git a/components/camel-jira/src/main/java/org/apache/camel/component/jira/producer/UpdateIssueProducer.java b/components/camel-jira/src/main/java/org/apache/camel/component/jira/producer/UpdateIssueProducer.java index e0d8fd04542..f54a15647a7 100644 --- a/components/camel-jira/src/main/java/org/apache/camel/component/jira/producer/UpdateIssueProducer.java +++ b/components/camel-jira/src/main/java/org/apache/camel/component/jira/producer/UpdateIssueProducer.java @@ -21,8 +21,11 @@ import java.util.List; import com.atlassian.jira.rest.client.api.IssueRestClient; import com.atlassian.jira.rest.client.api.JiraRestClient; +import com.atlassian.jira.rest.client.api.domain.IssueFieldId; import com.atlassian.jira.rest.client.api.domain.IssueType; import com.atlassian.jira.rest.client.api.domain.Priority; +import com.atlassian.jira.rest.client.api.domain.input.ComplexIssueInputFieldValue; +import com.atlassian.jira.rest.client.api.domain.input.FieldInput; import com.atlassian.jira.rest.client.api.domain.input.IssueInputBuilder; import org.apache.camel.Exchange; import org.apache.camel.component.jira.JiraEndpoint; @@ -30,6 +33,7 @@ import org.apache.camel.support.DefaultProducer; import org.apache.camel.util.ObjectHelper; import static org.apache.camel.component.jira.JiraConstants.ISSUE_ASSIGNEE; +import static org.apache.camel.component.jira.JiraConstants.ISSUE_ASSIGNEE_ID; import static org.apache.camel.component.jira.JiraConstants.ISSUE_COMPONENTS; import static org.apache.camel.component.jira.JiraConstants.ISSUE_KEY; import static org.apache.camel.component.jira.JiraConstants.ISSUE_PRIORITY_ID; @@ -56,6 +60,7 @@ public class UpdateIssueProducer extends DefaultProducer { String issueTypeName = exchange.getIn().getHeader(ISSUE_TYPE_NAME, String.class); String summary = exchange.getIn().getHeader(ISSUE_SUMMARY, String.class); String assigneeName = exchange.getIn().getHeader(ISSUE_ASSIGNEE, String.class); + String assigneeId = exchange.getIn().getHeader(ISSUE_ASSIGNEE_ID, String.class); String priorityName = exchange.getIn().getHeader(ISSUE_PRIORITY_NAME, String.class); Long priorityId = exchange.getIn().getHeader(ISSUE_PRIORITY_ID, Long.class); String components = exchange.getIn().getHeader(ISSUE_COMPONENTS, String.class); @@ -101,6 +106,9 @@ public class UpdateIssueProducer extends DefaultProducer { } if (assigneeName != null) { builder.setAssigneeName(assigneeName); + } else if (assigneeId != null) { + builder.setFieldInput( + new FieldInput(IssueFieldId.ASSIGNEE_FIELD, ComplexIssueInputFieldValue.with("id", assigneeId))); } IssueRestClient issueClient = client.getIssueClient(); issueClient.updateIssue(issueKey, builder.build()).claim();