summaryrefslogtreecommitdiff
path: root/src/main/java/org/jenkinsci/plugins/activemq/ActiveMqPlugin.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/jenkinsci/plugins/activemq/ActiveMqPlugin.java')
-rw-r--r--src/main/java/org/jenkinsci/plugins/activemq/ActiveMqPlugin.java33
1 files changed, 24 insertions, 9 deletions
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;
}
}