Title: [40580] trunk/hudson/plugins/configurationslicing: added better maven support

Diff

Modified: trunk/hudson/plugins/configurationslicing/pom.xml (40579 => 40580)


--- trunk/hudson/plugins/configurationslicing/pom.xml	2012-05-19 00:36:46 UTC (rev 40579)
+++ trunk/hudson/plugins/configurationslicing/pom.xml	2012-05-20 19:34:44 UTC (rev 40580)
@@ -1,4 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
 		<groupId>org.jvnet.hudson.plugins</groupId>
@@ -29,6 +30,18 @@
 			<optional>true</optional>
 		</dependency>
 		<dependency>
+			<groupId>org.jenkins-ci.plugins</groupId>
+			<artifactId>ant</artifactId>
+			<version>1.1</version>
+			<optional>true</optional>
+		</dependency>
+		<dependency>
+			<groupId>org.jenkins-ci.plugins</groupId>
+			<artifactId>groovy</artifactId>
+			<version>1.9</version>
+			<optional>true</optional>
+		</dependency>
+		<dependency>
 			<groupId>org.jvnet.hudson.plugins</groupId>
 			<artifactId>email-ext</artifactId>
 			<version>2.7</version>
@@ -42,6 +55,12 @@
 			<scope>compile</scope>
 			<optional>true</optional>
 		</dependency>
+		<dependency>
+			<groupId>com.zenika.jenkins-ci.plugins</groupId>
+			<artifactId>gradle</artifactId>
+			<version>1.12</version>
+			<optional>true</optional>
+		</dependency>
 	</dependencies>
 
 	<scm>

Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/AbstractBuildCommandSlicer.java (40579 => 40580)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/AbstractBuildCommandSlicer.java	2012-05-19 00:36:46 UTC (rev 40579)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/AbstractBuildCommandSlicer.java	2012-05-20 19:34:44 UTC (rev 40580)
@@ -56,6 +56,8 @@
         }
         public abstract List<B> getConcreteBuildersList(DescribableList<Builder,Descriptor<Builder>> buildersList);
         public abstract String getCommand(B builder);
+        public abstract B[] createBuilderArray(int len);
+        public abstract B createBuilder(String command, List<B> existingBuilders, B oldBuilder);
 
         @SuppressWarnings("unchecked")
         public List<AbstractProject<?, ?>> getWorkDomain() {
@@ -79,8 +81,6 @@
         		return null;
         	}
         }
-        public abstract B[] createBuilderArray(int len);
-        public abstract B createBuilder(String command);
         
         public boolean setValues(AbstractProject<?, ?> item, List<String> list) {
             DescribableList<Builder,Descriptor<Builder>> buildersList = getBuildersList(item);
@@ -100,7 +100,7 @@
 	            	if (oldBuilders[i] != null && getCommand(oldBuilders[i]).equals(command)) {
 	            		newBuilders[i] = oldBuilders[i];
 	            	} else {
-	            		newBuilders[i] = createBuilder(command);
+	            		newBuilders[i] = createBuilder(command, builders, oldBuilders[i]);
 	            	}
 	            }
             }

Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/ExecuteShellSlicer.java (40579 => 40580)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/ExecuteShellSlicer.java	2012-05-19 00:36:46 UTC (rev 40579)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/ExecuteShellSlicer.java	2012-05-20 19:34:44 UTC (rev 40580)
@@ -30,7 +30,7 @@
             return "executeshellslicestring";
         }
         @Override
-        public Shell createBuilder(String command) {
+        public Shell createBuilder(String command, List<Shell> existingBuilders, Shell oldBuilder) {
         	return new Shell(command);
         }
         @Override

Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/ExecuteWindowsBatchSlicer.java (40579 => 40580)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/ExecuteWindowsBatchSlicer.java	2012-05-19 00:36:46 UTC (rev 40579)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/ExecuteWindowsBatchSlicer.java	2012-05-20 19:34:44 UTC (rev 40580)
@@ -30,7 +30,7 @@
             return "windowsbatchslice";
         }
         @Override
