package configurationslicing.maven; import hudson.Extension; import hudson.maven.MavenModuleSet; import hudson.model.Hudson; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Set; import configurationslicing.UnorderedStringSlicer; @Extension public class MavenGoals extends UnorderedStringSlicer<MavenModuleSet> { public MavenGoals() { super(new MavenGoalsSlicerSpec()); } public static class MavenGoalsSlicerSpec implements UnorderedStringSlicerSpec<MavenModuleSet> { private static final String DEFAULT = "(Default)"; public String getName() { return "Goals and Options per Maven project"; } public String getName(MavenModuleSet item) { return item.getName(); } public String getUrl() { return "mavengoals"; } public List<String> getValues(MavenModuleSet item) { List<String> ret = new ArrayList<String>(); String goals = item.getUserConfiguredGoals(); ret.add(goals == null ? DEFAULT : goals); return ret; } public List<MavenModuleSet> getWorkDomain() { return (List)Hudson.getInstance().getItems(MavenModuleSet.class); } public boolean setValues(MavenModuleSet item, Set<String> set) { if(set.isEmpty()) return false; String value = set.iterator().next(); if(DEFAULT.equalsIgnoreCase(value)) { item.setGoals(null); } else { item.setGoals(value); } try { item.save(); } catch (IOException e) { return false; } return true; } } }