Search in sources :

Example 1 with Extension

use of jakarta.enterprise.inject.spi.Extension in project core by weld.

the class AfterTypeDiscoveryImpl method storeSyntheticAnnotatedType.

@Override
protected void storeSyntheticAnnotatedType(BeanDeployment deployment, AnnotatedType<?> type, String id) {
    SlimAnnotatedType<?> annotatedType = transformer.getUnbackedAnnotatedType(type, getBeanManager().getId(), id);
    Extension extension = getReceiver();
    SlimAnnotatedTypeContext<?> annotatedTypeContext = SlimAnnotatedTypeContext.of(annotatedType, extension);
    ProcessAnnotatedTypeImpl<?> event = events.fireProcessAnnotatedType(getBeanManager(), annotatedTypeContext);
    if (event == null) {
        deployment.getBeanDeployer().getEnvironment().addAnnotatedType(annotatedTypeContext);
        store.put(annotatedType);
    } else if (event.isVeto()) {
        return;
    } else {
        annotatedType = event.getResultingAnnotatedType();
        deployment.getBeanDeployer().getEnvironment().addSyntheticAnnotatedType(annotatedType, extension);
        store.put(annotatedType);
    }
}
Also used : Extension(jakarta.enterprise.inject.spi.Extension)

Example 2 with Extension

use of jakarta.enterprise.inject.spi.Extension in project core by weld.

the class ContainerLifecyleObserverTest method testExtensionBuilder.

