Skip to content

Commit

Permalink
[JENKINS-47115] - Add trim option to String Parameter (#3106)
Browse files Browse the repository at this point in the history
* [JENKINS-47115] - Add trim option to String Parameter

* Add help information

* Address comments

* Address comments

* Address comments

* Address comments
  • Loading branch information
ksenia-nenasheva authored and oleg-nenashev committed Nov 12, 2017
1 parent 9735043 commit 95db56e
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 9 deletions.
56 changes: 50 additions & 6 deletions core/src/main/java/hudson/model/StringParameterDefinition.java
Expand Up @@ -24,8 +24,12 @@
package hudson.model;

import hudson.Extension;
import hudson.Util;
import javax.annotation.Nonnull;
import net.sf.json.JSONObject;
import org.jenkinsci.Symbol;
import org.kohsuke.accmod.Restricted;
import org.kohsuke.accmod.restrictions.DoNotUse;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;

Expand All @@ -35,15 +39,22 @@
public class StringParameterDefinition extends SimpleParameterDefinition {

private String defaultValue;
private final boolean trim;

@DataBoundConstructor
public StringParameterDefinition(String name, String defaultValue, String description) {
public StringParameterDefinition(String name, String defaultValue, String description, boolean trim) {
super(name, description);
this.defaultValue = defaultValue;
this.trim = trim;
}

@Nonnull
public StringParameterDefinition(String name, String defaultValue, String description) {
this(name, defaultValue, description, false);
}

public StringParameterDefinition(String name, String defaultValue) {
this(name, defaultValue, null);
this(name, defaultValue, null, false);
}

@Override
Expand All @@ -60,14 +71,40 @@ public String getDefaultValue() {
return defaultValue;
}

/**
*
* @return original or trimmed defaultValue (depending on trim)
*/
@Restricted(DoNotUse.class) // Jelly
public String getDefaultValue4Build() {
if (isTrim()) {
return Util.fixNull(defaultValue).trim();
}
return defaultValue;
}

public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}

/**
*
* @return trim - {@code true}, if trim options has been selected, else return {@code false}.
* Trimming will happen when creating {@link StringParameterValue}s,
* the value in the config will not be changed.
* @since TODO
*/
public boolean isTrim() {
return trim;
}

@Override
public StringParameterValue getDefaultParameterValue() {
StringParameterValue v = new StringParameterValue(getName(), defaultValue, getDescription());
return v;
StringParameterValue value = new StringParameterValue(getName(), defaultValue, getDescription());
if (isTrim()) {
value.doTrim();
}
return value;
}

@Extension @Symbol({"string","stringParam"})
Expand All @@ -86,11 +123,18 @@ public String getHelpFile() {
@Override
public ParameterValue createValue(StaplerRequest req, JSONObject jo) {
StringParameterValue value = req.bindJSON(StringParameterValue.class, jo);
if (isTrim() && value!=null) {
value.doTrim();
}
value.setDescription(getDescription());
return value;
}

public ParameterValue createValue(String value) {
return new StringParameterValue(getName(), value, getDescription());
public ParameterValue createValue(String str) {
StringParameterValue value = new StringParameterValue(getName(), str, getDescription());
if (isTrim() && value!=null) {
value.doTrim();
}
return value;
}
}
15 changes: 14 additions & 1 deletion core/src/main/java/hudson/model/StringParameterValue.java
Expand Up @@ -30,13 +30,16 @@
import java.util.Locale;

import hudson.util.VariableResolver;
import org.kohsuke.accmod.Restricted;
import org.kohsuke.accmod.restrictions.NoExternalUse;

/**
* {@link ParameterValue} created from {@link StringParameterDefinition}.
*/
public class StringParameterValue extends ParameterValue {
@Exported(visibility=4)
public final String value;
@Restricted(NoExternalUse.class)
public String value;

@DataBoundConstructor
public StringParameterValue(String name, String value) {
Expand Down Expand Up @@ -70,6 +73,16 @@ public String resolve(String name) {
public Object getValue() {
return value;
}

/**
* Trimming for value
* @since TODO
*/
public void doTrim() {
if (value != null) {
value = value.trim();
}
}

@Override
public int hashCode() {
Expand Down
Expand Up @@ -35,4 +35,7 @@ THE SOFTWARE.
<f:entry title="${%Description}" help="/help/parameter/description.html">
<f:textarea name="parameter.description" value="${instance.description}" codemirror-mode="${app.markupFormatter.codeMirrorMode}" codemirror-config="${app.markupFormatter.codeMirrorConfig}" previewEndpoint="/markupFormatter/previewDescription" />
</f:entry>
</j:jelly>
<f:entry field="trim" help="/help/parameter/trim.html">
<f:checkbox default="false" title="${%Trim the string}"/>
</f:entry>
</j:jelly>
Expand Up @@ -30,7 +30,7 @@ THE SOFTWARE.
<f:entry title="${h.escape(it.name)}" description="${it.formattedDescription}">
<div name="parameter">
<input type="hidden" name="name" value="${it.name}" />
<f:textbox name="value" value="${it.defaultValue}" />
<f:textbox name="value" value="${it.defaultValue4Build}" />
</div>
</f:entry>
</j:jelly>
3 changes: 3 additions & 0 deletions war/src/main/webapp/help/parameter/trim.html
@@ -0,0 +1,3 @@
<div>
Strip whitespace from the beginning and end of the string.
</div>

0 comments on commit 95db56e

Please sign in to comment.