Skip to content

Commit

Permalink
[JENKINS-48944] - Prevent serialization of PrintStreams to XStream (J…
Browse files Browse the repository at this point in the history
…EP-200)
  • Loading branch information
oleg-nenashev committed Jan 15, 2018
1 parent 5a8b6b8 commit 253b15b
Showing 1 changed file with 24 additions and 7 deletions.
31 changes: 24 additions & 7 deletions src/main/java/org/jenkinsci/plugins/EnvironmentVarSetter.java
Expand Up @@ -9,15 +9,21 @@
import java.io.PrintStream;
import java.util.concurrent.ConcurrentHashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* Created by Leo on 4/20/2016.
* Helper to work with environment variables.
*/
public class EnvironmentVarSetter implements EnvironmentContributingAction {
private PrintStream log;

@CheckForNull
private transient PrintStream log;
private final Map<String, String> envVars = new ConcurrentHashMap<String, String>();

private static final Logger LOGGER = Logger.getLogger(EnvironmentVarSetter.class.getName());

public static final String buildDisplayNameVar = "BUILD_DISPLAY_NAME";

public EnvironmentVarSetter(@CheckForNull String key, @CheckForNull String value, @CheckForNull PrintStream logger) {
Expand Down Expand Up @@ -45,28 +51,39 @@ public void setVar(@CheckForNull String key, @CheckForNull String value) {
}

if (envVars.containsKey(key)) {
log.println(
"Variable with name '" + key + "' already exists, current value: '" + envVars.get(key) +
"', new value: '" + value + "'");
log("Variable with name '%s' already exists, current value: '%s', new value: '%s'",
key, envVars.get(key), value);
}
else {
log.println("Create new variable " + key + "=" + value);
log("Create new variable %s=%s", key, value);
}

envVars.put(key, value);
}

public String getVar(String key) {
if (envVars.containsKey(key)) {
log.println("Get var: " + key + "=" + envVars.get(key));
log("Get var: %s=%s", key, envVars.get(key));
return envVars.get(key);
}
else {
log.println("Var '" + key + "' doesn't exist");
log("Var '%s' doesn't exist", key);
return "";
}
}

private void log(String format, Object ... args) {
if (log == null && !LOGGER.isLoggable(Level.FINE)) { // not loggable
return;
}

String message = String.format(format, args);
LOGGER.fine(message);
if (log != null) {
log.println(message);
}
}

@Override
public void buildEnvVars(AbstractBuild<?, ?> abstractBuild, EnvVars envVars) {
envVars.putAll(this.envVars);
Expand Down

0 comments on commit 253b15b

Please sign in to comment.