This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new af70309e6b Remove Spring dependencies from Jira extension
af70309e6b is described below
commit af70309e6b1b5bf8508a712b4a7c317412f5749d
Author: James Netherton <[email protected]>
AuthorDate: Wed Jun 21 07:19:08 2023 +0100
Remove Spring dependencies from Jira extension
Fixes #3889
---
extensions/jira/deployment/pom.xml | 4 --
.../component/jira/deployment/JiraProcessor.java | 43 +++++++++++++++++++++-
extensions/jira/runtime/pom.xml | 4 --
3 files changed, 42 insertions(+), 9 deletions(-)
diff --git a/extensions/jira/deployment/pom.xml
b/extensions/jira/deployment/pom.xml
index 45ea626cf1..93b33ec391 100644
--- a/extensions/jira/deployment/pom.xml
+++ b/extensions/jira/deployment/pom.xml
@@ -46,10 +46,6 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-support-commons-logging-deployment</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-support-spring-deployment</artifactId>
- </dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-rest-client-deployment</artifactId>
diff --git
a/extensions/jira/deployment/src/main/java/org/apache/camel/quarkus/component/jira/deployment/JiraProcessor.java
b/extensions/jira/deployment/src/main/java/org/apache/camel/quarkus/component/jira/deployment/JiraProcessor.java
index 9dabba03a4..acfe87f4e0 100644
---
a/extensions/jira/deployment/src/main/java/org/apache/camel/quarkus/component/jira/deployment/JiraProcessor.java
+++
b/extensions/jira/deployment/src/main/java/org/apache/camel/quarkus/component/jira/deployment/JiraProcessor.java
@@ -16,23 +16,30 @@
*/
package org.apache.camel.quarkus.component.jira.deployment;
+import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
+import java.util.function.BooleanSupplier;
+import io.quarkus.deployment.GeneratedClassGizmoAdaptor;
+import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem;
import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.GeneratedClassBuildItem;
import io.quarkus.deployment.builditem.IndexDependencyBuildItem;
import
io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import io.quarkus.gizmo.ClassCreator;
+import io.quarkus.gizmo.MethodCreator;
import org.jboss.jandex.IndexView;
import org.joda.time.DateTimeZone;
class JiraProcessor {
-
private static final String FEATURE = "camel-jira";
private static final String JIRA_MODEL_PACKAGE =
"com.atlassian.jira.rest.client.api.domain";
+ private static final String DISPOSABLE_BEAN_CLASS_NAME =
"org.springframework.beans.factory.DisposableBean";
@BuildStep
ExtensionSslNativeSupportBuildItem activateSslNativeSupport() {
@@ -80,4 +87,38 @@ class JiraProcessor {
items.add(ReflectiveClassBuildItem.builder("org.codehaus.jettison.json.JSONObject").methods(true).build());
return items;
}
+
+ @BuildStep(onlyIf = IsSpringBeansAbsent.class)
+ void generateDisposableInterface(BuildProducer<GeneratedClassBuildItem>
generatedClass) {
+ // TODO: remove if https://ecosystem.atlassian.net/browse/JRJC-258
eventually gets fixed
+ try (ClassCreator classCreator = ClassCreator.interfaceBuilder()
+ .className(DISPOSABLE_BEAN_CLASS_NAME)
+ .classOutput(new GeneratedClassGizmoAdaptor(generatedClass,
false))
+ .build()) {
+
+ /*
+ * Original implementation of DisposableBean is:
+ *
+ * public interface DisposableBean {
+ * void destroy() throws Exception;
+ * }
+ */
+ try (MethodCreator methodCreator =
classCreator.getMethodCreator("destroy", void.class)) {
+ methodCreator.setModifiers(Modifier.PUBLIC |
Modifier.ABSTRACT);
+ methodCreator.addException(Exception.class);
+ }
+ }
+ }
+
+ static final class IsSpringBeansAbsent implements BooleanSupplier {
+ @Override
+ public boolean getAsBoolean() {
+ try {
+ Class.forName(DISPOSABLE_BEAN_CLASS_NAME, true,
Thread.currentThread().getContextClassLoader());
+ return false;
+ } catch (ClassNotFoundException e) {
+ return true;
+ }
+ }
+ }
}
diff --git a/extensions/jira/runtime/pom.xml b/extensions/jira/runtime/pom.xml
index f6daed2b6c..d1bcba86b6 100644
--- a/extensions/jira/runtime/pom.xml
+++ b/extensions/jira/runtime/pom.xml
@@ -77,10 +77,6 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-support-commons-logging</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-support-spring</artifactId>
- </dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient-cache</artifactId>