From cad971d7f2e3e045b42e3ef51a7fbd6935cfdbcc Mon Sep 17 00:00:00 2001 From: Lin Gao Date: Wed, 9 Oct 2024 12:27:56 +0800 Subject: [PATCH] Use Identifier qualifier from smallrye-common instead of Named --- .../wildfly/extension/vertx/main/module.xml | 1 + pom.xml | 6 ++ subsystem/pom.xml | 4 + .../extension/vertx/VertxConstants.java | 2 +- .../vertx/processors/CDIExtension.java | 99 ++++++++++--------- .../vertx/test/shared/StreamUtils.java | 2 +- .../test/shared/servlet/AsyncServlet.java | 2 +- 7 files changed, 64 insertions(+), 52 deletions(-) diff --git a/galleon-feature-pack/galleon-content/src/main/resources/modules/system/layers/base/org/wildfly/extension/vertx/main/module.xml b/galleon-feature-pack/galleon-content/src/main/resources/modules/system/layers/base/org/wildfly/extension/vertx/main/module.xml index 1b02c42..52e55ff 100644 --- a/galleon-feature-pack/galleon-content/src/main/resources/modules/system/layers/base/org/wildfly/extension/vertx/main/module.xml +++ b/galleon-feature-pack/galleon-content/src/main/resources/modules/system/layers/base/org/wildfly/extension/vertx/main/module.xml @@ -35,6 +35,7 @@ + diff --git a/pom.xml b/pom.xml index f844104..d4c1eac 100644 --- a/pom.xml +++ b/pom.xml @@ -42,6 +42,7 @@ 1.6.0.Final 4.5.9 3.13.0 + 2.5.0 org.wildfly.extension.vertx @@ -103,6 +104,11 @@ vertx-core ${version.io.vertx.vertx} + + io.smallrye.common + smallrye-common-annotation + ${version.io.smallrye.smallrye-common} + io.smallrye.reactive smallrye-mutiny-vertx-core diff --git a/subsystem/pom.xml b/subsystem/pom.xml index 31b1098..e99e757 100644 --- a/subsystem/pom.xml +++ b/subsystem/pom.xml @@ -81,6 +81,10 @@ io.vertx vertx-core + + io.smallrye.common + smallrye-common-annotation + io.smallrye.reactive smallrye-mutiny-vertx-core diff --git a/subsystem/src/main/java/org/wildfly/extension/vertx/VertxConstants.java b/subsystem/src/main/java/org/wildfly/extension/vertx/VertxConstants.java index 83f69b3..eb5562a 100644 --- a/subsystem/src/main/java/org/wildfly/extension/vertx/VertxConstants.java +++ b/subsystem/src/main/java/org/wildfly/extension/vertx/VertxConstants.java @@ -27,7 +27,7 @@ public interface VertxConstants { String[] TIME_UNITS = Arrays.stream(TimeUnit.values()).map(Enum::toString).collect(Collectors.toList()).toArray(new String[0]); - String CDI_NAMED_QUALIFIER = "vertx"; + String CDI_QUALIFIER = "vertx"; String VERTX_SERVICE = "vertx"; String ELEMENT_VERTX = "vertx"; diff --git a/subsystem/src/main/java/org/wildfly/extension/vertx/processors/CDIExtension.java b/subsystem/src/main/java/org/wildfly/extension/vertx/processors/CDIExtension.java index c10d102..c3b67fc 100644 --- a/subsystem/src/main/java/org/wildfly/extension/vertx/processors/CDIExtension.java +++ b/subsystem/src/main/java/org/wildfly/extension/vertx/processors/CDIExtension.java @@ -16,9 +16,10 @@ */ package org.wildfly.extension.vertx.processors; +import io.smallrye.common.annotation.Identifier; import jakarta.enterprise.context.spi.CreationalContext; import jakarta.enterprise.event.Observes; -import jakarta.enterprise.inject.literal.NamedLiteral; +import jakarta.enterprise.inject.Any; import jakarta.enterprise.inject.spi.AfterBeanDiscovery; import jakarta.enterprise.inject.spi.AnnotatedType; import jakarta.enterprise.inject.spi.Bean; @@ -37,7 +38,7 @@ import java.util.HashSet; import java.util.Set; -import static org.wildfly.extension.vertx.VertxConstants.CDI_NAMED_QUALIFIER; +import static org.wildfly.extension.vertx.VertxConstants.CDI_QUALIFIER; /** * CDI Extension which adds the ability to inject the Vertx instances by the member name. @@ -51,27 +52,36 @@ public CDIExtension() { public void registerVertxBean(@Observes AfterBeanDiscovery afterBeanDiscovery, BeanManager beanManager) { if (VertxProxyHolder.instance().getVertxProxy() != null) { - final String vpName = CDI_NAMED_QUALIFIER; - AnnotatedType rawVertxAnnotatedType = beanManager.createAnnotatedType(io.vertx.core.Vertx.class); - BeanAttributes rawVertxBeanAttributes = - new BeanAttributesWrapper<>(beanManager.createBeanAttributes(rawVertxAnnotatedType), Set.of(NamedLiteral.of(vpName))); - afterBeanDiscovery.addBean(beanManager.createBean(rawVertxBeanAttributes, io.vertx.core.Vertx.class, new RawVertxProducer())); - - AnnotatedType annotatedType = beanManager.createAnnotatedType(io.vertx.mutiny.core.Vertx.class); - BeanAttributes beanAttributes = - new BeanAttributesWrapper<>(beanManager.createBeanAttributes(annotatedType), Set.of(NamedLiteral.of(vpName))); - afterBeanDiscovery.addBean(beanManager.createBean(beanAttributes, io.vertx.mutiny.core.Vertx.class, new MunityVertxProducer())); + // Expose the Bean with @Any and @Identifier qualifiers, client side needs to use the same Qualifiers to select this instance. + final Set qualifiers = Set.of(Any.Literal.INSTANCE, Identifier.Literal.of(CDI_QUALIFIER)); + AnnotatedType rawAnnotatedType = beanManager.createAnnotatedType(io.vertx.core.Vertx.class); + BeanAttributes rawBeanAttributes = + new BeanAttributesWrapper<>(beanManager.createBeanAttributes(rawAnnotatedType), qualifiers); + afterBeanDiscovery.addBean(beanManager.createBean(rawBeanAttributes, io.vertx.core.Vertx.class, new AbstractVertxProducer<>() { + @Override + protected io.vertx.core.Vertx produceBeanObject(CreationalContext ctx) { + return rawVertx(); + } + })); + + AnnotatedType mutinyAnnotatedType = beanManager.createAnnotatedType(io.vertx.mutiny.core.Vertx.class); + BeanAttributes mutinyBeanAttributes = + new BeanAttributesWrapper<>(beanManager.createBeanAttributes(mutinyAnnotatedType), qualifiers); + afterBeanDiscovery.addBean(beanManager.createBean(mutinyBeanAttributes, io.vertx.mutiny.core.Vertx.class, new AbstractVertxProducer<>() { + @Override + protected io.vertx.mutiny.core.Vertx produceBeanObject(CreationalContext ctx) { + return mutinyVertx(); + } + })); } } private static class BeanAttributesWrapper implements BeanAttributes { private final BeanAttributes delegate; private final Set qualifiers; - - BeanAttributesWrapper(BeanAttributes delegate, Set additionalQualifiers) { + BeanAttributesWrapper(BeanAttributes delegate, Set qualifiers) { this.delegate = delegate; - this.qualifiers = new HashSet<>(delegate.getQualifiers()); - this.qualifiers.addAll(additionalQualifiers); + this.qualifiers = new HashSet<>(qualifiers); } @Override @@ -106,51 +116,42 @@ public boolean isAlternative() { } - private abstract static class AbstractVertxInjectionTarget implements InjectionTarget { - @Override - public void inject(T instance, CreationalContext ctx) { - } + private abstract static class AbstractVertxProducer implements InjectionTargetFactory { @Override - public void postConstruct(T instance) { - } + public InjectionTarget createInjectionTarget(Bean bean) { + return new InjectionTarget<>() { - @Override - public void preDestroy(T instance) { - } + @Override + public T produce(CreationalContext ctx) { + return produceBeanObject(ctx); + } - @Override - public void dispose(T instance) { - } + @Override + public void dispose(T instance) { + } - @Override - public Set getInjectionPoints() { - return Set.of(); - } - } + @Override + public Set getInjectionPoints() { + return Set.of(); + } - private static class MunityVertxProducer implements InjectionTargetFactory { - @Override - public InjectionTarget createInjectionTarget(Bean bean) { - return new AbstractVertxInjectionTarget<>() { + @Override + public void inject(T instance, CreationalContext ctx) { + } @Override - public io.vertx.mutiny.core.Vertx produce(CreationalContext ctx) { - return mutinyVertx(); + public void postConstruct(T instance) { } - }; - } - } - private static class RawVertxProducer implements InjectionTargetFactory { - @Override - public InjectionTarget createInjectionTarget(Bean bean) { - return new AbstractVertxInjectionTarget<>() { + @Override - public io.vertx.core.Vertx produce(CreationalContext ctx) { - return rawVertx(); + public void preDestroy(T instance) { } }; } + + protected abstract T produceBeanObject(CreationalContext ctx); + } private static io.vertx.mutiny.core.Vertx mutinyVertx() { @@ -170,4 +171,4 @@ private static io.vertx.core.Vertx rawVertx() { VertxLogger.VERTX_LOGGER.useVertxFromSubsystem(); return vertxProxy.getVertx(); } -} +} \ No newline at end of file diff --git a/testsuite/shared/src/main/java/org/wildfly/extension/vertx/test/shared/StreamUtils.java b/testsuite/shared/src/main/java/org/wildfly/extension/vertx/test/shared/StreamUtils.java index 641b70d..967e741 100644 --- a/testsuite/shared/src/main/java/org/wildfly/extension/vertx/test/shared/StreamUtils.java +++ b/testsuite/shared/src/main/java/org/wildfly/extension/vertx/test/shared/StreamUtils.java @@ -114,7 +114,7 @@ public static Properties stringToProperties(String data) { try (StringReader sr = new StringReader(data)) { props.load(sr); } catch (IOException ioe) { - ;// ignore + // ignore } return props; } diff --git a/testsuite/shared/src/main/java/org/wildfly/extension/vertx/test/shared/servlet/AsyncServlet.java b/testsuite/shared/src/main/java/org/wildfly/extension/vertx/test/shared/servlet/AsyncServlet.java index ad266c7..448299c 100644 --- a/testsuite/shared/src/main/java/org/wildfly/extension/vertx/test/shared/servlet/AsyncServlet.java +++ b/testsuite/shared/src/main/java/org/wildfly/extension/vertx/test/shared/servlet/AsyncServlet.java @@ -56,7 +56,7 @@ public void destroy() { consumer.unregister().toCompletionStage().toCompletableFuture().get(); consumer = null; } catch (Exception e) { - ; //ignore + //ignore } } }