diff --git a/Readme.md b/Readme.md
index 1bdc5f3..9200318 100644
--- a/Readme.md
+++ b/Readme.md
@@ -41,6 +41,14 @@ Plugin](https://plugins.jenkins.io/fstrigger/)

+## Notes
+
+To determine the URL caused invocation - use the environment variable
+`URL_TRIGGER_CAUSE` - e.g. `${env.URL_TRIGGER_CAUSE}`
+
+To determine the response caused invocation - use the environment variable
+`URL_TRIGGER_RESPONSE` - e.g. `${env.URL_TRIGGER_RESPONSE}`
+
## Declarative Pipeline Syntax
Example:
diff --git a/pom.xml b/pom.xml
index 8b95315..c4e3856 100755
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.jenkins-ci.plugins
plugin
- 4.12
+ 4.27
urltrigger
@@ -141,12 +141,7 @@
commons-net
commons-net
- 3.6
-
-
-
- commons-lang
- commons-lang
+ 3.8.0
diff --git a/src/main/java/org/jenkinsci/plugins/urltrigger/URLTrigger.java b/src/main/java/org/jenkinsci/plugins/urltrigger/URLTrigger.java
index e5a11c3..0cb9e14 100755
--- a/src/main/java/org/jenkinsci/plugins/urltrigger/URLTrigger.java
+++ b/src/main/java/org/jenkinsci/plugins/urltrigger/URLTrigger.java
@@ -255,6 +255,9 @@ protected boolean checkIfModified(Node pollingNode, XTriggerLog log) throws XTri
if (modified) {
this.buildCause = new URLTriggerCause( true ) ;
this.buildCause.setUrlTrigger(entry.getUrl());
+ for(final URLTriggerContentType contentType: entry.getContentTypes()) {
+ this.buildCause.addTriggerResponse(contentType.getTriggeringResponse());
+ }
return true;
}
}
diff --git a/src/main/java/org/jenkinsci/plugins/urltrigger/URLTriggerCause.java b/src/main/java/org/jenkinsci/plugins/urltrigger/URLTriggerCause.java
index 020d8b3..1428f6b 100644
--- a/src/main/java/org/jenkinsci/plugins/urltrigger/URLTriggerCause.java
+++ b/src/main/java/org/jenkinsci/plugins/urltrigger/URLTriggerCause.java
@@ -1,7 +1,9 @@
package org.jenkinsci.plugins.urltrigger;
import java.io.Serializable;
+import java.util.*;
+import org.apache.commons.lang3.StringUtils;
import org.jenkinsci.lib.xtrigger.XTriggerCause;
import hudson.model.Cause;
@@ -18,6 +20,7 @@ public class URLTriggerCause extends XTriggerCause implements Serializable {
public static final String NAME = "URLTrigger";
public static final String CAUSE = "A change within the response URL invocation";
+ private Map triggerResponse;
private String urlTrigger;
protected URLTriggerCause() {
@@ -29,7 +32,19 @@ protected URLTriggerCause( boolean logEnabled ) {
}
protected URLTriggerCause(String triggerName, String causeFrom, boolean logEnabled) {
- super( triggerName , causeFrom , logEnabled ) ;
+ super(triggerName , causeFrom , logEnabled) ;
+ }
+
+ public void addTriggerResponse(Map response) {
+ if (triggerResponse != null) {
+ triggerResponse.putAll(response);
+ } else {
+ setTriggerResponse(response);
+ }
+ }
+
+ public void setTriggerResponse(Map response) {
+ triggerResponse = response;
}
public void setUrlTrigger(String url) {
@@ -41,6 +56,14 @@ public String getShortDescription() {
return String.format("[%s] - %s of %s", NAME, CAUSE, urlTrigger);
}
+ public String getTriggerResponse() {
+ List result = new ArrayList<>();
+ if (triggerResponse != null) {
+ triggerResponse.forEach((key, value) -> result.add(String.format("\"%s\": %s", key, value)));
+ }
+ return StringUtils.joinWith(",", result);
+ }
+
public String getUrlTrigger() {
return urlTrigger;
}
diff --git a/src/main/java/org/jenkinsci/plugins/urltrigger/content/JSONContentType.java b/src/main/java/org/jenkinsci/plugins/urltrigger/content/JSONContentType.java
index 1c093e8..0760c2a 100644
--- a/src/main/java/org/jenkinsci/plugins/urltrigger/content/JSONContentType.java
+++ b/src/main/java/org/jenkinsci/plugins/urltrigger/content/JSONContentType.java
@@ -25,7 +25,7 @@ public class JSONContentType extends URLTriggerContentType {
private transient Map results = null;
- private List jsonPaths = new ArrayList();
+ private List jsonPaths = new ArrayList<>();
@DataBoundConstructor
public JSONContentType(List jsonPaths) {
@@ -51,7 +51,7 @@ protected void initForContentType(String content, XTriggerLog log) throws XTrigg
}
private Map readJsonPath(String content) throws XTriggerException {
- Map results = new HashMap(jsonPaths.size());
+ Map results = new HashMap<>(jsonPaths.size());
for (JSONContentEntry jsonContentEntry : jsonPaths) {
String jsonPath = jsonContentEntry.getJsonPath();
try {
@@ -66,6 +66,15 @@ private Map readJsonPath(String content) throws XTriggerExceptio
return results;
}
+ @Override
+ public Map getTriggeringResponse() {
+ Map payload = new HashMap<>();
+ if (results != null) {
+ results.forEach((key, value) -> payload.put(key, value.toString()));
+ }
+ return payload;
+ }
+
@Override
protected boolean isTriggeringBuildForContent(String content, XTriggerLog log) throws XTriggerException {
@@ -96,7 +105,6 @@ protected boolean isTriggeringBuildForContent(String content, XTriggerLog log) t
}
for (Map.Entry entry : results.entrySet()) {
-
String jsonPath = entry.getKey();
Object initValue = entry.getValue();
Object newValue = newResults.get(jsonPath);
diff --git a/src/main/java/org/jenkinsci/plugins/urltrigger/content/SimpleContentType.java b/src/main/java/org/jenkinsci/plugins/urltrigger/content/SimpleContentType.java
index deed5f4..ca32a6d 100644
--- a/src/main/java/org/jenkinsci/plugins/urltrigger/content/SimpleContentType.java
+++ b/src/main/java/org/jenkinsci/plugins/urltrigger/content/SimpleContentType.java
@@ -3,11 +3,15 @@
import hudson.Extension;
import hudson.Util;
+import org.apache.commons.lang3.StringUtils;
import org.jenkinsci.Symbol;
import org.jenkinsci.lib.xtrigger.XTriggerException;
import org.jenkinsci.lib.xtrigger.XTriggerLog;
import org.kohsuke.stapler.DataBoundConstructor;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @author Gregory Boissinot
*/
@@ -26,6 +30,13 @@ protected void initForContentType(String content, XTriggerLog log) throws XTrigg
this.md5 = Util.getDigestOf(content);
}
+ @Override
+ public Map getTriggeringResponse() {
+ Map payload = new HashMap<>();
+ payload.put("MD5", md5 != null ? md5 : "");
+ return payload;
+ }
+
@Override
protected boolean isTriggeringBuildForContent(String content, XTriggerLog log) throws XTriggerException {
diff --git a/src/main/java/org/jenkinsci/plugins/urltrigger/content/TEXTContentType.java b/src/main/java/org/jenkinsci/plugins/urltrigger/content/TEXTContentType.java
index d626a43..ed20890 100644
--- a/src/main/java/org/jenkinsci/plugins/urltrigger/content/TEXTContentType.java
+++ b/src/main/java/org/jenkinsci/plugins/urltrigger/content/TEXTContentType.java
@@ -2,6 +2,7 @@
import hudson.Extension;
+import org.apache.commons.lang3.StringUtils;
import org.jenkinsci.Symbol;
import org.jenkinsci.lib.xtrigger.XTriggerException;
import org.jenkinsci.lib.xtrigger.XTriggerLog;
@@ -24,7 +25,7 @@ public class TEXTContentType extends URLTriggerContentType {
private static final long serialVersionUID = 3560292914545953855L;
- private List regExElements = new ArrayList();
+ private List regExElements = new ArrayList<>();
private transient Map> capturedValues;
@@ -45,6 +46,15 @@ protected void initForContentType(String content, XTriggerLog log) throws XTrigg
capturedValues = getMatchedValue(content);
}
+ @Override
+ public Map getTriggeringResponse() {
+ Map payload = new HashMap<>();
+ if (capturedValues != null) {
+ capturedValues.forEach((key, value) -> payload.put(key, StringUtils.joinWith(",", value)));
+ }
+ return payload;
+ }
+
@Override
protected boolean isTriggeringBuildForContent(String content, XTriggerLog log) throws XTriggerException {
@@ -100,7 +110,7 @@ protected boolean isTriggeringBuildForContent(String content, XTriggerLog log) t
private Map> getMatchedValue(String content) throws XTriggerException {
- Map> capturedValues = new HashMap>();
+ Map> capturedValues = new HashMap<>();
StringReader stringReader = null;
BufferedReader bufferedReader = null;
@@ -140,7 +150,7 @@ private Map> getMatchedValue(String content) throws XTrigge
private Map> addMatchedValue(Map> capturedValues, String regEx, String group) {
List values = capturedValues.get(regEx);
if (values == null) {
- values = new ArrayList();
+ values = new ArrayList<>();
values.add(group);
capturedValues.put(regEx, values);
return capturedValues;
diff --git a/src/main/java/org/jenkinsci/plugins/urltrigger/content/URLTriggerContentType.java b/src/main/java/org/jenkinsci/plugins/urltrigger/content/URLTriggerContentType.java
index 4f06373..7cf6c71 100644
--- a/src/main/java/org/jenkinsci/plugins/urltrigger/content/URLTriggerContentType.java
+++ b/src/main/java/org/jenkinsci/plugins/urltrigger/content/URLTriggerContentType.java
@@ -3,13 +3,13 @@
import hudson.ExtensionPoint;
import hudson.model.Describable;
import hudson.model.Descriptor;
-import hudson.model.Hudson;
import jenkins.model.Jenkins;
import org.jenkinsci.lib.xtrigger.XTriggerException;
import org.jenkinsci.lib.xtrigger.XTriggerLog;
import java.io.Serializable;
+import java.util.Map;
/**
* @author Gregory Boissinot
@@ -33,7 +33,6 @@ public void initForContent(String content, XTriggerLog log) throws XTriggerExcep
initForContentType(content, log);
}
-
/**
* These methods have to be overridden in each trigger implementation
*
@@ -47,5 +46,7 @@ public boolean isTriggering(String content, XTriggerLog log) throws XTriggerExce
return isTriggeringBuildForContent(content, log);
}
+ public abstract Map getTriggeringResponse();
+
protected abstract boolean isTriggeringBuildForContent(String content, XTriggerLog log) throws XTriggerException;
}
diff --git a/src/main/java/org/jenkinsci/plugins/urltrigger/content/XMLContentType.java b/src/main/java/org/jenkinsci/plugins/urltrigger/content/XMLContentType.java
index 4099d95..11c5aed 100644
--- a/src/main/java/org/jenkinsci/plugins/urltrigger/content/XMLContentType.java
+++ b/src/main/java/org/jenkinsci/plugins/urltrigger/content/XMLContentType.java
@@ -32,9 +32,7 @@ public class XMLContentType extends URLTriggerContentType {
private transient Map results = null;
- private transient Document xmlDocument;
-
- private List xPaths = new ArrayList();
+ private List xPaths = new ArrayList<>();
@DataBoundConstructor
public XMLContentType(List xPaths) {
@@ -50,7 +48,7 @@ public List getXPaths() {
@Override
protected void initForContentType(String content, XTriggerLog log) throws XTriggerException {
- xmlDocument = initXMLFile(content);
+ Document xmlDocument = initXMLFile(content);
results = readXMLPath(xmlDocument);
}
@@ -63,18 +61,14 @@ private Document initXMLFile(String content) throws XTriggerException {
xmlDocFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true) ;
xmlDocument = xmlDocFactory.newDocumentBuilder().parse(inputSource);
stringReader.close();
- } catch (SAXException e) {
- throw new XTriggerException(e);
- } catch (IOException e) {
- throw new XTriggerException(e);
- } catch (ParserConfigurationException e) {
+ } catch (SAXException | IOException | ParserConfigurationException e) {
throw new XTriggerException(e);
}
return xmlDocument;
}
private Map readXMLPath(Document document) throws XTriggerException {
- Map results = new HashMap(xPaths.size());
+ Map results = new HashMap<>(xPaths.size());
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xPath = xPathFactory.newXPath();
try {
@@ -90,6 +84,15 @@ private Map readXMLPath(Document document) throws XTriggerExcept
return results;
}
+ @Override
+ public Map getTriggeringResponse() {
+ Map payload = new HashMap<>();
+ if (results != null) {
+ results.forEach((key, value) -> payload.put(key, value.toString()));
+ }
+ return payload;
+ }
+
@Override
protected boolean isTriggeringBuildForContent(String content, XTriggerLog log) throws XTriggerException {
diff --git a/src/main/java/org/jenkinsci/plugins/urltrigger/environment/URLTriggerEnvironmentContributor.java b/src/main/java/org/jenkinsci/plugins/urltrigger/environment/URLTriggerEnvironmentContributor.java
index 5c315bb..b94d89a 100644
--- a/src/main/java/org/jenkinsci/plugins/urltrigger/environment/URLTriggerEnvironmentContributor.java
+++ b/src/main/java/org/jenkinsci/plugins/urltrigger/environment/URLTriggerEnvironmentContributor.java
@@ -30,6 +30,7 @@ public void buildEnvironmentFor(@Nonnull Run r, @Nonnull EnvVars envs, @Nonnull
}
if (cause != null) {
envs.override("URL_TRIGGER_CAUSE", cause.getUrlTrigger());
+ envs.override("URL_TRIGGER_RESPONSE", cause.getTriggerResponse());
}
}
}