Skip to content

Commit b4bec70

Browse files
committed
Make fields for BranchFilter and WebHookTriggerHandler transient and initialize them with readResolve in the GitLabPushTrigger
1 parent b869300 commit b4bec70

20 files changed

+81
-210
lines changed

src/main/java/com/dabsquared/gitlabjenkins/GitLabPushTrigger.java

Lines changed: 62 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,16 @@
1111
import com.dabsquared.gitlabjenkins.trigger.filter.BranchFilter;
1212
import com.dabsquared.gitlabjenkins.trigger.filter.BranchFilterFactory;
1313
import com.dabsquared.gitlabjenkins.trigger.filter.BranchFilterType;
14-
import com.dabsquared.gitlabjenkins.trigger.handler.WebHookTriggerConfig;
1514
import com.dabsquared.gitlabjenkins.trigger.handler.merge.MergeRequestHookTriggerHandler;
16-
import com.dabsquared.gitlabjenkins.trigger.handler.merge.MergeRequestHookTriggerHandlerFactory;
1715
import com.dabsquared.gitlabjenkins.trigger.handler.push.PushHookTriggerHandler;
18-
import com.dabsquared.gitlabjenkins.trigger.handler.push.PushHookTriggerHandlerFactory;
1916
import com.dabsquared.gitlabjenkins.webhook.GitLabWebHook;
2017
import hudson.Extension;
2118
import hudson.Util;
2219
import hudson.init.InitMilestone;
2320
import hudson.init.Initializer;
21+
import hudson.model.AbstractProject;
2422
import hudson.model.AutoCompletionCandidates;
2523
import hudson.model.Item;
26-
import hudson.model.AbstractProject;
2724
import hudson.model.Job;
2825
import hudson.triggers.Trigger;
2926
import hudson.triggers.TriggerDescriptor;
@@ -35,7 +32,6 @@
3532
import jenkins.model.ParameterizedJobMixIn;
3633
import jenkins.triggers.SCMTriggerItem.SCMTriggerItems;
3734
import net.sf.json.JSONObject;
38-
import org.apache.commons.lang.StringUtils;
3935
import org.kohsuke.stapler.Ancestor;
4036
import org.kohsuke.stapler.AncestorInPath;
4137
import org.kohsuke.stapler.DataBoundConstructor;
@@ -44,32 +40,36 @@
4440
import org.kohsuke.stapler.StaplerRequest;
4541

4642
import java.io.IOException;
43+
import java.io.ObjectStreamException;
4744

4845
import static com.dabsquared.gitlabjenkins.trigger.filter.BranchFilterConfig.BranchFilterConfigBuilder.branchFilterConfig;
46+
import static com.dabsquared.gitlabjenkins.trigger.handler.merge.MergeRequestHookTriggerHandlerFactory.newMergeRequestHookTriggerHandler;
47+
import static com.dabsquared.gitlabjenkins.trigger.handler.push.PushHookTriggerHandlerFactory.newPushHookTriggerHandler;
4948

5049

