diff --git a/.gitignore b/.gitignore
index 2fea509..d0b2671 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,4 @@ target/
*.iml
*.ipr
*.iws
+nb-configuration.xml
diff --git a/pom.xml b/pom.xml
index 93c3c08..19fecef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
org.jenkins-ci.plugins
plugin
- 1.450
+ 1.584
@@ -24,6 +24,8 @@
UTF-8
UTF-8
UTF-8
+ 1.7
+ 1.7
@@ -95,6 +97,7 @@
org.jenkins-ci.main
maven-plugin
+ 2.8
xpp3
diff --git a/src/main/java/hudson/plugins/violations/ViolationsReport.java b/src/main/java/hudson/plugins/violations/ViolationsReport.java
index ea2a066..e4275c9 100644
--- a/src/main/java/hudson/plugins/violations/ViolationsReport.java
+++ b/src/main/java/hudson/plugins/violations/ViolationsReport.java
@@ -4,6 +4,7 @@
import java.io.IOException;
import java.io.File;
import java.io.Serializable;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -532,17 +533,48 @@ private boolean isFailed() {
/**
* Set the unstable/failed status of a build based
* on this violations report.
+ *
+ * Because of JENKINS-25406 we need to access this field via reflection.
*/
public void setBuildResult() {
- if (isFailed()) {
- build.setResult(Result.FAILURE);
- return;
+ final Field resultField;
+ final Result result = build.getResult();
+ try {
+ Class extends AbstractBuild> klass = build.getClass();
+ resultField = getField(klass, "result");
+ resultField.setAccessible(true);
+ if (isFailed()) {
+ if (result == null || result.isBetterThan(Result.FAILURE)) {
+ resultField.set(build, Result.FAILURE);
+ }
+ return;
+ }
+ if (isUnstable()) {
+ if (result == null || result.isBetterThan(Result.UNSTABLE)) {
+ resultField.set(build, Result.UNSTABLE);
+ }
+ }
+ } catch (NoSuchFieldException e) {
+ throw new RuntimeException("Could not get resultField from build.", e);
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException("Could not set value for resultField.", e);
}
- if (isUnstable()) {
- build.setResult(Result.UNSTABLE);
+ }
+
+ // http://stackoverflow.com/a/735311/49132
+ private static Field getField(Class clazz, String fieldName) throws NoSuchFieldException {
+ try {
+ return clazz.getDeclaredField(fieldName);
+ } catch (NoSuchFieldException e) {
+ Class superClass = clazz.getSuperclass();
+ if (superClass == null) {
+ throw e;
+ } else {
+ return getField(superClass, fieldName);
+ }
}
}
-
+
private static final long serialVersionUID = 1L;
public static ViolationsReport findViolationsReport(
diff --git a/src/main/java/hudson/plugins/violations/graph/SeverityTypeDataSet.java b/src/main/java/hudson/plugins/violations/graph/SeverityTypeDataSet.java
index 7ac238d..e184ce8 100644
--- a/src/main/java/hudson/plugins/violations/graph/SeverityTypeDataSet.java
+++ b/src/main/java/hudson/plugins/violations/graph/SeverityTypeDataSet.java
@@ -1,5 +1,6 @@
package hudson.plugins.violations.graph;
+import hudson.model.Run;
import org.jfree.data.category.CategoryDataset;
import hudson.util.DataSetBuilder;
@@ -81,15 +82,15 @@ public CategoryDataset buildDataSet() {
nums[Severity.MEDIUM_VALUE] + nums[Severity.MEDIUM_HIGH_VALUE]
+ nums[Severity.MEDIUM_LOW_VALUE],
MEDIUM_ROW,
- new NumberOnlyBuildLabel(r.getBuild()));
+ new NumberOnlyBuildLabel((Run)r.getBuild()));
builder.add(
nums[Severity.HIGH_VALUE],
HIGH_ROW,
- new NumberOnlyBuildLabel(r.getBuild()));
+ new NumberOnlyBuildLabel((Run)r.getBuild()));
builder.add(
nums[Severity.LOW_VALUE],
LOW_ROW,
- new NumberOnlyBuildLabel(r.getBuild()));
+ new NumberOnlyBuildLabel((Run)r.getBuild()));
}
return builder.build();
}
diff --git a/src/main/java/hudson/plugins/violations/hudson/AbstractViolationsBuildAction.java b/src/main/java/hudson/plugins/violations/hudson/AbstractViolationsBuildAction.java
index 0862ab8..64e8353 100644
--- a/src/main/java/hudson/plugins/violations/hudson/AbstractViolationsBuildAction.java
+++ b/src/main/java/hudson/plugins/violations/hudson/AbstractViolationsBuildAction.java
@@ -6,6 +6,7 @@
import java.awt.Color;
import java.awt.BasicStroke;
+import hudson.model.*;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
@@ -24,12 +25,6 @@
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerProxy;
-import hudson.model.Action;
-import hudson.model.Actionable;
-import hudson.model.HealthReportingAction;
-import hudson.model.HealthReport;
-import hudson.model.AbstractBuild;
-
import hudson.util.ChartUtil;
import hudson.util.DataSetBuilder;
import hudson.util.ShiftedCategoryAxis;
@@ -192,7 +187,7 @@ req, rsp, new SeverityTypeDataSet(
for (ViolationsReport r: ViolationsReport.iteration(getBuild())) {
ChartUtil.NumberOnlyBuildLabel label
- = new ChartUtil.NumberOnlyBuildLabel(r.getBuild());
+ = new ChartUtil.NumberOnlyBuildLabel((Run)r.getBuild());
for (String ty: r.getViolations().keySet()) {
dsb.add(roundUp(r.getViolations().get(ty)), ty, label);
}