-        public BatchFile createBuilder(String command) {
+        public BatchFile createBuilder(String command, List<BatchFile> existingBuilders, BatchFile oldBuilder) {
         	return new BatchFile(command);
         }
         @Override

Added: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/MavenTargetsSlicer.java (0 => 40580)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/MavenTargetsSlicer.java	                        (rev 0)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/MavenTargetsSlicer.java	2012-05-20 19:34:44 UTC (rev 40580)
@@ -0,0 +1,67 @@
+package configurationslicing.executeshell;
+
+import hudson.Extension;
+import hudson.model.Descriptor;
+import hudson.tasks.Builder;
+import hudson.tasks.Maven;
+import hudson.tasks.Maven.MavenInstallation;
+import hudson.util.DescribableList;
+
+import java.util.List;
+
+/**
+ * @author Jacob Robertson
+ */
+@Extension
+public class MavenTargetsSlicer extends AbstractBuildCommandSlicer<Maven> {
+
+    public MavenTargetsSlicer() {
+        super(new MavenTargetsSliceSpec());
+    }
+
+    public static class MavenTargetsSliceSpec extends AbstractBuildCommandSliceSpec<Maven> {
+
+    	private static final String DEFAULT_MAVEN = "(Default)";
+    	
+        public String getName() {
+            return "Maven top-level targets";
+        }
+
+        public String getUrl() {
+            return "maventopleveltargets";
+        }
+        @Override
+        public Maven createBuilder(String command, List<Maven> existingBuilders, Maven oldBuilder) {
+        	if (oldBuilder != null) {
+        		String mavenName = oldBuilder.getMaven().getName();
+            	return new Maven(command, mavenName, oldBuilder.pom, oldBuilder.properties, oldBuilder.jvmOptions, oldBuilder.usePrivateRepository);
+        	} else {
+        		// if the job already has another maven command, use the right version of maven
+            	String mavenName = DEFAULT_MAVEN;
+	        	for (Maven maven: existingBuilders) {
+	        		MavenInstallation install = maven.getMaven();
+	        		if (install != null) {
+	        			mavenName = install.getName();
+	        			break;
+	        		}
+	        	}
+	        	return new Maven(command, mavenName);
+        	}
+        }
+        @Override
+        public Maven[] createBuilderArray(int len) {
+        	return new Maven[len];
+        }
+        @Override
+        public String getCommand(Maven builder) {
+        	return builder.getTargets();
+        }
+        @Override
+        public List<Maven> getConcreteBuildersList(
+        		DescribableList<Builder, Descriptor<Builder>> buildersList) {
+            return buildersList.getAll(Maven.class);
+        }
+
+    }
+}
+
Property changes on: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/executeshell/MavenTargetsSlicer.java
___________________________________________________________________

Added: svn:mime-type

Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/maven/MavenGoals.java (40579 => 40580)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/maven/MavenGoals.java	2012-05-19 00:36:46 UTC (rev 40579)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/maven/MavenGoals.java	2012-05-20 19:34:44 UTC (rev 40580)
@@ -25,7 +25,7 @@
         }
 
         public String getName() {
-            return "Goals and Options per Maven project";
+            return "Maven Goals and Options (Maven project)";
         }
 
         public String getName(MavenModuleSet item) {

Added: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/maven/MavenVersionSlicer.java (0 => 40580)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/maven/MavenVersionSlicer.java	                        (rev 0)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/maven/MavenVersionSlicer.java	2012-05-20 19:34:44 UTC (rev 40580)
@@ -0,0 +1,96 @@
+package configurationslicing.maven;
+
+import hudson.Extension;
+import hudson.maven.MavenModuleSet;
+import hudson.model.Hudson;
+import hudson.tasks.Maven.MavenInstallation;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import configurationslicing.UnorderedStringSlicer;
+
+@Extension
+public class MavenVersionSlicer extends UnorderedStringSlicer<MavenModuleSet> {
+
+	public MavenVersionSlicer() {
+		super(new MavenVersionSlicerSpec());
+	}
+
+	public static class MavenVersionSlicerSpec extends
+			UnorderedStringSlicerSpec<MavenModuleSet> {
+		private static final String DEFAULT = "(Default)";
+
+		public String getDefaultValueString() {
+			return DEFAULT;
+		}
+
+		public String getName() {
+			return "Maven Version (Maven Projects)";
+		}
+
+		public String getName(MavenModuleSet item) {
+			return item.getName();
+		}
+
+		public String getUrl() {
+			return "mavenversion";
+		}
+
+		
+		public List<String> getValues(MavenModuleSet item) {
+			List<String> ret = new ArrayList<String>();
+			MavenInstallation itemMaven = item.getMaven();
+			if (itemMaven != null) {
+				String itemMavenName = itemMaven.getName();
+				for (MavenInstallation maven : MavenModuleSet.DESCRIPTOR
+						.getMavenDescriptor().getInstallations()) {
+					String mavenName = maven.getName();
+					if (itemMavenName.equals(mavenName)) {
+						ret.add(itemMavenName);
+					}
+				}
+			}
+			return ret;
+		}
+
+		@SuppressWarnings("unchecked")
+		public List<MavenModuleSet> getWorkDomain() {
+			return (List) Hudson.getInstance().getItems(MavenModuleSet.class);
+		}
+
+		public boolean setValues(MavenModuleSet item, List<String> set) {
+			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)) {
+					save = true;
+				}
+				if (save) {
+					item.setMaven(maven);
+					try {
+						item.save();
+						return true;
+					} catch (IOException e) {
+						return false;
+					}
+				}
+			}
+			return false;
+		}
+
+	}
+
+}
Property changes on: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/maven/MavenVersionSlicer.java
___________________________________________________________________

Added: svn:mime-type

Added: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/AbstractToolSlicer.java (0 => 40580)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/AbstractToolSlicer.java	                        (rev 0)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/AbstractToolSlicer.java	2012-05-20 19:34:44 UTC (rev 40580)
@@ -0,0 +1,34 @@
+package configurationslicing.tools;
+
+import hudson.model.AbstractProject;
+import hudson.tasks.Builder;
+import configurationslicing.UnorderedStringSlicer;
+
+/**
+ * @author Maarten Dirkse
+ */
+public abstract class AbstractToolSlicer extends UnorderedStringSlicer<AbstractProject< ? , ? >> {
+
+  public AbstractToolSlicer(UnorderedStringSlicerSpec<AbstractProject< ? , ? >> spec) {
+    super(spec);
+  }
+
+  @Override
+  public boolean isLoaded() {
+    // Attempt to load a class from the plugin
+    try {
+      getPluginClass();
+      return true;
+    } catch (Throwable e) {
+      return false;
+    }
+  }
+
+  /**
+   * Method meant to let extending classes load a class that might not be present (because it's in a
+   * plugin) in order to either succeed or force an error.
+   * 
+   * @return a Builder class that is only found in the plugin
+   */
+  protected abstract Class< ? extends Builder> getPluginClass();
+}
\ No newline at end of file
Property changes on: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/AbstractToolSlicer.java
___________________________________________________________________

Added: svn:mime-type

