Modified: trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/buildtimeout/BuildTimeoutSlicer.java (40725 => 40726)
--- trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/buildtimeout/BuildTimeoutSlicer.java 2012-10-15 13:30:04 UTC (rev 40725)
+++ trunk/hudson/plugins/configurationslicing/src/main/java/configurationslicing/buildtimeout/BuildTimeoutSlicer.java 2012-10-27 11:54:52 UTC (rev 40726)
@@ -1,8 +1,8 @@
package configurationslicing.buildtimeout;
import hudson.Extension;
+import hudson.model.BuildableItemWithBuildWrappers;
import hudson.model.AbstractProject;
-import hudson.model.BuildableItemWithBuildWrappers;
import hudson.model.Descriptor;
import hudson.model.Hudson;
import hudson.plugins.build_timeout.BuildTimeoutWrapper;
@@ -10,6 +10,7 @@
import hudson.util.DescribableList;
import java.io.IOException;
+import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;
@@ -27,7 +28,7 @@
@Override
public boolean isLoaded() {
try {
- new BuildTimeoutWrapper(0, false);
+ BuildTimeoutSliceSpec.newBuildTimeoutWrapper(0, false);
return true;
} catch (Throwable t) {
return false;
@@ -111,7 +112,7 @@
}
} else if (changed) {
try {
- wrapper = new BuildTimeoutWrapper(newTimeout, newFail);
+ wrapper = newBuildTimeoutWrapper(newTimeout, newFail);
wrappers.replace(wrapper);
} catch (IOException e) {
System.err.println("IOException Thrown replacing wrapper value");
@@ -134,6 +135,39 @@
public String getConfiguredValueDescription() {
return "Timeout,Fail<br/><i>(e.g. 180,false)</i>";
}
+ public static BuildTimeoutWrapper newBuildTimeoutWrapper(int timeoutMinutes, boolean failBuild) {
+ // (int timeoutMinutes, boolean failBuild)
+ // (int timeoutMinutes, boolean failBuild, boolean writingDescription, int timeoutPercentage, int timeoutMinutesElasticDefault, String timeoutType)
+
+ Class<BuildTimeoutWrapper> cls = BuildTimeoutWrapper.class;
+ Class<?>[] types1 = new Class<?>[] { Integer.TYPE, Boolean.TYPE };
+ Constructor<BuildTimeoutWrapper> cons;
+ try {
+ cons = cls.getDeclaredConstructor(types1);
+ } catch (Exception e) {
+ cons = null;
+ }
+
+ Object[] args;
+ if (cons != null) {
+ args = new Object[] { timeoutMinutes, failBuild };
+ } else {
+ 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" };
+ } catch (Exception e) {
+ throw new UnsupportedClassVersionError("Cannot find a version of BuildTimeoutWrapper constructor that can be used:" + e.getMessage());
+ }
+ }
+ BuildTimeoutWrapper wrapper;
+ try {
+ wrapper = (BuildTimeoutWrapper) cons.newInstance(args);
+ } catch (Exception e) {
+ throw new UnsupportedClassVersionError("Cannot find a version of BuildTimeoutWrapper constructor that can be used:" + e.getMessage());
+ }
+ return wrapper;
+ }
}
}