You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2011/09/10 09:17:03 UTC

svn commit: r1167471 - in /openejb/trunk/openejb3: assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/ container/openejb-core/src/main/java/org/apache/openejb/ container/openejb-core/src/main/java/org/apach...

Author: dblevins
Date: Sat Sep 10 07:17:02 2011
New Revision: 1167471

URL: http://svn.apache.org/viewvc?rev=1167471&view=rev
Log:
OPENEJB-1659: @Inject support for Servlets, Filters and Listeners
OPENEJB-1660: @Inject constructor support for Servlet, Filters and Listeners
Replaces the built-in Tomcat DefaultInjectionManager with one that uses the same code for constructing EJBs (xbean-reflect and openwebbeans)

Added:
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/JavaeeInstanceManager.java
Modified:
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InjectionProcessor.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/ConstructorInjectionBean.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
    openejb/trunk/openejb3/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java
    openejb/trunk/openejb3/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/Report.java
    openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/all-failing.xml
    openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/passing.xml

Added: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/JavaeeInstanceManager.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/JavaeeInstanceManager.java?rev=1167471&view=auto
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/JavaeeInstanceManager.java (added)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/JavaeeInstanceManager.java Sat Sep 10 07:17:02 2011
@@ -0,0 +1,158 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb.tomcat.catalina;
+
+import org.apache.catalina.core.StandardContext;
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.core.WebContext;
+import org.apache.tomcat.InstanceManager;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.naming.NamingException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+
+/**
+* @version $Rev$ $Date$
+*/
+public class JavaeeInstanceManager implements InstanceManager {
+
+    private final WebContext webContext;
+    private final StandardContext context;
+
+    public JavaeeInstanceManager(WebContext webContext, StandardContext context) {
+        this.webContext = webContext;
+        this.context = context;
+    }
+
+    @Override
+    public Object newInstance(String className) throws IllegalAccessException, InvocationTargetException, NamingException, InstantiationException, ClassNotFoundException {
+        final ClassLoader classLoader = webContext.getClassLoader();
+        return newInstance(className, classLoader);
+    }
+
+    @Override
+    public Object newInstance(String className, ClassLoader classLoader) throws IllegalAccessException, InvocationTargetException, NamingException, InstantiationException, ClassNotFoundException {
+        try {
+            final Class<?> clazz = classLoader.loadClass(className);
+            final Object object = webContext.newInstance(clazz);
+            postConstruct(object, clazz);
+            return object;
+        } catch (OpenEJBException e) {
+            throw (InstantiationException) new InstantiationException(e.getMessage()).initCause(e);
+        }
+    }
+
+    @Override
+    public void newInstance(Object o) throws IllegalAccessException, InvocationTargetException, NamingException {
+        new Exception("INJECT").fillInStackTrace().printStackTrace();
+    }
+
+    @Override
+    public void destroyInstance(Object o) throws IllegalAccessException, InvocationTargetException {
+        if (o == null) return;
+        preDestroy(o, o.getClass());
+    }
+
+    /**
+     * Call postConstruct method on the specified instance recursively from deepest superclass to actual class.
+     *
+     * @param instance object to call postconstruct methods on
+     * @param clazz    (super) class to examine for postConstruct annotation.
+     * @throws IllegalAccessException if postConstruct method is inaccessible.
+     * @throws java.lang.reflect.InvocationTargetException
+     *                                if call fails
+     */
+    protected void postConstruct(Object instance, final Class<?> clazz)
+            throws IllegalAccessException, InvocationTargetException {
+        Class<?> superClass = clazz.getSuperclass();
+        if (superClass != Object.class) {
+            postConstruct(instance, superClass);
+        }
+
+        Method[] methods = clazz.getDeclaredMethods();
+
+        Method postConstruct = null;
+        for (Method method : methods) {
+            if (method.isAnnotationPresent(PostConstruct.class)) {
+                if ((postConstruct != null)
+                        || (method.getParameterTypes().length != 0)
+                        || (Modifier.isStatic(method.getModifiers()))
+                        || (method.getExceptionTypes().length > 0)
+                        || (!method.getReturnType().getName().equals("void"))) {
+                    throw new IllegalArgumentException("Invalid PostConstruct annotation");
+                }
+                postConstruct = method;
+            }
+        }
+
+        // At the end the postconstruct annotated
+        // method is invoked
+        if (postConstruct != null) {
+            boolean accessibility = postConstruct.isAccessible();
+            postConstruct.setAccessible(true);
+            postConstruct.invoke(instance);
+            postConstruct.setAccessible(accessibility);
+        }
+
+    }
+
+
+    /**
+     * Call preDestroy method on the specified instance recursively from deepest superclass to actual class.
+     *
+     * @param instance object to call preDestroy methods on
+     * @param clazz    (super) class to examine for preDestroy annotation.
+     * @throws IllegalAccessException if preDestroy method is inaccessible.
+     * @throws java.lang.reflect.InvocationTargetException
+     *                                if call fails
+     */
+    protected void preDestroy(Object instance, final Class<?> clazz)
+            throws IllegalAccessException, InvocationTargetException {
+        Class<?> superClass = clazz.getSuperclass();
+        if (superClass != Object.class) {
+            preDestroy(instance, superClass);
+        }
+
+        Method[] methods = clazz.getDeclaredMethods();
+        Method preDestroy = null;
+        for (Method method : methods) {
+            if (method.isAnnotationPresent(PreDestroy.class)) {
+                if ((method.getParameterTypes().length != 0)
+                        || (Modifier.isStatic(method.getModifiers()))
+                        || (method.getExceptionTypes().length > 0)
+                        || (!method.getReturnType().getName().equals("void"))) {
+                    throw new IllegalArgumentException("Invalid PreDestroy annotation");
+                }
+                preDestroy = method;
+                break;
+            }
+        }
+
+        // At the end the postconstruct annotated
+        // method is invoked
+        if (preDestroy != null) {
+            boolean accessibility = preDestroy.isAccessible();
+            preDestroy.setAccessible(true);
+            preDestroy.invoke(instance);
+            preDestroy.setAccessible(accessibility);
+        }
+    }
+
+}

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java?rev=1167471&r1=1167470&r2=1167471&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java Sat Sep 10 07:17:02 2011
@@ -64,6 +64,7 @@ import org.apache.openejb.tomcat.loader.
 import org.apache.openejb.util.LinkResolver;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
+import org.apache.tomcat.InstanceManager;
 import org.apache.webbeans.config.WebBeansContext;
 import org.omg.CORBA.ORB;
 
@@ -460,12 +461,19 @@ public class TomcatWebAppBuilder impleme
                 jndiBuilder.mergeJndi();
 
                 // add WebDeploymentInfo to ContainerSystem
-                WebContext webContext = new WebContext();
+                final WebContext webContext = new WebContext(appContext);
                 webContext.setId(webAppInfo.moduleId);
-                webContext.setClassLoader(standardContext.getLoader().getClassLoader());
+                final StandardContext context = standardContext;
+                webContext.setClassLoader(context.getLoader().getClassLoader());
                 webContext.getInjections().addAll(injections);
                 appContext.getWebContexts().add(webContext);
                 cs.addWebContext(webContext);
+
+
+                standardContext.setInstanceManager(new JavaeeInstanceManager(webContext, context));
+
+                standardContext.getServletContext().setAttribute(InstanceManager.class.getName(), standardContext.getInstanceManager());
+
             } catch (Exception e) {
                 logger.error("Error merging OpenEJB JNDI entries in to war " + standardContext.getPath() + ": Exception: " + e.getMessage(), e);
             }
@@ -1094,4 +1102,5 @@ public class TomcatWebAppBuilder impleme
             return false;
         }
     }
+
 }

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InjectionProcessor.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InjectionProcessor.java?rev=1167471&r1=1167470&r2=1167471&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InjectionProcessor.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/InjectionProcessor.java Sat Sep 10 07:17:02 2011
@@ -25,6 +25,7 @@ import org.apache.xbean.recipe.Option;
 
 import javax.naming.Context;
 import javax.naming.NamingException;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.LinkedHashMap;
@@ -40,7 +41,7 @@ public class InjectionProcessor<T> {
     
     private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB, InjectionProcessor.class);
     private final Class<? extends T> beanClass;
