Search in sources :

Example 46 with BeanDeploymentArchive

use of org.jboss.weld.bootstrap.spi.BeanDeploymentArchive in project core by weld.

the class NonBdaExtensionTest method testEventsSentOnceOnly.

/*
    * description = "WELD-258"
    */
@Test
public void testEventsSentOnceOnly() {
    // Create the BDA in which we will deploy Observer1 and Foo. This is equivalent to a war or ejb jar
    final BeanDeploymentArchiveImpl bda1 = new BeanDeploymentArchiveImpl("1", CountingObserver1.class, Foo.class);
    // Create the BDA to return from loadBeanDeploymentArchive for Observer2, this is probably a library, though could be another war or ejb jar
    // bda2 is accessible from bda1, but isn't added to it's accessibility graph by default. This similar to an archive which doesn't contain a beans.xml but does contain an extension
    final BeanDeploymentArchive bda2 = new BeanDeploymentArchiveImpl("2", CountingObserver2.class);
    // Create a deployment, that we can use to mirror the structure of one Extension inside a BDA, and one outside
    Deployment deployment = new FlatDeployment(bda1, new Observer1(), new Observer2(), new CountingObserver1(), new CountingObserver2()) {

        public BeanDeploymentArchive loadBeanDeploymentArchive(Class<?> beanClass) {
            // Return bda2 if it is Observer2. Stick anything else which this test isn't about in bda1
            if (beanClass.equals(CountingObserver2.class) || beanClass.equals(Bar.class)) {
                // If Observer2 is requested, then we need to add bda2 to the accessibility graph of bda1
                bda1.getBeanDeploymentArchives().add(bda2);
                return bda2;
            } else {
                return bda1;
            }
        }
    };
    TestContainer container = new TestContainer(deployment);
    // Cause the container to deploy the beans etc.
    container.startContainer();
    // Get the bean manager for bda1 and bda2
    BeanManager beanManager1 = container.getBeanManager(bda1);
    CountingObserver1 observer1 = Utils.getReference(beanManager1, CountingObserver1.class);
    CountingObserver2 observer2 = Utils.getReference(beanManager1, CountingObserver2.class);
    Assert.assertEquals(1, observer1.getBeforeBeanDiscovery());
    Assert.assertEquals(1, observer1.getProcessFooManagedBean());
    Assert.assertEquals(1, observer1.getProcessBarManagedBean());
    Assert.assertEquals(1, observer2.getBeforeBeanDiscovery());
    Assert.assertEquals(1, observer2.getProcessFooManagedBean());
    Assert.assertEquals(1, observer2.getProcessBarManagedBean());
    container.stopContainer();
}
Also used : TestContainer(org.jboss.arquillian.container.weld.embedded.mock.TestContainer) BeanDeploymentArchiveImpl(org.jboss.arquillian.container.weld.embedded.mock.BeanDeploymentArchiveImpl) FlatDeployment(org.jboss.arquillian.container.weld.embedded.mock.FlatDeployment) BeanDeploymentArchive(org.jboss.weld.bootstrap.spi.BeanDeploymentArchive) FlatDeployment(org.jboss.arquillian.container.weld.embedded.mock.FlatDeployment) Deployment(org.jboss.weld.bootstrap.spi.Deployment) BeanManager(javax.enterprise.inject.spi.BeanManager) Test(org.testng.annotations.Test)

Example 47 with BeanDeploymentArchive

use of org.jboss.weld.bootstrap.spi.BeanDeploymentArchive in project core by weld.

the class InjectionTargetCreationTest method test.

@Test
public void test() {
    // Create the BDA in which we will deploy FooExtension. This BDA does not have access to bda2
    final BeanDeploymentArchive bda1 = new BeanDeploymentArchiveImpl("1", FooExtension.class);
    // Create the BDA in which we will deploy FooTarget and SimpleBean. This BDA does not have access to bda1
    final BeanDeploymentArchive bda2 = new BeanDeploymentArchiveImpl("2", SimpleBean.class, FooTarget.class);
    final FooExtension extension = new FooExtension();
    // Create a deployment, that we can use to mirror the structure of one Extension inside a BDA, and one outside
    Deployment deployment = new FlatDeployment(new BeanDeploymentArchive[] { bda1, bda2 }, extension) {

        public BeanDeploymentArchive loadBeanDeploymentArchive(Class<?> beanClass) {
            // Return bda2 if it is Observer2. Stick anything else which this test isn't about in bda1
            if (beanClass.equals(FooExtension.class)) {
                return bda1;
            } else {
                return bda2;
            }
        }

        public BeanDeploymentArchive getBeanDeploymentArchive(Class<?> beanClass) {
            return loadBeanDeploymentArchive(beanClass);
        }
    };
    TestContainer container = new TestContainer(deployment);
    // Cause the container to deploy the beans etc.
    container.startContainer();
    InjectionTarget<FooTarget> target = extension.getTarget();
    CreationalContext<FooTarget> ctx = container.getBeanManager(bda2).createCreationalContext(null);
    FooTarget instance = target.produce(ctx);
    target.postConstruct(instance);
    target.inject(instance, ctx);
    /*
         * Verify that the BeanManager for BDA2 (which can see SimpleBean) is used to inject FooTarget
         */
    assertNotNull(instance.getBean());
    container.stopContainer();
}
Also used : TestContainer(org.jboss.arquillian.container.weld.embedded.mock.TestContainer) BeanDeploymentArchiveImpl(org.jboss.arquillian.container.weld.embedded.mock.BeanDeploymentArchiveImpl) FlatDeployment(org.jboss.arquillian.container.weld.embedded.mock.FlatDeployment) BeanDeploymentArchive(org.jboss.weld.bootstrap.spi.BeanDeploymentArchive) FlatDeployment(org.jboss.arquillian.container.weld.embedded.mock.FlatDeployment) Deployment(org.jboss.weld.bootstrap.spi.Deployment) Test(org.testng.annotations.Test)

Aggregations

BeanDeploymentArchive (org.jboss.weld.bootstrap.spi.BeanDeploymentArchive)47 WeldBootstrap (org.jboss.weld.bootstrap.WeldBootstrap)11 BundleDescriptor (com.sun.enterprise.deployment.BundleDescriptor)7 HashSet (java.util.HashSet)7 Deployment (org.jboss.weld.bootstrap.spi.Deployment)7 BeanDeploymentArchiveImpl (org.jboss.arquillian.container.weld.embedded.mock.BeanDeploymentArchiveImpl)6 FlatDeployment (org.jboss.arquillian.container.weld.embedded.mock.FlatDeployment)6 TestContainer (org.jboss.arquillian.container.weld.embedded.mock.TestContainer)6 BeansXml (org.jboss.weld.bootstrap.spi.BeansXml)6 Test (org.testng.annotations.Test)6 BeanManager (javax.enterprise.inject.spi.BeanManager)5 BeanManagerImpl (org.jboss.weld.manager.BeanManagerImpl)5 EjbDescriptor (com.sun.enterprise.deployment.EjbDescriptor)4 WeldBeanDeploymentArchive (org.jboss.weld.environment.deployment.WeldBeanDeploymentArchive)4 Test (org.junit.Test)4 WebBundleDescriptor (com.sun.enterprise.deployment.WebBundleDescriptor)3 ComponentInvocation (org.glassfish.api.invocation.ComponentInvocation)3 Metadata (org.jboss.weld.bootstrap.spi.Metadata)3 JndiNameEnvironment (com.sun.enterprise.deployment.JndiNameEnvironment)2 SuppressFBWarnings (edu.umd.cs.findbugs.annotations.SuppressFBWarnings)2