Skip to content

Commit 50b7a2a

Browse files
committed
Use a dedicated assign api for changing the upstream assignee
since updating it through edit doesn't work consistently
1 parent 1405524 commit 50b7a2a

File tree

4 files changed

+25
-11
lines changed

4 files changed

+25
-11
lines changed

src/main/java/org/hibernate/infra/replicate/jira/service/jira/client/JiraRestClient.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.fasterxml.jackson.annotation.JsonInclude;
2323
import com.fasterxml.jackson.databind.ObjectMapper;
2424
import io.quarkus.rest.client.reactive.ClientExceptionMapper;
25-
import io.quarkus.rest.client.reactive.ClientQueryParam;
2625
import io.quarkus.rest.client.reactive.jackson.ClientObjectMapper;
2726
import jakarta.ws.rs.Consumes;
2827
import jakarta.ws.rs.DELETE;
@@ -41,8 +40,10 @@
4140
* version (included), e.g.:
4241
*/
4342
// so that we do not spam with all notifications ...
44-
// since `notifyUsers=false` does not apply to all requests and we've disabled notifications downstream
45-
// this query param is not sent anymore to allow automation updating upstream issues to work with a non-admin user.
43+
// since `notifyUsers=false` does not apply to all requests and we've disabled
44+
// notifications downstream
45+
// this query param is not sent anymore to allow automation updating upstream
46+
// issues to work with a non-admin user.
4647
// @ClientQueryParam(name = "notifyUsers", value = "false")
4748
public interface JiraRestClient {
4849

@@ -150,7 +151,7 @@ JiraIssues find(@QueryParam("jql") String query, @QueryParam("startAt") int star
150151

151152
@GET
152153
@Path("/issue/{issueKey}/transitions")
153-
JiraTransitions availableTransitions(String issueKey);
154+
JiraTransitions availableTransitions(@PathParam("issueKey") String issueKey);
154155

155156
@PUT
156157
@Path("/issue/{issueKey}/archive")
@@ -172,6 +173,10 @@ JiraIssues find(@QueryParam("jql") String query, @QueryParam("startAt") int star
172173
@Path("/version/{id}")
173174
JiraVersion update(@PathParam("id") String id, JiraVersion version);
174175

176+
@PUT
177+
@Path("/issue/{issueKey}/assignee")
178+
void assign(@PathParam("issueKey") String id, JiraUser assignee);
179+
175180
@ClientObjectMapper
176181
static ObjectMapper objectMapper(ObjectMapper defaultObjectMapper) {
177182
return defaultObjectMapper.copy().setDefaultPropertyInclusion(JsonInclude.Include.NON_EMPTY);

src/main/java/org/hibernate/infra/replicate/jira/service/jira/client/JiraRestClientBuilder.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,11 @@ public JiraVersion update(String id, JiraVersion version) {
281281
return withRetry(() -> delegate.update(id, version));
282282
}
283283

284+
@Override
285+
public void assign(String id, JiraUser assignee) {
286+
withRetry(() -> delegate.assign(id, assignee));
287+
}
288+
284289
private static final int RETRIES = 5;
285290
private static final Duration WAIT_BETWEEN_RETRIES = Duration.of(2, ChronoUnit.SECONDS);
286291

src/main/java/org/hibernate/infra/replicate/jira/service/jira/handler/action/JiraAssigneeActionEventHandler.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import org.hibernate.infra.replicate.jira.service.jira.HandlerProjectContext;
44
import org.hibernate.infra.replicate.jira.service.jira.model.action.JiraActionEvent;
5-
import org.hibernate.infra.replicate.jira.service.jira.model.rest.JiraFields;
65
import org.hibernate.infra.replicate.jira.service.jira.model.rest.JiraIssue;
76
import org.hibernate.infra.replicate.jira.service.jira.model.rest.JiraUser;
87
import org.hibernate.infra.replicate.jira.service.reporting.ReportingConfig;
@@ -18,20 +17,20 @@ public JiraAssigneeActionEventHandler(ReportingConfig reportingConfig, HandlerPr
1817
protected void doRun() {
1918
JiraIssue issue = context.destinationJiraClient().getIssue(event.key);
2019

21-
JiraIssue updated = new JiraIssue();
22-
updated.fields = JiraFields.empty();
20+
JiraUser user = null;
2321
if (issue.fields.assignee != null) {
2422
String accountId = context.upstreamUser(
2523
issue.fields.assignee.mappedIdentifier(context.projectGroup().users().mappedPropertyName()));
2624

2725
if (accountId != null) {
28-
updated.fields.assignee = new JiraUser(accountId);
29-
26+
user = new JiraUser(accountId);
3027
}
3128
} else {
32-
updated.fields.assignee = new JiraUser("-1");
29+
user = new JiraUser("-1");
30+
}
31+
if (user != null) {
32+
context.sourceJiraClient().assign(toSourceKey(event.key), user);
3333
}
34-
context.sourceJiraClient().update(toSourceKey(event.key), updated);
3534
}
3635

3736
@Override

src/test/java/org/hibernate/infra/replicate/jira/mock/SampleJiraRestClient.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,11 @@ public JiraVersion update(String id, JiraVersion version) {
229229
return version;
230230
}
231231

232+
@Override
233+
public void assign(String id, JiraUser assignee) {
234+
// ok
235+
}
236+
232237
private JiraIssueLink sampleIssueLink(Long id) {
233238
try {
234239
return objectMapper.readValue("""

0 commit comments

Comments
 (0)