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

davsclaus pushed a commit to branch camel-3.14.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-3.14.x by this push:
     new 07765a977b8 Fix camel-jira not adding components field (#7868)
07765a977b8 is described below

commit 07765a977b87d406188dbdb0a465388d5abaaa24
Author: Claudio Miranda <[email protected]>
AuthorDate: Thu Jun 23 12:54:43 2022 -0300

    Fix camel-jira not adding components field (#7868)
    
    * the "components" field was not updated due to a bug in handling the
      field
    * Added tests for the component field
    * Fixed the "components" field description
---
 .../component/jira/producer/AddIssueProducer.java  | 32 +++++++---
 .../jira/producer/UpdateIssueProducer.java         | 22 +++++--
 .../component/jira/producer/WatcherProducer.java   | 27 +++++---
 .../org/apache/camel/component/jira/Utils.java     |  5 ++
 .../jira/producer/AddIssueProducerTest.java        | 74 +++++++++++++---------
 .../jira/producer/TransitionIssueProducerTest.java |  6 +-
 .../jira/producer/UpdateIssueProducerTest.java     | 39 ++++++++----
 .../jira/producer/WatcherProducerTest.java         | 16 ++---
 8 files changed, 141 insertions(+), 80 deletions(-)

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 2a902f1c43f..007c69cfb26 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
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.jira.producer;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import com.atlassian.jira.rest.client.api.IssueRestClient;
@@ -28,6 +29,7 @@ import 
com.atlassian.jira.rest.client.api.domain.input.IssueInputBuilder;
 import org.apache.camel.Exchange;
 import org.apache.camel.component.jira.JiraEndpoint;
 import org.apache.camel.support.DefaultProducer;
+import org.apache.camel.util.ObjectHelper;
 
 import static org.apache.camel.component.jira.JiraConstants.*;
 
@@ -49,8 +51,8 @@ public class AddIssueProducer extends DefaultProducer {
         String assigneeName = exchange.getIn().getHeader(ISSUE_ASSIGNEE, 
String.class);
         String priorityName = exchange.getIn().getHeader(ISSUE_PRIORITY_NAME, 
String.class);
         Long priorityId = exchange.getIn().getHeader(ISSUE_PRIORITY_ID, 
Long.class);
-        List<String> components = exchange.getIn().getHeader(ISSUE_COMPONENTS, 
List.class);
-        List<String> watchers = exchange.getIn().getHeader(ISSUE_WATCHERS_ADD, 
List.class);
+        String components = exchange.getIn().getHeader(ISSUE_COMPONENTS, 
String.class);
+        String watchers = exchange.getIn().getHeader(ISSUE_WATCHERS_ADD, 
String.class);
         // search for issueTypeId from an issueTypeName
         if (issueTypeId == null && issueTypeName != null) {
             Iterable<IssueType> issueTypes = 
client.getMetadataClient().getIssueTypes().claim();
@@ -86,8 +88,16 @@ public class AddIssueProducer extends DefaultProducer {
         IssueInputBuilder builder = new IssueInputBuilder(projectKey, 
issueTypeId);
         builder.setDescription(exchange.getIn().getBody(String.class));
         builder.setSummary(summary);
-        if (components != null && !components.isEmpty()) {
-            builder.setComponentsNames(components);
+        if (ObjectHelper.isNotEmpty(components)) {
+            String[] compArr = components.split(",");
+            List<String> comps = new ArrayList<>(compArr.length);
+            for (String s : compArr) {
+                String c = s.trim();
+                if (c.length() > 0) {
+                    comps.add(c);
+                }
+            }
+            builder.setComponentsNames(comps);
         }
         if (priorityId != null) {
             builder.setPriorityId(priorityId);
@@ -99,17 +109,21 @@ public class AddIssueProducer extends DefaultProducer {
         IssueRestClient issueClient = client.getIssueClient();
         BasicIssue issueCreated = 
issueClient.createIssue(builder.build()).claim();
         Issue issue = issueClient.getIssue(issueCreated.getKey()).claim();
-        if (watchers != null && !watchers.isEmpty()) {
-            for (String watcher : watchers) {
-                issueClient.addWatcher(issue.getWatchers().getSelf(), watcher);
+        if (ObjectHelper.isNotEmpty(watchers)) {
+            String[] watArr = watchers.split(",");
+            for (String s : watArr) {
+                String watcher = s.trim();
+                if (watcher.length() > 0) {
+                    issueClient.addWatcher(issue.getWatchers().getSelf(), 
watcher);
+                }
             }
         }
 
         // support InOut
         if (exchange.getPattern().isOutCapable()) {
             // copy the header of in message to the out message
-            exchange.getOut().copyFrom(exchange.getIn());
-            exchange.getOut().setBody(issue);
+            exchange.getMessage().copyFrom(exchange.getIn());
+            exchange.getMessage().setBody(issue);
         } else {
             exchange.getIn().setBody(issue);
         }
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 1eeb6a52d5a..e0d8fd04542 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
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.jira.producer;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import com.atlassian.jira.rest.client.api.IssueRestClient;
@@ -26,8 +27,16 @@ import 
com.atlassian.jira.rest.client.api.domain.input.IssueInputBuilder;
 import org.apache.camel.Exchange;
 import org.apache.camel.component.jira.JiraEndpoint;
 import org.apache.camel.support.DefaultProducer;
+import org.apache.camel.util.ObjectHelper;
 
-import static org.apache.camel.component.jira.JiraConstants.*;
+import static org.apache.camel.component.jira.JiraConstants.ISSUE_ASSIGNEE;
+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;
+import static 
org.apache.camel.component.jira.JiraConstants.ISSUE_PRIORITY_NAME;
+import static org.apache.camel.component.jira.JiraConstants.ISSUE_SUMMARY;
+import static org.apache.camel.component.jira.JiraConstants.ISSUE_TYPE_ID;
+import static org.apache.camel.component.jira.JiraConstants.ISSUE_TYPE_NAME;
 
 public class UpdateIssueProducer extends DefaultProducer {
 
@@ -49,7 +58,7 @@ public class UpdateIssueProducer extends DefaultProducer {
         String assigneeName = exchange.getIn().getHeader(ISSUE_ASSIGNEE, 
String.class);
         String priorityName = exchange.getIn().getHeader(ISSUE_PRIORITY_NAME, 
String.class);
         Long priorityId = exchange.getIn().getHeader(ISSUE_PRIORITY_ID, 
Long.class);
-        List<String> components = exchange.getIn().getHeader(ISSUE_COMPONENTS, 
List.class);
+        String components = exchange.getIn().getHeader(ISSUE_COMPONENTS, 
String.class);
         if (issueTypeId == null && issueTypeName != null) {
             Iterable<IssueType> issueTypes = 
client.getMetadataClient().getIssueTypes().claim();
             for (IssueType type : issueTypes) {
@@ -79,8 +88,13 @@ public class UpdateIssueProducer extends DefaultProducer {
         if (description != null) {
             builder.setDescription(description);
         }
-        if (components != null && !components.isEmpty()) {
-            builder.setComponentsNames(components);
+        if (ObjectHelper.isNotEmpty(components)) {
+            String[] compArr = components.split(",");
+            List<String> comps = new ArrayList<>(compArr.length);
+            for (String s : compArr) {
+                comps.add(s.trim());
+            }
+            builder.setComponentsNames(comps);
         }
         if (priorityId != null) {
             builder.setPriorityId(priorityId);
diff --git 
a/components/camel-jira/src/main/java/org/apache/camel/component/jira/producer/WatcherProducer.java
 
b/components/camel-jira/src/main/java/org/apache/camel/component/jira/producer/WatcherProducer.java
index 7f5695c8781..6c9119826fa 100644
--- 
a/components/camel-jira/src/main/java/org/apache/camel/component/jira/producer/WatcherProducer.java
+++ 
b/components/camel-jira/src/main/java/org/apache/camel/component/jira/producer/WatcherProducer.java
@@ -16,14 +16,13 @@
  */
 package org.apache.camel.component.jira.producer;
 
-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.Issue;
 import org.apache.camel.Exchange;
 import org.apache.camel.component.jira.JiraEndpoint;
 import org.apache.camel.support.DefaultProducer;
+import org.apache.camel.util.ObjectHelper;
 
 import static org.apache.camel.component.jira.JiraConstants.ISSUE_KEY;
 import static org.apache.camel.component.jira.JiraConstants.ISSUE_WATCHERS_ADD;
@@ -38,26 +37,34 @@ public class WatcherProducer extends DefaultProducer {
     @Override
     public void process(Exchange exchange) {
         String issueKey = exchange.getIn().getHeader(ISSUE_KEY, String.class);
-        List<String> watchersAdd = 
exchange.getIn().getHeader(ISSUE_WATCHERS_ADD, List.class);
-        List<String> watchersRemove = 
exchange.getIn().getHeader(ISSUE_WATCHERS_REMOVE, List.class);
+        String watchersAdd = exchange.getIn().getHeader(ISSUE_WATCHERS_ADD, 
String.class);
+        String watchersRemove = 
exchange.getIn().getHeader(ISSUE_WATCHERS_REMOVE, String.class);
         if (issueKey == null) {
             throw new IllegalArgumentException(
                     "Missing exchange input header named \'IssueKey\', it 
should specify the issue key to add/remove watchers to.");
         }
         JiraRestClient client = ((JiraEndpoint) getEndpoint()).getClient();
-        boolean hasWatchersToAdd = watchersAdd != null && 
!watchersAdd.isEmpty();
-        boolean hasWatchersToRemove = watchersRemove != null && 
!watchersRemove.isEmpty();
+        boolean hasWatchersToAdd = ObjectHelper.isNotEmpty(watchersAdd);
+        boolean hasWatchersToRemove = ObjectHelper.isNotEmpty(watchersRemove);
         if (hasWatchersToAdd || hasWatchersToRemove) {
             IssueRestClient issueClient = client.getIssueClient();
             Issue issue = issueClient.getIssue(issueKey).claim();
             if (hasWatchersToAdd) {
-                for (String watcher : watchersAdd) {
-                    issueClient.addWatcher(issue.getWatchers().getSelf(), 
watcher);
+                String[] watArr = watchersAdd.split(",");
+                for (String s : watArr) {
+                    String watcher = s.trim();
+                    if (watcher.length() > 0) {
+                        issueClient.addWatcher(issue.getWatchers().getSelf(), 
watcher);
+                    }
                 }
             }
             if (hasWatchersToRemove) {
-                for (String watcher : watchersRemove) {
-                    issueClient.removeWatcher(issue.getWatchers().getSelf(), 
watcher);
+                String[] watArr = watchersRemove.split(",");
+                for (String s : watArr) {
+                    String watcher = s.trim();
+                    if (watcher.length() > 0) {
+                        
issueClient.removeWatcher(issue.getWatchers().getSelf(), watcher);
+                    }
                 }
             }
         }
diff --git 
a/components/camel-jira/src/test/java/org/apache/camel/component/jira/Utils.java
 
b/components/camel-jira/src/test/java/org/apache/camel/component/jira/Utils.java
index 0d1b3770a25..1643a4a4192 100644
--- 
a/components/camel-jira/src/test/java/org/apache/camel/component/jira/Utils.java
+++ 
b/components/camel-jira/src/test/java/org/apache/camel/component/jira/Utils.java
@@ -169,6 +169,11 @@ public final class Utils {
         return new Worklog(selfUri, issueUri, null, null, comment, now, null, 
null, minutesSpent, null);
     }
 
+    public static BasicComponent createBasicComponent(Long id, String name) {
+        URI compUri = URI.create(TEST_JIRA_URL + 
"/rest/api/latest/issue/11/component/1");
+        return new BasicComponent(compUri, id, name, name + " description");
+    }
+
     private static Map<String, URI> buildUserAvatarUris(String user, Long 
avatarId) throws Exception {
         final ImmutableMap.Builder<String, URI> builder = 
ImmutableMap.builder();
         builder.put(S48_48, buildUserAvatarUri(user, avatarId));
diff --git 
a/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/AddIssueProducerTest.java
 
b/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/AddIssueProducerTest.java
index 2dc2a896f31..c806d9dec8a 100644
--- 
a/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/AddIssueProducerTest.java
+++ 
b/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/AddIssueProducerTest.java
@@ -16,14 +16,18 @@
  */
 package org.apache.camel.component.jira.producer;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.StringJoiner;
 
 import com.atlassian.jira.rest.client.api.IssueRestClient;
 import com.atlassian.jira.rest.client.api.JiraRestClient;
 import com.atlassian.jira.rest.client.api.JiraRestClientFactory;
 import com.atlassian.jira.rest.client.api.MetadataRestClient;
+import com.atlassian.jira.rest.client.api.domain.BasicComponent;
 import com.atlassian.jira.rest.client.api.domain.BasicIssue;
 import com.atlassian.jira.rest.client.api.domain.BasicPriority;
 import com.atlassian.jira.rest.client.api.domain.Issue;
@@ -39,6 +43,7 @@ import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.jira.JiraComponent;
+import org.apache.camel.component.jira.Utils;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.test.junit5.CamelTestSupport;
@@ -47,15 +52,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 
-import static org.apache.camel.component.jira.JiraConstants.ISSUE_ASSIGNEE;
-import static org.apache.camel.component.jira.JiraConstants.ISSUE_PRIORITY_ID;
-import static 
org.apache.camel.component.jira.JiraConstants.ISSUE_PRIORITY_NAME;
-import static org.apache.camel.component.jira.JiraConstants.ISSUE_PROJECT_KEY;
-import static org.apache.camel.component.jira.JiraConstants.ISSUE_SUMMARY;
-import static org.apache.camel.component.jira.JiraConstants.ISSUE_TYPE_ID;
-import static org.apache.camel.component.jira.JiraConstants.ISSUE_TYPE_NAME;
-import static org.apache.camel.component.jira.JiraConstants.JIRA;
-import static 
org.apache.camel.component.jira.JiraConstants.JIRA_REST_CLIENT_FACTORY;
+import static org.apache.camel.component.jira.JiraConstants.*;
 import static 
org.apache.camel.component.jira.JiraTestConstants.JIRA_CREDENTIALS;
 import static org.apache.camel.component.jira.JiraTestConstants.KEY;
 import static org.apache.camel.component.jira.Utils.createIssue;
@@ -118,7 +115,10 @@ public class AddIssueProducerTest extends CamelTestSupport 
{
             String description = (String) 
issueInput.getField("description").getValue();
             Integer priorityId = Integer.parseInt(getValue(issueInput, 
"priority", "id"));
             BasicPriority priority = issuePriorities.get(priorityId);
-            backendIssue = createIssue(11L, summary, project, issueType, 
description, priority, userAssignee, null, null);
+            Collection<BasicComponent> components = new ArrayList<>(2);
+            components.add(Utils.createBasicComponent(1L, "ux"));
+            components.add(Utils.createBasicComponent(2L, "plugins"));
+            backendIssue = createIssue(11L, summary, project, issueType, 
description, priority, userAssignee, components, null);
             BasicIssue basicIssue = new BasicIssue(backendIssue.getSelf(), 
backendIssue.getKey(), backendIssue.getId());
             return Promises.promise(basicIssue);
         });
@@ -155,22 +155,32 @@ public class AddIssueProducerTest extends 
CamelTestSupport {
     @Test
     public void verifyIssueAdded() throws InterruptedException {
 
+        String type = "Task";
+        String priority = "Low";
+        String summary = "Demo Bug jira " + new Date();
+        String assignee = "tom";
+        String components = "ux,plugins";
+        String description = "My jira description" + new Date();
+
         Map<String, Object> headers = new HashMap<>();
         headers.put(ISSUE_PROJECT_KEY, KEY);
-        headers.put(ISSUE_TYPE_NAME, "Task");
-        headers.put(ISSUE_SUMMARY, "Demo Bug jira " + (new Date()));
-        headers.put(ISSUE_PRIORITY_NAME, "Low");
-        headers.put(ISSUE_ASSIGNEE, "tom");
+        headers.put(ISSUE_TYPE_NAME, type);
+        headers.put(ISSUE_SUMMARY, summary);
+        headers.put(ISSUE_PRIORITY_NAME, priority);
+        headers.put(ISSUE_ASSIGNEE, assignee);
+        headers.put(ISSUE_COMPONENTS, components);
 
-        template.sendBodyAndHeaders("Minha descrição jira " + (new Date()), 
headers);
+        template.sendBodyAndHeaders(description, headers);
 
         Issue issue = issueRestClient.getIssue(backendIssue.getKey()).claim();
-        assertEquals(backendIssue, issue);
-        assertEquals(backendIssue.getIssueType(), issue.getIssueType());
-        assertEquals(backendIssue.getPriority(), issue.getPriority());
-        assertEquals(backendIssue.getSummary(), issue.getSummary());
-        assertEquals(backendIssue.getProject(), issue.getProject());
-        assertEquals(backendIssue.getDescription(), issue.getDescription());
+        assertEquals(issue, issue);
+        assertEquals(type, issue.getIssueType().getName());
+        assertEquals(priority, issue.getPriority().getName());
+        assertEquals(summary, issue.getSummary());
+        assertEquals(description, issue.getDescription());
+        StringJoiner comps = new StringJoiner(",");
+        issue.getComponents().forEach(c -> comps.add(c.getName()));
+        assertEquals(comps.toString(), components);
         mockResult.expectedMessageCount(1);
         mockResult.assertIsSatisfied();
     }
@@ -178,21 +188,25 @@ public class AddIssueProducerTest extends 
CamelTestSupport {
     @Test
     public void verifyIssueAddedWithIds() throws InterruptedException {
 
+        int typeId = 2;
+        String summary = "Demo Bug jira " + new Date();
+        int priority = 1;
+        String description = "My jira description" + new Date();
+
         Map<String, Object> headers = new HashMap<>();
         headers.put(ISSUE_PROJECT_KEY, KEY);
-        headers.put(ISSUE_TYPE_ID, 2);
-        headers.put(ISSUE_SUMMARY, "Demo Bug jira " + (new Date()));
-        headers.put(ISSUE_PRIORITY_ID, 1);
+        headers.put(ISSUE_TYPE_ID, typeId);
+        headers.put(ISSUE_SUMMARY, summary);
+        headers.put(ISSUE_PRIORITY_ID, priority);
 
-        template.sendBodyAndHeaders("Minha descrição jira " + (new Date()), 
headers);
+        template.sendBodyAndHeaders(description, headers);
 
         Issue issue = issueRestClient.getIssue(backendIssue.getKey()).claim();
         assertEquals(backendIssue, issue);
-        assertEquals(backendIssue.getIssueType(), issue.getIssueType());
-        assertEquals(backendIssue.getPriority(), issue.getPriority());
-        assertEquals(backendIssue.getSummary(), issue.getSummary());
-        assertEquals(backendIssue.getProject(), issue.getProject());
-        assertEquals(backendIssue.getDescription(), issue.getDescription());
+        assertEquals(typeId, issue.getIssueType().getId());
+        assertEquals(priority, issue.getPriority().getId());
+        assertEquals(summary, issue.getSummary());
+        assertEquals(description, issue.getDescription());
         mockResult.expectedMessageCount(1);
         mockResult.assertIsSatisfied();
     }
diff --git 
a/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/TransitionIssueProducerTest.java
 
b/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/TransitionIssueProducerTest.java
index 1a12df9cd57..5435f7cc92d 100644
--- 
a/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/TransitionIssueProducerTest.java
+++ 
b/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/TransitionIssueProducerTest.java
@@ -87,9 +87,9 @@ public class TransitionIssueProducerTest extends 
CamelTestSupport {
         when(issueRestClient.getIssue(any())).then(inv -> 
Promises.promise(issue));
         when(issueRestClient.transition(any(Issue.class), 
any(TransitionInput.class))).then(inv -> {
             URI doneStatusUri = URI.create(TEST_JIRA_URL + 
"/rest/api/2/status/1");
-            URI doneResolutionUri = URI.create(TEST_JIRA_URL + 
"/rest/api/2/resolution/1");
+            URI doneResolutionUri = URI.create(TEST_JIRA_URL + 
"/rest/api/2/resolution/31");
             Status status = new Status(doneStatusUri, 1L, "Done", "Done", 
null, null);
-            Resolution resolution = new Resolution(doneResolutionUri, 1L, 
"Resolution", "Resolution");
+            Resolution resolution = new Resolution(doneResolutionUri, 31L, 
"Resolution", "Resolution");
             issue = transitionIssueDone(issue, status, resolution);
             return null;
         });
@@ -117,7 +117,7 @@ public class TransitionIssueProducerTest extends 
CamelTestSupport {
             public void configure() throws IOException {
                 from("direct:start")
                         .setHeader(ISSUE_KEY, () -> KEY + "-1")
-                        .setHeader(ISSUE_TRANSITION_ID, () -> 31)
+                        .setHeader(ISSUE_TRANSITION_ID, () -> 3)
                         .to("jira://transitionIssue?jiraUrl=" + 
JIRA_CREDENTIALS)
                         .to(mockResult);
             }
diff --git 
a/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/UpdateIssueProducerTest.java
 
b/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/UpdateIssueProducerTest.java
index 7828785a192..52e7dde9d9f 100644
--- 
a/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/UpdateIssueProducerTest.java
+++ 
b/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/UpdateIssueProducerTest.java
@@ -16,14 +16,18 @@
  */
 package org.apache.camel.component.jira.producer;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.StringJoiner;
 
 import com.atlassian.jira.rest.client.api.IssueRestClient;
 import com.atlassian.jira.rest.client.api.JiraRestClient;
 import com.atlassian.jira.rest.client.api.JiraRestClientFactory;
 import com.atlassian.jira.rest.client.api.MetadataRestClient;
+import com.atlassian.jira.rest.client.api.domain.BasicComponent;
 import com.atlassian.jira.rest.client.api.domain.BasicIssue;
 import com.atlassian.jira.rest.client.api.domain.BasicPriority;
 import com.atlassian.jira.rest.client.api.domain.Issue;
@@ -39,6 +43,7 @@ import org.apache.camel.Produce;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.jira.JiraComponent;
+import org.apache.camel.component.jira.Utils;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.test.junit5.CamelTestSupport;
@@ -47,7 +52,6 @@ import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 
-import static org.apache.camel.component.jira.JiraConstants.ISSUE_ASSIGNEE;
 import static org.apache.camel.component.jira.JiraConstants.ISSUE_KEY;
 import static 
org.apache.camel.component.jira.JiraConstants.ISSUE_PRIORITY_NAME;
 import static org.apache.camel.component.jira.JiraConstants.ISSUE_SUMMARY;
@@ -117,7 +121,11 @@ public class UpdateIssueProducerTest extends 
CamelTestSupport {
             String description = (String) 
issueInput.getField("description").getValue();
             Integer priorityId = Integer.parseInt(getValue(issueInput, 
"priority", "id"));
             BasicPriority priority = issuePriorities.get(priorityId);
-            backendIssue = createIssue(11L, summary, issueKey, issueType, 
description, priority, userAssignee, null, null);
+            Collection<BasicComponent> components = new ArrayList<>(2);
+            components.add(Utils.createBasicComponent(1L, "ux"));
+            components.add(Utils.createBasicComponent(2L, "plugins"));
+            backendIssue
+                    = createIssue(11L, summary, issueKey, issueType, 
description, priority, userAssignee, components, null);
             BasicIssue basicIssue = new BasicIssue(backendIssue.getSelf(), 
backendIssue.getKey(), backendIssue.getId());
             return Promises.promise(basicIssue);
         });
@@ -154,22 +162,29 @@ public class UpdateIssueProducerTest extends 
CamelTestSupport {
     @Test
     public void verifyIssueUpdated() throws InterruptedException {
 
+        String type = "Bug";
+        String priority = "High";
+        String summary = "Demo Bug jira " + new Date();
+        String description = "My jira description" + new Date();
+        String components = "ux,plugins";
+
         Map<String, Object> headers = new HashMap<>();
         headers.put(ISSUE_KEY, backendIssue.getKey());
-        headers.put(ISSUE_TYPE_NAME, "Task");
-        headers.put(ISSUE_SUMMARY, "Demo Bug jira " + (new Date()));
-        headers.put(ISSUE_PRIORITY_NAME, "Low");
-        headers.put(ISSUE_ASSIGNEE, "tom");
+        headers.put(ISSUE_TYPE_NAME, type);
+        headers.put(ISSUE_SUMMARY, summary);
+        headers.put(ISSUE_PRIORITY_NAME, priority);
 
-        template.sendBodyAndHeaders("New description " + (new Date()), 
headers);
+        template.sendBodyAndHeaders(description, headers);
 
         Issue issue = issueRestClient.getIssue(backendIssue.getKey()).claim();
         assertEquals(backendIssue, issue);
-        assertEquals(backendIssue.getIssueType(), issue.getIssueType());
-        assertEquals(backendIssue.getPriority(), issue.getPriority());
-        assertEquals(backendIssue.getSummary(), issue.getSummary());
-        assertEquals(backendIssue.getProject(), issue.getProject());
-        assertEquals(backendIssue.getDescription(), issue.getDescription());
+        assertEquals(type, issue.getIssueType().getName());
+        assertEquals(priority, issue.getPriority().getName());
+        assertEquals(summary, issue.getSummary());
+        assertEquals(description, issue.getDescription());
+        StringJoiner comps = new StringJoiner(",");
+        issue.getComponents().forEach(c -> comps.add(c.getName()));
+        assertEquals(comps.toString(), components);
         mockResult.expectedMessageCount(1);
         mockResult.assertIsSatisfied();
     }
diff --git 
a/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/WatcherProducerTest.java
 
b/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/WatcherProducerTest.java
index 4ca256c7a01..b4641f5179b 100644
--- 
a/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/WatcherProducerTest.java
+++ 
b/components/camel-jira/src/test/java/org/apache/camel/component/jira/producer/WatcherProducerTest.java
@@ -153,9 +153,7 @@ public class WatcherProducerTest extends CamelTestSupport {
 
     @Test
     public void addWatchers() throws InterruptedException {
-        List<String> watchersToAdd = new ArrayList<>();
-        watchersToAdd.add("user1A");
-        watchersToAdd.add("user1B");
+        String watchersToAdd = "user1A,user1B";
         Map<String, Object> headers = new HashMap<>();
         headers.put(ISSUE_KEY, backendIssue.getKey());
         headers.put(ISSUE_WATCHERS_ADD, watchersToAdd);
@@ -175,9 +173,7 @@ public class WatcherProducerTest extends CamelTestSupport {
 
     @Test
     public void removeWatchers() throws InterruptedException {
-        List<String> watchersToRemove = new ArrayList<>();
-        watchersToRemove.add("user2");
-        watchersToRemove.add("user3");
+        String watchersToRemove = "user2,user3";
         Map<String, Object> headers = new HashMap<>();
         headers.put(ISSUE_KEY, backendIssue.getKey());
         headers.put(ISSUE_WATCHERS_REMOVE, watchersToRemove);
@@ -197,12 +193,8 @@ public class WatcherProducerTest extends CamelTestSupport {
 
     @Test
     public void addRemoveWatchers() throws InterruptedException {
-        List<String> watchersToAdd = new ArrayList<>();
-        watchersToAdd.add("user2A");
-        watchersToAdd.add("user2B");
-        List<String> watchersToRemove = new ArrayList<>();
-        watchersToRemove.add("user4");
-        watchersToRemove.add("user5");
+        String watchersToAdd = "user2A,user2B";
+        String watchersToRemove = "user4,user5";
         Map<String, Object> headers = new HashMap<>();
         headers.put(ISSUE_KEY, backendIssue.getKey());
         headers.put(ISSUE_WATCHERS_ADD, watchersToAdd);

Reply via email to