|
23 | 23 | */
|
24 | 24 | package com.sonyericsson.rebuild;
|
25 | 25 |
|
26 |
| -import hudson.matrix.MatrixConfiguration; |
27 | 26 | import hudson.Extension;
|
| 27 | +import hudson.matrix.MatrixConfiguration; |
28 | 28 | import hudson.model.Action;
|
29 | 29 | import hudson.model.Queue;
|
30 | 30 | import hudson.model.Run;
|
31 |
| -import hudson.model.TransientBuildActionFactory; |
32 | 31 | import jenkins.model.Jenkins;
|
| 32 | +import jenkins.model.TransientActionFactory; |
33 | 33 |
|
| 34 | +import javax.annotation.Nonnull; |
34 | 35 | import java.util.Collection;
|
35 | 36 |
|
36 | 37 | import static java.util.Collections.emptyList;
|
|
40 | 41 | * Enables rebuild for builds that ran before installing the rebuild plugin.
|
41 | 42 | */
|
42 | 43 | @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 | + } |
44 | 50 |
|
| 51 | + @Nonnull |
45 | 52 | @Override
|
46 |
| - public Collection<? extends Action> createFor(Run build) { |
| 53 | + public Collection<? extends Action> createFor(@Nonnull Run run) { |
| 54 | + |
47 | 55 | // 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) { |
52 | 57 | return emptyList();
|
53 | 58 | }
|
54 |
| - |
55 |
| - boolean hasRebuildAction = build.getAction(RebuildAction.class) != null; |
56 |
| - if (hasRebuildAction) { |
| 59 | + if (!(run.getParent() instanceof Queue.Task)) { |
57 | 60 | return emptyList();
|
58 | 61 | }
|
59 |
| - for (RebuildValidator rebuildValidator : Jenkins.getInstance(). |
| 62 | + |
| 63 | + for (RebuildValidator rebuildValidator : Jenkins.getInstanceOrNull(). |
60 | 64 | getExtensionList(RebuildValidator.class)) {
|
61 |
| - if (rebuildValidator.isApplicable(build)) { |
| 65 | + if (rebuildValidator.isApplicable(run)) { |
62 | 66 | return emptyList();
|
63 | 67 | }
|
64 | 68 | }
|
| 69 | + |
65 | 70 | return singleton(new RebuildAction());
|
66 | 71 | }
|
| 72 | + |
| 73 | + |
67 | 74 | }
|
0 commit comments