@SuppressWarnings({ "serial" })
@Test
public void testExtensionBuilder() {
    ActionSequence.reset();
    Extension myExtension = ContainerLifecycleObserver.extensionBuilder().add(beforeBeanDiscovery((e) -> addAction(BeforeBeanDiscovery.class.getSimpleName()))).add(afterTypeDiscovery().notify((e, b) -> {
        addAction(AfterTypeDiscovery.class.getSimpleName());
        e.addAnnotatedType(b.createAnnotatedType(Charlie.class), Charlie.class.getName());
    })).add(afterBeanDiscovery((e) -> {
        addAction(AfterBeanDiscovery.class.getSimpleName());
        e.addObserverMethod().beanClass(Foo.class).observedType(Foo.class).notifyWith((ctx) -> {
        });
        e.addBean().beanClass(Integer.class).addType(Integer.class).addQualifier(Juicy.Literal.INSTANCE).createWith((ctx) -> Integer.valueOf(10));
    })).add(afterDeploymentValidation((e) -> addAction(AfterDeploymentValidation.class.getSimpleName()))).add(beforeShutdown((e) -> addAction(BeforeShutdown.class.getSimpleName()))).build();
    Extension myExtension2 = ContainerLifecycleObserver.extensionBuilder().add(processAnnotatedType().withAnnotations(RequestScoped.class).notify((e) -> e.veto())).add(processBeanAttributes().notify((e) -> addAction(ProcessBeanAttributes.class.getSimpleName()))).add(processSyntheticAnnotatedType(new TypeLiteral<ProcessSyntheticAnnotatedType<?>>() {
    }.getType()).notify((e) -> addAction(ProcessSyntheticAnnotatedType.class.getSimpleName()))).add(processInjectionPoint().notify((e) -> addAction(ProcessInjectionPoint.class.getSimpleName()))).add(processProducer().notify((e) -> addAction(ProcessProducer.class.getSimpleName()))).add(processBean().notify((e) -> addAction(ProcessBean.class.getSimpleName()))).add(processManagedBean().notify((e) -> addAction(ProcessManagedBean.class.getSimpleName()))).add(processProducerField().notify((e) -> addAction(ProcessProducerField.class.getSimpleName()))).add(processProducerMethod().notify((e) -> {
        // Weld SE defines some producer methods, e.g. ParametersFactory
        addAction(ProcessProducerMethod.class.getSimpleName());
    })).add(processBeanAttributes().notify((e) -> addAction(ProcessBeanAttributes.class.getSimpleName()))).add(processObserverMethod().notify((e) -> addAction(ProcessObserverMethod.class.getSimpleName()))).add(processObserverMethod(new TypeLiteral<ProcessObserverMethod<String, ?>>() {
    }.getType()).notify((e) -> addAction(ProcessObserverMethod.class.getSimpleName() + String.class.getSimpleName()))).add(processSyntheticObserverMethod(new TypeLiteral<ProcessSyntheticObserverMethod<Foo, ?>>() {
    }.getType()).notify((e) -> addAction(ProcessSyntheticObserverMethod.class.getSimpleName() + Foo.class.getSimpleName()))).add(processSyntheticBean(new TypeLiteral<ProcessSyntheticBean<Integer>>() {
    }.getType()).notify((e) -> addAction(ProcessSyntheticBean.class.getSimpleName() + Integer.class.getSimpleName()))).build();
    try (WeldContainer container = new Weld().disableDiscovery().beanClasses(Foo.class, Bravo.class).addExtension(myExtension).addExtension(myExtension2).initialize()) {
        assertTrue(container.select(Foo.class).isUnsatisfied());
        assertFalse(container.select(Bravo.class).isUnsatisfied());
        Assert.assertEquals(Integer.valueOf(10), container.select(Integer.class, Juicy.Literal.INSTANCE).get());
    }
    ActionSequence.assertSequenceDataContainsAll(BeforeBeanDiscovery.class, AfterTypeDiscovery.class, AfterBeanDiscovery.class, AfterDeploymentValidation.class, BeforeShutdown.class);
    ActionSequence.assertSequenceDataContainsAll(ProcessBeanAttributes.class, ProcessSyntheticAnnotatedType.class, ProcessInjectionPoint.class, ProcessObserverMethod.class, ProcessBeanAttributes.class, ProcessProducer.class);
    ActionSequence.assertSequenceDataContainsAll(ProcessObserverMethod.class.getSimpleName() + String.class.getSimpleName(), ProcessSyntheticObserverMethod.class.getSimpleName() + Foo.class.getSimpleName(), ProcessSyntheticBean.class.getSimpleName() + Integer.class.getSimpleName());
    ActionSequence.assertSequenceDataContainsAll(ProcessBean.class, ProcessManagedBean.class, ProcessProducerMethod.class, ProcessProducerField.class);
}
Also used : ContainerLifecycleObserver.processObserverMethod(org.jboss.weld.environment.se.ContainerLifecycleObserver.processObserverMethod) ContainerLifecycleObserver.processSyntheticBean(org.jboss.weld.environment.se.ContainerLifecycleObserver.processSyntheticBean) ContainerLifecycleObserver.beforeBeanDiscovery(org.jboss.weld.environment.se.ContainerLifecycleObserver.beforeBeanDiscovery) ProcessObserverMethod(jakarta.enterprise.inject.spi.ProcessObserverMethod) ContainerLifecycleObserver.afterBeanDiscovery(org.jboss.weld.environment.se.ContainerLifecycleObserver.afterBeanDiscovery) ProcessSyntheticObserverMethod(jakarta.enterprise.inject.spi.ProcessSyntheticObserverMethod) ContainerLifecycleObserver.afterTypeDiscovery(org.jboss.weld.environment.se.ContainerLifecycleObserver.afterTypeDiscovery) AfterTypeDiscovery(jakarta.enterprise.inject.spi.AfterTypeDiscovery) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) AfterDeploymentValidation(jakarta.enterprise.inject.spi.AfterDeploymentValidation) ProcessInjectionPoint(jakarta.enterprise.inject.spi.ProcessInjectionPoint) ContainerLifecycleObserver.processProducer(org.jboss.weld.environment.se.ContainerLifecycleObserver.processProducer) ProcessManagedBean(jakarta.enterprise.inject.spi.ProcessManagedBean) ProcessSyntheticAnnotatedType(jakarta.enterprise.inject.spi.ProcessSyntheticAnnotatedType) ContainerLifecycleObserver.processBean(org.jboss.weld.environment.se.ContainerLifecycleObserver.processBean) ContainerLifecycleObserver.beforeShutdown(org.jboss.weld.environment.se.ContainerLifecycleObserver.beforeShutdown) ProcessBeanAttributes(jakarta.enterprise.inject.spi.ProcessBeanAttributes) TypeLiteral(jakarta.enterprise.util.TypeLiteral) ProcessBean(jakarta.enterprise.inject.spi.ProcessBean) ProcessProducerMethod(jakarta.enterprise.inject.spi.ProcessProducerMethod) Extension(jakarta.enterprise.inject.spi.Extension) ProcessAnnotatedType(jakarta.enterprise.inject.spi.ProcessAnnotatedType) BeforeBeanDiscovery(jakarta.enterprise.inject.spi.BeforeBeanDiscovery) ActionSequence(org.jboss.weld.test.util.ActionSequence) ContainerLifecycleObserver.processInjectionPoint(org.jboss.weld.environment.se.ContainerLifecycleObserver.processInjectionPoint) ContainerLifecycleObserver.processSyntheticAnnotatedType(org.jboss.weld.environment.se.ContainerLifecycleObserver.processSyntheticAnnotatedType) ContainerLifecycleObserver.processProducerField(org.jboss.weld.environment.se.ContainerLifecycleObserver.processProducerField) Weld(org.jboss.weld.environment.se.Weld) ContainerLifecycleObserver.processSyntheticObserverMethod(org.jboss.weld.environment.se.ContainerLifecycleObserver.processSyntheticObserverMethod) BeforeShutdown(jakarta.enterprise.inject.spi.BeforeShutdown) Assert.assertTrue(org.junit.Assert.assertTrue) Test(org.junit.Test) ContainerLifecycleObserver.processManagedBean(org.jboss.weld.environment.se.ContainerLifecycleObserver.processManagedBean) WeldContainer(org.jboss.weld.environment.se.WeldContainer) ProcessSyntheticBean(jakarta.enterprise.inject.spi.ProcessSyntheticBean) ContainerLifecycleObserver.afterDeploymentValidation(org.jboss.weld.environment.se.ContainerLifecycleObserver.afterDeploymentValidation) ContainerLifecycleObserver.processProducerMethod(org.jboss.weld.environment.se.ContainerLifecycleObserver.processProducerMethod) AfterBeanDiscovery(jakarta.enterprise.inject.spi.AfterBeanDiscovery) ContainerLifecycleObserver(org.jboss.weld.environment.se.ContainerLifecycleObserver) Assert.assertFalse(org.junit.Assert.assertFalse) ActionSequence.addAction(org.jboss.weld.test.util.ActionSequence.addAction) ProcessProducerField(jakarta.enterprise.inject.spi.ProcessProducerField) ContainerLifecycleObserver.processAnnotatedType(org.jboss.weld.environment.se.ContainerLifecycleObserver.processAnnotatedType) ProcessProducer(jakarta.enterprise.inject.spi.ProcessProducer) Assert(org.junit.Assert) ContainerLifecycleObserver.processBeanAttributes(org.jboss.weld.environment.se.ContainerLifecycleObserver.processBeanAttributes) RequestScoped(jakarta.enterprise.context.RequestScoped) WeldContainer(org.jboss.weld.environment.se.WeldContainer) AfterDeploymentValidation(jakarta.enterprise.inject.spi.AfterDeploymentValidation) ProcessObserverMethod(jakarta.enterprise.inject.spi.ProcessObserverMethod) ProcessSyntheticAnnotatedType(jakarta.enterprise.inject.spi.ProcessSyntheticAnnotatedType) Weld(org.jboss.weld.environment.se.Weld) Extension(jakarta.enterprise.inject.spi.Extension) ProcessManagedBean(jakarta.enterprise.inject.spi.ProcessManagedBean) ProcessSyntheticBean(jakarta.enterprise.inject.spi.ProcessSyntheticBean) TypeLiteral(jakarta.enterprise.util.TypeLiteral) ProcessProducer(jakarta.enterprise.inject.spi.ProcessProducer) AfterBeanDiscovery(jakarta.enterprise.inject.spi.AfterBeanDiscovery) Test(org.junit.Test)

