diff options
Diffstat (limited to 'jetty-cdi/cdi-core/src/test/java/org/eclipse/jetty/cdi/core/AbstractWeldTest.java')
-rw-r--r-- | jetty-cdi/cdi-core/src/test/java/org/eclipse/jetty/cdi/core/AbstractWeldTest.java | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/jetty-cdi/cdi-core/src/test/java/org/eclipse/jetty/cdi/core/AbstractWeldTest.java b/jetty-cdi/cdi-core/src/test/java/org/eclipse/jetty/cdi/core/AbstractWeldTest.java new file mode 100644 index 0000000000..6e56797202 --- /dev/null +++ b/jetty-cdi/cdi-core/src/test/java/org/eclipse/jetty/cdi/core/AbstractWeldTest.java @@ -0,0 +1,78 @@ +// +// ======================================================================== +// Copyright (c) 1995-2015 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package org.eclipse.jetty.cdi.core; + +import java.util.Set; + +import javax.enterprise.context.spi.CreationalContext; +import javax.enterprise.inject.spi.Bean; + +import org.jboss.weld.environment.se.Weld; +import org.jboss.weld.environment.se.WeldContainer; +import org.junit.AfterClass; +import org.junit.BeforeClass; + +public abstract class AbstractWeldTest +{ + public static class TestBean<T> + { + public Bean<T> bean; + public CreationalContext<T> cCtx; + public T instance; + + public void destroy() + { + bean.destroy(instance,cCtx); + } + } + + @BeforeClass + public static void initWeld() + { + weld = new Weld(); + container = weld.initialize(); + } + + @AfterClass + public static void shutdownWeld() + { + weld.shutdown(); + } + + private static WeldContainer container; + private static Weld weld; + + @SuppressWarnings("unchecked") + public <T> TestBean<T> newInstance(Class<T> clazz) throws Exception + { + TestBean<T> testBean = new TestBean<>(); + Set<Bean<?>> beans = container.getBeanManager().getBeans(clazz,AnyLiteral.INSTANCE); + if (beans.size() > 0) + { + testBean.bean = (Bean<T>)beans.iterator().next(); + testBean.cCtx = container.getBeanManager().createCreationalContext(testBean.bean); + testBean.instance = (T)container.getBeanManager().getReference(testBean.bean,clazz,testBean.cCtx); + return testBean; + } + else + { + throw new Exception(String.format("Can't find class %s",clazz)); + } + } +} |