You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openwebbeans.apache.org by "Mark Struberg (JIRA)" <ji...@apache.org> on 2009/12/15 23:27:18 UTC

[jira] Created: (OWB-190) Make the TestLifeCycles available in webbeans-impl

Make the TestLifeCycles available in webbeans-impl
--------------------------------------------------

                 Key: OWB-190
                 URL: https://issues.apache.org/jira/browse/OWB-190
             Project: OpenWebBeans
          Issue Type: Improvement
          Components: Lifecycle
    Affects Versions: M3
            Reporter: Mark Struberg
            Assignee: Mark Struberg
             Fix For: M4


Currently the OpenWebBeansTestLifecycle is only available internally for the tests and via the tests.jar.

This is not usable for running automated function tests in projects which use OWB.
I'd like to move over the OpenWebBeansTestLifeCycle (where one has to manually select all classes which should get scanned) to a new lifecycle.test package and also add a new EnterpriseTestLifeCycle which scanns all classes on the classpaths according to the spec.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (OWB-190) Make the TestLifeCycles available in webbeans-impl

Posted by "Mark Struberg (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OWB-190?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mark Struberg resolved OWB-190.
-------------------------------

    Resolution: Fixed

Moved the TestLifeCycle to a visible package.

A unittest in a project using OpenWebBeans could be using

META-INF/openwebbeans/openwebbeans.properties:
{noformat}
# the service section:
# The key is the Interface, the value the implementation of the service

# use the static HashMap instead of storing objects in JNDI as default  
org.apache.webbeans.spi.JNDIService=org.apache.webbeans.spi.se.JNDIServiceStaticImpl

# lookup the javax.transaction.TransactionManager via JNDI as default 
org.apache.webbeans.spi.TransactionService=org.apache.webbeans.spi.se.TransactionServiceNonJTA

#use the web metadata as default
org.apache.webbeans.spi.deployer.MetaDataDiscoveryService=org.apache.webbeans.spi.se.deployer.MetaDataDiscoveryStandard

#Lifecycle to start container
org.apache.webbeans.spi.Lifecycle=org.apache.webbeans.lifecycle.test.EnterpriseTestLifeCycle
{noformat}


And utilise it from the unit tests by using the following class to bootstrap OWB in a @BeforeClass or similar:
{noformat}
import java.util.Set;

import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;

import org.apache.webbeans.lifecycle.LifecycleFactory;
import org.apache.webbeans.spi.Lifecycle;
import org.testng.Assert;

public class ContainerStarter {

    private Lifecycle lifecycle = null;

    public  void boot(Object startupObject) throws Exception {
        lifecycle = LifecycleFactory.getInstance().getLifecycle();
        lifecycle.applicationStarted(startupObject);
    }

    public void shutdown(Object endObject) throws Exception {
        lifecycle = LifecycleFactory.getInstance().getLifecycle();
        if (lifecycle != null) {
            lifecycle.applicationEnded(endObject);
        }
    }

    public  BeanManager getBeanManager() {
        return lifecycle.getBeanManager();
    }
    
    public <T> T getInstance(Class<T> clazz) {
        Set<Bean<?>> beans = getBeanManager().getBeans(clazz);
        Assert.assertNotNull(beans, "cannot find beans for class " + clazz.getCanonicalName());
        Assert.assertTrue(!beans.isEmpty(), "cannot find beans for class " + clazz.getCanonicalName());

        @SuppressWarnings("unchecked")
        Bean<T> bean = (Bean<T>)beans.iterator().next();

        @SuppressWarnings("unchecked")
        T instance = (T) getBeanManager().getReference(bean, clazz, getBeanManager().createCreationalContext(bean));
        return instance;
    }

}
{noformat}

> Make the TestLifeCycles available in webbeans-impl
> --------------------------------------------------
>
>                 Key: OWB-190
>                 URL: https://issues.apache.org/jira/browse/OWB-190
>             Project: OpenWebBeans
>          Issue Type: Improvement
>          Components: Lifecycle
>    Affects Versions: M3
>            Reporter: Mark Struberg
>            Assignee: Mark Struberg
>             Fix For: M4
>
>
> Currently the OpenWebBeansTestLifecycle is only available internally for the tests and via the tests.jar.
> This is not usable for running automated function tests in projects which use OWB.
> I'd like to move over the OpenWebBeansTestLifeCycle (where one has to manually select all classes which should get scanned) to a new lifecycle.test package and also add a new EnterpriseTestLifeCycle which scanns all classes on the classpaths according to the spec.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.