-    private final List<Injection> injections;
+    private final Collection<Injection> injections;
     private final Map<String, Object> properties = new LinkedHashMap<String, Object>();
     private final List<Method> postConstructMethods;
     private final List<Method> preDestroyMethods;
@@ -48,7 +49,7 @@ public class InjectionProcessor<T> {
     private T instance;
     private T suppliedInstance;
 
-    public InjectionProcessor(T suppliedInstance, List<Injection> injections, Context context) {
+    public InjectionProcessor(T suppliedInstance, Collection<Injection> injections, Context context) {
         this.beanClass = null;
         this.suppliedInstance = suppliedInstance;
         this.injections = injections;
@@ -57,7 +58,7 @@ public class InjectionProcessor<T> {
         preDestroyMethods = null;
     }
 
-    public InjectionProcessor(Class<? extends T> beanClass, List<Injection> injections, Context context) {
+    public InjectionProcessor(Class<? extends T> beanClass, Collection<Injection> injections, Context context) {
         this.beanClass = beanClass;
         this.injections = injections;
         this.context = context;
@@ -65,7 +66,7 @@ public class InjectionProcessor<T> {
         preDestroyMethods = null;
     }
 
-    public InjectionProcessor(Class<? extends T> beanClass, List<Injection> injections, List<Method> postConstructMethods, List<Method> preDestroyMethods, Context context) {
+    public InjectionProcessor(Class<? extends T> beanClass, Collection<Injection> injections, List<Method> postConstructMethods, List<Method> preDestroyMethods, Context context) {
         this.beanClass = beanClass;
         this.injections = injections;
         this.postConstructMethods = postConstructMethods;

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/ConstructorInjectionBean.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/ConstructorInjectionBean.java?rev=1167471&r1=1167470&r2=1167471&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/ConstructorInjectionBean.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/ConstructorInjectionBean.java Sat Sep 10 07:17:02 2011
@@ -52,10 +52,19 @@ public class ConstructorInjectionBean<T>
         if (definitionUtil == null) throw new NullPointerException("definitionUtil");
 
         definitionUtil.addConstructorInjectionPointMetaData(this, constructor);
+    }
 
+    public ConstructorInjectionBean<T> complete() {
         // these are not used immediately in createInstance()
-//        definitionUtil.defineInjectedFields(this);
-//        definitionUtil.defineInjectedMethods(this);
+        try {
+            final DefinitionUtil definitionUtil = getWebBeansContext().getDefinitionUtil();
+            definitionUtil.defineInjectedFields(this);
+            definitionUtil.defineInjectedMethods(this);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return this;
     }
 
     @Override

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1167471&r1=1167470&r2=1167471&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Sat Sep 10 07:17:02 2011
@@ -3674,7 +3674,7 @@ public class AnnotationDeployer implemen
                     } else if(isShareableJNDINamespace(refName)){
                         EnvEntry envEntry = new EnvEntry();
                         envEntry.setName(refName);
-                        consumer.getEnvEntry().add(envEntry);                        
+                        consumer.getEnvEntry().add(envEntry);
                         reference = envEntry;
                     } else {
                         /*

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java?rev=1167471&r1=1167470&r2=1167471&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java Sat Sep 10 07:17:02 2011
@@ -16,23 +16,37 @@
  */
 package org.apache.openejb.core;
 
+import org.apache.openejb.AppContext;
 import org.apache.openejb.Injection;
-
-import javax.naming.Context;
-import java.util.Collection;
-
-
-import org.apache.openejb.Injection;
-
+import org.apache.openejb.InjectionProcessor;
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.cdi.ConstructorInjectionBean;
+import org.apache.webbeans.component.InjectionTargetBean;
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.inject.AbstractInjectable;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.enterprise.context.spi.CreationalContext;
 import javax.naming.Context;
-import java.util.Collection;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 import java.util.ArrayList;
+import java.util.Collection;
 
 public class WebContext {
     private String id;
     private ClassLoader classLoader;
     private final Collection<Injection> injections = new ArrayList<Injection>();
     private Context jndiEnc;
+    private final AppContext appContext;
+
+    public WebContext(AppContext appContext) {
+        this.appContext = appContext;
+    }
 
     public String getId() {
         return id;
@@ -61,4 +75,52 @@ public class WebContext {
     public void setJndiEnc(Context jndiEnc) {
         this.jndiEnc = jndiEnc;
     }
+
+    public AppContext getAppContext() {
+        return appContext;
+    }
+
+    public Object newInstance(Class beanClass) throws OpenEJBException {
+
+        try {
+            final WebBeansContext webBeansContext = getAppContext().getWebBeansContext();
+
+            final ConstructorInjectionBean<Object> beanDefinition = new ConstructorInjectionBean<Object>(webBeansContext, beanClass).complete();
+
+            final CreationalContext<Object> creationalContext = webBeansContext.getBeanManagerImpl().createCreationalContext(beanDefinition);
+
+            // Create bean instance
+            final Object o = beanDefinition.create(creationalContext);
+            final Context initialContext = (Context) new InitialContext().lookup("java:");
+            final Context unwrap = InjectionProcessor.unwrap(initialContext);
+            final InjectionProcessor injectionProcessor = new InjectionProcessor(o, injections, unwrap);
+
+            final Object beanInstance = injectionProcessor.createInstance();
+
+            final Object oldInstanceUnderInjection = AbstractInjectable.instanceUnderInjection.get();
+
+            try {
+                AbstractInjectable.instanceUnderInjection.set(null);
+
+                InjectionTargetBean<Object> bean = InjectionTargetBean.class.cast(beanDefinition);
+
+                bean.injectResources(beanInstance, creationalContext);
+                bean.injectSuperFields(beanInstance, creationalContext);
+                bean.injectSuperMethods(beanInstance, creationalContext);
+                bean.injectFields(beanInstance, creationalContext);
+                bean.injectMethods(beanInstance, creationalContext);
+            } finally {
+                if (oldInstanceUnderInjection != null) {
+                    AbstractInjectable.instanceUnderInjection.set(oldInstanceUnderInjection);
+                } else {
+                    AbstractInjectable.instanceUnderInjection.remove();
+                }
+            }
+
+            return beanInstance;
+        } catch (NamingException e) {
+            throw new OpenEJBException(e);
+        }
+    }
+
 }

Modified: openejb/trunk/openejb3/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java?rev=1167471&r1=1167470&r2=1167471&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java (original)
+++ openejb/trunk/openejb3/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/RestDeploymentTest.java Sat Sep 10 07:17:02 2011
@@ -17,6 +17,7 @@
 package org.apache.openejb.server.cxf.rs;
 
 import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.openejb.AppContext;
 import org.apache.openejb.Injection;
 import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.Assembler;
@@ -114,7 +115,7 @@ public class RestDeploymentTest {
         annotationDeployer.deploy(appModule);
 
         AppInfo appInfo = factory.configureApplication(appModule);
-        assembler.createApplication(appInfo);
+        final AppContext application = assembler.createApplication(appInfo);
 
         Context ctx = (Context) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class<?>[]{Context.class}, new InvocationHandler() {
             @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
@@ -126,7 +127,7 @@ public class RestDeploymentTest {
         });
 
         CoreContainerSystem containerSystem = new CoreContainerSystem(new IvmJndiFactory());
-        WebContext webContext = new WebContext();
+        WebContext webContext = new WebContext(application);
         webContext.setId(webApp.getId());
         webContext.setClassLoader(webModule.getClassLoader());
         webContext.getInjections().add(new Injection("SimpleEJBLocalBean", "simple", RestWithInjections.class));

Modified: openejb/trunk/openejb3/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/Report.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/Report.java?rev=1167471&r1=1167470&r2=1167471&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/Report.java (original)
+++ openejb/trunk/openejb3/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/Report.java Sat Sep 10 07:17:02 2011
@@ -47,7 +47,7 @@ public class Report {
 
     private void main() throws Exception {
 //        final File file = new File("/Users/dblevins/work/uber/geronimo-tck-public-trunk/jcdi-tck-runner/target/surefire-reports/testng-results.xml");
-        final File file = new File("/Users/dblevins/work/uber/openejb/tck/cdi-embedded/target/surefire-reports/testng-results.xml");
+        final File file = new File("/Users/dblevins/work/all/openejb/tck/cdi-tomee/target/failsafe-reports/testng-results.xml");
 //        final File file = new File("/Users/dblevins/work/uber/testng-results.xml");
 
         final SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
@@ -85,12 +85,9 @@ public class Report {
         final File report = new File(file.getParentFile(), file.getName().replaceAll(".xml$", "-passing.xml"));
         final PrintStream out = new PrintStream(new FileOutputStream(report));
 
-        out.println("" +
+        out.println(header +
                 "<suite name=\"CDI TCK\" verbose=\"0\">\n" +
-                "  <listeners>\n" +
-                "    <listener class-name=\"org.apache.openejb.tck.cdi.embedded.RequestScopeTestListener\" />\n" +
-                "  </listeners>\n" +
-                "  <test name=\"CDI TCK\">" +
+                "  <test name=\"CDI TCK\">\n" +
                 "    <packages>\n" +
                 "        <package name=\"org.jboss.jsr299.tck.tests.*\"/>\n" +
                 "        <package name=\"org.jboss.jsr299.tck.interceptors.tests.*\"/>\n" +
@@ -124,6 +121,7 @@ public class Report {
         final File report = new File(file.getParentFile(), file.getName().replaceAll(".xml$", "-failing.xml"));
         final PrintStream out = new PrintStream(new FileOutputStream(report));
 
+        out.println(header);
         out.println("<suite name=\"CDI TCK\" verbose=\"0\">");
         out.println("  <test name=\"CDI TCK\">");
         out.println("    <!--<packages>-->\n" +
@@ -240,4 +238,23 @@ public class Report {
             return this.name.compareTo(o.name);
         }
     }
+
+    private static final String header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+            "<!--\n" +
+            "\n" +
+            "    Licensed to the Apache Software Foundation (ASF) under one or more\n" +
+            "    contributor license agreements.  See the NOTICE file distributed with\n" +
+            "    this work for additional information regarding copyright ownership.\n" +
+            "    The ASF licenses this file to You under the Apache License, Version 2.0\n" +
+            "    (the \"License\"); you may not use this file except in compliance with\n" +
+            "    the License.  You may obtain a copy of the License at\n" +
+            "\n" +
+            "       http://www.apache.org/licenses/LICENSE-2.0\n" +
+            "\n" +
+            "    Unless required by applicable law or agreed to in writing, software\n" +
+            "    distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
+            "    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
+            "    See the License for the specific language governing permissions and\n" +
+            "    limitations under the License.\n" +
+            "-->\n";
 }

Modified: openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/all-failing.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/all-failing.xml?rev=1167471&r1=1167470&r2=1167471&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/all-failing.xml (original)
+++ openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/all-failing.xml Sat Sep 10 07:17:02 2011
@@ -16,6 +16,7 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+
 <suite name="CDI TCK" verbose="0">
   <test name="CDI TCK">
     <!--<packages>-->
@@ -23,7 +24,6 @@
         <!--<package name="org.jboss.jsr299.tck.interceptors.tests.*"/>-->
     <!--</packages>-->
     <classes>
-      <class name="org.jboss.jsr299.tck.tests.context.application.ApplicationContextTest"/>
       <class name="org.jboss.jsr299.tck.tests.context.conversation.ClientConversationContextTest"/>
       <class name="org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest"/>
       <class name="org.jboss.jsr299.tck.tests.context.conversation.LongRunningConversationPropagatedByFacesContextTest"/>
@@ -32,27 +32,13 @@
       <class name="org.jboss.jsr299.tck.tests.context.passivating.broken.dependentScopedProducerFieldReturnsNonSerializableObjectForInjectionIntoStatefulSessionBean.EnterpriseBeanWithIllegalDependencyTest"/>
       <class name="org.jboss.jsr299.tck.tests.context.passivating.broken.dependentScopedProducerMethodReturnsNonSerializableObjectForInjectionIntoStatefulSessionBean.EnterpriseBeanWithIllegalDependencyTest"/>
       <class name="org.jboss.jsr299.tck.tests.context.passivating.broken.enterpriseBeanWithNonPassivatingDecorator.EnterpriseBeanWithNonPassivatingDecoratorTest"/>
-      <class name="org.jboss.jsr299.tck.tests.context.request.RequestContextTest"/>
-      <class name="org.jboss.jsr299.tck.tests.context.request.ejb.EJBRequestContextTest"/>
-      <class name="org.jboss.jsr299.tck.tests.context.session.SessionContextTest"/>
-      <class name="org.jboss.jsr299.tck.tests.definition.stereotype.broken.nonEmptyNamed.NonEmptyNamedTest"/>
-      <class name="org.jboss.jsr299.tck.tests.definition.stereotype.broken.tooManyScopes.TooManyScopeTypesTest"/>
       <class name="org.jboss.jsr299.tck.tests.deployment.packaging.bundledLibrary.LibraryInEarTest"/>
       <class name="org.jboss.jsr299.tck.tests.deployment.packaging.bundledLibrary.LibraryInWarTest"/>
       <class name="org.jboss.jsr299.tck.tests.implementation.enterprise.lifecycle.EnterpriseBeanLifecycleTest"/>
-      <class name="org.jboss.jsr299.tck.tests.implementation.enterprise.remove.EnterpriseBeanRemoveMethodTest"/>
-      <class name="org.jboss.jsr299.tck.tests.implementation.producer.method.definition.enterprise.EnterpriseProducerMethodDefinitionTest"/>
-      <class name="org.jboss.jsr299.tck.tests.implementation.simple.resource.env.EnvInjectionTest"/>
+      <class name="org.jboss.jsr299.tck.tests.implementation.simple.resource.ejb.EjbInjectionTest"/>
       <class name="org.jboss.jsr299.tck.tests.implementation.simple.resource.persistenceContext.PersistenceContextInjectionTest"/>
       <class name="org.jboss.jsr299.tck.tests.implementation.simple.resource.resource.InjectionOfResourceTest"/>
-      <class name="org.jboss.jsr299.tck.tests.inheritance.specialization.enterprise.EnterpriseBeanSpecializationIntegrationTest"/>
-      <class name="org.jboss.jsr299.tck.tests.inheritance.specialization.enterprise.EnterpriseBeanSpecializationTest"/>
-      <class name="org.jboss.jsr299.tck.tests.inheritance.specialization.enterprise.broken.directlyExtendsNothing.DirectlyExtendsNothingTest"/>
-      <class name="org.jboss.jsr299.tck.tests.inheritance.specialization.enterprise.broken.directlyExtendsSimpleBean.DirectlyExtendsSimpleBeanTest"/>
-      <class name="org.jboss.jsr299.tck.tests.inheritance.specialization.enterprise.broken.implementInterfaceAndExtendsNothing.ImplementsInterfaceAndExtendsNothingTest"/>
-      <class name="org.jboss.jsr299.tck.tests.inheritance.specialization.enterprise.broken.sameName.SameNameTest"/>
       <class name="org.jboss.jsr299.tck.tests.interceptors.definition.enterprise.nonContextualReference.SessionBeanInterceptorOnNonContextualEjbReferenceTest"/>
-      <class name="org.jboss.jsr299.tck.tests.lookup.clientProxy.incontainer.ClientProxyTest"/>
       <class name="org.jboss.jsr299.tck.tests.lookup.el.ResolutionByNameTest"/>
       <class name="org.jboss.jsr299.tck.tests.lookup.el.integration.IntegrationWithUnifiedELTest"/>
       <class name="org.jboss.jsr299.tck.tests.lookup.injection.non.contextual.InjectionIntoNonContextualComponentTest"/>

Modified: openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/passing.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/passing.xml?rev=1167471&r1=1167470&r2=1167471&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/passing.xml (original)
+++ openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/passing.xml Sat Sep 10 07:17:02 2011
@@ -23,16 +23,6 @@
         <package name="org.jboss.jsr299.tck.interceptors.tests.*"/>
     </packages>
     <classes>
-      <class name="org.jboss.jsr299.tck.tests.context.application.ApplicationContextTest">
-        <methods>
-          <exclude name="testApplicationContextSharedBetweenServletRequests"/>
-          <exclude name="testApplicationScopeActiveDuringDoFilterMethod"/>
-          <exclude name="testApplicationScopeActiveDuringHttpSessionListenerInvocation"/>
-          <exclude name="testApplicationScopeActiveDuringServiceMethod"/>
-          <exclude name="testApplicationScopeActiveDuringServletContextListenerInvocation"/>
-          <exclude name="testApplicationScopeActiveDuringServletRequestListenerInvocation"/>
-        </methods>
-      </class>
       <class name="org.jboss.jsr299.tck.tests.context.conversation.ClientConversationContextTest">
         <methods>
           <exclude name="testBeanWithDefaultQualifier"/>
@@ -93,22 +83,6 @@
           <exclude name="testEnterpriseBeanWithNonPassivatingDecoratorFails"/>
         </methods>
       </class>
-      <class name="org.jboss.jsr299.tck.tests.context.request.RequestContextTest">
-        <methods>
-          <exclude name="testRequestScopeActiveDuringServiceMethod"/>
-          <exclude name="testRequestScopeActiveDuringServletFilter"/>
-          <exclude name="testRequestScopeIsDestroyedAfterServletRequest"/>
-        </methods>
-      </class>
-      <class name="org.jboss.jsr299.tck.tests.context.session.SessionContextTest">
-        <methods>
-          <exclude name="testSessionContextDestroyedWhenHttpSessionInvalidated"/>
-          <exclude name="testSessionContextDestroyedWhenHttpSessionTimesOut"/>
-          <exclude name="testSessionContextSharedBetweenServletRequestsInSameHttpSession"/>
-          <exclude name="testSessionScopeActiveDuringDoFilterMethod"/>
-          <exclude name="testSessionScopeActiveDuringServiceMethod"/>
-        </methods>
-      </class>
       <class name="org.jboss.jsr299.tck.tests.deployment.packaging.bundledLibrary.LibraryInEarTest">
         <methods>
           <exclude name="test"/>
@@ -133,10 +107,10 @@
       <class name="org.jboss.jsr299.tck.tests.implementation.simple.resource.persistenceContext.PersistenceContextInjectionTest">
         <methods>
           <exclude name="testBeanTypesAndBindingTypesOfPersistenceContext"/>
-          <exclude name="testInjectionOfPersistenceContext"/>
           <exclude name="testInjectionOfPersistenceUnit"/>
-          <exclude name="testPassivationOfPersistenceContext"/>
+          <exclude name="testInjectionOfPersistenceContext"/>
           <exclude name="testPassivationOfPersistenceUnit"/>
+          <exclude name="testPassivationOfPersistenceContext"/>
         </methods>
       </class>
       <class name="org.jboss.jsr299.tck.tests.implementation.simple.resource.resource.InjectionOfResourceTest">
@@ -151,11 +125,6 @@
           <exclude name="testNonContextualSessionBeanReferenceIsIntercepted"/>
         </methods>
       </class>
-      <class name="org.jboss.jsr299.tck.tests.lookup.clientProxy.incontainer.ClientProxyTest">
-        <methods>
-          <exclude name="testInvocationIsProcessedOnCurrentInstance"/>
-        </methods>
-      </class>
       <class name="org.jboss.jsr299.tck.tests.lookup.el.ResolutionByNameTest">
         <methods>
           <exclude name="testContextCreatesNewInstanceForInjection"/>
@@ -171,16 +140,8 @@
       </class>
       <class name="org.jboss.jsr299.tck.tests.lookup.injection.non.contextual.InjectionIntoNonContextualComponentTest">
         <methods>
-          <exclude name="testFilterInitializerMethodCalled"/>
-          <exclude name="testInjectionIntoFilter"/>
           <exclude name="testInjectionIntoJSFManagedBean"/>
-          <exclude name="testInjectionIntoServlet"/>
-          <exclude name="testInjectionIntoServletListener"/>
           <exclude name="testInjectionIntoTagHandler"/>
-          <exclude name="testInjectionIntoTagLibraryListener"/>
-          <exclude name="testServletInitializerMethodCalled"/>
-          <exclude name="testServletListenerInitializerMethodCalled"/>
-          <exclude name="testTagLibraryListenerInitializerMethodCalled"/>
         </methods>
       </class>
       <class name="org.jboss.jsr299.tck.tests.lookup.injection.non.contextual.ws.InjectionIntoWebServiceEndPointTest">