5150
/**
5251
* Triggers a build when we receive a GitLab WebHook.
5352
*
5453
* @author Daniel Brooks
5554
*/
56-
public class GitLabPushTrigger extends Trigger<Job<?, ?>> implements WebHookTriggerConfig {
57-
private transient boolean triggerOnPush = true;
58-
private transient boolean triggerOnMergeRequest = true;
55+
public class GitLabPushTrigger extends Trigger<Job<?, ?>> {
56+
private boolean triggerOnPush = true;
57+
private boolean triggerOnMergeRequest = true;
5958
private final TriggerOpenMergeRequest triggerOpenMergeRequestOnPush;
6059
private boolean ciSkip = true;
6160
private boolean setBuildDescription = true;
6261
private boolean addNoteOnMergeRequest = true;
6362
private boolean addCiMessage = false;
6463
private boolean addVoteOnMergeRequest = true;
6564
private transient boolean allowAllBranches = false;
66-
private transient String branchFilterName;
67-
private transient String includeBranchesSpec;
68-
private transient String excludeBranchesSpec;
69-
private transient String targetBranchRegex;
70-
private BranchFilter branchFilter;
71-
private PushHookTriggerHandler pushHookTriggerHandler;
72-
private MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler;
65+
private transient BranchFilterType branchFilterName;
66+
private BranchFilterType branchFilterType;
67+
private String includeBranchesSpec;
68+
private String excludeBranchesSpec;
69+
private String targetBranchRegex;
70+
private transient BranchFilter branchFilter;
71+
private transient PushHookTriggerHandler pushHookTriggerHandler;
72+
private transient MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler;
7373
private boolean acceptMergeRequestOnSuccess = false;
7474

7575

@@ -78,28 +78,30 @@ public GitLabPushTrigger(boolean triggerOnPush, boolean triggerOnMergeRequest, T
7878
boolean ciSkip, boolean setBuildDescription, boolean addNoteOnMergeRequest, boolean addCiMessage,
7979
boolean addVoteOnMergeRequest, boolean acceptMergeRequestOnSuccess, BranchFilterType branchFilterType,
8080
String includeBranchesSpec, String excludeBranchesSpec, String targetBranchRegex) {
81-
mergeRequestHookTriggerHandler = MergeRequestHookTriggerHandlerFactory.newMergeRequestHookTriggerHandler(triggerOnMergeRequest, triggerOpenMergeRequestOnPush);
82-
pushHookTriggerHandler = PushHookTriggerHandlerFactory.newPushHookTriggerHandler(triggerOnPush, triggerOpenMergeRequestOnPush);
81+
this.triggerOnPush = triggerOnPush;
82+
this.triggerOnMergeRequest = triggerOnMergeRequest;
8383
this.triggerOpenMergeRequestOnPush = triggerOpenMergeRequestOnPush;
8484
this.ciSkip = ciSkip;
8585
this.setBuildDescription = setBuildDescription;
8686
this.addNoteOnMergeRequest = addNoteOnMergeRequest;
8787
this.addCiMessage = addCiMessage;
8888
this.addVoteOnMergeRequest = addVoteOnMergeRequest;
89-
this.branchFilter = BranchFilterFactory.newBranchFilter(branchFilterConfig()
90-
.withIncludeBranchesSpec(includeBranchesSpec)
91-
.withExcludeBranchesSpec(excludeBranchesSpec)
92-
.withTargetBranchRegex(targetBranchRegex)
93-
.build(branchFilterType));
89+
this.branchFilterType = branchFilterType;
90+
this.includeBranchesSpec = includeBranchesSpec;
91+
this.excludeBranchesSpec = excludeBranchesSpec;
92+
this.targetBranchRegex = targetBranchRegex;
9493
this.acceptMergeRequestOnSuccess = acceptMergeRequestOnSuccess;
94+
95+
initializeTriggerHandler();
96+
initializeBranchFilter();
9597
}
9698

9799
public boolean getTriggerOnPush() {
98-
return pushHookTriggerHandler.isEnabled();
100+
return triggerOnPush;
99101
}
100102

101103
public boolean getTriggerOnMergeRequest() {
102-
return mergeRequestHookTriggerHandler.isEnabled();
104+
return triggerOnMergeRequest;
103105
}
104106

105107
public TriggerOpenMergeRequest getTriggerOpenMergeRequestOnPush() {
@@ -122,14 +124,24 @@ public boolean getAcceptMergeRequestOnSuccess() {
122124
return acceptMergeRequestOnSuccess;
123125
}
124126

125-
@Override
126127
public boolean getCiSkip() {
127128
return ciSkip;
128129
}
129130

130-
@Override
131-
public BranchFilter getBranchFilter() {
132-
return branchFilter;
131+
public BranchFilterType getBranchFilterType() {
132+
return branchFilterType;
133+
}
134+
135+
public String getIncludeBranchesSpec() {
136+
return includeBranchesSpec;
137+
}
138+
139+
public String getExcludeBranchesSpec() {
140+
return excludeBranchesSpec;
141+
}
142+
143+
public String getTargetBranchRegex() {
144+
return targetBranchRegex;
133145
}
134146

135147
// executes when the Trigger receives a push request
@@ -142,6 +154,26 @@ public void onPost(final MergeRequestHook hook) {
142154
mergeRequestHookTriggerHandler.handle(job, hook, ciSkip, branchFilter);
143155
}
144156

157+
private void initializeTriggerHandler() {
158+
mergeRequestHookTriggerHandler = newMergeRequestHookTriggerHandler(triggerOnMergeRequest, triggerOpenMergeRequestOnPush);
159+
pushHookTriggerHandler = newPushHookTriggerHandler(triggerOnPush, triggerOpenMergeRequestOnPush);
160+
}
161+
162+
private void initializeBranchFilter() {
163+
branchFilter = BranchFilterFactory.newBranchFilter(branchFilterConfig()
164+
.withIncludeBranchesSpec(includeBranchesSpec)
165+
.withExcludeBranchesSpec(excludeBranchesSpec)
166+
.withTargetBranchRegex(targetBranchRegex)
167+
.build(branchFilterType));
168+
}
169+
170+
@Override
171+
protected Object readResolve() throws ObjectStreamException {
172+
initializeTriggerHandler();
173+
initializeBranchFilter();
174+
return super.readResolve();
175+
}
176+
145177
@Extension
146178
public static class DescriptorImpl extends TriggerDescriptor {
147179

@@ -247,20 +279,8 @@ public static void migrateJobs() throws IOException {
247279
if (trigger.addCiMessage) {
248280
project.getPublishersList().add(new GitLabCommitStatusPublisher());
249281
}
250-
if (trigger.branchFilter == null) {
251-
String name = StringUtils.isNotEmpty(trigger.branchFilterName) ? trigger.branchFilterName : "All";
252-
trigger.branchFilter = BranchFilterFactory.newBranchFilter(branchFilterConfig()
253-
.withIncludeBranchesSpec(trigger.includeBranchesSpec)
254-
.withExcludeBranchesSpec(trigger.excludeBranchesSpec)
255-
.withTargetBranchRegex(trigger.targetBranchRegex)
256-
.build(BranchFilterType.valueOf(name)));
257-
}
258-
if (trigger.pushHookTriggerHandler == null) {
259-
trigger.pushHookTriggerHandler = PushHookTriggerHandlerFactory.newPushHookTriggerHandler(trigger.triggerOnPush, trigger.triggerOpenMergeRequestOnPush);
260-
}
261-
if (trigger.mergeRequestHookTriggerHandler == null) {
262-
trigger.mergeRequestHookTriggerHandler =
263-
MergeRequestHookTriggerHandlerFactory.newMergeRequestHookTriggerHandler(trigger.triggerOnMergeRequest, trigger.triggerOpenMergeRequestOnPush);
282+
if (trigger.branchFilterType == null) {
283+
trigger.branchFilterType = trigger.branchFilterName;
264284
}
265285
project.addProperty(new GitLabConnectionProperty(defaultConnectionName));
266286
project.save();

src/main/java/com/dabsquared/gitlabjenkins/trigger/filter/AllBranchesFilter.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,4 @@ class AllBranchesFilter implements BranchFilter {
88
public boolean isBranchAllowed(String branchName) {
99
return true;
1010
}
11-
12-
@Override
13-
public BranchFilterConfig getConfig() {
14-
return BranchFilterConfig.BranchFilterConfigBuilder.branchFilterConfig().build(BranchFilterType.All);
15-
}
1611
}

src/main/java/com/dabsquared/gitlabjenkins/trigger/filter/BranchFilter.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,4 @@
66
public interface BranchFilter {
77

88
boolean isBranchAllowed(String branchName);
9-
10-
BranchFilterConfig getConfig();
119
}

src/main/java/com/dabsquared/gitlabjenkins/trigger/filter/BranchFilterConfig.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ public BranchFilterType getType() {
2121
return type;
2222
}
2323

24-
public String getIncludeBranchesSpec() {
24+
String getIncludeBranchesSpec() {
2525
return includeBranchesSpec;
2626
}
2727

28-
public String getExcludeBranchesSpec() {
28+
String getExcludeBranchesSpec() {
2929
return excludeBranchesSpec;
3030
}
3131

32-
public String getTargetBranchRegex() {
32+
String getTargetBranchRegex() {
3333
return targetBranchRegex;
3434
}
3535

src/main/java/com/dabsquared/gitlabjenkins/trigger/filter/NameBasedFilter.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
package com.dabsquared.gitlabjenkins.trigger.filter;
22

3-
import com.google.common.base.Joiner;
43
import com.google.common.base.Splitter;
54
import org.springframework.util.AntPathMatcher;
65

76
import java.util.ArrayList;
87
import java.util.List;
98

10-
import static com.dabsquared.gitlabjenkins.trigger.filter.BranchFilterConfig.BranchFilterConfigBuilder.branchFilterConfig;
11-
129
/**
1310
* @author Robin Müller
1411
*/
@@ -27,14 +24,6 @@ public boolean isBranchAllowed(String branchName) {
2724
return hasNoBranchSpecs() || (isBranchNotExcluded(branchName) && isBranchIncluded(branchName));
2825
}
2926

30-
@Override
31-
public BranchFilterConfig getConfig() {
32-
return branchFilterConfig()
33-
.withIncludeBranchesSpec(Joiner.on(", ").join(includedBranches))
34-
.withExcludeBranchesSpec(Joiner.on(", ").join(excludedBranches))
35-
.build(BranchFilterType.NameBasedFilter);
36-
}
37-
3827
private boolean hasNoBranchSpecs() {
3928
return includedBranches.isEmpty() && excludedBranches.isEmpty();
4029
}
@@ -60,7 +49,7 @@ private boolean isBranchIncluded(String branchName) {
6049
}
6150

6251
private List<String> convert(String commaSeparatedString) {
63-
ArrayList<String> result = new ArrayList<String>();
52+
ArrayList<String> result = new ArrayList<>();
6453
for (String s : Splitter.on(',').omitEmptyStrings().trimResults().split(commaSeparatedString)) {
6554
result.add(s);
6655
}

src/main/java/com/dabsquared/gitlabjenkins/trigger/filter/RegexBasedFilter.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
import org.apache.commons.lang.StringUtils;
44

5-
import static com.dabsquared.gitlabjenkins.trigger.filter.BranchFilterConfig.BranchFilterConfigBuilder.branchFilterConfig;
6-
75
/**
86
* @author Robin Müller
97
*/
@@ -19,10 +17,4 @@ public RegexBasedFilter(String regex) {
1917
public boolean isBranchAllowed(String branchName) {
2018
return StringUtils.isEmpty(branchName) || StringUtils.isEmpty(regex) || branchName.matches(regex);
2119
}
22-
23-
@Override
24-
public BranchFilterConfig getConfig() {
25-
return branchFilterConfig().withTargetBranchRegex(regex).build(BranchFilterType.RegexBasedFilter);
26-
}
27-
2820
}

src/main/java/com/dabsquared/gitlabjenkins/trigger/handler/WebHookTriggerConfig.java

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

src/main/java/com/dabsquared/gitlabjenkins/trigger/handler/WebHookTriggerHandler.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,4 @@
1010
public interface WebHookTriggerHandler<H extends WebHook> {
1111

1212
void handle(Job<?, ?> job, H hook, boolean ciSkip, BranchFilter branchFilter);
13-
14-
boolean isEnabled();
1513
}

src/main/java/com/dabsquared/gitlabjenkins/trigger/handler/merge/MergeRequestHookTriggerHandlerImpl.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,6 @@ public void handle(Job<?, ?> job, MergeRequestHook hook, boolean ciSkip, BranchF
4040
}
4141
}
4242

43-
@Override
44-
public boolean isEnabled() {
45-
return true;
46-
}
47-
4843
@Override
4944
protected boolean isCiSkip(MergeRequestHook hook) {
5045
return hook.getObjectAttributes() != null

src/main/java/com/dabsquared/gitlabjenkins/trigger/handler/merge/NopMergeRequestHookTriggerHandler.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,4 @@ class NopMergeRequestHookTriggerHandler implements MergeRequestHookTriggerHandle
1212
public void handle(Job<?, ?> job, MergeRequestHook hook, boolean ciSkip, BranchFilter branchFilter) {
1313
// nothing to do
1414
}
15-
16-
@Override
17-
public boolean isEnabled() {
18-
return false;
19-
}
2015
}

0 commit comments

Comments
 (0)