Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlice.java (40586 => 40587)
--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlice.java 2012-05-22 02:22:51 UTC (rev 40586)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlice.java 2012-05-23 00:12:25 UTC (rev 40587)
@@ -39,15 +39,13 @@
itemName = itemName.trim();
if (itemName.length() > 0) {
int index = 0;
- if (spec.isMultipleItemsAllowed()) {
- int bracket = itemName.indexOf('[');
- if (bracket > 0) {
- String indexString = itemName.substring(bracket + 1, itemName.length() - 1);
- itemName = itemName.substring(0, bracket);
- I item = getItem(itemName, workDomain);
- index = spec.getValueIndex(item, indexString);
- }
- }
+ int bracket = itemName.indexOf('[');
+ if (bracket > 0) {
+ String indexString = itemName.substring(bracket + 1, itemName.length() - 1);
+ itemName = itemName.substring(0, bracket);
+ I item = getItem(itemName, workDomain);
+ index = spec.getValueIndex(item, indexString);
+ }
addLine(nameToValues, itemName, value.trim(), index);
}
}
Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlicer.java (40586 => 40587)
--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlicer.java 2012-05-22 02:22:51 UTC (rev 40586)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/UnorderedStringSlicer.java 2012-05-23 00:12:25 UTC (rev 40587)
@@ -24,7 +24,7 @@
/**
* Allows you to use "MyJob[0]" to indicate separate values
*/
- public boolean isMultipleItemsAllowed() {
+ public boolean isIndexUsed(int count) {
return false;
}
public String getValueIndex(I item, int index) {
@@ -50,7 +50,7 @@
public UnorderedStringSlice<I> accumulate(UnorderedStringSlice<I> t, I item) {
String name = spec.getName(item);
List<String> values = spec.getValues(item);
- if (values.size() > 1 && spec.isMultipleItemsAllowed()) {
+ if (spec.isIndexUsed(values.size())) {
for (int i = 0; i < values.size(); i++) {
List<String> _oneValueList_ = new ArrayList<String>();
oneValueList.add(values.get(i));
Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/AbstractBuildCommandSlicer.java (40586 => 40587)
--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/AbstractBuildCommandSlicer.java 2012-05-22 02:22:51 UTC (rev 40586)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/AbstractBuildCommandSlicer.java 2012-05-23 00:12:25 UTC (rev 40587)
@@ -36,8 +36,8 @@
}
@Override
- public boolean isMultipleItemsAllowed() {
- return true;
+ public boolean isIndexUsed(int count) {
+ return count > 1;
}
public List<String> getValues(AbstractProject<?, ?> item) {
Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/ParametersSlicer.java (40586 => 40587)
--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/ParametersSlicer.java 2012-05-22 02:22:51 UTC (rev 40586)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/parameters/ParametersSlicer.java 2012-05-23 00:12:25 UTC (rev 40587)
@@ -4,6 +4,7 @@
import hudson.model.ParameterValue;
import hudson.model.BooleanParameterDefinition;
import hudson.model.BooleanParameterValue;
+import hudson.model.ChoiceParameterDefinition;
import hudson.model.Hudson;
import hudson.model.Job;
import hudson.model.ParameterDefinition;
@@ -49,9 +50,8 @@
public String getName(Job item) {
return item.getName();
}
-
@Override
- public boolean isMultipleItemsAllowed() {
+ public boolean isIndexUsed(int count) {
return true;
}
@Override
@@ -82,15 +82,15 @@
public boolean setValues(Job item, List<String> list) {
ParametersDefinitionProperty prop = (ParametersDefinitionProperty) item.getProperty(ParametersDefinitionProperty.class);
List<ParameterDefinition> defs = prop.getParameterDefinitions();
- List<ParameterItem> pitems = getParameterItems(item);
if (prop != null) {
+ List<ParameterItem> pitems = getParameterItems(item);
boolean changes = false;
for (int i = 0; i < list.size(); i++) {
ParameterItem pitem = pitems.get(i);
String newValue = list.get(i);
String oldValue = pitem.value;
if (!newValue.equals(oldValue)) {
- replace(pitem, defs);
+ replace(pitem, newValue, defs);
changes = true;
}
}
@@ -104,22 +104,22 @@
}
return true;
}
- private void replace(ParameterItem item, List<ParameterDefinition> defs) {
+ private void replace(ParameterItem item, String newValue, List<ParameterDefinition> defs) {
for (int i = 0; i < defs.size(); i++) {
ParameterDefinition def = defs.get(i);
if (def.getName().equals(item.name)) {
- ParameterDefinition newDef = newParameterDefinition(item, def);
+ ParameterDefinition newDef = newParameterDefinition(newValue, def);
defs.set(i, newDef);
}
}
}
- private ParameterDefinition newParameterDefinition(ParameterItem item, ParameterDefinition old) {
+ private ParameterDefinition newParameterDefinition(String newValue, ParameterDefinition old) {
if (old instanceof StringParameterDefinition) {
- return new StringParameterDefinition(item.name, item.value, old.getDescription());
+ return new StringParameterDefinition(old.getName(), newValue, old.getDescription());
} else if (old instanceof BooleanParameterDefinition) {
- return new BooleanParameterDefinition(item.name, Boolean.parseBoolean(item.value), old.getDescription());
-// } else if (old instanceof ChoiceParameterDefinition) {
-// return new ChoiceParameterDefinition(item.name, choices, old.getDescription());
+ return new BooleanParameterDefinition(old.getName(), Boolean.parseBoolean(newValue), old.getDescription());
+ } else if (old instanceof ChoiceParameterDefinition) {
+ return new ChoiceParameterDefinition(old.getName(), newValue, old.getDescription());
}
return null;
}
@@ -131,7 +131,7 @@
for (ParameterDefinition def: prop.getParameterDefinitions()) {
if (isSliceableProperty(def)) {
ParameterValue value = def.getDefaultParameterValue();
- String stringValue = toStringValue(value);
+ String stringValue = toStringValue(value, def);
ParameterItem pitem = new ParameterItem();
pitem.index = count++;
pitem.value = stringValue;
@@ -152,9 +152,20 @@
return jobs;
}
- public String toStringValue(ParameterValue value) {
+ public String toStringValue(ParameterValue value, ParameterDefinition def) {
if (value instanceof BooleanParameterValue) {
return String.valueOf(((BooleanParameterValue) value).value);
+ } else if (def instanceof ChoiceParameterDefinition) {
+ ChoiceParameterDefinition cdef = (ChoiceParameterDefinition) def;
+ List<String> choices = cdef.getChoices();
+ StringBuilder buf = new StringBuilder();
+ for (String choice: choices) {
+ if (buf.length() > 0) {
+ buf.append("\n");
+ }
+ buf.append(choice);
+ }
+ return buf.toString();
} else if (value instanceof StringParameterValue) {
return ((StringParameterValue) value).value;
} else {
@@ -165,7 +176,7 @@
public boolean isSliceableProperty(ParameterDefinition def) {
return (def instanceof BooleanParameterDefinition
|| def instanceof StringParameterDefinition
-// || def instanceof ChoiceParameterDefinition
+ || def instanceof ChoiceParameterDefinition
);
}