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, EnvInjectException>() { - public Map call() throws EnvInjectException { - return EnvVars.masterEnvVars; - } - })); + Map envVars = new EnvVars(p.act(new SystemEnvVarsGetter())); envVars.put("NODE_NAME", node.getNodeName()); envVars.put("NODE_LABELS", Util.join(node.getAssignedLabels(), " ")); @@ -226,5 +224,11 @@ public Map call() throws EnvInjectException { } } + private static final class SystemEnvVarsGetter extends MasterToSlaveCallable, EnvInjectException> { + public Map call() throws EnvInjectException { + return EnvVars.masterEnvVars; + } + } + }