You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2023/03/24 07:12:44 UTC
[camel-quarkus] branch 2.13.x updated: Add jira model classes and jackson joda datatype to @BuildStep
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch 2.13.x
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/2.13.x by this push:
new 7b9aaa140c Add jira model classes and jackson joda datatype to @BuildStep
7b9aaa140c is described below
commit 7b9aaa140c33647e1cd347f86b87fb080000288d
Author: Claudio Miranda <cl...@claudius.com.br>
AuthorDate: Mon Mar 20 19:00:01 2023 -0300
Add jira model classes and jackson joda datatype to @BuildStep
https://github.com/apache/camel-quarkus/issues/4676
---
.../component/jackson/JacksonProcessor.java | 8 ++++--
.../component/jira/deployment/JiraProcessor.java | 29 +++++++++++++++++++---
integration-tests/jira/README.adoc | 2 ++
3 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/extensions/jackson/deployment/src/main/java/org/apache/camel/quarkus/component/jackson/JacksonProcessor.java b/extensions/jackson/deployment/src/main/java/org/apache/camel/quarkus/component/jackson/JacksonProcessor.java
index 4789246bd1..5ed0585da0 100644
--- a/extensions/jackson/deployment/src/main/java/org/apache/camel/quarkus/component/jackson/JacksonProcessor.java
+++ b/extensions/jackson/deployment/src/main/java/org/apache/camel/quarkus/component/jackson/JacksonProcessor.java
@@ -19,7 +19,7 @@ package org.apache.camel.quarkus.component.jackson;
import java.util.ArrayList;
import java.util.List;
-import com.fasterxml.jackson.databind.JsonNode;
+import io.quarkus.bootstrap.classloading.QuarkusClassLoader;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.FeatureBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
@@ -37,7 +37,11 @@ public class JacksonProcessor {
List<ReflectiveClassBuildItem> registerReflectiveClasses() {
List<ReflectiveClassBuildItem> items = new ArrayList<>();
items.add(new ReflectiveClassBuildItem(false, true, "com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule"));
- items.add(new ReflectiveClassBuildItem(false, false, JsonNode.class));
+ items.add(new ReflectiveClassBuildItem(false, false, "com.fasterxml.jackson.databind.JsonNode"));
+ if (QuarkusClassLoader.isClassPresentAtRuntime("com.fasterxml.jackson.datatype.joda.JodaModule")) {
+ items.add(new ReflectiveClassBuildItem(true, true, "com.fasterxml.jackson.datatype.joda.JodaModule"));
+ items.add(new ReflectiveClassBuildItem(true, true, "org.joda.time.DateTime"));
+ }
return items;
}
}
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 0e3556afe7..6e36bbddea 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
@@ -19,17 +19,20 @@ package org.apache.camel.quarkus.component.jira.deployment;
import java.util.ArrayList;
import java.util.List;
-import com.atlassian.jira.rest.client.api.domain.Issue;
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.IndexDependencyBuildItem;
import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+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";
@BuildStep
ExtensionSslNativeSupportBuildItem activateSslNativeSupport() {
@@ -55,8 +58,26 @@ class JiraProcessor {
}
@BuildStep
- ReflectiveClassBuildItem registerForReflection() {
- // Required by org.apache.camel.component.jira.consumer.WatchUpdatesConsumer
- return new ReflectiveClassBuildItem(true, false, Issue.class.getName());
+ ReflectiveClassBuildItem registerJiraClassesForReflection(CombinedIndexBuildItem combinedIndex) {
+ IndexView index = combinedIndex.getIndex();
+ String[] modelClasses = index.getKnownClasses().stream()
+ .map(ci -> ci.name().toString())
+ .filter(n -> n.startsWith(JIRA_MODEL_PACKAGE))
+ .toArray(String[]::new);
+ return new ReflectiveClassBuildItem(true, false, modelClasses);
+ }
+
+ @BuildStep
+ IndexDependencyBuildItem registerDependencyForIndex() {
+ return new IndexDependencyBuildItem("com.atlassian.jira", "jira-rest-java-client-api");
+ }
+
+ @BuildStep
+ List<ReflectiveClassBuildItem> registerReflectiveClasses() {
+ List<ReflectiveClassBuildItem> items = new ArrayList<>();
+ items.add(new ReflectiveClassBuildItem(true, false, "com.atlassian.jira.rest.client.api.StatusCategory"));
+ items.add(new ReflectiveClassBuildItem(true, false, "org.codehaus.jettison.json.JSONArray"));
+ items.add(new ReflectiveClassBuildItem(true, false, "org.codehaus.jettison.json.JSONObject"));
+ return items;
}
}
diff --git a/integration-tests/jira/README.adoc b/integration-tests/jira/README.adoc
index d183308de9..0462988db3 100644
--- a/integration-tests/jira/README.adoc
+++ b/integration-tests/jira/README.adoc
@@ -13,6 +13,8 @@ export JIRA_URL=http://localhost:8080/
export JIRA_USERNAME=my-jira-username
export JIRA_PASSWORD=my-jira-password
+NOTE: You can create a personal `API Token` instead, so you don't have to share the user's password.
+
# If your Jira server requires OAuth authentication
export JIRA_OAUTH_ACCESS_TOKEN=your-access-token
export JIRA_OAUTH_CONSUMER_KEY=your-consumer-key