Skip to content

Commit 2c0da93

Browse files
committed
[JENKINS-41591] Fix pipeline support using TransientActionFactory
1 parent 78990a8 commit 2c0da93

File tree

3 files changed

+34
-82
lines changed

3 files changed

+34
-82
lines changed

src/main/java/com/sonyericsson/rebuild/RebuildActionFactory.java

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,15 @@
2323
*/
2424
package com.sonyericsson.rebuild;
2525

26-
import hudson.matrix.MatrixConfiguration;
2726
import hudson.Extension;
27+
import hudson.matrix.MatrixConfiguration;
2828
import hudson.model.Action;
2929
import hudson.model.Queue;
3030
import hudson.model.Run;
31-
import hudson.model.TransientBuildActionFactory;
3231
import jenkins.model.Jenkins;
32+
import jenkins.model.TransientActionFactory;
3333

34+
import javax.annotation.Nonnull;
3435
import java.util.Collection;
3536

3637
import static java.util.Collections.emptyList;
@@ -40,28 +41,34 @@
4041
* Enables rebuild for builds that ran before installing the rebuild plugin.
4142
*/
4243
@Extension
43-
public class RebuildActionFactory extends TransientBuildActionFactory {
44+
public class RebuildActionFactory extends TransientActionFactory<Run> {
45+
46+
@Override
47+
public Class<Run> type() {
48+
return Run.class;
49+
}
4450

51+
@Nonnull
4552
@Override
46-
public Collection<? extends Action> createFor(Run build) {
53+
public Collection<? extends Action> createFor(@Nonnull Run run) {
54+
4755
// TODO should this not just use RebuildAction.isRebuildAvailable? Or conversely, is that method needed if we are already filtering here?
48-
if (build.getParent() instanceof MatrixConfiguration) {
49-
return emptyList();
50-
}
51-
if (!(build.getParent() instanceof Queue.Task)) {
56+
if (run.getParent() instanceof MatrixConfiguration) {
5257
return emptyList();
5358
}
54-
55-
boolean hasRebuildAction = build.getAction(RebuildAction.class) != null;
56-
if (hasRebuildAction) {
59+
if (!(run.getParent() instanceof Queue.Task)) {
5760
return emptyList();
5861
}
59-
for (RebuildValidator rebuildValidator : Jenkins.getInstance().
62+
63+
for (RebuildValidator rebuildValidator : Jenkins.getInstanceOrNull().
6064
getExtensionList(RebuildValidator.class)) {
61-
if (rebuildValidator.isApplicable(build)) {
65+
if (rebuildValidator.isApplicable(run)) {
6266
return emptyList();
6367
}
6468
}
69+
6570
return singleton(new RebuildAction());
6671
}
72+
73+
6774
}

src/main/java/com/sonyericsson/rebuild/RebuildProjectActionFactory.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,28 +23,34 @@
2323
*/
2424
package com.sonyericsson.rebuild;
2525

26-
import hudson.matrix.MatrixConfiguration;
2726
import hudson.Extension;
28-
import hudson.model.AbstractProject;
27+
import hudson.matrix.MatrixConfiguration;
2928
import hudson.model.Action;
30-
import hudson.model.TransientProjectActionFactory;
29+
import hudson.model.Job;
30+
import jenkins.model.TransientActionFactory;
3131

32+
import javax.annotation.Nonnull;
3233
import java.util.Collection;
3334

34-
import static java.util.Collections.singleton;
3535
import static java.util.Collections.emptyList;
36+
import static java.util.Collections.singleton;
3637

3738
/**
3839
* Makes the rebuild button available on the project level.
3940
* Rebuilds the last completed build.
4041
*/
4142
@Extension
42-
// TODO when depending on 1.548+, switch to TransientActionFactory (also for RebuildActionFactory) and take Job not AbstractProject (again consider consolidating logic with isRebuildAvailable)
43-
public class RebuildProjectActionFactory extends TransientProjectActionFactory {
43+
public class RebuildProjectActionFactory extends TransientActionFactory<Job> {
44+
45+
@Override
46+
public Class<Job> type() {
47+
return Job.class;
48+
}
4449

50+
@Nonnull
4551
@Override
46-
public Collection<? extends Action> createFor(AbstractProject abstractProject) {
47-
if (abstractProject instanceof MatrixConfiguration) {
52+
public Collection<? extends Action> createFor(@Nonnull Job job) {
53+
if (job instanceof MatrixConfiguration) {
4854
return emptyList();
4955
}
5056
return singleton(new RebuildLastCompletedBuildAction());

src/main/java/com/sonyericsson/rebuild/Rebuilder.java

Lines changed: 0 additions & 61 deletions
This file was deleted.

0 commit comments

Comments
 (0)