All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.oneandone.cdi.weldstarter.WeldStarterTestBase Maven / Gradle / Ivy

The newest version!
package com.oneandone.cdi.weldstarter;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ServiceLoader;

import javax.enterprise.inject.spi.Extension;

import org.junit.After;
import org.junit.Before;

import com.oneandone.cdi.weldstarter.spi.WeldStarter;

/**
 * Helps develop tests to verify behaviour of CDI using weld-starters
 *
 * @author aschoerk
 */
public class WeldStarterTestBase {

    @Before
    public void initWeldStarter() {
        ServiceLoader loader = ServiceLoader.load(WeldStarter.class);
        List starters = new ArrayList<>();
        for (Iterator it = loader.iterator(); it.hasNext();) {
            WeldStarter s = it.next();
            starters.add(s);
        }
        if (starters.size() == 0)
            throw new RuntimeException("No WeldStarter found");
        if (starters.size() > 1)
            throw new RuntimeException("More than one WeldStarter found");
        setWeldStarter(starters.get(0));
    }


    WeldSetupClass weldSetup = new WeldSetupClass();
    WeldStarter weldStarter = null;

    public void setWeldStarter(WeldStarter weldStarterP) {
        this.weldStarter = weldStarterP;
    }

    public void setBeanClasses(Class... classes) {
        weldSetup.setBeanClasses(classes);
    }

    public void setDecoratorClasses(Class... classes) {
        weldSetup.setEnabledDecorators(Arrays.asList(classes));
    }

    public void setInterceptorClasses(Class... classes) {
        weldSetup.setEnabledInterceptors((Collection>) Arrays.asList(classes));
    }


    public void addBeanClasses(Class... classes) {
        weldSetup.addBeanClasses(classes);
    }

    public void setExtensions(Collection> classes) {
        weldSetup.setExtensions(classes);
    }

    public void setBeanClasses(Collection> classes) {
        weldSetup.setBeanClasses(classes.toArray(new Class[classes.size()]));
    }
    public void setAlternativeClasses(Collection> classes) {
        weldSetup.setAlternativeClasses(classes.toArray(new Class[classes.size()]));
    }

    public void setAlternativeClasses(Class... classes) {
        weldSetup.setAlternativeClasses(classes);
    }

    public void setEnabledAlternativeStereotypes(Class... classes) {
        weldSetup.setEnabledAlternativeStereotypes(classes);
    }

    public void start() {
        weldStarter.start(weldSetup);
    }

    public  T selectGet(Class clazz) {
        return weldStarter.get(clazz);
    }

    public String getStarterClassname() {
        return weldStarter.getClass().getName();
    }

    @After
    public void tearDown() {
        weldStarter.tearDown();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy