This is an automated email from the ASF dual-hosted git repository.
zhfeng 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 c41dac0970 Fix #3809 add reflections for all transports (#3892)
c41dac0970 is described below
commit c41dac09703b9f82717698a56de8e3ac7cfb85e4
Author: Amos Feng <[email protected]>
AuthorDate: Fri Jul 1 09:39:57 2022 +0800
Fix #3809 add reflections for all transports (#3892)
---
.../activemq/deployment/ActiveMQProcessor.java | 41 ++++++++++++++++++++++
.../activemq/it/ActiveMQTestResource.java | 5 ++-
2 files changed, 45 insertions(+), 1 deletion(-)
diff --git
a/extensions/activemq/deployment/src/main/java/org/apache/camel/quarkus/component/activemq/deployment/ActiveMQProcessor.java
b/extensions/activemq/deployment/src/main/java/org/apache/camel/quarkus/component/activemq/deployment/ActiveMQProcessor.java
index 4464b028ff..83335feb82 100644
---
a/extensions/activemq/deployment/src/main/java/org/apache/camel/quarkus/component/activemq/deployment/ActiveMQProcessor.java
+++
b/extensions/activemq/deployment/src/main/java/org/apache/camel/quarkus/component/activemq/deployment/ActiveMQProcessor.java
@@ -22,16 +22,26 @@ import java.util.Properties;
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.IndexDependencyBuildItem;
import
io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
import
io.quarkus.deployment.builditem.nativeimage.RuntimeReinitializedClassBuildItem;
+import org.apache.activemq.transport.Transport;
+import org.apache.activemq.transport.discovery.DiscoveryAgent;
import org.apache.activemq.util.IdGenerator;
+import org.apache.activemq.wireformat.WireFormatFactory;
+import org.jboss.jandex.DotName;
+import org.jboss.jandex.IndexView;
class ActiveMQProcessor {
private static final String ACTIVEMQ_SERVICE_BASE =
"META-INF/services/org/apache/activemq/";
+ private static final DotName TRANSPORT =
DotName.createSimple(Transport.class.getName());
+ private static final DotName WIRE_FORMAT_FACTORY =
DotName.createSimple(WireFormatFactory.class.getName());
+ private static final DotName DISCOVERY_AGENT =
DotName.createSimple(DiscoveryAgent.class.getName());
private static final String FEATURE = "camel-activemq";
@BuildStep
@@ -47,6 +57,9 @@ class ActiveMQProcessor {
@BuildStep
ReflectiveClassBuildItem registerForReflection() {
return new ReflectiveClassBuildItem(true, false,
+ "java.net.Socket",
+ "sun.security.ssl.SSLSocketImpl",
+ "org.apache.activemq.command.ConsumerInfo",
"org.apache.activemq.pool.PooledConnectionFactory",
"org.apache.commons.pool2.impl.DefaultEvictionPolicy",
"org.apache.activemq.openwire.v2.MarshallerFactory",
@@ -62,6 +75,26 @@ class ActiveMQProcessor {
"org.apache.activemq.openwire.v12.MarshallerFactory");
}
+ @BuildStep
+ void addDependencies(BuildProducer<IndexDependencyBuildItem>
indexDependency) {
+ indexDependency.produce(new
IndexDependencyBuildItem("org.apache.activemq", "activemq-client"));
+ }
+
+ @BuildStep
+ ReflectiveClassBuildItem registerTransports(CombinedIndexBuildItem
combinedIndex) {
+ return new ReflectiveClassBuildItem(true, false,
getReflectiveClass(combinedIndex, TRANSPORT));
+ }
+
+ @BuildStep
+ ReflectiveClassBuildItem registerWireFormatFactory(CombinedIndexBuildItem
combinedIndex) {
+ return new ReflectiveClassBuildItem(true, false,
getReflectiveClass(combinedIndex, WIRE_FORMAT_FACTORY));
+ }
+
+ @BuildStep
+ ReflectiveClassBuildItem registerDiscoveryAgent(CombinedIndexBuildItem
combinedIndex) {
+ return new ReflectiveClassBuildItem(true, false,
getReflectiveClass(combinedIndex, DISCOVERY_AGENT));
+ }
+
@BuildStep
void registerServiceProviders(BuildProducer<ReflectiveClassBuildItem>
reflectiveClass,
BuildProducer<NativeImageResourceBuildItem> nativeImage) {
@@ -104,4 +137,12 @@ class ActiveMQProcessor {
throw new IllegalStateException(e);
}
}
+
+ private String[] getReflectiveClass(CombinedIndexBuildItem combinedIndex,
DotName ifName) {
+ IndexView index = combinedIndex.getIndex();
+ return index.getAllKnownImplementors(ifName)
+ .stream()
+ .map(classInfo -> classInfo.name().toString())
+ .toArray(String[]::new);
+ }
}
diff --git
a/integration-tests/activemq/src/test/java/org/apache/camel/quarkus/component/activemq/it/ActiveMQTestResource.java
b/integration-tests/activemq/src/test/java/org/apache/camel/quarkus/component/activemq/it/ActiveMQTestResource.java
index 009399dee7..17dd6eb0b0 100644
---
a/integration-tests/activemq/src/test/java/org/apache/camel/quarkus/component/activemq/it/ActiveMQTestResource.java
+++
b/integration-tests/activemq/src/test/java/org/apache/camel/quarkus/component/activemq/it/ActiveMQTestResource.java
@@ -50,7 +50,10 @@ public class ActiveMQTestResource implements
QuarkusTestResourceLifecycleManager
return Collections.singletonMap(
"camel.component.activemq.broker-url",
- String.format("tcp://%s:%d",
container.getContainerIpAddress(), container.getMappedPort(TCP_PORT)));
+ String.format(
+
"tcp://%s:%d?connectionTimeout=5000&tcpNoDelay=false&socket.OOBInline=false",
+ container.getHost(),
+ container.getMappedPort(TCP_PORT)));
} catch (Exception e) {
throw new RuntimeException(e);
}