Title: [40727] trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/buildtimeout/BuildTimeoutSlicer.java: fix for buildtimeout plugin's constructor change
Revision
40727
Author
jacob_robertson
Date
2012-10-27 08:11:10 -0400 (Sat, 27 Oct 2012)

Log Message

fix for buildtimeout plugin's constructor change

Modified Paths


Diff

Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/buildtimeout/BuildTimeoutSlicer.java (40726 => 40727)


--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/buildtimeout/BuildTimeoutSlicer.java	2012-10-27 11:54:52 UTC (rev 40726)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/buildtimeout/BuildTimeoutSlicer.java	2012-10-27 12:11:10 UTC (rev 40727)
@@ -11,6 +11,7 @@
 
 import java.io.IOException;
 import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -21,6 +22,8 @@
 @Extension
 public class BuildTimeoutSlicer extends UnorderedStringSlicer<AbstractProject<?,?>>{
 
+	private static final String DEFAULT_TYPE = "absolute";
+	
     public BuildTimeoutSlicer() {
         super(new BuildTimeoutSliceSpec());
     }
@@ -28,7 +31,7 @@
 	@Override
     public boolean isLoaded() {
     	try {
-    		BuildTimeoutSliceSpec.newBuildTimeoutWrapper(0, false);
+    		BuildTimeoutSliceSpec.newBuildTimeoutWrapper(0, false, DEFAULT_TYPE);
     		return true;
     	} catch (Throwable t) {
     		return false;
@@ -50,7 +53,7 @@
 			return "buildtimeout";
 		}
 
-		@SuppressWarnings("unchecked")
+		@SuppressWarnings({ "unchecked", "rawtypes" })
 		@Override
 		public List<AbstractProject<?, ?>> getWorkDomain() {
             return (List) Hudson.getInstance().getItems(BuildableItemWithBuildWrappers.class);
@@ -81,6 +84,7 @@
 
 			boolean delete = false;
 			boolean newFail = false;
+			String oldType = DEFAULT_TYPE;
 			int newTimeout = 0;
 			String line = set.iterator().next();
 			if (DISABLED.equals(line) || StringUtils.isEmpty(line)) {
@@ -94,6 +98,7 @@
 			if (wrapper != null) {
 				boolean oldFail = wrapper.failBuild;
 				int oldTimeout = wrapper.timeoutMinutes;
+				oldType = getType(wrapper);
 				if (newFail != oldFail || newTimeout != oldTimeout) {
 					changed = true;
 				}
@@ -112,7 +117,7 @@
 				}
 			} else if (changed) {
 				try {
-					wrapper = newBuildTimeoutWrapper(newTimeout, newFail);
+					wrapper = newBuildTimeoutWrapper(newTimeout, newFail, oldType);
 					wrappers.replace(wrapper);
 				} catch (IOException e) {
 					System.err.println("IOException Thrown replacing wrapper value");
@@ -135,7 +140,16 @@
 		public String getConfiguredValueDescription() {
 			return "Timeout,Fail<br/><i>(e.g. 180,false)</i>";
 		}
-		public static BuildTimeoutWrapper newBuildTimeoutWrapper(int timeoutMinutes, boolean failBuild) {
+		public static String getType(BuildTimeoutWrapper wrapper) {
+			try {
+				Field field = BuildTimeoutWrapper.class.getDeclaredField("timeoutType");
+				String value = (String) field.get(wrapper);
+				return value;
+			} catch (Exception e) {
+				return DEFAULT_TYPE;
+			}
+		}
+		public static BuildTimeoutWrapper newBuildTimeoutWrapper(int timeoutMinutes, boolean failBuild, String type) {
 			//	(int timeoutMinutes, boolean failBuild)
 			//	(int timeoutMinutes, boolean failBuild, boolean writingDescription, int timeoutPercentage, int timeoutMinutesElasticDefault, String timeoutType)
 			
@@ -155,7 +169,7 @@
 				try {
 					Class<?>[] types2 = new Class<?>[] { Integer.TYPE, Boolean.TYPE, Boolean.TYPE, Integer.TYPE, Integer.TYPE, String.class };
 					cons = cls.getDeclaredConstructor(types2);
-					args = new Object[] { timeoutMinutes, failBuild, false, 0, 0, "absolute" };
+					args = new Object[] { timeoutMinutes, failBuild, false, 0, 0, type };
 				} catch (Exception e) {
 					throw new UnsupportedClassVersionError("Cannot find a version of BuildTimeoutWrapper constructor that can be used:" + e.getMessage());
 				}

Reply via email to