From 8e198730f1e06c6d8c8476ec80b47d3327adc170 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 11 May 2014 10:31:09 +0200 Subject: o Supporting extraction of build parameters from the message. --- .../jenkinsci/plugins/activemq/ActiveMqPlugin.java | 33 ++++++++++++++++------ 1 file changed, 24 insertions(+), 9 deletions(-) (limited to 'src/main/java/org/jenkinsci/plugins/activemq/ActiveMqPlugin.java') diff --git a/src/main/java/org/jenkinsci/plugins/activemq/ActiveMqPlugin.java b/src/main/java/org/jenkinsci/plugins/activemq/ActiveMqPlugin.java index cf1c2e9..d1a9d8d 100644 --- a/src/main/java/org/jenkinsci/plugins/activemq/ActiveMqPlugin.java +++ b/src/main/java/org/jenkinsci/plugins/activemq/ActiveMqPlugin.java @@ -5,15 +5,17 @@ import hudson.Plugin; import hudson.model.AbstractProject; import hudson.model.Build; import hudson.model.Cause; +import hudson.model.CauseAction; +import hudson.model.ParametersAction; import hudson.model.TaskListener; import jenkins.model.GlobalConfiguration; import jenkins.model.Jenkins; +import jenkins.util.TimeDuration; import org.slf4j.Logger; import javax.annotation.Nonnull; import javax.jms.JMSException; import javax.script.ScriptEngine; -import javax.script.ScriptEngineFactory; import javax.script.ScriptEngineManager; import java.net.URISyntaxException; import java.util.Map; @@ -107,11 +109,24 @@ public class ActiveMqPlugin extends Plugin implements ActiveMqClient.BuildReques continue; } - if (trigger.matches(req)) { - log.debug("MVEL matched!"); - project.scheduleBuild(new ActiveMqCause()); + DoBuildResponse doBuildResponse = trigger.matches(req); + if (doBuildResponse instanceof DoBuildResponse.NoBuild) { + log.debug("Trigger did not match"); } else { - log.debug("MVEL did not match"); + log.debug("Trigger matched: {}", doBuildResponse.getClass().getSimpleName()); + + if (doBuildResponse instanceof DoBuildResponse.BuildWithParameters && project.isParameterized()) { + DoBuildResponse.BuildWithParameters buildWithParameters = (DoBuildResponse.BuildWithParameters) doBuildResponse; + + TimeDuration delay = new TimeDuration(project.getQuietPeriod()); + + ParametersAction parametersAction = new ParametersAction(buildWithParameters.parameters); + CauseAction causeAction = new CauseAction(new ActiveMqCause()); + + Jenkins.getInstance().getQueue().schedule(project, delay.getTime(), parametersAction, causeAction); + } else { + project.scheduleBuild(new ActiveMqCause()); + } } } } @@ -127,10 +142,10 @@ public class ActiveMqPlugin extends Plugin implements ActiveMqClient.BuildReques * Used by other parts of the plugin. */ public ScriptEngine createEngine() { - log.info("ActiveMqPlugin.createEngine"); - for (ScriptEngineFactory scriptEngineFactory : scriptEngineManager.getEngineFactories()) { - log.info("scriptEngineFactory = " + scriptEngineFactory); + ScriptEngine engine = scriptEngineManager.getEngineByName("JavaScript"); + if (engine == null) { + throw new RuntimeException("Unable to create script engine"); } - return scriptEngineManager.getEngineByName("JavaScript"); + return engine; } } -- cgit v1.2.3