[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