This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit ec0c38f4b1cc05af32b40e7b85e2fa5213899fd1 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Fri May 9 11:29:24 2025 +0200 CAMEL-22013 - camel-api - Remove all usage of component.extension and the component.extension package content itself - Slack Signed-off-by: Andrea Cosentino <anco...@gmail.com> --- .../camel/component/slack/SlackComponent.java | 1 - .../slack/SlackComponentVerifierExtension.java | 127 --------------------- .../slack/SlackComponentVerifierExtensionTest.java | 126 -------------------- 3 files changed, 254 deletions(-) diff --git a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponent.java b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponent.java index 71db2a269c1..73493f39f9c 100644 --- a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponent.java +++ b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponent.java @@ -39,7 +39,6 @@ public class SlackComponent extends HealthCheckComponent { public SlackComponent(CamelContext context) { super(context); - registerExtension(new SlackComponentVerifierExtension()); } @Override diff --git a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java deleted file mode 100644 index ae7277082aa..00000000000 --- a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackComponentVerifierExtension.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.component.slack; - -import java.util.Collections; -import java.util.Map; - -import com.google.gson.Gson; -import com.slack.api.Slack; -import com.slack.api.SlackConfig; -import com.slack.api.methods.response.conversations.ConversationsListResponse; -import com.slack.api.model.ConversationType; -import com.slack.api.util.http.SlackHttpClient; -import com.slack.api.webhook.WebhookResponse; -import org.apache.camel.component.extension.verifier.DefaultComponentVerifierExtension; -import org.apache.camel.component.extension.verifier.ResultBuilder; -import org.apache.camel.component.extension.verifier.ResultErrorBuilder; -import org.apache.camel.component.slack.helper.SlackHelper; -import org.apache.camel.component.slack.helper.SlackMessage; -import org.apache.camel.util.ObjectHelper; - -public class SlackComponentVerifierExtension extends DefaultComponentVerifierExtension { - - private static final Gson GSON = new Gson(); - - public SlackComponentVerifierExtension() { - this("slack"); - } - - public SlackComponentVerifierExtension(String scheme) { - super(scheme); - } - - // ********************************* - // Parameters validation - // ********************************* - @Override - protected Result verifyParameters(Map<String, Object> parameters) { - ResultBuilder builder = ResultBuilder.withStatusAndScope(Result.Status.OK, Scope.PARAMETERS); - - if (ObjectHelper.isEmpty(parameters.get("token")) && ObjectHelper.isEmpty(parameters.get("webhookUrl"))) { - builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.GENERIC, - "You must specify a webhookUrl (for producer) or a token (for producer and consumer)") - .parameterKey("webhookUrl").parameterKey("token").build()); - } - if (ObjectHelper.isNotEmpty(parameters.get("token")) && ObjectHelper.isNotEmpty(parameters.get("webhookUrl"))) { - builder.error(ResultErrorBuilder.withCodeAndDescription(VerificationError.StandardCode.GENERIC, - "You must specify a webhookUrl (for producer) or a token (for producer and consumer). You can't specify both.") - .parameterKey("webhookUrl").parameterKey("token").build()); - } - return builder.build(); - } - - // ********************************* - // Connectivity validation - // ********************************* - @Override - protected Result verifyConnectivity(Map<String, Object> parameters) { - return ResultBuilder.withStatusAndScope(Result.Status.OK, Scope.CONNECTIVITY).error(parameters, this::verifyCredentials) - .build(); - } - - private void verifyCredentials(ResultBuilder builder, Map<String, Object> parameters) { - String webhookUrl = (String) parameters.get("webhookUrl"); - String serverUrl = (String) parameters.get("serverUrl"); - - if (ObjectHelper.isNotEmpty(webhookUrl)) { - - try { - // Build Helper object - SlackMessage slackMessage; - slackMessage = new SlackMessage(); - slackMessage.setText("Test connection"); - - SlackConfig config = SlackHelper.createSlackConfig(serverUrl); - WebhookResponse response - = Slack.getInstance(config, new SlackHttpClient()).send(webhookUrl, GSON.toJson(slackMessage)); - - // 2xx is OK, anything else we regard as failure - if (response.getCode() < 200 || response.getCode() > 299) { - builder.error(ResultErrorBuilder - .withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, "Invalid webhookUrl") - .parameterKey("webhookUrl").build()); - } - } catch (Exception e) { - builder.error(ResultErrorBuilder - .withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, "Invalid webhookUrl") - .parameterKey("webhookUrl").build()); - } - } - if (ObjectHelper.isNotEmpty(parameters.get("token"))) { - String token = (String) parameters.get("token"); - - try { - SlackConfig config = SlackHelper.createSlackConfig(serverUrl); - ConversationsListResponse response = Slack.getInstance(config, new SlackHttpClient()).methods(token) - .conversationsList(req -> req - .types(Collections.singletonList(ConversationType.PUBLIC_CHANNEL)) - .limit(1)); - - if (!response.isOk()) { - builder.error(ResultErrorBuilder - .withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, "Invalid token") - .parameterKey("token").build()); - } - } catch (Exception e) { - builder.error(ResultErrorBuilder - .withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, "Invalid token") - .parameterKey("token").build()); - } - } - } -} diff --git a/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackComponentVerifierExtensionTest.java b/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackComponentVerifierExtensionTest.java deleted file mode 100644 index f3e8c2c969f..00000000000 --- a/components/camel-slack/src/test/java/org/apache/camel/component/slack/SlackComponentVerifierExtensionTest.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.component.slack; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.Component; -import org.apache.camel.component.extension.ComponentVerifierExtension; -import org.apache.camel.test.junit5.CamelTestSupport; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -public class SlackComponentVerifierExtensionTest extends CamelTestSupport { - - // ************************************************* - // Tests (parameters) - // ************************************************* - @Override - public boolean isUseRouteBuilder() { - return false; - } - - @Test - public void testParametersWebhook() { - Component component = context().getComponent("slack"); - - ComponentVerifierExtension verifier - = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new); - - Map<String, Object> parameters = new HashMap<>(); - parameters.put("webhookUrl", "l"); - - ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.PARAMETERS, parameters); - - assertEquals(ComponentVerifierExtension.Result.Status.OK, result.getStatus()); - } - - @Test - public void testParametersToken() { - Component component = context().getComponent("slack"); - - ComponentVerifierExtension verifier - = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new); - - Map<String, Object> parameters = new HashMap<>(); - parameters.put("token", "l"); - - ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.PARAMETERS, parameters); - - assertEquals(ComponentVerifierExtension.Result.Status.OK, result.getStatus()); - } - - @Test - public void testParametersEmpty() { - Component component = context().getComponent("slack"); - - ComponentVerifierExtension verifier - = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new); - - Map<String, Object> parameters = new HashMap<>(); - - ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.PARAMETERS, parameters); - - assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus()); - } - - @Test - public void testParametersWebhookUrlTokenBoth() { - Component component = context().getComponent("slack"); - - ComponentVerifierExtension verifier - = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new); - - Map<String, Object> parameters = new HashMap<>(); - parameters.put("token", "l"); - parameters.put("webhookUrl", "l"); - - ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.PARAMETERS, parameters); - - assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus()); - } - - @Test - public void testConnectivityWebhook() { - Component component = context().getComponent("slack"); - ComponentVerifierExtension verifier - = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new); - - Map<String, Object> parameters = new HashMap<>(); - parameters.put("webhookUrl", "l"); - - ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.CONNECTIVITY, parameters); - - assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus()); - } - - @Test - public void testConnectivityToken() { - Component component = context().getComponent("slack"); - ComponentVerifierExtension verifier - = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new); - - Map<String, Object> parameters = new HashMap<>(); - parameters.put("token", "l"); - - ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.CONNECTIVITY, parameters); - - assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus()); - } -}