Added: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/AbstractToolSlicerSpec.java (0 => 40580)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/AbstractToolSlicerSpec.java	                        (rev 0)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/AbstractToolSlicerSpec.java	2012-05-20 19:34:44 UTC (rev 40580)
@@ -0,0 +1,120 @@
+package configurationslicing.tools;
+
+import hudson.model.AbstractProject;
+import hudson.model.Hudson;
+import hudson.model.Project;
+import hudson.tasks.Builder;
+import hudson.tools.ToolInstallation;
+import hudson.util.DescribableList;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.commons.lang.StringUtils;
+
+import configurationslicing.UnorderedStringSlicer.UnorderedStringSlicerSpec;
+
+/**
+ * @author Maarten Dirkse
+ */
+public abstract class AbstractToolSlicerSpec extends UnorderedStringSlicerSpec<AbstractProject< ? , ? >> {
+  private static final Logger LOGGER = Logger.getLogger(AbstractToolSlicerSpec.class.getName());
+
+  @Override
+  public abstract String getDefaultValueString();
+
+  protected abstract Class< ? extends Builder> getBuilderClass();
+
+  protected abstract String getToolName(Builder builder);
+
+  protected abstract ToolInstallation[] getToolInstallations();
+
+  protected abstract Builder getNewBuilder(Builder oldBuilder, String toolInstallationName);
+
+  @Override
+  public String getName(AbstractProject< ? , ? > item) {
+    return item.getName();
+  }
+
+  @Override
+  @SuppressWarnings("unchecked")
+  public List<AbstractProject< ? , ? >> getWorkDomain() {
+    return (List) Hudson.getInstance().getItems(AbstractProject.class);
+  }
+
+  @Override
+  public List<String> getValues(AbstractProject< ? , ? > item) {
+    List<String> ret = new ArrayList<String>();
+    if (!(item instanceof Project)) {
+      return ret;
+    }
+
+    List< ? extends Builder> builders = ((Project) item).getBuildersList().getAll(getBuilderClass());
+    for (Builder builder : builders) {
+      ret.add(getToolName(builder));
+    }
+
+    return ret;
+  }
+
+  @Override
+  public boolean setValues(AbstractProject< ? , ? > item, List<String> set) {
+    if (!(item instanceof Project) || set.size() == 0)
+      return false;
+
+    DescribableList dl = ((Project) item).getBuildersList();
+    List<Builder> builders = dl.getAll(getBuilderClass());
+
+    if (LOGGER.isLoggable(Level.FINE))
+      LOGGER.fine(builders.toString() + " : " + set.toString());
+
+    String[] builderNames = new String[set.size()];
+    set.toArray(builderNames);
+
+    // If the number of builders and gradle install names don't match, something went wrong 
+    if (builders.size() != builderNames.length)
+      return false;
+
+    for (int i = 0; i < builderNames.length; i++) {
+      Builder oldBuilder = builders.get(i);
+      // Check that the given gradle install name actually references a different installed gradle version, and, if so, set it
+      if (StringUtils.equals(getToolName(oldBuilder), builderNames[i]))
+        continue;
+
+      if (null == getInstallations(builderNames[i]))
+        return false;
+
+      /*
+       * If we're explicitly setting the gradle version, we don't want to use the wrapper, but since
+       * it's inexplicably set using a !boolean construct, we have to pass in "true" :S
+       */
+      Builder newBuilder = getNewBuilder(oldBuilder, builderNames[i]);
+
+      // Using this rather roundabout method as there seems to be no way to order a DescribableList
+      List newBuilderList = new ArrayList(dl.toList());
+      newBuilderList.add(newBuilderList.indexOf(oldBuilder), newBuilder);
+      newBuilderList.remove(oldBuilder);
+
+      try {
+        dl.clear();
+        dl.addAll(newBuilderList);
+      } catch (IOException e) {
+        LOGGER.log(Level.SEVERE, "Could not set new gradle builder step!", e);
+        return false;
+      }
+    }
+
+    return true;
+  }
+
+  protected ToolInstallation getInstallations(String installationName) {
+    for (ToolInstallation ti : getToolInstallations()) {
+      if (StringUtils.equals(ti.getName(), installationName))
+        return ti;
+    }
+    return null;
+  }
+}
\ No newline at end of file
Property changes on: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/AbstractToolSlicerSpec.java
___________________________________________________________________

Added: svn:mime-type

Added: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/AntSlicer.java (0 => 40580)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/AntSlicer.java	                        (rev 0)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/AntSlicer.java	2012-05-20 19:34:44 UTC (rev 40580)
@@ -0,0 +1,61 @@
+package configurationslicing.tools;
+
+import hudson.Extension;
+import hudson.tasks.Builder;
+import hudson.tasks.Ant;
+import hudson.tasks.Ant.DescriptorImpl;
+import hudson.tools.ToolInstallation;
+
+/**
+ * @author Maarten Dirkse
+ */
+@Extension
+public class AntSlicer extends AbstractToolSlicer {
+
+  public AntSlicer() {
+    super(new AntSlicerSpec());
+  }
+
+  @Override
+  protected Class< ? extends Builder> getPluginClass() {
+    return Ant.class;
+  }
+
+  public static class AntSlicerSpec extends AbstractToolSlicerSpec {
+    @Override
+    public String getDefaultValueString() {
+      return "Default";
+    }
+
+    @Override
+    public String getName() {
+      return "Ant version per project";
+    }
+
+    @Override
+    public String getUrl() {
+      return "projectant";
+    }
+
+    @Override
+    protected Class< ? extends Builder> getBuilderClass() {
+      return Ant.class;
+    }
+
+    @Override
+    protected Builder getNewBuilder(Builder oldBuilder, String toolInstallationName) {
+      Ant oldAnt = (Ant) oldBuilder;
+      return new Ant(oldAnt.getTargets(), toolInstallationName, oldAnt.getAntOpts(), oldAnt.getBuildFile(), oldAnt.getProperties());
+    }
+
+    @Override
+    protected ToolInstallation[] getToolInstallations() {
+      return new DescriptorImpl().getInstallations();
+    }
+
+    @Override
+    protected String getToolName(Builder builder) {
+      return ((Ant) builder).getAnt() == null ? getDefaultValueString() : ((Ant) builder).getAnt().getName();
+    }
+  }
+}
\ No newline at end of file
Property changes on: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/AntSlicer.java
___________________________________________________________________

