Title: [40584] trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing: version slicing for non-Maven projects
- Revision
- 40584
- Author
- jacob_robertson
- Date
- 2012-05-21 15:15:21 -0400 (Mon, 21 May 2012)
Log Message
version slicing for non-Maven projects
Modified Paths
Diff
Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/AbstractBuildCommandSlicer.java (40583 => 40584)
--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/AbstractBuildCommandSlicer.java 2012-05-21 14:23:21 UTC (rev 40583)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/AbstractBuildCommandSlicer.java 2012-05-21 19:15:21 UTC (rev 40584)
@@ -72,7 +72,7 @@
}
@SuppressWarnings("unchecked")
- private DescribableList<Builder,Descriptor<Builder>> getBuildersList(AbstractProject<?, ?> item) {
+ public static DescribableList<Builder,Descriptor<Builder>> getBuildersList(AbstractProject<?, ?> item) {
if (item instanceof Project) {
return ((Project) item).getBuildersList();
} else if (item instanceof MatrixProject) {
@@ -144,7 +144,7 @@
* If we do other builders, publishers, etc - this should be the pattern to use.
* @throws IOException
*/
- private boolean replaceBuilder(DescribableList<Builder,Descriptor<Builder>> builders, Builder oldBuilder, Builder newBuilder) {
+ public static boolean replaceBuilder(DescribableList<Builder,Descriptor<Builder>> builders, Builder oldBuilder, Builder newBuilder) {
List<Builder> newList = new ArrayList<Builder>(builders.toList());
for (int i = 0; i < newList.size(); i++) {
Builder b = newList.get(i);
Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/maven/MavenVersionSlicer.java (40583 => 40584)
--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/maven/MavenVersionSlicer.java 2012-05-21 14:23:21 UTC (rev 40583)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/maven/MavenVersionSlicer.java 2012-05-21 19:15:21 UTC (rev 40584)
@@ -2,35 +2,45 @@
import hudson.Extension;
import hudson.maven.MavenModuleSet;
+import hudson.model.AbstractProject;
+import hudson.model.Descriptor;
import hudson.model.Hudson;
+import hudson.tasks.Builder;
+import hudson.tasks.Maven;
import hudson.tasks.Maven.MavenInstallation;
+import hudson.util.DescribableList;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import configurationslicing.UnorderedStringSlicer;
+import configurationslicing.executeshell.AbstractBuildCommandSlicer.AbstractBuildCommandSliceSpec;
+@SuppressWarnings("unchecked")
@Extension
-public class MavenVersionSlicer extends UnorderedStringSlicer<MavenModuleSet> {
+public class MavenVersionSlicer extends UnorderedStringSlicer<AbstractProject> {
public MavenVersionSlicer() {
super(new MavenVersionSlicerSpec());
}
public static class MavenVersionSlicerSpec extends
- UnorderedStringSlicerSpec<MavenModuleSet> {
+ UnorderedStringSlicerSpec<AbstractProject> {
private static final String DEFAULT = "(Default)";
+ private static final String MULTIPLE = "(MULTIPLE)";
public String getDefaultValueString() {
return DEFAULT;
}
public String getName() {
- return "Maven Version (Maven Projects)";
+ return "Maven Version";
}
- public String getName(MavenModuleSet item) {
+ public String getName(AbstractProject item) {
return item.getName();
}
@@ -38,7 +48,36 @@
return "mavenversion";
}
-
+ public List<String> getValues(AbstractProject item) {
+ if (item instanceof MavenModuleSet) {
+ return getValues((MavenModuleSet) item);
+ } else {
+ List<String> ret = new ArrayList<String>();
+ List<Maven> builders = getBuilders(item);
+ if (builders.isEmpty()) {
+ return ret;
+ }
+ String last = null;
+ Set<String> all = new HashSet<String>();
+ for (Maven builder: builders) {
+ last = builder.mavenName;
+ all.add(last);
+ }
+ if (all.size() > 1) {
+ ret.add(MULTIPLE);
+ } else if (last != null) {
+ ret.add(last);
+ } else {
+ ret.add(DEFAULT);
+ }
+ return ret;
+ }
+ }
+ private List<Maven> getBuilders(AbstractProject item) {
+ DescribableList<Builder,Descriptor<Builder>> buildersList = AbstractBuildCommandSliceSpec.getBuildersList(item);
+ List<Maven> builders = buildersList.getAll(Maven.class);
+ return builders;
+ }
public List<String> getValues(MavenModuleSet item) {
List<String> ret = new ArrayList<String>();
MavenInstallation itemMaven = item.getMaven();
@@ -55,37 +94,64 @@
return ret;
}
- @SuppressWarnings("unchecked")
- public List<MavenModuleSet> getWorkDomain() {
- return (List) Hudson.getInstance().getItems(MavenModuleSet.class);
+ public List<AbstractProject> getWorkDomain() {
+ List<AbstractProject> list = new ArrayList<AbstractProject>();
+ list.addAll(Hudson.getInstance().getItems(AbstractProject.class));
+ list.addAll(Hudson.getInstance().getItems(MavenModuleSet.class));
+ return list;
}
- public boolean setValues(MavenModuleSet item, List<String> set) {
+ public boolean setValues(AbstractProject item, List<String> set) {
+ String mavenVersion = null;
+ if (!set.isEmpty()) {
+ mavenVersion = set.iterator().next();
+ }
+ // do not attempt to update the multiple versions at all
+ if (MULTIPLE.equals(mavenVersion)) {
+ return true;
+ }
+ if (item instanceof MavenModuleSet) {
+ return setValues((MavenModuleSet) item, mavenVersion);
+ } else {
+ List<Maven> builders = getBuilders(item);
+ DescribableList<Builder,Descriptor<Builder>> buildersList = AbstractBuildCommandSliceSpec.getBuildersList(item);
+ for (Maven builder: builders) {
+ String oldName = builder.mavenName;
+ if (oldName == null) {
+ oldName = DEFAULT;
+ }
+ if (!oldName.equals(mavenVersion)) {
+ Maven newMaven = new Maven(builder.targets, mavenVersion, builder.pom, builder.properties, builder.jvmOptions, builder.usePrivateRepository);
+ AbstractBuildCommandSliceSpec.replaceBuilder(buildersList, builder, newMaven);
+ }
+ }
+ return true;
+ }
+ }
+ public boolean setValues(MavenModuleSet item, String mavenVersion) {
MavenInstallation old = item.getMaven();
String oldName = null;
if (old != null) {
oldName = old.getName();
}
- for (String maven : set) {
- if (maven.trim().length() == 0 || DEFAULT.equals(maven)) {
- maven = null;
- }
- boolean save = false;
- if (maven == null) {
- if (oldName != null) {
- save = true;
- }
- } else if (!maven.equals(oldName)) {
+ if (mavenVersion.trim().length() == 0 || DEFAULT.equals(mavenVersion)) {
+ mavenVersion = null;
+ }
+ boolean save = false;
+ if (mavenVersion == null) {
+ if (oldName != null) {
save = true;
}
- if (save) {
- item.setMaven(maven);
- try {
- item.save();
- return true;
- } catch (IOException e) {
- return false;
- }
+ } else if (!mavenVersion.equals(oldName)) {
+ save = true;
+ }
+ if (save) {
+ item.setMaven(mavenVersion);
+ try {
+ item.save();
+ return true;
+ } catch (IOException e) {
+ return false;
}
}
return false;