Skip to content

Commit d58b261

Browse files
committed
Adjust version upsert handling
1 parent b6c57cc commit d58b261

File tree

2 files changed

+17
-18
lines changed

2 files changed

+17
-18
lines changed

src/main/java/org/hibernate/infra/replicate/jira/service/jira/HandlerProjectContext.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -246,14 +246,25 @@ public String formatTimestamp(ZonedDateTime time) {
246246
}
247247

248248
public JiraVersion fixVersion(JiraVersion version) {
249-
JiraVersion v = destFixVersions.get(version.name);
250-
if (v != null) {
251-
return v;
249+
return fixVersion(version, false);
250+
}
251+
252+
public JiraVersion fixVersion(JiraVersion version, boolean force) {
253+
if (!force) {
254+
JiraVersion v = destFixVersions.get(version.name);
255+
if (v != null) {
256+
return v;
257+
}
252258
}
253259
versionLock.lock();
254260
try {
255-
return destFixVersions.computeIfAbsent(version.name,
256-
name -> upsert(project, projectGroupContext, destinationJiraClient, version, List.of()));
261+
if (force) {
262+
return destFixVersions.compute(version.name, (name, current) -> upsert(project, projectGroupContext,
263+
destinationJiraClient, version, List.of()));
264+
} else {
265+
return destFixVersions.computeIfAbsent(version.name,
266+
name -> upsert(project, projectGroupContext, destinationJiraClient, version, List.of()));
267+
}
257268
} catch (Exception e) {
258269
Log.errorf(e,
259270
"Couldn't create a copy of the fix version %s, version will not be synced for a particular Jira ticket.",

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

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package org.hibernate.infra.replicate.jira.service.jira.handler;
22

3-
import java.util.List;
4-
import java.util.Optional;
5-
63
import org.hibernate.infra.replicate.jira.service.jira.HandlerProjectContext;
74
import org.hibernate.infra.replicate.jira.service.jira.model.rest.JiraVersion;
85
import org.hibernate.infra.replicate.jira.service.reporting.ReportingConfig;
@@ -16,16 +13,7 @@ public JiraVersionUpsertEventHandler(ReportingConfig reportingConfig, HandlerPro
1613
@Override
1714
protected void doRun() {
1815
JiraVersion version = context.sourceJiraClient().version(objectId);
19-
List<JiraVersion> downstreamVersions = context.destinationJiraClient().versions(context.project().projectKey());
20-
21-
JiraVersion send = version.copyForProject(context.project());
22-
23-
Optional<JiraVersion> found = JiraVersion.findVersion(version.id, downstreamVersions);
24-
if (found.isPresent()) {
25-
context.destinationJiraClient().update(found.get().id, send);
26-
} else {
27-
context.destinationJiraClient().create(send);
28-
}
16+
context.fixVersion(version, true);
2917
}
3018

3119
@Override

0 commit comments

Comments
 (0)