Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #6 from jacobrobertson/master
FIXED JENKINS-16305
  • Loading branch information
jacobrobertson committed Oct 3, 2013
2 parents 1d18d54 + e9716b4 commit e539c45
Show file tree
Hide file tree
Showing 3 changed files with 137 additions and 56 deletions.
Expand Up @@ -3,88 +3,47 @@
import hudson.Extension;
import hudson.model.AbstractProject;
import hudson.model.FreeStyleProject;
import hudson.model.Hudson;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;

import configurationslicing.UnorderedStringSlicer;
import configurationslicing.project.AbstractSimpleProjectSlicer;

/**
* @author jacob_robertson
*/
@Extension
public class CustomWorkspaceStringSlicer extends UnorderedStringSlicer<AbstractProject<?,?>>{
public class CustomWorkspaceStringSlicer extends AbstractSimpleProjectSlicer {

public CustomWorkspaceStringSlicer() {
super(new CustomWorkspaceStringSliceSpec());
}

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

private static final String DISABLED = "(Disabled)";
public static class CustomWorkspaceStringSliceSpec extends AbstractSimpleProjectSlicer.AbstractSimpleProjectSliceSpec {

public String getDefaultValueString() {
return DISABLED;
}
public String getName() {
return "Custom Workspace Slicer";
}

public String getName(AbstractProject<?, ?> item) {
return item.getFullName();
}

public String getUrl() {
return "customworkspace";
}

public List<String> getValues(AbstractProject<?, ?> item) {
List<String> workspace = new ArrayList<String>();
@Override
protected String getValue(AbstractProject<?, ?> item) {
if (item instanceof FreeStyleProject) {
FreeStyleProject project = (FreeStyleProject) item;
String ws = project.getCustomWorkspace();
if (ws != null) {
workspace.add(ws);
}
return ws;
} else {
return null;
}
if (workspace.isEmpty()) {
workspace.add(DISABLED);
}
return workspace;
}

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

public boolean setValues(AbstractProject<?, ?> item, List<String> set) {
try {
if (item instanceof FreeStyleProject) {
FreeStyleProject project = (FreeStyleProject) item;
String ws;
if (set.isEmpty()) {
ws = null;
} else {
ws = set.iterator().next();
}
if (DISABLED.equals(ws)) {
ws = null;
}
String old = project.getCustomWorkspace();
// check for equal - we don't want to trigger a change for no reason
if (!StringUtils.equals(ws, old)) {
project.setCustomWorkspace(ws);
}
}
return true;
} catch (IOException ioe) {
return false;
@Override
protected void setValue(AbstractProject<?, ?> item, String value)
throws IOException {
if (item instanceof FreeStyleProject) {
FreeStyleProject project = (FreeStyleProject) item;
project.setCustomWorkspace(value);
}
}

}
}
@@ -0,0 +1,82 @@
package configurationslicing.project;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;

import hudson.model.Item;
import hudson.model.AbstractProject;
import hudson.model.FreeStyleProject;
import hudson.model.Hudson;
import configurationslicing.UnorderedStringSlicer;

public abstract class AbstractSimpleProjectSlicer extends UnorderedStringSlicer<AbstractProject<?,?>> {

public AbstractSimpleProjectSlicer(AbstractSimpleProjectSliceSpec spec) {
super(spec);
}

public static abstract class AbstractSimpleProjectSliceSpec extends UnorderedStringSlicerSpec<AbstractProject<?,?>> {

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

public String getDefaultValueString() {
return DISABLED;
}
public String getName(AbstractProject<?, ?> item) {
return item.getFullName();
}
public List<String> getValues(AbstractProject<?, ?> item) {
List<String> values = new ArrayList<String>();
String value = getValue(item);
if (value != null) {
values.add(value);
}
if (values.isEmpty()) {
values.add(DISABLED);
}
return values;
}
protected abstract String getValue(AbstractProject<?, ?> project);

@SuppressWarnings({ "unchecked" })
public List<AbstractProject<?, ?>> getWorkDomain() {
return (List) Hudson.getInstance().getAllItems(getWorkDomainClass());
}
/**
* Override if needed.
*/
protected Class<? extends Item> getWorkDomainClass() {
return FreeStyleProject.class;
}

public boolean setValues(AbstractProject<?, ?> item, List<String> set) {
try {
String value;
if (set.isEmpty()) {
value = null;
} else {
value = set.iterator().next();
}
if (DISABLED.equals(value)) {
value = null;
}
String old = getValue(item);
// check for equal - we don't want to trigger a change for no reason
if (!StringUtils.equals(value, old)) {
setValue(item, value);
}
return true;
} catch (IOException ioe) {
return false;
}
}
/**
* @throws IOException for the save operation
*/
protected abstract void setValue(AbstractProject<?, ?> project, String value) throws IOException;
}

}
40 changes: 40 additions & 0 deletions src/main/java/configurationslicing/project/QuietPeriodSlicer.java
@@ -0,0 +1,40 @@
package configurationslicing.project;

import hudson.Extension;
import hudson.model.AbstractProject;

import java.io.IOException;

@Extension
public class QuietPeriodSlicer extends AbstractSimpleProjectSlicer {

public QuietPeriodSlicer() {
super(new QuietPeriodSliceSpec());
}

public static class QuietPeriodSliceSpec extends AbstractSimpleProjectSlicer.AbstractSimpleProjectSliceSpec {

public String getName() {
return "Quiet Period Slicer";
}
public String getUrl() {
return "quietperiod";
}
@Override
protected String getValue(AbstractProject<?, ?> project) {
int q = project.getQuietPeriod();
return String.valueOf(q);
}
@Override
protected void setValue(AbstractProject<?, ?> project, String value) throws IOException {
Integer q;
try {
q = Integer.parseInt(value);
} catch (NumberFormatException e) {
q = null;
}
project.setQuietPeriod(q);
}
}

}

0 comments on commit e539c45

Please sign in to comment.