[webbeans-commits] Webbeans SVN: r1425 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb and 15 other directories.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Thu Feb 5 19:16:52 EST 2009
Author: pete.muir at jboss.org
Date: 2009-02-05 19:16:52 -0500 (Thu, 05 Feb 2009)
New Revision: 1425
Added:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/BufferedListener.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/TestRunner.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/servlet/
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/servlet/ServletTestRunner.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/Tame.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EJBApiAbstraction.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedAnnotationImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/jsf/JSFApiAbstraction.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletApiAbstraction.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ApiAbstraction.java
tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TCKConfiguration.java
tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TestSuite.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/AbstractTest.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/DeclarativeArtifactProcessor.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/TCKArtifactDescriptor.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/util/Reflections.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/BeanDefinitionTest.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/SpiderProducer.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/all/ArtifactTest.java
tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/subpackages/ArtifactTest.java
Log:
Work on runner for in container tests, support for @Artifact for standalone mode
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -1,7 +1,6 @@
package org.jboss.webbeans.bootstrap;
import java.lang.annotation.Annotation;
-import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;
@@ -39,7 +38,6 @@
import org.jboss.webbeans.log.LogProvider;
import org.jboss.webbeans.log.Logging;
import org.jboss.webbeans.servlet.ServletApiAbstraction;
-import org.jboss.webbeans.util.Reflections;
public class BeanDeployer
{
@@ -65,7 +63,10 @@
public void addClass(Class<?> clazz)
{
- deferredClasses.add(AnnotatedClassImpl.of(clazz));
+ if (!clazz.isAnnotation())
+ {
+ deferredClasses.add(AnnotatedClassImpl.of(clazz));
+ }
}
public void addClasses(Iterable<Class<?>> classes)
@@ -84,7 +85,7 @@
{
createEnterpriseBean(clazz);
}
- else if (isTypeSimpleWebBean(clazz.getType()))
+ else if (isTypeSimpleWebBean(clazz))
{
createSimpleBean(clazz);
}
@@ -245,33 +246,20 @@
* @param type The type to inspect
* @return True if simple Web Bean, false otherwise
*/
- private boolean isTypeSimpleWebBean(Class<?> type)
+ private boolean isTypeSimpleWebBean(AnnotatedClass<?> clazz)
{
EJBApiAbstraction ejbApiAbstraction = new EJBApiAbstraction(manager.getResourceLoader());
JSFApiAbstraction jsfApiAbstraction = new JSFApiAbstraction(manager.getResourceLoader());
ServletApiAbstraction servletApiAbstraction = new ServletApiAbstraction(manager.getResourceLoader());
// TODO: check 3.2.1 for more rules!!!!!!
- return !type.isAnnotation() && !Reflections.isAbstract(type) && !servletApiAbstraction.SERVLET_CLASS.isAssignableFrom(type) && !servletApiAbstraction.FILTER_CLASS.isAssignableFrom(type) && !servletApiAbstraction.SERVLET_CONTEXT_LISTENER_CLASS.isAssignableFrom(type) && !servletApiAbstraction.HTTP_SESSION_LISTENER_CLASS.isAssignableFrom(type) && !servletApiAbstraction.SERVLET_REQUEST_LISTENER_CLASS.isAssignableFrom(type) && !ejbApiAbstraction.ENTERPRISE_BEAN_CLASS.isAssignableFrom(type) && !jsfApiAbstraction.UICOMPONENT_CLASS.isAssignableFrom(type) && hasSimpleWebBeanConstructor(type);
+ return !clazz.isAbstract() && !clazz.isParameterizedType() && !servletApiAbstraction.SERVLET_CLASS.isAssignableFrom(clazz) && !servletApiAbstraction.FILTER_CLASS.isAssignableFrom(clazz) && !servletApiAbstraction.SERVLET_CONTEXT_LISTENER_CLASS.isAssignableFrom(clazz) && !servletApiAbstraction.HTTP_SESSION_LISTENER_CLASS.isAssignableFrom(clazz) && !servletApiAbstraction.SERVLET_REQUEST_LISTENER_CLASS.isAssignableFrom(clazz) && !ejbApiAbstraction.ENTERPRISE_BEAN_CLASS.isAssignableFrom(clazz) && !jsfApiAbstraction.UICOMPONENT_CLASS.isAssignableFrom(clazz) && hasSimpleWebBeanConstructor(clazz);
}
- private static boolean hasSimpleWebBeanConstructor(Class<?> type)
+ private static boolean hasSimpleWebBeanConstructor(AnnotatedClass<?> type)
{
- try
- {
- type.getDeclaredConstructor();
- return true;
- }
- catch (NoSuchMethodException nsme)
- {
- for (Constructor<?> c : type.getDeclaredConstructors())
- {
- if (c.isAnnotationPresent(Initializer.class))
- return true;
- }
- return false;
- }
+ return type.getConstructor() != null || type.getAnnotatedConstructors(Initializer.class).size() > 0;
}
private static <T> AnnotatedMethod<T> realizeProducerMethod(final AnnotatedMethod<T> method, final AnnotatedClass<?> realizingClass)
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EJBApiAbstraction.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EJBApiAbstraction.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EJBApiAbstraction.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -17,6 +17,7 @@
package org.jboss.webbeans.ejb;
+import org.jboss.webbeans.introspector.AnnotatedClass;
import org.jboss.webbeans.resources.spi.ResourceLoader;
import org.jboss.webbeans.util.ApiAbstraction;
@@ -34,6 +35,6 @@
ENTERPRISE_BEAN_CLASS = classForName("javax.ejb.EnterpriseBean");
}
- public final Class<?> ENTERPRISE_BEAN_CLASS;
+ public final AnnotatedClass<?> ENTERPRISE_BEAN_CLASS;
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedClass.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -91,6 +91,8 @@
* an empty set if there are no matches
*/
public AnnotatedConstructor<T> getConstructor(List<Class<?>> arguments);
+
+ public AnnotatedConstructor<T> getConstructor(Class<?>... arguments);
/**
* Gets all methods annotated with annotationType
@@ -153,5 +155,7 @@
public boolean isNonStaticMemberClass();
public boolean isParameterizedType();
+
+ public boolean isAbstract();
}
\ No newline at end of file
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -45,6 +45,11 @@
{
return delegate().getConstructor(arguments);
}
+
+ public AnnotatedConstructor<T> getConstructor(Class<?>... arguments)
+ {
+ return delegate().getConstructor(arguments);
+ }
public Set<AnnotatedConstructor<T>> getConstructors()
{
@@ -101,6 +106,11 @@
return delegate().isParameterizedType();
}
+ public boolean isAbstract()
+ {
+ return delegate().isAbstract();
+ }
+
public AnnotatedMethod<?> getDeclaredMethod(Method method)
{
return delegate().getDeclaredMethod(method);
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedAnnotationImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedAnnotationImpl.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedAnnotationImpl.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -97,6 +97,11 @@
// Cached string representation
private String toString;
+
+ public static <A extends Annotation> AnnotatedAnnotation<A> of(Class<A> annotationType)
+ {
+ return new AnnotatedAnnotationImpl<A>(annotationType);
+ }
/**
* Constructor
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedClassImpl.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -259,6 +259,7 @@
private final boolean _nonStaticMemberClass;
private final boolean _parameterizedType;
+ private final boolean _abstract;
public static <T> AnnotatedClass<T> of(Class<T> clazz)
{
@@ -300,6 +301,7 @@
this.declaredMetaAnnotatedFields = new AnnotatedFieldMap();
this._nonStaticMemberClass = Reflections.isNonMemberInnerClass(rawType);
this._parameterizedType = Reflections.isParameterizedType(rawType);
+ this._abstract = Reflections.isAbstract(rawType);
for (Class<?> c = clazz; c != Object.class && c != null; c = c.getSuperclass())
{
for (Field field : c.getDeclaredFields())
@@ -510,6 +512,11 @@
return _parameterizedType;
}
+ public boolean isAbstract()
+ {
+ return _abstract;
+ }
+
/**
* Gets the actual type arguments
*
@@ -575,6 +582,11 @@
return constructorsByArgumentMap.get(arguments);
}
+ public AnnotatedConstructor<T> getConstructor(Class<?>... arguments)
+ {
+ return getConstructor(Arrays.asList(arguments));
+ }
+
public Set<AnnotatedMethod<?>> getMethodsWithAnnotatedParameters(Class<? extends Annotation> annotationType)
{
return Collections.unmodifiableSet(methodsByAnnotatedParameters.get(annotationType));
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/jsf/JSFApiAbstraction.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/jsf/JSFApiAbstraction.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/jsf/JSFApiAbstraction.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -17,6 +17,7 @@
package org.jboss.webbeans.jsf;
+import org.jboss.webbeans.introspector.AnnotatedClass;
import org.jboss.webbeans.resources.spi.ResourceLoader;
import org.jboss.webbeans.util.ApiAbstraction;
@@ -30,7 +31,7 @@
{
// An UI component
- public final Class<?> UICOMPONENT_CLASS;
+ public final AnnotatedClass<?> UICOMPONENT_CLASS;
public JSFApiAbstraction(ResourceLoader resourceLoader)
{
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletApiAbstraction.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletApiAbstraction.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletApiAbstraction.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -17,6 +17,7 @@
package org.jboss.webbeans.servlet;
+import org.jboss.webbeans.introspector.AnnotatedClass;
import org.jboss.webbeans.resources.spi.ResourceLoader;
import org.jboss.webbeans.util.ApiAbstraction;
@@ -28,11 +29,11 @@
public class ServletApiAbstraction extends ApiAbstraction
{
- public final Class<?> SERVLET_CLASS;
- public final Class<?> FILTER_CLASS;
- public final Class<?> SERVLET_CONTEXT_LISTENER_CLASS;
- public final Class<?> HTTP_SESSION_LISTENER_CLASS;
- public final Class<?> SERVLET_REQUEST_LISTENER_CLASS;
+ public final AnnotatedClass<?> SERVLET_CLASS;
+ public final AnnotatedClass<?> FILTER_CLASS;
+ public final AnnotatedClass<?> SERVLET_CONTEXT_LISTENER_CLASS;
+ public final AnnotatedClass<?> HTTP_SESSION_LISTENER_CLASS;
+ public final AnnotatedClass<?> SERVLET_REQUEST_LISTENER_CLASS;
/**
* Constructor
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ApiAbstraction.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ApiAbstraction.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/ApiAbstraction.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -19,6 +19,10 @@
import java.lang.annotation.Annotation;
+import org.jboss.webbeans.introspector.AnnotatedAnnotation;
+import org.jboss.webbeans.introspector.AnnotatedClass;
+import org.jboss.webbeans.introspector.jlr.AnnotatedAnnotationImpl;
+import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
import org.jboss.webbeans.resources.spi.ResourceLoader;
import org.jboss.webbeans.resources.spi.ResourceLoadingException;
@@ -30,6 +34,10 @@
public class ApiAbstraction
{
+ private static final AnnotatedAnnotation<DummyAnnotation> DUMMY_ANNOTATION = AnnotatedAnnotationImpl.of(DummyAnnotation.class);
+
+ private static final AnnotatedClass<Dummy> DUMMY_CLASS = AnnotatedClassImpl.of(Dummy.class);
+
private ResourceLoader resourceLoader;
/**
@@ -65,15 +73,15 @@
* not found
*/
@SuppressWarnings("unchecked")
- protected Class<? extends Annotation> annotationTypeForName(String name)
+ protected AnnotatedAnnotation<?> annotationTypeForName(String name)
{
try
{
- return (Class<? extends Annotation>) resourceLoader.classForName(name);
+ return AnnotatedAnnotationImpl.of((Class<? extends Annotation>) resourceLoader.classForName(name));
}
catch (ResourceLoadingException cnfe)
{
- return DummyAnnotation.class;
+ return DUMMY_ANNOTATION;
}
}
@@ -85,15 +93,15 @@
* found.
*/
@SuppressWarnings("unchecked")
- protected Class<?> classForName(String name)
+ protected AnnotatedClass<?> classForName(String name)
{
try
{
- return (Class<? extends Annotation>) resourceLoader.classForName(name);
+ return AnnotatedClassImpl.of(resourceLoader.classForName(name));
}
catch (ResourceLoadingException cnfe)
{
- return Dummy.class;
+ return DUMMY_CLASS;
}
}
Modified: tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TCKConfiguration.java
===================================================================
--- tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TCKConfiguration.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TCKConfiguration.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -33,7 +33,7 @@
this.contexts = contexts;
this.managers = managers;
this.containers = containers;
- if (testSuite == null)
+ if (testSuite != null)
{
this.testSuite = testSuite;
}
Modified: tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TestSuite.java
===================================================================
--- tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TestSuite.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ tck/trunk/api/src/main/java/org/jboss/webbeans/tck/api/TestSuite.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -6,7 +6,7 @@
public static final String PROPERTY_NAME = TestSuite.class.getName();
private String outputDirectory;
- private boolean standalone;
+ private boolean standalone = true;
private int deploymentDelay = 5000;
private boolean writeDeployedArchivesToDisk;
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/AbstractTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/AbstractTest.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/AbstractTest.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -14,6 +14,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.Set;
import javax.context.Context;
import javax.context.CreationalContext;
@@ -22,6 +23,10 @@
import javax.inject.manager.Bean;
import javax.inject.manager.Manager;
+import org.jboss.webbeans.tck.impl.packaging.Artifact;
+import org.jboss.webbeans.tck.impl.packaging.ArtifactDescriptor;
+import org.jboss.webbeans.tck.impl.packaging.DeclarativeArtifactProcessor;
+import org.jboss.webbeans.tck.impl.packaging.EjbArtifact;
import org.jboss.webbeans.tck.impl.util.MockCreationalContext;
import org.jboss.webbeans.tck.spi.StandaloneContainers;
import org.testng.annotations.AfterMethod;
@@ -36,12 +41,12 @@
protected void setup()
{
- AbstractTest.activateDependentContext();
+ configuration().getContexts().setActive(configuration().getContexts().getDependentContext());
}
protected void cleanup()
{
- AbstractTest.deactivateDependentContext();
+ configuration().getContexts().setInactive(configuration().getContexts().getDependentContext());
}
public final void run() throws Exception
@@ -62,16 +67,15 @@
}
private static final List<Class<? extends Annotation>> STANDARD_DEPLOYMENT_TYPES = Collections.unmodifiableList(Arrays.asList(Standard.class, Production.class));
+ private static final Class<?>[] EMPTY_CLASS_ARRAY = new Class<?>[0];
- protected static final int BUILT_IN_BEANS = 3;
-
protected Manager manager;
private StandaloneContainers containers;
public static boolean visited = false;
@BeforeMethod
- public final void before()
+ public final void before(Method testMethod)
{
if (getEnabledDeploymentTypes().size() > 0)
{
@@ -82,6 +86,24 @@
manager = configuration().getManagers().createManager();
}
containers = (StandaloneContainers) configuration().getContainers();
+ if (configuration().getTestSuite().isStandalone())
+ {
+ Class<?> declaringClass = testMethod.getDeclaringClass();
+ if (declaringClass.isAnnotationPresent(Artifact.class) || declaringClass.isAnnotationPresent(EjbArtifact.class))
+ {
+ DeclarativeArtifactProcessor processor = new DeclarativeArtifactProcessor(declaringClass);
+ ArtifactDescriptor artifact = processor.getArtifact(true);
+ Set<Class<?>> classes = artifact.getClasses();
+ if (getEnabledDeploymentTypes().size() > 0)
+ {
+ manager = containers.deploy(getEnabledDeploymentTypes(), classes.toArray(EMPTY_CLASS_ARRAY));
+ }
+ else
+ {
+ manager = containers.deploy(classes.toArray(EMPTY_CLASS_ARRAY));
+ }
+ }
+ }
}
@AfterMethod
@@ -119,6 +141,7 @@
*
* @param classes A list of classes representing the beans to deploy
*/
+ @Deprecated
protected void deployBeans(Class<?>... classes)
{
if (getEnabledDeploymentTypes().size() > 0)
@@ -131,17 +154,6 @@
}
}
- /**
- * Used to deploy any EJB 3.1 beans to the appropriate container. TODO This
- * needs to use a different container in EE 5 for deployment.
- *
- * @param classes A list of classes representing the beans to deploy
- */
- protected void deployEjbBeans(Class<?>... classes)
- {
- deployBeans(classes);
- }
-
protected final List<Class<? extends Annotation>> getStandardDeploymentTypes()
{
return new ArrayList<Class<? extends Annotation>>(STANDARD_DEPLOYMENT_TYPES);
@@ -172,11 +184,19 @@
return in.readObject();
}
+ /**
+ * @see RunInDependentContext
+ */
+ @Deprecated
protected static void activateDependentContext()
{
configuration().getContexts().setActive(configuration().getContexts().getDependentContext());
}
+ /**
+ * @see RunInDependentContext
+ */
+ @Deprecated
protected static void deactivateDependentContext()
{
configuration().getContexts().setInactive(configuration().getContexts().getDependentContext());
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/ArtifactDescriptor.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -1,5 +1,6 @@
package org.jboss.webbeans.tck.impl.packaging;
+import static org.jboss.webbeans.tck.impl.util.Reflections.loadClass;
import static org.jboss.webbeans.tck.impl.util.Reflections.loadResourceAsStream;
import static org.jboss.webbeans.tck.impl.util.Reflections.loadResources;
@@ -14,10 +15,13 @@
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLDecoder;
+import java.util.Enumeration;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import java.util.zip.ZipEntry;
+import java.util.zip.ZipException;
+import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
import org.apache.log4j.Logger;
@@ -41,11 +45,14 @@
private final Package pkg;
+ private final String packageNamePath;
+
private final Set<String> classes = new HashSet<String>();
public URLPackageScanner(Package pkg)
{
this.pkg = pkg;
+ this.packageNamePath = pkg.getName().replace(".", "/");
}
private void scanPackage()
@@ -53,8 +60,8 @@
try
{
Set<String> paths = new HashSet<String>();
- String packageName = pkg.getName().replace(".", "/");
- for (URL url : loadResources(packageName))
+
+ for (URL url : loadResources(packageNamePath))
{
String urlPath = url.getFile();
urlPath = URLDecoder.decode(urlPath, "UTF-8");
@@ -76,8 +83,32 @@
}
}
- private void handle(Set<String> paths)
+ private void handleArchiveByFile(File file) throws IOException
{
+ try
+ {
+ log.trace("archive: " + file);
+ ZipFile zip = new ZipFile(file);
+ Enumeration<? extends ZipEntry> entries = zip.entries();
+ while ( entries.hasMoreElements() )
+ {
+ ZipEntry entry = entries.nextElement();
+ String name = entry.getName();
+ if (name.startsWith(packageNamePath) && !name.substring(packageNamePath.length() + 1).contains("/") && name.endsWith(".class"))
+ {
+ String className = name.replace("/", ".").replace(".class", "");
+ classes.add(className);
+ }
+ }
+ }
+ catch (ZipException e)
+ {
+ throw new RuntimeException("Error handling file " + file, e);
+ }
+ }
+
+ private void handle(Set<String> paths) throws IOException
+ {
for ( String urlPath: paths )
{
log.trace("scanning: " + urlPath);
@@ -92,6 +123,10 @@
}
}
}
+ else
+ {
+ handleArchiveByFile(file);
+ }
}
}
@@ -149,7 +184,6 @@
public static final Random random = new Random(System.currentTimeMillis());
private final Set<Class<?>> classes;
- private final Set<Package> packages;
private final Set<ResourceDescriptor> resources;
private final Class<?> declaringClass;
@@ -157,7 +191,6 @@
{
classes = new HashSet<Class<?>>();
resources = new HashSet<ResourceDescriptor>();
- packages = new HashSet<Package>();
this.declaringClass = declaringClass;
}
@@ -175,14 +208,6 @@
{
copyClass(clazz, getClassesRoot(root));
}
- for (Package pkg : getPackages())
- {
- URLPackageScanner packageScanner = new URLPackageScanner(pkg);
- for (String className : packageScanner.getClassNames())
- {
- copyClass(className, getClassesRoot(root));
- }
- }
for (ResourceDescriptor resourceDescriptor : getResources())
{
String directoryName = resourceDescriptor.getName().substring(0, resourceDescriptor.getName().lastIndexOf("/"));
@@ -258,9 +283,13 @@
return resources;
}
- public Set<Package> getPackages()
+ public void addPackage(Package pkg)
{
- return packages;
+ URLPackageScanner packageScanner = new URLPackageScanner(pkg);
+ for (String className : packageScanner.getClassNames())
+ {
+ getClasses().add(loadClass(className));
+ }
}
public File getClassesRoot(File archiveRoot)
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/DeclarativeArtifactProcessor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/DeclarativeArtifactProcessor.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/DeclarativeArtifactProcessor.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -145,7 +145,7 @@
}
if (addDeclaringPackage)
{
- artifact.getPackages().add(declaringClass.getPackage());
+ artifact.addPackage(declaringClass.getPackage());
}
artifact.setEjbs(ejbs);
artifact.setUnit(unit);
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/TCKArtifactDescriptor.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/TCKArtifactDescriptor.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/packaging/jsr299/TCKArtifactDescriptor.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -3,6 +3,7 @@
import org.jboss.webbeans.tck.AbstractTest;
import org.jboss.webbeans.tck.impl.util.Reflections;
import org.jboss.webbeans.tck.literals.NewLiteral;
+import org.jboss.webbeans.tck.runner.TestRunner;
public class TCKArtifactDescriptor extends JSR299ArtifactDescriptor
{
@@ -13,9 +14,10 @@
public TCKArtifactDescriptor(Class<?> declaringClass, String beansXmlSourceFileName)
{
super(declaringClass, beansXmlSourceFileName);
- getPackages().add(AbstractTest.class.getPackage());
- getPackages().add(NewLiteral.class.getPackage());
- getPackages().add(Reflections.class.getPackage());
+ addPackage(AbstractTest.class.getPackage());
+ addPackage(NewLiteral.class.getPackage());
+ addPackage(Reflections.class.getPackage());
+ addPackage(TestRunner.class.getPackage());
}
public boolean isEjbs()
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/util/Reflections.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/util/Reflections.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/impl/util/Reflections.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -73,6 +73,34 @@
return url;
}
+ public static Class<?> loadClass(String name)
+ {
+ Class<?> clazz = null;
+ if (Thread.currentThread().getContextClassLoader() != null)
+ {
+ try
+ {
+ clazz = Thread.currentThread().getContextClassLoader().loadClass(name);
+ }
+ catch (ClassNotFoundException e)
+ {
+ // no-op
+ }
+ }
+ if (clazz == null)
+ {
+ try
+ {
+ clazz = Class.forName(name);
+ }
+ catch (ClassNotFoundException e)
+ {
+ // No-op
+ }
+ }
+ return clazz;
+ }
+
public static Iterable<URL> loadResources(String name) throws IOException
{
Enumeration<URL> urls = null;
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/BufferedListener.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/BufferedListener.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/BufferedListener.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -0,0 +1,60 @@
+package org.jboss.webbeans.tck.runner;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.testng.ITestContext;
+import org.testng.ITestListener;
+import org.testng.ITestResult;
+
+public class BufferedListener implements ITestListener
+{
+
+ private final List<ITestResult> results;
+
+ public BufferedListener()
+ {
+ results = new ArrayList<ITestResult>();
+ }
+
+ public void onFinish(ITestContext context)
+ {
+ // No-op
+ }
+
+ public void onStart(ITestContext context)
+ {
+ // No-op
+ }
+
+ public void onTestFailedButWithinSuccessPercentage(ITestResult result)
+ {
+ // No-op
+ }
+
+ public void onTestFailure(ITestResult result)
+ {
+ results.add(result);
+ }
+
+ public void onTestSkipped(ITestResult result)
+ {
+ results.add(result);
+
+ }
+
+ public void onTestStart(ITestResult result)
+ {
+ // No-op
+ }
+
+ public void onTestSuccess(ITestResult result)
+ {
+ results.add(result);
+ }
+
+ public List<ITestResult> getResults()
+ {
+ return results;
+ }
+}
Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/BufferedListener.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/TestRunner.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/TestRunner.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/TestRunner.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -0,0 +1,46 @@
+package org.jboss.webbeans.tck.runner;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.testng.ITestResult;
+import org.testng.TestNG;
+import org.testng.xml.XmlClass;
+import org.testng.xml.XmlSuite;
+import org.testng.xml.XmlTest;
+
+public class TestRunner
+{
+
+ private String className;
+
+ public TestRunner(String className)
+ {
+ this.className = className;
+ }
+
+ public List<ITestResult> run()
+ {
+ TestNG testNG = new TestNG(false);
+ BufferedListener listener = new BufferedListener();
+ testNG.addListener(listener);
+ List<XmlSuite> suites = new ArrayList<XmlSuite>();
+ testNG.setXmlSuites(suites);
+ suites.add(createSuite());
+ testNG.run();
+ return listener.getResults();
+ }
+
+ private XmlSuite createSuite()
+ {
+ XmlSuite suite = new XmlSuite();
+ suite.setName("JSR-299 TCK");
+ XmlTest test = new XmlTest(suite);
+ test.setName("JSR-299 TCK " + className);
+ List<XmlClass> testClasses = Arrays.asList(new XmlClass(className));
+ test.setXmlClasses(testClasses);
+ return suite;
+ }
+
+}
Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/TestRunner.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/servlet/ServletTestRunner.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/servlet/ServletTestRunner.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/servlet/ServletTestRunner.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -0,0 +1,44 @@
+package org.jboss.webbeans.tck.runner.servlet;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jboss.webbeans.tck.impl.util.Strings;
+import org.jboss.webbeans.tck.runner.TestRunner;
+
+public class ServletTestRunner extends HttpServlet
+{
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
+ {
+ super.doGet(req, resp);
+ String className = req.getParameter("className");
+ if (Strings.isEmpty(className))
+ {
+ System.err.println("Class name cannot be null");
+ resp.sendError(500);
+ }
+ TestRunner runner = new TestRunner(className);
+ byte[] result = serialize(runner.run());
+ resp.setContentLength(result.length);
+ resp.setContentType("application/octet-stream");
+ resp.setStatus(HttpServletResponse.SC_OK);
+ resp.getOutputStream().write(result);
+ }
+
+ protected byte[] serialize(Object instance) throws IOException
+ {
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+ ObjectOutputStream out = new ObjectOutputStream(bytes);
+ out.writeObject(instance);
+ return bytes.toByteArray();
+ }
+
+}
Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/runner/servlet/ServletTestRunner.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/BeanDefinitionTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/BeanDefinitionTest.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/BeanDefinitionTest.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -1,8 +1,11 @@
package org.jboss.webbeans.tck.unit.definition.bean;
-import java.lang.reflect.Method;
+import java.lang.annotation.Annotation;
+import java.util.ArrayList;
+import java.util.List;
import javax.context.RequestScoped;
+import javax.inject.AnnotationLiteral;
import javax.inject.Production;
import javax.inject.manager.Bean;
@@ -23,39 +26,50 @@
public class BeanDefinitionTest extends AbstractTest
{
- // TODO This should actually somehow test the reverse - that the container
+ private static Annotation TAME_LITERAL = new AnnotationLiteral<Tame>() {};
+
+ @Override
+ protected List<Class<? extends Annotation>> getEnabledDeploymentTypes()
+ {
+ List<Class<? extends Annotation>> deploymentTypes = new ArrayList<Class<? extends Annotation>>();
+ deploymentTypes.addAll(super.getStandardDeploymentTypes());
+ deploymentTypes.add(AnotherDeploymentType.class);
+ return deploymentTypes;
+ }
+
+ // TODO This should actually somehow test the reverse as well - that the container
// throws a definition exception if any of these occur
@Test
@SpecAssertion(section = "2", id = "unknown")
public void testApiTypesNonEmpty()
{
- Bean<?> model = createSimpleBean(RedSnapper.class);
- assert model.getTypes().size() > 0;
+ assert manager.resolveByType(RedSnapper.class).size() == 1;
+ assert manager.resolveByType(RedSnapper.class).iterator().next().getTypes().size() > 0;
}
@Test
@SpecAssertion(section = "2", id = "unknown")
public void testBindingTypesNonEmpty()
{
- Bean<?> model = createSimpleBean(RedSnapper.class);
- assert model.getBindings().size() > 0;
+ assert manager.resolveByType(RedSnapper.class).size() == 1;
+ assert manager.resolveByType(RedSnapper.class).iterator().next().getBindings().size() > 0;
}
@Test
@SpecAssertion(section = "2", id = "unknown")
public void testHasScopeType()
{
- Bean<?> model = createSimpleBean(RedSnapper.class);
- assert model.getScopeType().equals(RequestScoped.class);
+ assert manager.resolveByType(RedSnapper.class).size() == 1;
+ assert manager.resolveByType(RedSnapper.class).iterator().next().getScopeType().equals(RequestScoped.class);
}
@Test
@SpecAssertion(section = "2", id = "unknown")
public void testHasDeploymentType()
{
- Bean<?> model = createSimpleBean(RedSnapper.class);
- assert model.getDeploymentType().equals(Production.class);
+ assert manager.resolveByType(RedSnapper.class).size() == 1;
+ assert manager.resolveByType(RedSnapper.class).iterator().next().getDeploymentType().equals(Production.class);
}
@SuppressWarnings("unchecked")
@@ -63,14 +77,12 @@
@SpecAssertion(section = "5.2", id = "unknown")
public void testIsNullable() throws Exception
{
- Bean<SpiderProducer> spiderProducerBean = createSimpleBean(SpiderProducer.class);
- manager.addBean(spiderProducerBean);
- Method method = SpiderProducer.class.getMethod("getWolfSpiderSize");
- Bean<Integer> bean = createProducerMethodBean(method, spiderProducerBean);
+ assert manager.resolveByType(Integer.class).size() == 1;
+ Bean<Integer> bean = manager.resolveByType(Integer.class).iterator().next();
assert !bean.isNullable();
- method = SpiderProducer.class.getMethod("makeASpider");
- Bean<Spider> spiderBean = createProducerMethodBean(method, spiderProducerBean);
- assert spiderBean.isNullable();
+ assert manager.resolveByType(Animal.class, TAME_LITERAL).size() == 1;
+ Bean<Animal> animalBean = manager.resolveByType(Animal.class, TAME_LITERAL).iterator().next();
+ assert animalBean.isNullable();
}
@Test
@@ -80,7 +92,8 @@
})
public void testBeanTypes()
{
- Bean<Tarantula> bean = createSimpleBean(Tarantula.class);
+ assert manager.resolveByType(Tarantula.class).size() == 1;
+ Bean<Tarantula> bean = manager.resolveByType(Tarantula.class).iterator().next();
assert bean.getTypes().size() == 6;
assert bean.getTypes().contains(Tarantula.class);
assert bean.getTypes().contains(Spider.class);
@@ -94,7 +107,7 @@
@SpecAssertion(section = "2.2", id = "unknown")
public void testFinalApiType()
{
- createSimpleBean(DependentFinalTuna.class);
+ manager.resolveByType(DependentFinalTuna.class);
}
}
\ No newline at end of file
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/SpiderProducer.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/SpiderProducer.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/SpiderProducer.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -11,7 +11,7 @@
return new WolfSpider();
}
- @Produces public Animal makeASpider()
+ @Produces @Tame public Animal makeASpider()
{
return new WolfSpider();
}
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/Tame.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/Tame.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/Tame.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -0,0 +1,22 @@
+package org.jboss.webbeans.tck.unit.definition.bean;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.BindingType;
+
+ at Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+ at interface Tame
+{
+
+}
Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/definition/bean/Tame.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/all/ArtifactTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/all/ArtifactTest.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/all/ArtifactTest.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -14,7 +14,7 @@
public void testAllClassesInPackage() throws Exception
{
ArtifactDescriptor artifactDescriptor = new ArtifactDescriptor(null);
- artifactDescriptor.getPackages().add(ArtifactTest.class.getPackage());
+ artifactDescriptor.addPackage(ArtifactTest.class.getPackage());
File root = artifactDescriptor.create();
File currentPackage = getCurrentPackageAsFile(root);
assert currentPackage.listFiles().length == 6;
Modified: tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/subpackages/ArtifactTest.java
===================================================================
--- tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/subpackages/ArtifactTest.java 2009-02-06 00:01:26 UTC (rev 1424)
+++ tck/trunk/impl/src/test/java/org/jboss/webbeans/tck/impl/test/packaging/subpackages/ArtifactTest.java 2009-02-06 00:16:52 UTC (rev 1425)
@@ -14,7 +14,7 @@
public void testAllClassesInPackageAndNotSubPackages() throws Exception
{
ArtifactDescriptor artifactDescriptor = new ArtifactDescriptor(null);
- artifactDescriptor.getPackages().add(ArtifactTest.class.getPackage());
+ artifactDescriptor.addPackage(ArtifactTest.class.getPackage());
File root = artifactDescriptor.create();
File currentPackage = getCurrentPackageAsFile(root);
assert currentPackage.listFiles().length == 4;
More information about the weld-commits
mailing list