Skip to content

Commit 7253118

Browse files
Frode AannevikFrode Aannevik
authored andcommitted
Add support for Jenkins 2 (incomplete)
Replace use of AbstractProject with Job to fix ClassCastException thrown when using the plugin in a pipeline job The fix is "not" complete, it remains to find a replacement to the call AbstractProject.isDisabled used to decide if the build should be skipped Previously called in BitbucketBuildTrigger.run() fixes #94
1 parent 5472f5a commit 7253118

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuildTrigger.java

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import hudson.triggers.TriggerDescriptor;
1515
import hudson.util.ListBoxModel;
1616
import jenkins.model.Jenkins;
17+
import jenkins.model.ParameterizedJobMixIn;
1718
import net.sf.json.JSONObject;
1819
import org.apache.commons.lang.StringUtils;
1920
import org.kohsuke.stapler.DataBoundConstructor;
@@ -33,7 +34,7 @@
3334
/**
3435
* Created by nishio
3536
*/
36-
public class BitbucketBuildTrigger extends Trigger<AbstractProject<?, ?>> {
37+
public class BitbucketBuildTrigger extends Trigger<Job<?, ?>> {
3738
private static final Logger logger = Logger.getLogger(BitbucketBuildTrigger.class.getName());
3839
private final String projectPath;
3940
private final String cron;
@@ -153,7 +154,7 @@ public boolean getCancelOutdatedJobs() {
153154
}
154155

155156
@Override
156-
public void start(AbstractProject<?, ?> project, boolean newInstance) {
157+
public void start(Job<?, ?> project, boolean newInstance) {
157158
try {
158159
this.bitbucketPullRequestsBuilder = BitbucketPullRequestsBuilder.getBuilder();
159160
this.bitbucketPullRequestsBuilder.setProject(project);
@@ -175,6 +176,16 @@ public BitbucketPullRequestsBuilder getBuilder() {
175176
return this.bitbucketPullRequestsBuilder;
176177
}
177178

179+
private ParameterizedJobMixIn retrieveScheduleJob(final Job<?, ?> job) {
180+
// TODO 1.621+ use standard method
181+
return new ParameterizedJobMixIn() {
182+
@Override
183+
protected Job asJob() {
184+
return job;
185+
}
186+
};
187+
}
188+
178189
public QueueTaskFuture<?> startJob(BitbucketCause cause) {
179190
Map<String, ParameterValue> values = this.getDefaultParameters();
180191

@@ -183,7 +194,10 @@ public QueueTaskFuture<?> startJob(BitbucketCause cause) {
183194
abortRunningJobsThatMatch(cause);
184195
}
185196

186-
return this.job.scheduleBuild2(0, cause, new ParametersAction(new ArrayList(values.values())), new RevisionParameterAction(cause.getSourceCommitHash()));
197+
return retrieveScheduleJob(this.job).scheduleBuild2(0,
198+
new CauseAction(cause),
199+
new ParametersAction(new ArrayList(values.values())),
200+
new RevisionParameterAction(cause.getSourceCommitHash()));
187201
}
188202

189203
private void cancelPreviousJobsInQueueThatMatch(@Nonnull BitbucketCause bitbucketCause) {
@@ -239,11 +253,8 @@ private Map<String, ParameterValue> getDefaultParameters() {
239253

240254
@Override
241255
public void run() {
242-
if(this.getBuilder().getProject().isDisabled()) {
243-
logger.info("Build Skip.");
244-
} else {
245-
this.bitbucketPullRequestsBuilder.run();
246-
}
256+
logger.log(Level.INFO, "TODO: check if project is disabled before calling bitbucketPullRequestsBuilder.run()");
257+
this.bitbucketPullRequestsBuilder.run();
247258
this.getDescriptor().save();
248259
}
249260

@@ -259,7 +270,7 @@ public BitbucketBuildTriggerDescriptor() {
259270

260271
@Override
261272
public boolean isApplicable(Item item) {
262-
return true;
273+
return item instanceof Job && item instanceof ParameterizedJobMixIn.ParameterizedJob;
263274
}
264275

265276
@Override

src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketPullRequestsBuilder.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder;
22

33
import bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket.Pullrequest;
4-
import hudson.model.AbstractProject;
54

65
import java.io.UnsupportedEncodingException;
76
import java.security.MessageDigest;
@@ -11,14 +10,15 @@
1110
import java.util.logging.Level;
1211
import java.util.logging.Logger;
1312

13+
import hudson.model.Job;
1414
import org.apache.commons.codec.binary.Hex;
1515

1616
/**
1717
* Created by nishio
1818
*/
1919
public class BitbucketPullRequestsBuilder {
2020
private static final Logger logger = Logger.getLogger(BitbucketBuildTrigger.class.getName());
21-
private AbstractProject<?, ?> project;
21+
private Job<?, ?> project;
2222
private BitbucketBuildTrigger trigger;
2323
private BitbucketRepository repository;
2424
private BitbucketBuilds builds;
@@ -47,15 +47,15 @@ public BitbucketPullRequestsBuilder setupBuilder() {
4747
return this;
4848
}
4949

50-
public void setProject(AbstractProject<?, ?> project) {
50+
public void setProject(Job<?, ?> project) {
5151
this.project = project;
5252
}
5353

5454
public void setTrigger(BitbucketBuildTrigger trigger) {
5555
this.trigger = trigger;
5656
}
5757

58-
public AbstractProject<?, ?> getProject() {
58+
public Job<?, ?> getProject() {
5959
return this.project;
6060
}
6161

@@ -73,6 +73,7 @@ public String getProjectId() {
7373
logger.log(Level.WARNING, "Failed to produce hash", exc);
7474
}
7575
return this.project.getFullName();
76+
7677
}
7778

7879
public BitbucketBuildTrigger getTrigger() {

0 commit comments

Comments
 (0)