Skip to content

Commit

Permalink
[FIXED JENKINS-10797]
Browse files Browse the repository at this point in the history
  • Loading branch information
jacob_robertson committed Aug 23, 2011
1 parent a533f37 commit a63830b
Show file tree
Hide file tree
Showing 10 changed files with 61 additions and 16 deletions.
9 changes: 9 additions & 0 deletions src/main/java/configurationslicing/UnorderedStringSlice.java
Expand Up @@ -70,8 +70,17 @@ public UnorderedStringSlicerSpec<I> getSpec() {
return spec;
}
public List<String> getConfiguredValues() {
String defaultValueString = spec.getDefaultValueString();
List<String> list = new ArrayList<String>(valueToNames.keySet());
if (list.contains(defaultValueString)) {
list.remove(defaultValueString);
}
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);

// add the default as second to last
if (defaultValueString != null) {
list.add(defaultValueString);
}
// we need this so you can add new items
if (!list.contains("")) {
list.add("");
Expand Down
Expand Up @@ -11,6 +11,7 @@ public static interface UnorderedStringSlicerSpec<I> {
public abstract List<String> getValues(I item);
public abstract String getName(I item);
public abstract boolean setValues(I item, Set<String> set);
public abstract String getDefaultValueString();
}

private UnorderedStringSlicerSpec<I> spec;
Expand Down
Expand Up @@ -23,10 +23,14 @@ public class CustomWorkspaceStringSlicer extends UnorderedStringSlicer<AbstractP
public CustomWorkspaceStringSlicer() {
super(new CustomWorkspaceStringSliceSpec());
}

public static class CustomWorkspaceStringSliceSpec implements UnorderedStringSlicerSpec<AbstractProject<?,?>> {

private static final String DISABLED = "(Disabled)";

public String getDefaultValueString() {
return DISABLED;
}
public String getName() {
return "Custom Workspace Slicer";
}
Expand Down
8 changes: 6 additions & 2 deletions src/main/java/configurationslicing/jdk/JdkSlicer.java
Expand Up @@ -25,6 +25,9 @@ public JdkSlicer() {
public static class JdkSlicerSpec implements UnorderedStringSlicerSpec<AbstractProject<?,?>> {
private static final String DEFAULT = "(Default)";

public String getDefaultValueString() {
return DEFAULT;
}
public String getName() {
return "JDK per project";
}
Expand All @@ -45,8 +48,9 @@ public List<String> getValues(AbstractProject<?, ?> item) {
return ret;
}

public List<AbstractProject<?, ?>> getWorkDomain() {
return (List)Hudson.getInstance().getItems(AbstractProject.class);
@SuppressWarnings("unchecked")
public List<AbstractProject<?, ?>> getWorkDomain() {
return (List) Hudson.getInstance().getItems(AbstractProject.class);
}

public boolean setValues(AbstractProject<?, ?> item, Set<String> set) {
Expand Down
8 changes: 6 additions & 2 deletions src/main/java/configurationslicing/label/LabelSlicer.java
Expand Up @@ -22,6 +22,9 @@ public static class LabelSliceSpec implements UnorderedStringSlicerSpec<Abstract

private static final String ROAMING = "(Roaming)";

public String getDefaultValueString() {
return ROAMING;
}
public String getName() {
return "Tied Label Slicer";
}
Expand All @@ -40,8 +43,9 @@ public List<String> getValues(AbstractProject<?, ?> item) {
return Collections.singletonList(labelName);
}

public List<AbstractProject<?, ?>> getWorkDomain() {
return (List)Hudson.getInstance().getItems(AbstractProject.class);
@SuppressWarnings("unchecked")
public List<AbstractProject<?, ?>> getWorkDomain() {
return (List) Hudson.getInstance().getItems(AbstractProject.class);
}

public boolean setValues(AbstractProject<?, ?> item, Set<String> set) {
Expand Down
Expand Up @@ -32,6 +32,9 @@ public Count() {
protected abstract static class AbstractLogRotationSliceSpec implements UnorderedStringSlicerSpec<AbstractProject<?,?>> {
private static final String DISABLED = "(Disabled)";

public String getDefaultValueString() {
return DISABLED;
}
public String getName(AbstractProject<?, ?> item) {
return item.getName();
}
Expand Down
9 changes: 7 additions & 2 deletions src/main/java/configurationslicing/maven/MavenGoals.java
Expand Up @@ -21,6 +21,10 @@ public MavenGoals() {
public static class MavenGoalsSlicerSpec implements UnorderedStringSlicerSpec<MavenModuleSet> {
private static final String DEFAULT = "(Default)";

public String getDefaultValueString() {
return DEFAULT;
}

public String getName() {
return "Goals and Options per Maven project";
}
Expand All @@ -40,8 +44,9 @@ public List<String> getValues(MavenModuleSet item) {
return ret;
}

public List<MavenModuleSet> getWorkDomain() {
return (List)Hudson.getInstance().getItems(MavenModuleSet.class);
@SuppressWarnings("unchecked")
public List<MavenModuleSet> getWorkDomain() {
return (List) Hudson.getInstance().getItems(MavenModuleSet.class);
}

public boolean setValues(MavenModuleSet item, Set<String> set) {
Expand Down
9 changes: 7 additions & 2 deletions src/main/java/configurationslicing/maven/MavenOptsSlicer.java
Expand Up @@ -20,6 +20,10 @@ public MavenOptsSlicer() {

public static class MavenOptsSlicerSpec implements UnorderedStringSlicerSpec<MavenModuleSet> {

public String getDefaultValueString() {
return null;
}

public String getName() {
return "MAVEN_OPTS per Maven project";
}
Expand All @@ -39,8 +43,9 @@ public List<String> getValues(MavenModuleSet item) {
return ret;
}

public List<MavenModuleSet> getWorkDomain() {
return (List)Hudson.getInstance().getItems(MavenModuleSet.class);
@SuppressWarnings("unchecked")
public List<MavenModuleSet> getWorkDomain() {
return (List) Hudson.getInstance().getItems(MavenModuleSet.class);
}

public boolean setValues(MavenModuleSet item, Set<String> set) {
Expand Down
Expand Up @@ -17,13 +17,16 @@
public abstract class AbstractTimerSliceSpec implements
UnorderedStringSlicerSpec<AbstractProject<?, ?>> {

static final String DISABLED = "(Disabled)";
public static final String DISABLED = "(Disabled)";

private Class triggerClass;

protected AbstractTimerSliceSpec(Class triggerClass) {
this.triggerClass = triggerClass;
}
public String getDefaultValueString() {
return DISABLED;
}

public Class getTriggerClass() {
return triggerClass;
Expand Down
21 changes: 14 additions & 7 deletions src/test/java/configurationslicing/TimerSliceStringSlicerTest.java
Expand Up @@ -4,6 +4,7 @@
import hudson.triggers.Trigger;

import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

import org.jvnet.hudson.test.HudsonTestCase;
Expand Down Expand Up @@ -34,33 +35,39 @@ public void testSCMTimerSliceStringSlicer() throws Exception {
private void doTestTimerSliceStringSlicer(UnorderedStringSlicer slicer, AbstractTimerSliceSpec spec) throws Exception {
UnorderedStringSlice slice = new UnorderedStringSlice(spec);

assertEquals(1, slice.getConfiguredValues().size());
assertEquals(0, getRealValues(slice).size());

accumulate(slicer, slice, spec, "p1", "30 * * * *");
assertEquals(2, slice.getConfiguredValues().size());
assertEquals(1, getRealValues(slice).size());

// no additional configured values are added, because this is a duplicate
accumulate(slicer, slice, spec, "p1a", "30 * * * *");
assertEquals(2, slice.getConfiguredValues().size());
assertEquals(1, getRealValues(slice).size());

// only one additional value is added because the comment is not split out
accumulate(slicer, slice, spec, "p2", "#this is my spec\n0 * * * *");
assertEquals(3, slice.getConfiguredValues().size());
assertEquals(2, getRealValues(slice).size());

slice = new UnorderedStringSlice(spec);
AbstractProject project =
accumulate(slicer, slice, spec, "p3", "\n\n#comment1\n\n#line2 of comment 1\n\n0 * * * *\n\n\n#comment2\n\n20 * * * *");
assertEquals(3, slice.getConfiguredValues().size());
assertEquals(2, getRealValues(slice).size());

assertEquals(1, project.getTriggers().size());
Set<String> set = new LinkedHashSet<String>(slice.getConfiguredValues());
Set<String> set = new LinkedHashSet<String>(getRealValues(slice));
spec.setValues(project, set);
assertEquals(1, project.getTriggers().size());
Trigger timer = project.getTrigger(spec.getTriggerClass());
String specString = timer.getSpec();
assertEquals("#comment1\n#line2 of comment 1\n0 * * * *\n\n#comment2\n20 * * * *", specString);
}

@SuppressWarnings("unchecked")
private List<String> getRealValues(UnorderedStringSlice slice) {
List<String> list = slice.getConfiguredValues();
list.remove("");
list.remove(AbstractTimerSliceSpec.DISABLED);
return list;
}
@SuppressWarnings("unchecked")
private AbstractProject accumulate(UnorderedStringSlicer slicer, UnorderedStringSlice slice, AbstractTimerSliceSpec spec,
String name, String chron) throws Exception {
Expand Down

0 comments on commit a63830b

Please sign in to comment.