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 fec2c11 Fix #3553 make beans of InterceptStrategy unremovable (#3593)
fec2c11 is described below
commit fec2c11ef3f71e9fa9fea7c40b42aa3ecd97dde4
Author: Amos Feng <[email protected]>
AuthorDate: Tue Mar 8 19:38:41 2022 +0800
Fix #3553 make beans of InterceptStrategy unremovable (#3593)
---
.../deployment/CamelUnremovableBeansProcessor.java | 25 ++++++++++++++++++++++
.../core/runtime/CamelBeansUnremovableTest.java | 25 ++++++++++++++++++++++
2 files changed, 50 insertions(+)
diff --git
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelUnremovableBeansProcessor.java
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelUnremovableBeansProcessor.java
index 385a404..e3c2d72 100644
---
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelUnremovableBeansProcessor.java
+++
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelUnremovableBeansProcessor.java
@@ -30,11 +30,13 @@ import
org.apache.camel.quarkus.core.deployment.catalog.BuildTimeCamelCatalog;
import
org.apache.camel.quarkus.core.deployment.catalog.BuildTimeJsonSchemaResolver;
import org.apache.camel.quarkus.core.deployment.catalog.SchemaResource;
import
org.apache.camel.quarkus.core.deployment.spi.BuildTimeCamelCatalogBuildItem;
+import org.apache.camel.spi.InterceptStrategy;
import org.apache.camel.spi.annotations.Component;
import org.apache.camel.spi.annotations.Dataformat;
import org.apache.camel.spi.annotations.Language;
import org.apache.camel.tooling.model.BaseOptionModel;
import org.jboss.jandex.AnnotationInstance;
+import org.jboss.jandex.ClassInfo;
import org.jboss.jandex.DotName;
import org.jboss.jandex.IndexView;
import org.slf4j.Logger;
@@ -50,6 +52,10 @@ public class CamelUnremovableBeansProcessor {
DotName.createSimple(Language.class.getName())
};
+ private static final DotName[] OPTIONAL_SERVICE_TYPES = {
+ DotName.createSimple(InterceptStrategy.class.getName())
+ };
+
@BuildStep
BuildTimeCamelCatalogBuildItem
buildTimeCamelCatalog(CombinedIndexBuildItem combinedIndex) {
Set<SchemaResource> resources = new HashSet<>();
@@ -91,4 +97,23 @@ public class CamelUnremovableBeansProcessor {
return UnremovableBeanBuildItem.beanTypes(unremovableClasses);
}
+
+ @BuildStep
+ UnremovableBeanBuildItem
unremovableOptionalServices(CombinedIndexBuildItem combinedIndex) {
+ IndexView index = combinedIndex.getIndex();
+
+ Set<DotName> unremovableClasses = Stream.of(OPTIONAL_SERVICE_TYPES)
+ .map(index::getAllKnownImplementors)
+ .flatMap(Collection::stream)
+ .map(ClassInfo::name)
+ .collect(Collectors.toSet());
+
+ if (LOGGER.isDebugEnabled()) {
+ unremovableClasses.stream().forEach(
+ unremovableClass -> LOGGER.debug("Registering optional
service unremovable bean class: {}",
+ unremovableClass));
+ }
+
+ return UnremovableBeanBuildItem.beanTypes(unremovableClasses);
+ }
}
diff --git
a/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/runtime/CamelBeansUnremovableTest.java
b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/runtime/CamelBeansUnremovableTest.java
index ebf1645..fdb8e11 100644
---
a/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/runtime/CamelBeansUnremovableTest.java
+++
b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/runtime/CamelBeansUnremovableTest.java
@@ -25,6 +25,9 @@ import javax.inject.Singleton;
import io.quarkus.test.QuarkusUnitTest;
import org.apache.camel.CamelContext;
+import org.apache.camel.NamedNode;
+import org.apache.camel.Processor;
+import org.apache.camel.spi.InterceptStrategy;
import org.apache.camel.spi.Registry;
import org.apache.camel.spi.annotations.Component;
import org.apache.camel.spi.annotations.Dataformat;
@@ -76,6 +79,14 @@ public class CamelBeansUnremovableTest {
}
@Test
+ public void testInterceptStrategyUnremovable() {
+ Registry registry = context.getRegistry();
+ Set<UnremovableInterceptStrategy> unremovableInterceptStrategies =
registry
+ .findByType(UnremovableInterceptStrategy.class);
+ Assertions.assertEquals(1, unremovableInterceptStrategies.size());
+ }
+
+ @Test
public void testNonUnremovableBeansRemoved() {
Registry registry = context.getRegistry();
Set<Exception> nonUnremovableBeans =
registry.findByType(Exception.class);
@@ -94,6 +105,14 @@ public class CamelBeansUnremovableTest {
static final class UnremovableLanguageBean {
}
+ static final class UnremovableInterceptStrategy implements
InterceptStrategy {
+ @Override
+ public Processor wrapProcessorInInterceptors(CamelContext context,
NamedNode definition, Processor target,
+ Processor nextTarget) throws Exception {
+ return target;
+ }
+ }
+
@ApplicationScoped
static final class BeanProducers {
@@ -123,6 +142,12 @@ public class CamelBeansUnremovableTest {
@Singleton
@Produces
+ public UnremovableInterceptStrategy unremovableInterceptStrategy() {
+ return new UnremovableInterceptStrategy();
+ }
+
+ @Singleton
+ @Produces
public Exception removableBean() {
return new Exception("java.lang types should not be auto added as
unremovable");
}