Skip to content

Commit c2db35f

Browse files
authored
Make CasC custom DataBoundConfigurator implementation optional to avoid throw exception when Jenkins startup and CasC plugin not installed (#1108)
1 parent 9b6e622 commit c2db35f

File tree

4 files changed

+12
-7
lines changed

4 files changed

+12
-7
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,4 @@ Support to run Server under Windows has been dismissed since version 7.14+
8585
3. Inside the container:
8686
- install git with `apk add git`
8787
- install git support for http with `apk add git-daemon`
88-
- run `/opt/atlassian-plugin-sdk/bin/atlas-run-standalone --product bitbucket --version 9.5.2 "-Dfeature.public.access=true"`
88+
- run `/opt/atlassian-plugin-sdk/bin/atlas-run-standalone --product bitbucket --version 9.6.5 --data-version 9.6.5 "-Dfeature.public.access=true"`

src/main/java/com/cloudbees/jenkins/plugins/bitbucket/hooks/BitbucketSCMSourcePushHookReceiver.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public HttpResponse doNotify(StaplerRequest2 req) throws IOException {
123123
}
124124

125125
private BitbucketWebhookProcessor getHookProcessor(Map<String, String> reqHeaders,
126-
MultiValuedMap<String, String> reqParameters) {
126+
MultiValuedMap<String, String> reqParameters) {
127127
BitbucketWebhookProcessor hookProcessor;
128128

129129
List<BitbucketWebhookProcessor> matchingProcessors = getHookProcessors()
@@ -146,7 +146,12 @@ private BitbucketWebhookProcessor getHookProcessor(Map<String, String> reqHeader
146146
}
147147

148148
/*test*/ Stream<BitbucketWebhookProcessor> getHookProcessors() {
149-
return ExtensionList.lookup(BitbucketWebhookProcessor.class).stream();
149+
ExtensionList<BitbucketWebhookProcessor> processors = ExtensionList.lookup(BitbucketWebhookProcessor.class);
150+
if (processors.isEmpty()) {
151+
logger.warning(() -> "No registered processors found in the system.");
152+
throw new BitbucketWebhookProcessorException(HttpServletResponse.SC_BAD_REQUEST, "No registered processors found in Jenkins. Refer to the user documentation on how configure the webHook in Bitbucket at https://github.com/jenkinsci/bitbucket-branch-source-plugin/blob/master/docs/USER_GUIDE.adoc#webhooks-registering");
153+
}
154+
return processors.stream();
150155
}
151156

152157
private MultiValuedMap<String, String> getParameters(StaplerRequest2 req) {

src/main/java/com/cloudbees/jenkins/plugins/bitbucket/impl/casc/BitbucketCloudEndpointConfigurator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@
2727
import com.cloudbees.jenkins.plugins.bitbucket.impl.endpoint.BitbucketCloudEndpoint;
2828
import com.cloudbees.jenkins.plugins.bitbucket.impl.webhook.cloud.CloudWebhookConfiguration;
2929
import edu.umd.cs.findbugs.annotations.NonNull;
30-
import hudson.Extension;
3130
import io.jenkins.plugins.casc.ConfigurationAsCode;
3231
import io.jenkins.plugins.casc.ConfigurationContext;
3332
import io.jenkins.plugins.casc.Configurator;
3433
import io.jenkins.plugins.casc.ConfiguratorException;
3534
import io.jenkins.plugins.casc.impl.configurators.DataBoundConfigurator;
3635
import io.jenkins.plugins.casc.model.Mapping;
3736
import java.util.logging.Logger;
37+
import org.jenkinsci.plugins.variant.OptionalExtension;
3838
import org.kohsuke.accmod.Restricted;
3939
import org.kohsuke.accmod.restrictions.NoExternalUse;
4040

@@ -44,7 +44,7 @@
4444
*
4545
* @since 937.0.0
4646
*/
47-
@Extension
47+
@OptionalExtension(requirePlugins = "configuration-as-code")
4848
@Restricted(NoExternalUse.class)
4949
public class BitbucketCloudEndpointConfigurator extends DataBoundConfigurator<BitbucketCloudEndpoint> {
5050
private static final Logger logger = Logger.getLogger(BitbucketCloudEndpointConfigurator.class.getName());

src/main/java/com/cloudbees/jenkins/plugins/bitbucket/impl/casc/BitbucketServerEndpointConfigurator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@
2828
import com.cloudbees.jenkins.plugins.bitbucket.impl.webhook.plugin.PluginWebhookConfiguration;
2929
import com.cloudbees.jenkins.plugins.bitbucket.impl.webhook.server.ServerWebhookConfiguration;
3030
import edu.umd.cs.findbugs.annotations.NonNull;
31-
import hudson.Extension;
3231
import io.jenkins.plugins.casc.ConfigurationAsCode;
3332
import io.jenkins.plugins.casc.ConfigurationContext;
3433
import io.jenkins.plugins.casc.Configurator;
3534
import io.jenkins.plugins.casc.ConfiguratorException;
3635
import io.jenkins.plugins.casc.impl.configurators.DataBoundConfigurator;
3736
import io.jenkins.plugins.casc.model.Mapping;
3837
import java.util.logging.Logger;
38+
import org.jenkinsci.plugins.variant.OptionalExtension;
3939
import org.kohsuke.accmod.Restricted;
4040
import org.kohsuke.accmod.restrictions.NoExternalUse;
4141

@@ -45,7 +45,7 @@
4545
*
4646
* @since 937.0.0
4747
*/
48-
@Extension
48+
@OptionalExtension(requirePlugins = "configuration-as-code")
4949
@Restricted(NoExternalUse.class)
5050
public class BitbucketServerEndpointConfigurator extends DataBoundConfigurator<BitbucketServerEndpoint> {
5151
private static final Logger logger = Logger.getLogger(BitbucketServerEndpointConfigurator.class.getName());

0 commit comments

Comments
 (0)