@@ -35,6 +35,8 @@ associated documentation files (the "Software"), to deal in the Software without
3535import java .io .StringWriter ;
3636import java .util .HashMap ;
3737import java .util .Map ;
38+ import java .util .Optional ;
39+ import java .util .concurrent .atomic .AtomicBoolean ;
3840import java .util .logging .Logger ;
3941
4042class 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
0 commit comments