diff --git a/pom.xml b/pom.xml
index 720a8fb..131165f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,7 @@
findbugs-maven-plugin
Max
+ Low
true
diff --git a/src/main/java/org/jenkinsci/lib/envinject/EnvInjectAction.java b/src/main/java/org/jenkinsci/lib/envinject/EnvInjectAction.java
index 5042557..0da511e 100644
--- a/src/main/java/org/jenkinsci/lib/envinject/EnvInjectAction.java
+++ b/src/main/java/org/jenkinsci/lib/envinject/EnvInjectAction.java
@@ -10,6 +10,7 @@
import org.kohsuke.stapler.StaplerProxy;
import java.io.File;
+import java.io.InvalidObjectException;
import java.io.ObjectStreamException;
import java.util.Collections;
import java.util.HashMap;
@@ -140,7 +141,11 @@ private Object writeReplace() throws ObjectStreamException {
toWrite = Collections.emptyMap();
}
- if (rootDir == null) {
+ if (build == null && rootDir == null) {
+ throw new InvalidObjectException("Cannot save the environment file. Action " + this + " has no associated run instance. Target root dir is unknown");
+ }
+
+ if (rootDir == null) { // New logic
dao.saveEnvironment(build.getRootDir(), Maps.transformEntries(toWrite,
new Maps.EntryTransformer() {
public String transformEntry(String key, String value) {
@@ -148,10 +153,9 @@ public String transformEntry(String key, String value) {
? "********" : value;
}
}));
- return this;
+ } else { // Fall-back to the legacy logic
+ dao.saveEnvironment(rootDir, toWrite);
}
-
- dao.saveEnvironment(rootDir, toWrite);
} catch (Throwable e) {
e.printStackTrace();
}
diff --git a/src/main/java/org/jenkinsci/lib/envinject/EnvInjectLogger.java b/src/main/java/org/jenkinsci/lib/envinject/EnvInjectLogger.java
index ddb199f..6d55220 100644
--- a/src/main/java/org/jenkinsci/lib/envinject/EnvInjectLogger.java
+++ b/src/main/java/org/jenkinsci/lib/envinject/EnvInjectLogger.java
@@ -1,5 +1,6 @@
package org.jenkinsci.lib.envinject;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.model.TaskListener;
import java.io.Serializable;
@@ -8,6 +9,7 @@
/**
* @author Gregory Boissinot
*/
+@SuppressFBWarnings(value = "SE_NO_SERIALVERSIONID", justification = "Legacy code")
public class EnvInjectLogger implements Serializable {
@Nonnull
diff --git a/src/main/java/org/jenkinsci/lib/envinject/service/EnvInjectSavable.java b/src/main/java/org/jenkinsci/lib/envinject/service/EnvInjectSavable.java
index 5d01e31..cdf9114 100644
--- a/src/main/java/org/jenkinsci/lib/envinject/service/EnvInjectSavable.java
+++ b/src/main/java/org/jenkinsci/lib/envinject/service/EnvInjectSavable.java
@@ -11,6 +11,8 @@
import org.kohsuke.accmod.Restricted;
import org.kohsuke.accmod.restrictions.NoExternalUse;
+import javax.annotation.Nonnull;
+
/**
* @author Gregory Boissinot
* @deprecated The actual version of this API class is located in EnvInject API Plugin
@@ -53,7 +55,7 @@ public Map getEnvironment(File envInjectBaseDir) throws EnvInjec
}
@SuppressFBWarnings(value = "DM_DEFAULT_ENCODING", justification = "Deprecated class")
- public void saveEnvironment(File rootDir, Map envMap) throws EnvInjectException {
+ public void saveEnvironment(@Nonnull File rootDir,@Nonnull Map envMap) throws EnvInjectException {
FileWriter fileWriter = null;
try {
File f = new File(rootDir, ENVINJECT_TXT_FILENAME);
diff --git a/src/main/java/org/jenkinsci/lib/envinject/service/EnvVarsResolver.java b/src/main/java/org/jenkinsci/lib/envinject/service/EnvVarsResolver.java
index b842dff..5a2bca7 100644
--- a/src/main/java/org/jenkinsci/lib/envinject/service/EnvVarsResolver.java
+++ b/src/main/java/org/jenkinsci/lib/envinject/service/EnvVarsResolver.java
@@ -1,5 +1,6 @@
package org.jenkinsci.lib.envinject.service;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import hudson.EnvVars;
import hudson.FilePath;
import hudson.Util;
@@ -29,6 +30,7 @@
*/
@Deprecated
@Restricted(NoExternalUse.class)
+@SuppressFBWarnings(value = "SE_NO_SERIALVERSIONID", justification = "Deprecated code")
public class EnvVarsResolver implements Serializable {
public Map getPollingEnvVars(AbstractProject project, /*can be null*/ Node node) throws EnvInjectException {
@@ -204,11 +206,7 @@ private Map gatherEnvVarsNode(@Nonnull AbstractProject project,
}
try {
- Map envVars = new EnvVars(p.act(new MasterToSlaveCallable