3939import jenkins .scm .api .trait .SCMHeadAuthority ;
4040import jenkins .scm .api .trait .SCMHeadAuthorityDescriptor ;
4141import jenkins .scm .api .trait .SCMSourceContext ;
42- import jenkins .scm .api .trait .SCMSourceRequest ;
4342import jenkins .scm .api .trait .SCMSourceTrait ;
4443import jenkins .scm .api .trait .SCMSourceTraitDescriptor ;
4544import jenkins .scm .impl .ChangeRequestSCMHeadCategory ;
@@ -83,6 +82,12 @@ public class ForkPullRequestDiscoveryTrait extends SCMSourceTrait {
8382 * @param trust the authority to use.
8483 */
8584 @ DataBoundConstructor
85+ public ForkPullRequestDiscoveryTrait (int strategyId , @ NonNull GitHubForkTrustPolicy trust ) {
86+ this .strategyId = strategyId ;
87+ this .trust = trust ;
88+ }
89+
90+ @ Deprecated
8691 public ForkPullRequestDiscoveryTrait (
8792 int strategyId ,
8893 @ NonNull
@@ -236,17 +241,23 @@ public List<SCMHeadAuthorityDescriptor> getTrustDescriptors() {
236241 }
237242 }
238243
244+ /** Trust policy for forked pull requests.
245+ * <p>
246+ * This reduces generics in the DataBoundConstructor signature as a workaround for JENKINS-26535.
247+ */
248+ public abstract static class GitHubForkTrustPolicy
249+ extends SCMHeadAuthority <GitHubSCMSourceRequest , PullRequestSCMHead , PullRequestSCMRevision > {}
250+
239251 /** An {@link SCMHeadAuthority} that trusts nothing. */
240- public static class TrustNobody
241- extends SCMHeadAuthority <SCMSourceRequest , PullRequestSCMHead , PullRequestSCMRevision > {
252+ public static class TrustNobody extends GitHubForkTrustPolicy {
242253
243254 /** Constructor. */
244255 @ DataBoundConstructor
245256 public TrustNobody () {}
246257
247258 /** {@inheritDoc} */
248259 @ Override
249- public boolean checkTrusted (@ NonNull SCMSourceRequest request , @ NonNull PullRequestSCMHead head ) {
260+ public boolean checkTrusted (@ NonNull GitHubSCMSourceRequest request , @ NonNull PullRequestSCMHead head ) {
250261 return false ;
251262 }
252263
@@ -270,8 +281,7 @@ public boolean isApplicableToOrigin(@NonNull Class<? extends SCMHeadOrigin> orig
270281 }
271282
272283 /** An {@link SCMHeadAuthority} that trusts contributors to the repository. */
273- public static class TrustContributors
274- extends SCMHeadAuthority <GitHubSCMSourceRequest , PullRequestSCMHead , PullRequestSCMRevision > {
284+ public static class TrustContributors extends GitHubForkTrustPolicy {
275285 /** Constructor. */
276286 @ DataBoundConstructor
277287 public TrustContributors () {}
@@ -303,8 +313,7 @@ public boolean isApplicableToOrigin(@NonNull Class<? extends SCMHeadOrigin> orig
303313 }
304314
305315 /** An {@link SCMHeadAuthority} that trusts those with write permission to the repository. */
306- public static class TrustPermission
307- extends SCMHeadAuthority <GitHubSCMSourceRequest , PullRequestSCMHead , PullRequestSCMRevision > {
316+ public static class TrustPermission extends GitHubForkTrustPolicy {
308317
309318 /** Constructor. */
310319 @ DataBoundConstructor
@@ -347,15 +356,14 @@ public boolean isApplicableToOrigin(@NonNull Class<? extends SCMHeadOrigin> orig
347356 }
348357
349358 /** An {@link SCMHeadAuthority} that trusts everyone. */
350- public static class TrustEveryone
351- extends SCMHeadAuthority <SCMSourceRequest , PullRequestSCMHead , PullRequestSCMRevision > {
359+ public static class TrustEveryone extends GitHubForkTrustPolicy {
352360 /** Constructor. */
353361 @ DataBoundConstructor
354362 public TrustEveryone () {}
355363
356364 /** {@inheritDoc} */
357365 @ Override
358- protected boolean checkTrusted (@ NonNull SCMSourceRequest request , @ NonNull PullRequestSCMHead head ) {
366+ protected boolean checkTrusted (@ NonNull GitHubSCMSourceRequest request , @ NonNull PullRequestSCMHead head ) {
359367 return true ;
360368 }
361369
0 commit comments