Modified: trunk/hudson/plugins/configurationslicing/pom.xml (40724 => 40725)
--- trunk/hudson/plugins/configurationslicing/pom.xml 2012-10-13 07:36:42 UTC (rev 40724)
+++ trunk/hudson/plugins/configurationslicing/pom.xml 2012-10-15 13:30:04 UTC (rev 40725)
@@ -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>
@@ -88,6 +89,12 @@
<version>1.12</version>
<optional>true</optional>
</dependency>
+ <dependency>
+ <groupId>org.jenkins-ci.plugins</groupId>
+ <artifactId>ws-cleanup</artifactId>
+ <version>0.10</version>
+ <optional>true</optional>
+ </dependency>
</dependencies>
<scm>
Added: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/wscleanup/AbstractWsCleanupSliceSpec.java (0 => 40725)
--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/wscleanup/AbstractWsCleanupSliceSpec.java (rev 0)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/wscleanup/AbstractWsCleanupSliceSpec.java 2012-10-15 13:30:04 UTC (rev 40725)
@@ -0,0 +1,134 @@
+package configurationslicing.wscleanup;
+
+import hudson.model.AbstractProject;
+import hudson.plugins.ws_cleanup.Pattern;
+import hudson.plugins.ws_cleanup.Pattern.PatternType;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import configurationslicing.UnorderedStringSlicer.UnorderedStringSlicerSpec;
+
+public abstract class AbstractWsCleanupSliceSpec extends UnorderedStringSlicerSpec<AbstractProject<?,?>> {
+
+ private static final String DISABLED = "(Disabled)";
+ private static final String SEPARATOR = ",";
+ private static final String INCLUDE = "+";
+ private static final String EXCLUDE = "-";
+
+ private String url;
+ private String name;
+
+ public AbstractWsCleanupSliceSpec(String url, String name) {
+ this.url = ""
+ this.name = name;
+ }
+
+ @Override
+ public String getDefaultValueString() {
+ return DISABLED;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public String getName(AbstractProject<?, ?> item) {
+ return item.getName();
+ }
+
+ @Override
+ public String getUrl() {
+ return url;
+ }
+
+ @Override
+ public List<String> getValues(AbstractProject<?, ?> item) {
+ List<String> values = new ArrayList<String>();
+ CleanupInfo info = getCleanupInfo(item);
+ if (info == null) {
+ values.add(DISABLED);
+ } else {
+ StringBuilder buf = new StringBuilder();
+ buf.append(String.valueOf(info.appliesToDirectories));
+ if (isSkipEnabled()) {
+ buf.append(SEPARATOR);
+ buf.append(String.valueOf(info.skipWhenFailed));
+ }
+ for (Pattern pattern: info.patterns) {
+ buf.append(SEPARATOR);
+ if (pattern.getType() == PatternType.EXCLUDE) {
+ buf.append(EXCLUDE);
+ } else {
+ buf.append(INCLUDE);
+ }
+ buf.append(pattern.getPattern());
+ }
+ values.add(buf.toString());
+ }
+ return values;
+ }
+
+ public abstract CleanupInfo getCleanupInfo(AbstractProject<?, ?> item);
+
+ @Override
+ public boolean setValues(AbstractProject<?, ?> item, List<String> list) {
+ if (list != null && !list.isEmpty()) {
+ String value = list.get(0);
+ if (value.equals(DISABLED)) {
+ setCleanupInfo(item, null);
+ return true;
+ } else {
+ CleanupInfo info = new CleanupInfo();
+ String[] split = value.split(SEPARATOR);
+ int pos = 0;
+ info.appliesToDirectories = Boolean.parseBoolean(split[pos++]);
+ if (isSkipEnabled()) {
+ info.skipWhenFailed = Boolean.parseBoolean(split[pos++]);
+ }
+ for (int i = pos; i < split.length; i++) {
+ String patternTypeString = split[i].substring(0, 1);
+ String patternString = split[i].substring(1);
+ PatternType type;
+ if (INCLUDE.equals(patternTypeString)) {
+ type = PatternType.INCLUDE;
+ } else {
+ type = PatternType.EXCLUDE;
+ }
+ Pattern pattern = new Pattern(patternString, type);
+ info.patterns.add(pattern);
+ }
+
+ return setCleanupInfo(item, info);
+ }
+ }
+ return false;
+ }
+ public abstract boolean isSkipEnabled();
+ public abstract boolean setCleanupInfo(AbstractProject<?, ?> item, CleanupInfo info);
+
+ @Override
+ public String getConfiguredValueDescription() {
+ StringBuilder buf = new StringBuilder();
+ buf.append("Apply to Directories,");
+ if (isSkipEnabled()) {
+ buf.append("Skip on Fail,");
+ }
+ buf.append("-Exclude Pattern,+Include Pattern,...");
+ buf.append("<br/><i>(e.g. false,");
+ if (isSkipEnabled()) {
+ buf.append("true,");
+ }
+ buf.append("+config/**,-*.xml,-*.txt)</i>");
+ return buf.toString();
+ }
+
+ public static class CleanupInfo {
+ public List<Pattern> patterns = new ArrayList<Pattern>();
+ public boolean appliesToDirectories = false;
+ public boolean skipWhenFailed = false;
+ }
+
+}
Property changes on: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/wscleanup/AbstractWsCleanupSliceSpec.java
___________________________________________________________________
Added: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/wscleanup/CleanupBeforeSlicer.java (0 => 40725)
--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/wscleanup/CleanupBeforeSlicer.java (rev 0)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/wscleanup/CleanupBeforeSlicer.java 2012-10-15 13:30:04 UTC (rev 40725)
@@ -0,0 +1,62 @@
+package configurationslicing.wscleanup;
+
+import hudson.Extension;
+import hudson.model.AbstractProject;
+import hudson.model.BuildableItemWithBuildWrappers;
+import hudson.model.Descriptor;
+import hudson.model.Hudson;
+import hudson.plugins.ws_cleanup.PreBuildCleanup;
+import hudson.tasks.BuildWrapper;
+import hudson.util.DescribableList;
+
+import java.util.List;
+
+import configurationslicing.UnorderedStringSlicer;
+
+@Extension
+public class CleanupBeforeSlicer extends UnorderedStringSlicer<AbstractProject<?, ?>> {
+
+ public CleanupBeforeSlicer() {
+ super(new CleanupBeforeSliceSpec());
+ }
+
+ public static class CleanupBeforeSliceSpec extends AbstractWsCleanupSliceSpec {
+
+ public CleanupBeforeSliceSpec() {
+ super("wscleanupbefore", "Delete workspace before build starts");
+ }
+
+ @Override
+ public CleanupInfo getCleanupInfo(AbstractProject<?, ?> item) {
+ CleanupInfo info = new CleanupInfo();
+
+ BuildableItemWithBuildWrappers bi = (BuildableItemWithBuildWrappers) item;
+ DescribableList<BuildWrapper,Descriptor<BuildWrapper>> wrappers = bi.getBuildWrappersList();
+ boolean changed = false;
+ PreBuildCleanup wrapper = wrappers.get(PreBuildCleanup.class);
+
+ if (changed) {
+
+ }
+
+ return info;
+ }
+
+ @Override
+ public boolean setCleanupInfo(AbstractProject<?, ?> item, CleanupInfo info) {
+ return false;
+ }
+ @Override
+ public boolean isSkipEnabled() {
+ // we do not allow skip on fail in the cleanup before
+ return false;
+ }
+ @SuppressWarnings("unchecked")
+ @Override
+ public List<AbstractProject<?, ?>> getWorkDomain() {
+ return (List) Hudson.getInstance().getItems(BuildableItemWithBuildWrappers.class);
+ }
+
+ }
+
+}
Property changes on: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/wscleanup/CleanupBeforeSlicer.java
___________________________________________________________________