Skip to content

Commit 24dd95b

Browse files
committed
More java 8 stuff
1 parent fd09995 commit 24dd95b

File tree

2 files changed

+24
-18
lines changed

2 files changed

+24
-18
lines changed

src/main/java/org/jenkinsci/plugins/gogs/GogsPayloadProcessor.java

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ associated documentation files (the "Software"), to deal in the Software without
3535
import java.io.StringWriter;
3636
import java.util.HashMap;
3737
import java.util.Map;
38+
import java.util.Optional;
39+
import java.util.concurrent.atomic.AtomicBoolean;
3840
import java.util.logging.Logger;
3941

4042
class GogsPayloadProcessor {
@@ -49,42 +51,46 @@ public void setPayload(String k, String v) {
4951
}
5052

5153
public GogsResults triggerJobs(String jobName, String deliveryID) {
54+
AtomicBoolean jobdone = new AtomicBoolean(false);
5255
SecurityContext saveCtx = ACL.impersonate(ACL.SYSTEM);
5356
GogsResults result = new GogsResults();
5457

5558
try {
5659
BuildableItem project = GogsUtils.find(jobName, BuildableItem.class);
5760
if (project != null) {
58-
GogsTrigger gTrigger = null;
5961
Cause cause = new GogsCause(deliveryID);
6062

6163
if (project instanceof ParameterizedJobMixIn.ParameterizedJob) {
6264
ParameterizedJobMixIn.ParameterizedJob pJob = (ParameterizedJobMixIn.ParameterizedJob) project;
63-
gTrigger = (GogsTrigger) pJob.getTriggers().values().stream()
64-
.filter(trigger1 -> trigger1 instanceof GogsTrigger).findFirst().get();
65+
pJob.getTriggers().values().stream()
66+
.filter(trigger1 -> trigger1 instanceof GogsTrigger).findFirst()
67+
.ifPresent((g) -> {
68+
GogsPayload gogsPayload = new GogsPayload(this.payload);
69+
Optional.ofNullable(SCMTriggerItem.SCMTriggerItems.asSCMTriggerItem(project))
70+
.ifPresent((item) -> {
71+
item.scheduleBuild2(0, gogsPayload);
72+
jobdone.set(true);
73+
});
74+
});
6575
}
66-
67-
if (gTrigger != null) {
68-
SCMTriggerItem item = SCMTriggerItem.SCMTriggerItems.asSCMTriggerItem(project);
69-
GogsPayload gogsPayload = new GogsPayload(this.payload);
70-
if (item != null) {
71-
item.scheduleBuild2(0, gogsPayload);
72-
}
73-
} else {
76+
if (!jobdone.get()) {
7477
project.scheduleBuild(0, cause);
78+
jobdone.set(true);
7579
}
76-
result.setMessage(String.format("Job '%s' is executed", jobName));
77-
} else {
78-
String msg = String.format("Job '%s' is not defined in Jenkins", jobName);
79-
result.setStatus(404, msg);
80-
LOGGER.warning(msg);
8180
}
8281
} catch (Exception e) {
8382
StringWriter sw = new StringWriter();
8483
PrintWriter pw = new PrintWriter(sw);
8584
e.printStackTrace(pw);
8685
LOGGER.severe(sw.toString());
8786
} finally {
87+
if (jobdone.get()) {
88+
result.setMessage(String.format("Job '%s' is executed", jobName));
89+
} else {
90+
String msg = String.format("Job '%s' is not defined in Jenkins", jobName);
91+
result.setStatus(404, msg);
92+
LOGGER.warning(msg);
93+
}
8894
SecurityContextHolder.setContext(saveCtx);
8995
}
9096

src/main/java/org/jenkinsci/plugins/gogs/GogsUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class GogsUtils {
77

88
private GogsUtils() {
99
}
10-
10+
1111
/**
1212
* Search in Jenkins for a item with type T based on the job name
1313
*
@@ -21,7 +21,7 @@ static <T extends Item> T find(String jobName, Class<T> type) {
2121
if (item == null) {
2222
// not found in a direct search, search in all items since the item might be in a folder but given without folder structure
2323
// (to keep it backwards compatible)
24-
item = jenkins.getAllItems(type).stream().filter(i -> i.getName().equals(jobName)).findFirst().get();
24+
item = jenkins.getAllItems(type).stream().filter(i -> i.getName().equals(jobName)).findFirst().orElse(null);
2525
}
2626
return item;
2727
}

0 commit comments

Comments
 (0)