25
25
import org .kohsuke .accmod .Restricted ;
26
26
import org .kohsuke .accmod .restrictions .NoExternalUse ;
27
27
import org .kohsuke .stapler .DataBoundConstructor ;
28
+ import org .kohsuke .stapler .DataBoundSetter ;
28
29
29
30
/**
30
- * A {@link Discovery} trait for GitLab that will discover merge requests from forks of the
31
+ * A {@link Discovery} trait for GitLab that will discover merge requests from
32
+ * forks of the
31
33
* project.
32
34
*/
33
35
public class ForkMergeRequestDiscoveryTrait extends SCMSourceTrait {
@@ -40,35 +42,41 @@ public class ForkMergeRequestDiscoveryTrait extends SCMSourceTrait {
40
42
* The authority.
41
43
*/
42
44
@ NonNull
43
- private final SCMHeadAuthority <? super GitLabSCMSourceRequest , ? extends ChangeRequestSCMHead2 , ? extends
44
- SCMRevision >
45
- trust ;
45
+ private final SCMHeadAuthority <? super GitLabSCMSourceRequest , ? extends ChangeRequestSCMHead2 , ? extends SCMRevision > trust ;
46
+ /**
47
+ * Build MR for Forks that are not Mirrors
48
+ */
49
+ private boolean buildMRForksNotMirror = false ;
46
50
47
51
/**
48
52
* Constructor for stapler.
49
53
*
50
- * @param strategyId the strategy id.
51
- * @param trust the authority to use.
54
+ * @param strategyId the strategy id.
55
+ * @param trust the authority to use.
56
+ * @param buildMRForksNotMirror the buildMRForksNotMirror flag
52
57
*/
53
58
@ DataBoundConstructor
54
59
public ForkMergeRequestDiscoveryTrait (int strategyId ,
55
- @ NonNull SCMHeadAuthority <? super GitLabSCMSourceRequest , ? extends
56
- ChangeRequestSCMHead2 , ? extends SCMRevision > trust ) {
60
+ @ NonNull SCMHeadAuthority <? super GitLabSCMSourceRequest , ? extends ChangeRequestSCMHead2 , ? extends SCMRevision > trust ,
61
+ boolean buildMRForksNotMirror ) {
57
62
this .strategyId = strategyId ;
58
63
this .trust = trust ;
64
+ this .buildMRForksNotMirror = buildMRForksNotMirror ;
59
65
}
60
66
61
67
/**
62
68
* Constructor for programmatic instantiation.
63
69
*
64
- * @param strategies the {@link ChangeRequestCheckoutStrategy} instances.
65
- * @param trust the authority.
70
+ * @param strategies the {@link ChangeRequestCheckoutStrategy}
71
+ * instances.
72
+ * @param trust the authority.
73
+ * @param buildMRForksNotMirror the buildMRForksNotMirror flag
66
74
*/
67
75
public ForkMergeRequestDiscoveryTrait (@ NonNull Set <ChangeRequestCheckoutStrategy > strategies ,
68
- @ NonNull SCMHeadAuthority <? super GitLabSCMSourceRequest , ? extends
69
- ChangeRequestSCMHead2 , ? extends SCMRevision > trust ) {
76
+ @ NonNull SCMHeadAuthority <? super GitLabSCMSourceRequest , ? extends ChangeRequestSCMHead2 , ? extends SCMRevision > trust ,
77
+ boolean buildMRForksNotMirror ) {
70
78
this ((strategies .contains (ChangeRequestCheckoutStrategy .MERGE ) ? 1 : 0 )
71
- + (strategies .contains (ChangeRequestCheckoutStrategy .HEAD ) ? 2 : 0 ), trust );
79
+ + (strategies .contains (ChangeRequestCheckoutStrategy .HEAD ) ? 2 : 0 ), trust , buildMRForksNotMirror );
72
80
}
73
81
74
82
/**
@@ -94,7 +102,7 @@ public Set<ChangeRequestCheckoutStrategy> getStrategies() {
94
102
return EnumSet .of (ChangeRequestCheckoutStrategy .HEAD );
95
103
case 3 :
96
104
return EnumSet
97
- .of (ChangeRequestCheckoutStrategy .HEAD , ChangeRequestCheckoutStrategy .MERGE );
105
+ .of (ChangeRequestCheckoutStrategy .HEAD , ChangeRequestCheckoutStrategy .MERGE );
98
106
default :
99
107
return EnumSet .noneOf (ChangeRequestCheckoutStrategy .class );
100
108
}
@@ -106,11 +114,27 @@ public Set<ChangeRequestCheckoutStrategy> getStrategies() {
106
114
* @return the authority.
107
115
*/
108
116
@ NonNull
109
- public SCMHeadAuthority <? super GitLabSCMSourceRequest , ? extends ChangeRequestSCMHead2 , ? extends SCMRevision >
110
- getTrust () {
117
+ public SCMHeadAuthority <? super GitLabSCMSourceRequest , ? extends ChangeRequestSCMHead2 , ? extends SCMRevision > getTrust () {
111
118
return trust ;
112
119
}
113
120
121
+ /**
122
+ * Gets the buildMRForksNotMirror
123
+ *
124
+ * @return true to build MR for Forks that are not Mirror
125
+ */
126
+ public boolean getBuildMRForksNotMirror () {
127
+ return buildMRForksNotMirror ;
128
+ }
129
+
130
+ /**
131
+ * Setter for stapler to set the buildMRForksNotMirror
132
+ */
133
+ @ DataBoundSetter
134
+ public void setBuildMRForksNotMirror (boolean buildMRForksNotMirror ) {
135
+ this .buildMRForksNotMirror = buildMRForksNotMirror ;
136
+ }
137
+
114
138
/**
115
139
* {@inheritDoc}
116
140
*/
@@ -120,6 +144,7 @@ protected void decorateContext(SCMSourceContext<?, ?> context) {
120
144
ctx .wantForkMRs (true );
121
145
ctx .withAuthority (trust );
122
146
ctx .withForkMRStrategies (getStrategies ());
147
+ ctx .withBuildMRForksNotMirror (getBuildMRForksNotMirror ());
123
148
}
124
149
125
150
/**
@@ -188,17 +213,18 @@ public ListBoxModel doFillStrategyIdItems() {
188
213
@ SuppressWarnings ("unused" ) // stapler
189
214
public List <SCMHeadAuthorityDescriptor > getTrustDescriptors () {
190
215
return SCMHeadAuthority ._for (
191
- GitLabSCMSourceRequest .class ,
192
- MergeRequestSCMHead .class ,
193
- MergeRequestSCMRevision .class ,
194
- SCMHeadOrigin .Fork .class
195
- );
216
+ GitLabSCMSourceRequest .class ,
217
+ MergeRequestSCMHead .class ,
218
+ MergeRequestSCMRevision .class ,
219
+ SCMHeadOrigin .Fork .class );
196
220
}
197
221
198
222
/**
199
- * Returns the default trust for new instances of {@link ForkMergeRequestDiscoveryTrait}.
223
+ * Returns the default trust for new instances of
224
+ * {@link ForkMergeRequestDiscoveryTrait}.
200
225
*
201
- * @return the default trust for new instances of {@link ForkMergeRequestDiscoveryTrait}.
226
+ * @return the default trust for new instances of
227
+ * {@link ForkMergeRequestDiscoveryTrait}.
202
228
*/
203
229
@ NonNull
204
230
@ SuppressWarnings ("unused" ) // stapler
@@ -207,12 +233,11 @@ public List<SCMHeadAuthorityDescriptor> getTrustDescriptors() {
207
233
}
208
234
}
209
235
210
-
211
236
/**
212
237
* An {@link SCMHeadAuthority} that trusts nothing.
213
238
*/
214
239
public static class TrustNobody extends
215
- SCMHeadAuthority <SCMSourceRequest , ChangeRequestSCMHead2 , SCMRevision > {
240
+ SCMHeadAuthority <SCMSourceRequest , ChangeRequestSCMHead2 , SCMRevision > {
216
241
217
242
/**
218
243
* Constructor.
@@ -226,7 +251,7 @@ public TrustNobody() {
226
251
*/
227
252
@ Override
228
253
public boolean checkTrusted (@ NonNull SCMSourceRequest request ,
229
- @ NonNull ChangeRequestSCMHead2 head ) {
254
+ @ NonNull ChangeRequestSCMHead2 head ) {
230
255
return false ;
231
256
}
232
257
@@ -242,7 +267,7 @@ public static class DescriptorImpl extends SCMHeadAuthorityDescriptor {
242
267
*/
243
268
@ Override
244
269
public boolean isApplicableToOrigin (
245
- @ NonNull Class <? extends SCMHeadOrigin > originClass ) {
270
+ @ NonNull Class <? extends SCMHeadOrigin > originClass ) {
246
271
return SCMHeadOrigin .Fork .class .isAssignableFrom (originClass );
247
272
}
248
273
@@ -255,16 +280,15 @@ public String getDisplayName() {
255
280
return Messages .ForkMergeRequestDiscoveryTrait_nobodyDisplayName ();
256
281
}
257
282
258
-
259
283
}
260
284
}
261
285
262
286
/**
263
287
* An {@link SCMHeadAuthority} that trusts Members to the project.
264
288
*/
265
289
public static class TrustMembers
266
- extends
267
- SCMHeadAuthority <GitLabSCMSourceRequest , MergeRequestSCMHead , MergeRequestSCMRevision > {
290
+ extends
291
+ SCMHeadAuthority <GitLabSCMSourceRequest , MergeRequestSCMHead , MergeRequestSCMRevision > {
268
292
269
293
/**
270
294
* Constructor.
@@ -278,7 +302,7 @@ public TrustMembers() {
278
302
*/
279
303
@ Override
280
304
protected boolean checkTrusted (@ NonNull GitLabSCMSourceRequest request ,
281
- @ NonNull MergeRequestSCMHead head ) {
305
+ @ NonNull MergeRequestSCMHead head ) {
282
306
if (head .getOrigin ().equals (SCMHeadOrigin .DEFAULT )) {
283
307
return false ;
284
308
}
@@ -307,19 +331,20 @@ public String getDisplayName() {
307
331
*/
308
332
@ Override
309
333
public boolean isApplicableToOrigin (
310
- @ NonNull Class <? extends SCMHeadOrigin > originClass ) {
334
+ @ NonNull Class <? extends SCMHeadOrigin > originClass ) {
311
335
return SCMHeadOrigin .Fork .class .isAssignableFrom (originClass );
312
336
}
313
337
314
338
}
315
339
}
316
340
317
341
/**
318
- * An {@link SCMHeadAuthority} that trusts those with required permission to the project.
342
+ * An {@link SCMHeadAuthority} that trusts those with required permission to the
343
+ * project.
319
344
*/
320
345
public static class TrustPermission
321
- extends
322
- SCMHeadAuthority <GitLabSCMSourceRequest , MergeRequestSCMHead , MergeRequestSCMRevision > {
346
+ extends
347
+ SCMHeadAuthority <GitLabSCMSourceRequest , MergeRequestSCMHead , MergeRequestSCMRevision > {
323
348
324
349
/**
325
350
* Constructor.
@@ -333,7 +358,7 @@ public TrustPermission() {
333
358
*/
334
359
@ Override
335
360
protected boolean checkTrusted (@ NonNull GitLabSCMSourceRequest request ,
336
- @ NonNull MergeRequestSCMHead head ) {
361
+ @ NonNull MergeRequestSCMHead head ) {
337
362
if (!head .getOrigin ().equals (SCMHeadOrigin .DEFAULT )) {
338
363
AccessLevel permission = request .getPermission (head .getOriginOwner ());
339
364
if (permission != null ) {
@@ -371,7 +396,7 @@ public String getDisplayName() {
371
396
*/
372
397
@ Override
373
398
public boolean isApplicableToOrigin (
374
- @ NonNull Class <? extends SCMHeadOrigin > originClass ) {
399
+ @ NonNull Class <? extends SCMHeadOrigin > originClass ) {
375
400
return SCMHeadOrigin .Fork .class .isAssignableFrom (originClass );
376
401
}
377
402
}
@@ -381,7 +406,7 @@ public boolean isApplicableToOrigin(
381
406
* An {@link SCMHeadAuthority} that trusts everyone.
382
407
*/
383
408
public static class TrustEveryone extends
384
- SCMHeadAuthority <SCMSourceRequest , ChangeRequestSCMHead2 , SCMRevision > {
409
+ SCMHeadAuthority <SCMSourceRequest , ChangeRequestSCMHead2 , SCMRevision > {
385
410
386
411
/**
387
412
* Constructor.
@@ -395,7 +420,7 @@ public TrustEveryone() {
395
420
*/
396
421
@ Override
397
422
protected boolean checkTrusted (@ NonNull SCMSourceRequest request ,
398
- @ NonNull ChangeRequestSCMHead2 head ) {
423
+ @ NonNull ChangeRequestSCMHead2 head ) {
399
424
return true ;
400
425
}
401
426
@@ -420,7 +445,7 @@ public String getDisplayName() {
420
445
*/
421
446
@ Override
422
447
public boolean isApplicableToOrigin (
423
- @ NonNull Class <? extends SCMHeadOrigin > originClass ) {
448
+ @ NonNull Class <? extends SCMHeadOrigin > originClass ) {
424
449
return SCMHeadOrigin .Fork .class .isAssignableFrom (originClass );
425
450
}
426
451
}
0 commit comments