Example 3 with Extension

use of jakarta.enterprise.inject.spi.Extension in project core by weld.

the class Weld method addExtensions.

@SuppressWarnings("unchecked")
@Override
public Weld addExtensions(Class<? extends Extension>... extensionClasses) {
    for (Class<? extends Extension> extensionClass : extensionClasses) {
        try {
            Extension extension = SecurityActions.newInstance(extensionClass);
            addExtension(extension);
        } catch (Exception ex) {
            CommonLogger.LOG.unableToInstantiate(extensionClass, new Object[] {}, ex);
        }
    }
    return this;
}
Also used : ContainerLifecycleObserverExtension(org.jboss.weld.environment.se.ContainerLifecycleObserver.ContainerLifecycleObserverExtension) Extension(jakarta.enterprise.inject.spi.Extension) URISyntaxException(java.net.URISyntaxException) UnsatisfiedResolutionException(jakarta.enterprise.inject.UnsatisfiedResolutionException) IOException(java.io.IOException)

Example 4 with Extension

use of jakarta.enterprise.inject.spi.Extension in project core by weld.

the class WeldServletLifecycle method createDeployment.

/**
 * Create servlet deployment.
 *
 * Can be overridden with custom servlet deployment. e.g. exact resources listing in restricted env like GAE
 *
 * @param context the servlet context
 * @param bootstrap the bootstrap
 * @return new servlet deployment
 */
