Skip to content

Commit

Permalink
Keeping default values in parameterized jobs #45
Browse files Browse the repository at this point in the history
  • Loading branch information
tomasbjerre committed Mar 6, 2018
1 parent d5e28bc commit 602ea1f
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 18 deletions.
76 changes: 59 additions & 17 deletions src/main/java/org/jenkinsci/plugins/gwt/GenericTrigger.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,17 @@
import static com.google.common.collect.Lists.newArrayList;
import static java.util.logging.Level.INFO;
import static java.util.regex.Pattern.compile;
import hudson.Extension;
import hudson.model.Item;
import hudson.model.ParameterValue;
import hudson.model.CauseAction;
import hudson.model.Job;
import hudson.model.ParameterDefinition;
import hudson.model.ParametersAction;
import hudson.model.ParametersDefinitionProperty;
import hudson.model.StringParameterValue;
import hudson.triggers.Trigger;
import hudson.triggers.TriggerDescriptor;

import java.util.ArrayList;
import java.util.Collections;
Expand All @@ -14,23 +25,14 @@
import java.util.Set;
import java.util.logging.Logger;

import jenkins.model.ParameterizedJobMixIn;

import org.jenkinsci.plugins.gwt.resolvers.VariablesResolver;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.DataBoundSetter;

import com.google.common.annotations.VisibleForTesting;

import hudson.Extension;
import hudson.model.CauseAction;
import hudson.model.Item;
import hudson.model.Job;
import hudson.model.ParameterValue;
import hudson.model.ParametersAction;
import hudson.model.StringParameterValue;
import hudson.triggers.Trigger;
import hudson.triggers.TriggerDescriptor;
import jenkins.model.ParameterizedJobMixIn;

public class GenericTrigger extends Trigger<Job<?, ?>> {

private static final Logger LOGGER = Logger.getLogger(GenericTrigger.class.getName());
Expand Down Expand Up @@ -113,7 +115,7 @@ public GenericTriggerResults trigger(
new GenericCause(
postContent, resolvedVariables, printContributedVariables, printPostContent);

final ParametersAction parameters = createParameters(resolvedVariables);
final ParametersAction parameters = createParameters(job, resolvedVariables);
item =
retrieveScheduleJob(job) //
.scheduleBuild2(job, 0, new CauseAction(cause), parameters);
Expand All @@ -132,13 +134,53 @@ public GenericTriggerResults trigger(
};
}

private ParametersAction createParameters(final Map<String, String> resolvedVariables) {
final List<ParameterValue> parameterList = newArrayList();
private ParametersAction createParameters(
final Job<?, ?> job, final Map<String, String> resolvedVariables) {
final List<StringParameterValue> parameterList = newArrayList();
addAllParametersFromParameterizedJob(job, parameterList);
addAllResolvedVariables(resolvedVariables, parameterList);
return new ParametersAction(toParameterValueList(parameterList));
}

private List<ParameterValue> toParameterValueList(
final List<StringParameterValue> parameterList) {
final List<ParameterValue> t = new ArrayList<>();
for (final StringParameterValue f : parameterList) {
t.add(f);
}
return t;
}

private void addAllResolvedVariables(
final Map<String, String> resolvedVariables, final List<StringParameterValue> parameterList) {
for (final Entry<String, String> entry : resolvedVariables.entrySet()) {
final ParameterValue parameter = new StringParameterValue(entry.getKey(), entry.getValue());
parameterList.add(parameter);
if (!isNullOrEmpty(entry.getValue())) {
final StringParameterValue parameter =
new StringParameterValue(entry.getKey(), entry.getValue());
parameterList.add(parameter);
}
}
}

/** To keep any default values set there. */
private void addAllParametersFromParameterizedJob(
final Job<?, ?> job, final List<StringParameterValue> parameterList) {
final ParametersDefinitionProperty parametersDefinitionProperty =
job.getProperty(ParametersDefinitionProperty.class);
if (parametersDefinitionProperty != null) {
for (final ParameterDefinition parameterDefinition :
parametersDefinitionProperty.getParameterDefinitions()) {
final String param = parameterDefinition.getName();
final ParameterValue defaultParameterValue = parameterDefinition.getDefaultParameterValue();
if (defaultParameterValue != null) {
final String value = defaultParameterValue.getValue().toString();
if (!isNullOrEmpty(value)) {
final StringParameterValue parameter = new StringParameterValue(param, value);
parameterList.add(parameter);
}
}
}
}
return new ParametersAction(parameterList);
}

@VisibleForTesting
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ public void buildEnvironmentFor(
if (cause != null) {
final boolean shouldLog =
(cause.isPrintContributedVariables() || cause.isPrintPostContent()) && notLogged(r);
listener.getLogger().println(CONTRIBUTING_VARIABLES);
if (shouldLog && cause.isPrintPostContent()) {
listener.getLogger().println(CONTRIBUTING_VARIABLES);
listener.getLogger().println(" Received:\n\n" + cause.getPostContent() + "\n\n");
}
final Map<String, String> resolvedVariables = cause.getResolvedVariables();
Expand Down

0 comments on commit 602ea1f

Please sign in to comment.