Added: svn:mime-type

Added: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/GradleSlicer.java (0 => 40580)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/GradleSlicer.java	                        (rev 0)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/GradleSlicer.java	2012-05-20 19:34:44 UTC (rev 40580)
@@ -0,0 +1,62 @@
+package configurationslicing.tools;
+
+import hudson.Extension;
+import hudson.plugins.gradle.Gradle;
+import hudson.plugins.gradle.Gradle.DescriptorImpl;
+import hudson.tasks.Builder;
+import hudson.tools.ToolInstallation;
+
+/**
+ * @author Maarten Dirkse
+ */
+@Extension
+public class GradleSlicer extends AbstractToolSlicer {
+
+  public GradleSlicer() {
+    super(new GradleSlicerSpec());
+  }
+
+  @Override
+  protected Class< ? extends Builder> getPluginClass() {
+    return Gradle.class;
+  }
+
+  public static class GradleSlicerSpec extends AbstractToolSlicerSpec {
+    @Override
+    public String getDefaultValueString() {
+      return "(Default)";
+    }
+
+    @Override
+    public String getName() {
+      return "Gradle version per project";
+    }
+
+    @Override
+    public String getUrl() {
+      return "projectgradle";
+    }
+
+    @Override
+    protected Class< ? extends Builder> getBuilderClass() {
+      return Gradle.class;
+    }
+
+    @Override
+    protected ToolInstallation[] getToolInstallations() {
+      return new DescriptorImpl().getInstallations();
+    }
+
+    @Override
+    protected Builder getNewBuilder(Builder oldBuilder, String toolInstallationName) {
+      Gradle oldGradle = (Gradle) oldBuilder;
+      return new Gradle(oldGradle.getDescription(), oldGradle.getSwitches(), oldGradle.getTasks(), oldGradle.getRootBuildScriptDir(),
+          oldGradle.getBuildFile(), toolInstallationName, true);
+    }
+
+    @Override
+    protected String getToolName(Builder builder) {
+      return ((Gradle) builder).getGradleName();
+    }
+  }
+}
\ No newline at end of file
Property changes on: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/GradleSlicer.java
___________________________________________________________________

Added: svn:mime-type

Added: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/GroovySlicer.java (0 => 40580)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/GroovySlicer.java	                        (rev 0)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/GroovySlicer.java	2012-05-20 19:34:44 UTC (rev 40580)
@@ -0,0 +1,62 @@
+package configurationslicing.tools;
+
+import hudson.Extension;
+import hudson.plugins.groovy.Groovy;
+import hudson.tasks.Builder;
+import hudson.tools.ToolInstallation;
+
+/**
+ * @author Maarten Dirkse
+ */
+@Extension
+public class GroovySlicer extends AbstractToolSlicer {
+
+  public GroovySlicer() {
+    super(new GroovySlicerSpec());
+  }
+
+  @Override
+  protected Class< ? extends Builder> getPluginClass() {
+    return Groovy.class;
+  }
+
+  public static class GroovySlicerSpec extends AbstractToolSlicerSpec {
+
+    @Override
+    public String getDefaultValueString() {
+      return "(Default)";
+    }
+
+    @Override
+    public String getName() {
+      return "Groovy version per project";
+    }
+
+    @Override
+    public String getUrl() {
+      return "projectgroovy";
+    }
+
+    @Override
+    protected Class< ? extends Builder> getBuilderClass() {
+      return Groovy.class;
+    }
+
+    @Override
+    protected Builder getNewBuilder(Builder oldInstall, String installationName) {
+      Groovy oldGroovy = (Groovy) oldInstall;
+      return new Groovy(oldGroovy.getScriptSource(), installationName, oldGroovy.getParameters(), oldGroovy.getScriptParameters(),
+          oldGroovy.getProperties(), oldGroovy.getJavaOpts(), oldGroovy.getClassPath());
+    }
+
+    @Override
+    protected String getToolName(Builder builder) {
+      return ((Groovy) builder).getGroovyName();
+    }
+
+    @Override
+    protected ToolInstallation[] getToolInstallations() {
+      return Groovy.DESCRIPTOR.getInstallations();
+    }
+  }
+}
\ No newline at end of file
Property changes on: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/tools/GroovySlicer.java
___________________________________________________________________

Added: svn:mime-type

Reply via email to