protected CDI11Deployment createDeployment(ServletContext context, CDI11Bootstrap bootstrap) {
    ImmutableSet.Builder<Metadata<Extension>> extensionsBuilder = ImmutableSet.builder();
    extensionsBuilder.addAll(bootstrap.loadExtensions(WeldResourceLoader.getClassLoader()));
    if (isDevModeEnabled) {
        extensionsBuilder.add(new MetadataImpl<Extension>(DevelopmentMode.getProbeExtension(resourceLoader), "N/A"));
    }
    // Note that we only register this if we discovered at least one implementation of BuildCompatibleExtension
    if (!BuildCompatibleExtensionLoader.getBuildCompatibleExtensions().isEmpty()) {
        try {
            extensionsBuilder.add(new MetadataImpl<Extension>(SecurityActions.newInstance(LiteExtensionTranslator.class), "synthetic:" + LiteExtensionTranslator.class.getName()));
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    final Iterable<Metadata<Extension>> extensions = extensionsBuilder.build();
    final TypeDiscoveryConfiguration typeDiscoveryConfiguration = bootstrap.startExtensions(extensions);
    final EEModuleDescriptor eeModule = new EEModuleDescriptorImpl(context.getContextPath(), ModuleType.WEB);
    final BeanDiscoveryMode emptyBeansXmlDiscoveryMode = Boolean.parseBoolean(context.getInitParameter(LEGACY_EMPTY_BEANS_XML_TREATMENT)) ? BeanDiscoveryMode.ALL : BeanDiscoveryMode.ANNOTATED;
    final DiscoveryStrategy strategy = DiscoveryStrategyFactory.create(resourceLoader, bootstrap, typeDiscoveryConfiguration.getKnownBeanDefiningAnnotations(), Boolean.parseBoolean(context.getInitParameter(Jandex.DISABLE_JANDEX_DISCOVERY_STRATEGY)), emptyBeansXmlDiscoveryMode);
    if (Jandex.isJandexAvailable(resourceLoader)) {
        try {
            Class<? extends BeanArchiveHandler> handlerClass = Reflections.loadClass(resourceLoader, JANDEX_SERVLET_CONTEXT_BEAN_ARCHIVE_HANDLER);
            strategy.registerHandler((SecurityActions.newConstructorInstance(handlerClass, new Class<?>[] { ServletContext.class }, context)));
        } catch (Exception e) {
            throw CommonLogger.LOG.unableToInstantiate(JANDEX_SERVLET_CONTEXT_BEAN_ARCHIVE_HANDLER, Arrays.toString(new Object[] { context }), e);
        }
    } else {
        strategy.registerHandler(new ServletContextBeanArchiveHandler(context));
    }
    strategy.setScanner(new WebAppBeanArchiveScanner(resourceLoader, bootstrap, context, emptyBeansXmlDiscoveryMode));
    Set<WeldBeanDeploymentArchive> beanDeploymentArchives = strategy.performDiscovery();
    String isolation = context.getInitParameter(CONTEXT_PARAM_ARCHIVE_ISOLATION);
    if (isolation == null || Boolean.valueOf(isolation)) {
        CommonLogger.LOG.archiveIsolationEnabled();
    } else {
        CommonLogger.LOG.archiveIsolationDisabled();
        Set<WeldBeanDeploymentArchive> flatDeployment = new HashSet<WeldBeanDeploymentArchive>();
        flatDeployment.add(WeldBeanDeploymentArchive.merge(bootstrap, beanDeploymentArchives));
        beanDeploymentArchives = flatDeployment;
    }
    for (BeanDeploymentArchive archive : beanDeploymentArchives) {
        archive.getServices().add(EEModuleDescriptor.class, eeModule);
    }
    CDI11Deployment deployment = new WeldDeployment(resourceLoader, bootstrap, beanDeploymentArchives, extensions) {

        @Override
        protected WeldBeanDeploymentArchive createAdditionalBeanDeploymentArchive() {
            WeldBeanDeploymentArchive archive = super.createAdditionalBeanDeploymentArchive();
            archive.getServices().add(EEModuleDescriptor.class, eeModule);
            return archive;
        }
    };
    if (strategy.getClassFileServices() != null) {
        deployment.getServices().add(ClassFileServices.class, strategy.getClassFileServices());
    }
    return deployment;
}
Also used : WeldBeanDeploymentArchive(org.jboss.weld.environment.deployment.WeldBeanDeploymentArchive) Metadata(org.jboss.weld.bootstrap.spi.Metadata) CDI11Deployment(org.jboss.weld.bootstrap.spi.CDI11Deployment) EEModuleDescriptorImpl(org.jboss.weld.bootstrap.spi.helpers.EEModuleDescriptorImpl) WeldDeployment(org.jboss.weld.environment.deployment.WeldDeployment) DiscoveryStrategy(org.jboss.weld.environment.deployment.discovery.DiscoveryStrategy) Extension(jakarta.enterprise.inject.spi.Extension) ServletContextBeanArchiveHandler(org.jboss.weld.environment.servlet.deployment.ServletContextBeanArchiveHandler) TypeDiscoveryConfiguration(org.jboss.weld.bootstrap.api.TypeDiscoveryConfiguration) ImmutableSet(org.jboss.weld.util.collections.ImmutableSet) BeanDiscoveryMode(org.jboss.weld.bootstrap.spi.BeanDiscoveryMode) WebAppBeanArchiveScanner(org.jboss.weld.environment.servlet.deployment.WebAppBeanArchiveScanner) WeldBeanDeploymentArchive(org.jboss.weld.environment.deployment.WeldBeanDeploymentArchive) BeanDeploymentArchive(org.jboss.weld.bootstrap.spi.BeanDeploymentArchive) LiteExtensionTranslator(org.jboss.weld.lite.extension.translator.LiteExtensionTranslator) EEModuleDescriptor(org.jboss.weld.bootstrap.spi.EEModuleDescriptor) HashSet(java.util.HashSet)

Example 5 with Extension

use of jakarta.enterprise.inject.spi.Extension in project helidon by oracle.

the class WebSocketCdiExtension method registerWebSockets.

private void registerWebSockets() {
    try {
        WebSocketApplication app = toWebSocketApplication();
        // If application present call its methods
        TyrusSupport.Builder builder = TyrusSupport.builder();
        Optional<Class<? extends ServerApplicationConfig>> appClass = app.applicationClass();
        Optional<String> contextRoot = appClass.flatMap(c -> findContextRoot(config, c));
        Optional<String> namedRouting = appClass.flatMap(c -> findNamedRouting(config, c));
        boolean routingNameRequired = appClass.map(c -> isNamedRoutingRequired(config, c)).orElse(false);
        Routing.Builder routing;
        if (appClass.isPresent()) {
            Class<? extends ServerApplicationConfig> c = appClass.get();
            // Attempt to instantiate via CDI
            ServerApplicationConfig instance = null;
            try {
                instance = CDI.current().select(c).get();
            } catch (UnsatisfiedResolutionException e) {
            // falls through
            }
            // Otherwise, we create instance directly
            if (instance == null) {
                try {
                    instance = c.getDeclaredConstructor().newInstance();
                } catch (Exception e) {
                    throw new RuntimeException("Unable to instantiate websocket application " + c, e);
                }
            }
            // Call methods in application class
            Set<ServerEndpointConfig> endpointConfigs = instance.getEndpointConfigs(app.programmaticEndpoints());
            Set<Class<?>> endpointClasses = instance.getAnnotatedEndpointClasses(app.annotatedEndpoints());
            // Register classes and configs
            endpointClasses.forEach(builder::register);
            endpointConfigs.forEach(builder::register);
            // Create routing builder
            routing = serverCdiExtension.routingBuilder(namedRouting, routingNameRequired, c.getName());
        } else {
            // Direct registration without calling application class
            app.annotatedEndpoints().forEach(builder::register);
            app.programmaticEndpoints().forEach(builder::register);
            app.extensions().forEach(builder::register);
            // Create routing builder
            routing = serverCdiExtension.serverRoutingBuilder();
        }
        // Finally register WebSockets in Helidon routing
        String rootPath = contextRoot.orElse(DEFAULT_WEBSOCKET_PATH);
        LOGGER.info("Registering websocket application at " + rootPath);
        routing.register(rootPath, new TyrusSupportMp(builder.build()));
    } catch (IllegalArgumentException e) {
        throw new RuntimeException("Unable to load WebSocket extension", e);
    }
}
Also used : CDI(jakarta.enterprise.inject.spi.CDI) ServerEndpointConfig(jakarta.websocket.server.ServerEndpointConfig) Observes(jakarta.enterprise.event.Observes) ApplicationScoped(jakarta.enterprise.context.ApplicationScoped) RuntimeStart(io.helidon.microprofile.cdi.RuntimeStart) ServerApplicationConfig(jakarta.websocket.server.ServerApplicationConfig) Extension(jakarta.enterprise.inject.spi.Extension) ProcessAnnotatedType(jakarta.enterprise.inject.spi.ProcessAnnotatedType) PLATFORM_AFTER(jakarta.interceptor.Interceptor.Priority.PLATFORM_AFTER) TyrusSupport(io.helidon.webserver.tyrus.TyrusSupport) Priority(jakarta.annotation.Priority) Initialized(jakarta.enterprise.context.Initialized) BeanManager(jakarta.enterprise.inject.spi.BeanManager) UnsatisfiedResolutionException(jakarta.enterprise.inject.UnsatisfiedResolutionException) Config(io.helidon.config.Config) RoutingPath(io.helidon.microprofile.server.RoutingPath) Set(java.util.Set) ServerCdiExtension(io.helidon.microprofile.server.ServerCdiExtension) Logger(java.util.logging.Logger) RoutingName(io.helidon.microprofile.server.RoutingName) Endpoint(jakarta.websocket.Endpoint) WithAnnotations(jakarta.enterprise.inject.spi.WithAnnotations) Optional(java.util.Optional) ServerEndpoint(jakarta.websocket.server.ServerEndpoint) Routing(io.helidon.webserver.Routing) ServerEndpointConfig(jakarta.websocket.server.ServerEndpointConfig) Routing(io.helidon.webserver.Routing) UnsatisfiedResolutionException(jakarta.enterprise.inject.UnsatisfiedResolutionException) ServerApplicationConfig(jakarta.websocket.server.ServerApplicationConfig) UnsatisfiedResolutionException(jakarta.enterprise.inject.UnsatisfiedResolutionException) TyrusSupport(io.helidon.webserver.tyrus.TyrusSupport)

Aggregations

Extension (jakarta.enterprise.inject.spi.Extension)7 Config (io.helidon.config.Config)2 RuntimeStart (io.helidon.microprofile.cdi.RuntimeStart)2 Priority (jakarta.annotation.Priority)2 ApplicationScoped (jakarta.enterprise.context.ApplicationScoped)2 Initialized (jakarta.enterprise.context.Initialized)2 RequestScoped (jakarta.enterprise.context.RequestScoped)2 Observes (jakarta.enterprise.event.Observes)2 UnsatisfiedResolutionException (jakarta.enterprise.inject.UnsatisfiedResolutionException)2 AfterBeanDiscovery (jakarta.enterprise.inject.spi.AfterBeanDiscovery)2 AfterDeploymentValidation (jakarta.enterprise.inject.spi.AfterDeploymentValidation)2 BeanManager (jakarta.enterprise.inject.spi.BeanManager)2 BeforeBeanDiscovery (jakarta.enterprise.inject.spi.BeforeBeanDiscovery)2 ProcessAnnotatedType (jakarta.enterprise.inject.spi.ProcessAnnotatedType)2 ProcessInjectionPoint (jakarta.enterprise.inject.spi.ProcessInjectionPoint)2 HashSet (java.util.HashSet)2 Map (java.util.Map)2 Optional (java.util.Optional)2 Set (java.util.Set)2 BeanDeploymentArchive (org.jboss.weld.bootstrap.spi.BeanDeploymentArchive)2