You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by st...@apache.org on 2015/03/11 12:56:17 UTC

[01/50] tomee git commit: dont trigger TomEEClusterListener if not needed + avoid infinite loop in Memoizer cause of NoClassDefFoundError

Repository: tomee
Updated Branches:
  refs/heads/master 91e9840fe -> d90248796


dont trigger TomEEClusterListener if not needed + avoid infinite loop in Memoizer cause of NoClassDefFoundError


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/15767f98
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/15767f98
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/15767f98

Branch: refs/heads/master
Commit: 15767f98b8b0155816064d66a1a5e28e268fdaa4
Parents: 1ffd201
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed Mar 4 11:33:02 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Wed Mar 4 11:33:02 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/openejb/util/Memoizer.java  |  3 +
 .../maven/plugins/TomEEEmbeddedMojo.java        |  6 ++
 .../tomee/catalina/GlobalListenerSupport.java   |  5 +-
 .../tomee/catalina/SimpleTomEETcpCluster.java   |  6 +-
 .../tomee/catalina/TomcatWebAppBuilder.java     |  7 +-
 .../catalina/cluster/TomEEClusterListener.java  | 74 +++++++++++---------
 6 files changed, 64 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/15767f98/container/openejb-core/src/main/java/org/apache/openejb/util/Memoizer.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/Memoizer.java b/container/openejb-core/src/main/java/org/apache/openejb/util/Memoizer.java
index e53ee71..a94df8c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/Memoizer.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/Memoizer.java
@@ -62,6 +62,9 @@ public class Memoizer<K, V> implements Computable<K, V> {
             try {
                 return future.get();
             } catch (final ExecutionException e) {
+                if (e.getCause() != null && NoClassDefFoundError.class.isInstance(e.getCause())) {
+                    return null;
+                }
                 e.printStackTrace();
             }
         }

http://git-wip-us.apache.org/repos/asf/tomee/blob/15767f98/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
----------------------------------------------------------------------
diff --git a/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java b/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
index fa22a0c..371b7a2 100644
--- a/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
+++ b/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
@@ -208,6 +208,9 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
             @Override
             public void run() {
                 if (container.getTomcat() != null && container.getTomcat().getServer().getState() != LifecycleState.DESTROYED) {
+                    final Thread thread = Thread.currentThread();
+                    final ClassLoader old = thread.getContextClassLoader();
+                    thread.setContextClassLoader(ParentClassLoaderFinder.Helper.get());
                     try {
                         if (!classpathAsWar) {
                             container.undeploy(warFile.getAbsolutePath());
@@ -215,10 +218,13 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
                         container.stop();
                     } catch (final Exception e) {
                         getLog().error("can't stop TomEE", e);
+                    } finally {
+                        thread.setContextClassLoader(old);
                     }
                 }
             }
         };
+        hook.setName("TomEE-Embedded-ShutdownHook");
 
         try {
             container.start();

http://git-wip-us.apache.org/repos/asf/tomee/blob/15767f98/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
index f0b5527..c867689 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
@@ -155,7 +155,10 @@ public class GlobalListenerSupport implements PropertyChangeListener, LifecycleL
 
             if (Lifecycle.BEFORE_STOP_EVENT.equals(type)) {
                 TomcatHelper.setStopping(true);
-                TomEEClusterListener.stop();
+                final TomEEClusterListener tomEEClusterListener = SystemInstance.get().getComponent(TomEEClusterListener.class);
+                if (tomEEClusterListener != null) {
+                    tomEEClusterListener.stop();
+                }
             }
 
             if (Lifecycle.AFTER_STOP_EVENT.equals(type)) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/15767f98/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java
index 4870b40..cc1f928 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java
@@ -19,6 +19,7 @@ package org.apache.tomee.catalina;
 import org.apache.catalina.Valve;
 import org.apache.catalina.ha.ClusterListener;
 import org.apache.catalina.ha.tcp.SimpleTcpCluster;
+import org.apache.openejb.loader.SystemInstance;
 import org.apache.tomee.catalina.cluster.TomEEClusterListener;
 
 import java.util.Arrays;
@@ -48,7 +49,8 @@ public class SimpleTomEETcpCluster extends SimpleTcpCluster {
     @Override
     protected void checkDefaults() {
         final List<ClusterListener> currentListeners = clusterListeners;
-        if (currentListeners.size() == 1 && currentListeners.iterator().next() == TomEEClusterListener.INSTANCE) {
+        final TomEEClusterListener tomEEClusterListener = SystemInstance.get().getComponent(TomEEClusterListener.class);
+        if (currentListeners.size() == 1 && currentListeners.iterator().next() == tomEEClusterListener) {
             currentListeners.clear();
         }
 
@@ -61,6 +63,6 @@ public class SimpleTomEETcpCluster extends SimpleTcpCluster {
         }
 
         super.checkDefaults();
-        addClusterListener(TomEEClusterListener.INSTANCE); // since that's a singleton and all listeners have to be unique (contains()) we can always add it
+        addClusterListener(tomEEClusterListener); // since that's a singleton and all listeners have to be unique (contains()) we can always add it
     }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/15767f98/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
index bb6b5e5..0bfe3c2 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
@@ -350,7 +350,12 @@ public class TomcatWebAppBuilder implements WebAppBuilder, ContextListener, Pare
 
         if (current instanceof CatalinaCluster) {
             final CatalinaCluster haCluster = (CatalinaCluster) current;
-            haCluster.addClusterListener(TomEEClusterListener.INSTANCE); // better to be a singleton
+            TomEEClusterListener listener = SystemInstance.get().getComponent(TomEEClusterListener.class);
+            if (listener == null) {
+                listener = new TomEEClusterListener();
+                SystemInstance.get().setComponent(TomEEClusterListener.class, listener);
+            }
+            haCluster.addClusterListener(listener); // better to be a singleton
             clusters.add(haCluster);
         }
     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/15767f98/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/TomEEClusterListener.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/TomEEClusterListener.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/TomEEClusterListener.java
index 4ba9af7..26e0037 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/TomEEClusterListener.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/TomEEClusterListener.java
@@ -27,31 +27,20 @@ import org.apache.openejb.core.LocalInitialContextFactory;
 import org.apache.openejb.loader.Files;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.DaemonThreadFactory;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
 import java.io.File;
 import java.util.Properties;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
 
 public class TomEEClusterListener extends ClusterListener {
-    public static final TomEEClusterListener INSTANCE = new TomEEClusterListener();
-
-    private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, TomEEClusterListener.class);
-    private static final Properties IC_PROPS = new Properties();
-
-    // async processing to avoid to make the cluster hanging
-    private static final ExecutorService SERVICE = Executors.newSingleThreadExecutor();
-
-    static {
-        IC_PROPS.setProperty(Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());
-    }
-
     @Override
     public void messageReceived(final ClusterMessage clusterMessage) {
         final Class<?> type = clusterMessage.getClass();
@@ -76,33 +65,33 @@ public class TomEEClusterListener extends ClusterListener {
                         file = dump.getAbsolutePath();
                         ioFile = new File(file);
 
-                        LOGGER.info("dumped archive: " + msg.getFile() + " to " + file);
+                        Static.STATIC.LOGGER.info("dumped archive: " + msg.getFile() + " to " + file);
                     } catch (final Exception e) {
-                        LOGGER.error("can't dump archive: "+ file, e);
+                        Static.STATIC.LOGGER.error("can't dump archive: "+ file, e);
                     }
                 }
 
                 if (ioFile.exists()) {
-                    SERVICE.submit(new DeployTask(file));
+                    Static.STATIC.SERVICE.submit(new DeployTask(file));
                 } else {
-                    LOGGER.warning("can't find '" + file);
+                    Static.STATIC.LOGGER.warning("can't find '" + file);
                 }
             } else {
-                LOGGER.info("application already deployed: " + file);
+                Static.STATIC.LOGGER.info("application already deployed: " + file);
             }
         } else if (UndeployMessage.class.equals(type)) {
             final String file = ((UndeployMessage) clusterMessage).getFile();
             if (isDeployed(file)) {
-                SERVICE.submit(new UndeployTask(file));
+                Static.STATIC.SERVICE.submit(new UndeployTask(file));
             } else {
                 final File alternativeFile = new File(deployedDir(), new File(file).getName());
                 if (isDeployed(alternativeFile.getAbsolutePath())) {
-                    SERVICE.submit(new UndeployTask(alternativeFile.getAbsolutePath()));
+                    Static.STATIC.SERVICE.submit(new UndeployTask(alternativeFile.getAbsolutePath()));
                 }
-                LOGGER.info("app '" + file + "' was not deployed");
+                Static.STATIC.LOGGER.info("app '" + file + "' was not deployed");
             }
         } else {
-            LOGGER.warning("message type not supported: " + type);
+            Static.STATIC.LOGGER.warning("message type not supported: " + type);
         }
     }
 
@@ -115,7 +104,7 @@ public class TomEEClusterListener extends ClusterListener {
     }
 
     private static Deployer deployer() throws NamingException {
-        return (Deployer) new InitialContext(IC_PROPS).lookup("openejb/DeployerBusinessRemote");
+        return (Deployer) new InitialContext(Static.STATIC.IC_PROPS).lookup("openejb/DeployerBusinessRemote");
     }
 
     @Override
@@ -126,11 +115,11 @@ public class TomEEClusterListener extends ClusterListener {
     }
 
     public static void stop() {
-        SERVICE.shutdown();
+        Static.STATIC.SERVICE.shutdown();
         try {
-            SERVICE.awaitTermination(1, TimeUnit.MINUTES);
+            Static.STATIC.SERVICE.awaitTermination(1, TimeUnit.MINUTES);
         } catch (final InterruptedException e) {
-            SERVICE.shutdownNow();
+            Static.STATIC.SERVICE.shutdownNow();
         }
     }
 
@@ -151,9 +140,9 @@ public class TomEEClusterListener extends ClusterListener {
                 try {
                     deployer().deploy(app, REMOTE_DEPLOY_PROPERTIES);
                 } catch (final OpenEJBException e) {
-                    LOGGER.warning("can't deploy: " + app, e);
+                    Static.STATIC.LOGGER.warning("can't deploy: " + app, e);
                 } catch (final NamingException e) {
-                    LOGGER.warning("can't find deployer", e);
+                    Static.STATIC.LOGGER.warning("can't find deployer", e);
                 }
             }
         }
@@ -172,13 +161,32 @@ public class TomEEClusterListener extends ClusterListener {
                 try {
                     deployer().undeploy(app);
                 } catch (final UndeployException e) {
-                    LOGGER.error("can't undeploy app", e);
+                    Static.STATIC.LOGGER.error("can't undeploy app", e);
                 } catch (final NoSuchApplicationException e) {
-                    LOGGER.warning("no app toi deploy", e);
+                    Static.STATIC.LOGGER.warning("no app toi deploy", e);
                 } catch (final NamingException e) {
-                    LOGGER.warning("can't find deployer", e);
+                    Static.STATIC.LOGGER.warning("can't find deployer", e);
                 }
             }
         }
     }
+
+    // lazy init of logger (can fail with shutdown hooks to kill the container) and executor
+    private static final class Static {
+        private static final Static STATIC = new Static();
+
+        private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, TomEEClusterListener.class);
+        private static final Properties IC_PROPS = new Properties();
+
+        // async processing to avoid to make the cluster hanging
+        private static final ExecutorService SERVICE = Executors.newSingleThreadExecutor(new DaemonThreadFactory("TomEE-Cluster-Listener-thread-"));
+
+        static {
+            IC_PROPS.setProperty(Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());
+        }
+
+        private Static() {
+            // no-op
+        }
+    }
 }


[47/50] tomee git commit: exclude illegal TCK test

Posted by st...@apache.org.
exclude illegal TCK test

See CDI-312. The meaning of BDA is not clearly defined. Section 5 and 12
contradict each other. The EE6 RI (Glassfish3) and also JBoss6 did implement
it like we do (and yes, this is WAY more sane).


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/72546d89
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/72546d89
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/72546d89

Branch: refs/heads/master
Commit: 72546d89aefc306e76782c111db91cf01cc7b72a
Parents: 53fa087
Author: Mark Struberg <st...@apache.org>
Authored: Sat Mar 7 17:23:56 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Sat Mar 7 17:23:56 2015 +0100

----------------------------------------------------------------------
 tck/cdi-embedded/src/test/resources/passing.xml | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/72546d89/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index fbc7b8b..ac46838 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -266,6 +266,11 @@
               <exclude name="testDecoratorAndCrossModuleEventObserver"/>
           </methods>
       </class>
+      <class name="org.jboss.cdi.tck.tests.lookup.manager.provider.init.CDIProviderInitTest">
+        <methods>
+          <exclude name=".*"/>
+        </methods>
+      </class>
 
 
 


[13/50] tomee git commit: moving ScanJarService + fixing DependenceValidationTest

Posted by st...@apache.org.
moving ScanJarService + fixing DependenceValidationTest


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/83c6ebfe
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/83c6ebfe
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/83c6ebfe

Branch: refs/heads/master
Commit: 83c6ebfe4b1f95dc2610d967c3130fe726138944
Parents: 5583c70
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Thu Mar 5 11:48:44 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Thu Mar 5 11:48:44 2015 +0100

----------------------------------------------------------------------
 .../openejb/config/service/ScanJarService.java  | 113 -------------------
 .../apache/openejb/service/ScanJarService.java  | 113 +++++++++++++++++++
 .../openejb/DependenceValidationTest.java       |   5 +-
 3 files changed, 117 insertions(+), 114 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/83c6ebfe/container/openejb-core/src/main/java/org/apache/openejb/config/service/ScanJarService.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/service/ScanJarService.java b/container/openejb-core/src/main/java/org/apache/openejb/config/service/ScanJarService.java
deleted file mode 100644
index 06e16ad..0000000
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/service/ScanJarService.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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.config.service;
-
-import org.apache.openejb.cdi.CompositeBeans;
-import org.apache.openejb.config.EjbModule;
-import org.apache.openejb.config.FinderFactory;
-import org.apache.openejb.config.ReadDescriptors;
-import org.apache.openejb.config.event.BeforeAppInfoBuilderEvent;
-import org.apache.openejb.core.ParentClassLoaderFinder;
-import org.apache.openejb.jee.Beans;
-import org.apache.openejb.observer.Observes;
-import org.apache.openejb.util.URLs;
-import org.apache.xbean.finder.archive.FileArchive;
-import org.apache.xbean.finder.archive.JarArchive;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Designed to easily add a container jar in scanning.
- *
- * Definition can look like:
- *
- * 1. scanner = new://Service?class-name=org.apache.openejb.config.service.ScanJarService
- * 2. scanner.url = cdi-lib/foo.jar
- * 
- */
-public class ScanJarService {
-    private URL url;
-    private final List<String> beans = new ArrayList<>();
-    private Beans beansModel;
-
-    public void addScanningResult(@Observes final BeforeAppInfoBuilderEvent event) {
-        for (final EjbModule ejbModule : event.getAppModule().getEjbModules()) {
-            if (ejbModule.getModuleId().startsWith("ear-scoped-cdi-beans")) {
-                final Beans beans = ejbModule.getBeans();
-                if (CompositeBeans.class.isInstance(beans)) {
-                    final CompositeBeans cb = CompositeBeans.class.cast(beans);
-                    cb.getManagedClasses().put(url, new ArrayList<>(this.beans));
-
-                    if (beansModel != null) {
-                        if (beansModel.getAlternativeClasses() != null) {
-                            cb.getAlternativesByUrl().put(url, beansModel.getAlternativeClasses());
-                        }
-                        if (beansModel.getAlternativeStereotypes() != null) {
-                            cb.getAlternativeStereotypesByUrl().put(url, beansModel.getAlternativeStereotypes());
-                        }
-                        if (beansModel.getInterceptors() != null) {
-                            cb.getInterceptorsByUrl().put(url, beansModel.getInterceptors());
-                        }
-                        if (beansModel.getDecorators() != null) {
-                            cb.getDecoratorsByUrl().put(url, beansModel.getDecorators());
-                        }
-                    }
-                }
-                return;
-            }
-        }
-    }
-
-    public void setUrl(final String url) throws Exception {
-        final File f = new File(url);
-        if (f.exists()) {
-            this.url = f.toURI().toURL();
-        } else {
-            this.url = new URL(url);
-        }
-
-        final File file = URLs.toFile(this.url);
-        final ClassLoader loader = ParentClassLoaderFinder.Helper.get();
-        beans.addAll(
-                new FinderFactory.OpenEJBAnnotationFinder(
-                        file.isDirectory() ? new FileArchive(loader, file) : new JarArchive(loader, this.url))
-                        .getAnnotatedClassNames());
-
-        if (file.isDirectory()) {
-            final File beansXml = new File(file, "META-INF/beans.xml");
-            if (beansXml.exists()) {
-                final FileInputStream inputStream = new FileInputStream(beansXml);
-                beansModel = ReadDescriptors.readBeans(inputStream);
-                inputStream.close();
-            }
-        } else {
-            final URLClassLoader cl = new URLClassLoader(new URL[] { this.url });
-            final InputStream is = cl.getResourceAsStream("META-INF/beans.xml");
-            if (is != null) {
-                beansModel = ReadDescriptors.readBeans(is);
-                is.close();
-            }
-            cl.close();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/tomee/blob/83c6ebfe/container/openejb-core/src/main/java/org/apache/openejb/service/ScanJarService.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/service/ScanJarService.java b/container/openejb-core/src/main/java/org/apache/openejb/service/ScanJarService.java
new file mode 100644
index 0000000..cc09e5b
--- /dev/null
+++ b/container/openejb-core/src/main/java/org/apache/openejb/service/ScanJarService.java
@@ -0,0 +1,113 @@
+/*
+ * 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.service;
+
+import org.apache.openejb.cdi.CompositeBeans;
+import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.config.FinderFactory;
+import org.apache.openejb.config.ReadDescriptors;
+import org.apache.openejb.config.event.BeforeAppInfoBuilderEvent;
+import org.apache.openejb.core.ParentClassLoaderFinder;
+import org.apache.openejb.jee.Beans;
+import org.apache.openejb.observer.Observes;
+import org.apache.openejb.util.URLs;
+import org.apache.xbean.finder.archive.FileArchive;
+import org.apache.xbean.finder.archive.JarArchive;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Designed to easily add a container jar in scanning.
+ *
+ * Definition can look like:
+ *
+ * 1. scanner = new://Service?class-name=org.apache.openejb.service.ScanJarService
+ * 2. scanner.url = cdi-lib/foo.jar
+ * 
+ */
+public class ScanJarService {
+    private URL url;
+    private final List<String> beans = new ArrayList<>();
+    private Beans beansModel;
+
+    public void addScanningResult(@Observes final BeforeAppInfoBuilderEvent event) {
+        for (final EjbModule ejbModule : event.getAppModule().getEjbModules()) {
+            if (ejbModule.getModuleId().startsWith("ear-scoped-cdi-beans")) {
+                final Beans beans = ejbModule.getBeans();
+                if (CompositeBeans.class.isInstance(beans)) {
+                    final CompositeBeans cb = CompositeBeans.class.cast(beans);
+                    cb.getManagedClasses().put(url, new ArrayList<>(this.beans));
+
+                    if (beansModel != null) {
+                        if (beansModel.getAlternativeClasses() != null) {
+                            cb.getAlternativesByUrl().put(url, beansModel.getAlternativeClasses());
+                        }
+                        if (beansModel.getAlternativeStereotypes() != null) {
+                            cb.getAlternativeStereotypesByUrl().put(url, beansModel.getAlternativeStereotypes());
+                        }
+                        if (beansModel.getInterceptors() != null) {
+                            cb.getInterceptorsByUrl().put(url, beansModel.getInterceptors());
+                        }
+                        if (beansModel.getDecorators() != null) {
+                            cb.getDecoratorsByUrl().put(url, beansModel.getDecorators());
+                        }
+                    }
+                }
+                return;
+            }
+        }
+    }
+
+    public void setUrl(final String url) throws Exception {
+        final File f = new File(url);
+        if (f.exists()) {
+            this.url = f.toURI().toURL();
+        } else {
+            this.url = new URL(url);
+        }
+
+        final File file = URLs.toFile(this.url);
+        final ClassLoader loader = ParentClassLoaderFinder.Helper.get();
+        beans.addAll(
+                new FinderFactory.OpenEJBAnnotationFinder(
+                        file.isDirectory() ? new FileArchive(loader, file) : new JarArchive(loader, this.url))
+                        .getAnnotatedClassNames());
+
+        if (file.isDirectory()) {
+            final File beansXml = new File(file, "META-INF/beans.xml");
+            if (beansXml.exists()) {
+                final FileInputStream inputStream = new FileInputStream(beansXml);
+                beansModel = ReadDescriptors.readBeans(inputStream);
+                inputStream.close();
+            }
+        } else {
+            final URLClassLoader cl = new URLClassLoader(new URL[] { this.url });
+            final InputStream is = cl.getResourceAsStream("META-INF/beans.xml");
+            if (is != null) {
+                beansModel = ReadDescriptors.readBeans(is);
+                is.close();
+            }
+            cl.close();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/83c6ebfe/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java b/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
index 02e2456..a1e66f5 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
@@ -63,7 +63,10 @@ public class DependenceValidationTest extends TestCase {
         assertNotDependentOn("org.apache.openejb", dynamicAssembler);
 
         // Nothing may depend on the JAXB Tree except the Config code
-        assertNotDependentOn("org.apache.openejb", "org.apache.openejb.jee", "org.apache.openejb.config", "org.apache.openejb.config.rules", "org.apache.openejb.config.sys", "org.apache.openejb.cdi", "org.apache.openejb.junit", "org.apache.openejb.testng", "org.apache.openejb.testing");
+        assertNotDependentOn("org.apache.openejb", "org.apache.openejb.jee",
+                "org.apache.openejb.config", "org.apache.openejb.config.rules", "org.apache.openejb.config.sys",
+                "org.apache.openejb.cdi", "org.apache.openejb.junit", "org.apache.openejb.testng", "org.apache.openejb.testing",
+                "org.apache.openejb.service");
 
         // Nothing may depend on the Config code except it's subpackages
         assertNotDependentOn("org.apache.openejb", "org.apache.openejb.config", "org.apache.openejb.config.event", "org.apache.openejb.config.typed.util", "org.apache.openejb.config.rules", "org.apache.openejb.config.sys", "org.apache.openejb.assembler", "org.apache.openejb.cdi", "org.apache.openejb.junit", "org.apache.openejb.testng", "org.apache.openejb.testing", dynamicAssembler);


[32/50] tomee git commit: #TOMEE-1523 - @BeforeClass

Posted by st...@apache.org.
#TOMEE-1523 - @BeforeClass


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/536d1c56
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/536d1c56
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/536d1c56

Branch: refs/heads/master
Commit: 536d1c56952d29620ca2ae460b8bf3957f4633b9
Parents: f692db1
Author: AndyGee <an...@gmx.de>
Authored: Fri Mar 6 12:40:56 2015 +0100
Committer: AndyGee <an...@gmx.de>
Committed: Fri Mar 6 12:40:56 2015 +0100

----------------------------------------------------------------------
 .../openejb/itest/legacy/LegacyClientTest.java  | 50 +++++++++++---------
 1 file changed, 28 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/536d1c56/itests/legacy-client/src/test/java/org/apache/openejb/itest/legacy/LegacyClientTest.java
----------------------------------------------------------------------
diff --git a/itests/legacy-client/src/test/java/org/apache/openejb/itest/legacy/LegacyClientTest.java b/itests/legacy-client/src/test/java/org/apache/openejb/itest/legacy/LegacyClientTest.java
index 266c6ab..a4a047f 100644
--- a/itests/legacy-client/src/test/java/org/apache/openejb/itest/legacy/LegacyClientTest.java
+++ b/itests/legacy-client/src/test/java/org/apache/openejb/itest/legacy/LegacyClientTest.java
@@ -28,6 +28,7 @@ import org.apache.openejb.loader.Zips;
 import org.apache.openejb.server.control.StandaloneServer;
 import org.junit.AfterClass;
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import javax.ejb.EJBException;
@@ -56,6 +57,10 @@ public class LegacyClientTest {
 
     private static final Map<String, StandaloneServer> servers = new HashMap<String, StandaloneServer>();
     private static StandaloneServer root = null;
+    private static final String rootname = "root";
+    private static final File dir = Files.tmpdir();
+    private static File zip = null;
+    private static File app = null;
     private static final Logger logger = Logger.getLogger("org.apache.openejb.client");
 
     static {
@@ -66,6 +71,27 @@ public class LegacyClientTest {
         logger.setUseParentHandlers(false);
     }
 
+    @BeforeClass
+    public static void beforeClass() throws Exception {
+        logger.info("Retrieving standalone server: " + Repository.guessVersion("org.apache.openejb", "openejb-standalone") + " - This may take a while...");
+
+        zip = Repository.getArtifact("org.apache.openejb", "openejb-standalone", "zip");
+        app = Repository.getArtifact("org.apache.openejb.itests", "failover-ejb", "jar");
+
+        final File roothome = new File(dir, rootname);
+
+        Files.mkdir(roothome);
+        Zips.unzip(zip, roothome, true);
+
+        root = new StandaloneServer(roothome, roothome);
+
+        root.killOnExit();
+        root.getJvmOpts().add("-Dopenejb.classloader.forced-load=org.apache.openejb");
+        root.ignoreOut();
+        root.setProperty("name", rootname);
+        root.setProperty("openejb.extract.configuration", "false");
+    }
+
     @AfterClass
     public static void afterClass() {
 
@@ -94,26 +120,6 @@ public class LegacyClientTest {
         //        System.setProperty("version", OpenEjbVersion.get().getVersion());
         System.setProperty("openejb.client.connection.strategy", "roundrobin");
 
-        logger.info("Retrieving standalone server: " + Repository.guessVersion("org.apache.openejb", "openejb-standalone") + " - This may take a while...");
-        final File zip = Repository.getArtifact("org.apache.openejb", "openejb-standalone", "zip");
-        final File app = Repository.getArtifact("org.apache.openejb.itests", "failover-ejb", "jar");
-
-        final File dir = Files.tmpdir();
-
-        final String rootname = "root";
-        final File roothome = new File(dir, rootname);
-
-        Files.mkdir(roothome);
-        Zips.unzip(zip, roothome, true);
-
-        root = new StandaloneServer(roothome, roothome);
-
-        root.killOnExit();
-        root.getJvmOpts().add("-Dopenejb.classloader.forced-load=org.apache.openejb");
-        root.ignoreOut();
-        root.setProperty("name", rootname);
-        root.setProperty("openejb.extract.configuration", "false");
-
         StandaloneServer.ServerService multipoint = root.getServerService("multipoint");
         multipoint.setBind("localhost");
         multipoint.setPort(getNextAvailablePort());
@@ -226,7 +232,7 @@ public class LegacyClientTest {
         }
     }
 
-    private void assertBalance(final Calculator bean, final int size) {
+    private static void assertBalance(final Calculator bean, final int size) {
         final int expectedInvocations = 1000;
         final double percent = 0.10;
         final int totalInvocations = size * expectedInvocations;
@@ -245,7 +251,7 @@ public class LegacyClientTest {
         }
     }
 
-    private Map<String, AtomicInteger> invoke(final Calculator bean, final int max) {
+    private static Map<String, AtomicInteger> invoke(final Calculator bean, final int max) {
         final Map<String, AtomicInteger> invocations = new HashMap<String, AtomicInteger>();
         for (int i = 0; i < max; i++) {
             final String name = bean.name();


[42/50] tomee git commit: java: handling in ContextHandler

Posted by st...@apache.org.
java: handling in ContextHandler


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/b3ee6c93
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/b3ee6c93
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/b3ee6c93

Branch: refs/heads/master
Commit: b3ee6c9326e9e60835fe748c2cf9b98baa03aa5a
Parents: 8f30ba2
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 6 22:56:53 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 6 22:56:53 2015 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/openejb/core/ivm/ContextHandler.java | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/b3ee6c93/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/ContextHandler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/ContextHandler.java b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/ContextHandler.java
index b86aa9b..c24c178 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/ContextHandler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/ContextHandler.java
@@ -51,6 +51,9 @@ public class ContextHandler extends ContextWrapper {
     @Override
     public Object lookup(final String name) throws NamingException {
         try {
+            if ("java:".equals(name)) {
+                return context;
+            }
             return context.lookup(name);
         } catch (final UndeclaredThrowableException ute) {
             Throwable e = ute.getUndeclaredThrowable();


[31/50] tomee git commit: was for the chat not the code

Posted by st...@apache.org.
was for the chat not the code


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/f692db19
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/f692db19
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/f692db19

Branch: refs/heads/master
Commit: f692db19ecd7f0ec168fe244e3761b754f78f1be
Parents: 6ffa2ca
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 6 10:12:57 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 6 10:12:57 2015 +0100

----------------------------------------------------------------------
 .../org/apache/openejb/server/ejbd/Server2ServerEjbRefTest.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/f692db19/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/Server2ServerEjbRefTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/Server2ServerEjbRefTest.java b/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/Server2ServerEjbRefTest.java
index a57fa3a..374ffb4 100644
--- a/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/Server2ServerEjbRefTest.java
+++ b/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/Server2ServerEjbRefTest.java
@@ -137,7 +137,7 @@ public class Server2ServerEjbRefTest extends TestCase {
             Assert.assertNotNull("orangeRemote is null", orangeRemote);
             assertEquals("olleh", orangeRemote.echo("hello"));
             try {
-                final OrangeRemote bean = OrangeRemote.class.cast(ctx.lookup("OrangeBeanRemoteWell "));
+                final OrangeRemote bean = OrangeRemote.class.cast(ctx.lookup("OrangeBeanRemote"));
                 assertNotNull(bean);
                 assertEquals("olleh", bean.echo("hello"));
             } catch (final NamingException e) {


[49/50] tomee git commit: add exclude for illegal TCK test

Posted by st...@apache.org.
add exclude for illegal TCK test

See CDITCK-467
The TCK wrongly assumes that there must be no ProcessBeanAttributes
for a disabled bean.


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/77e7a2db
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/77e7a2db
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/77e7a2db

Branch: refs/heads/master
Commit: 77e7a2db5c75e9d29cd2a0988024e3cbe89a97e9
Parents: 1c20e6f
Author: Mark Struberg <st...@apache.org>
Authored: Sat Mar 7 17:44:38 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Sat Mar 7 17:44:38 2015 +0100

----------------------------------------------------------------------
 tck/cdi-embedded/src/test/resources/passing.xml | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/77e7a2db/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index 8c1fb81..05b45be 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -194,6 +194,11 @@
               <exclude name=".*"/>
           </methods>
       </class>
+      <class name="org.jboss.cdi.tck.tests.extensions.lifecycle.processBeanAttributes.VerifyValuesTest">
+          <methods>
+              <exclude name="testManagedBeanAttributes"/>
+          </methods>
+      </class>
 
       <!-- CDI-514 (issue got moved from original CDITCK-467) -->
       <class name="org.jboss.cdi.tck.tests.event.fires.FireEventTest">


[11/50] tomee git commit: commenting org.jboss.cdi.tck.tests.lookup.injectionpoint.non.contextual.NonContextualInjectionPointTest for now, think it is just a weld hole

Posted by st...@apache.org.
commenting org.jboss.cdi.tck.tests.lookup.injectionpoint.non.contextual.NonContextualInjectionPointTest for now, think it is just a weld hole


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/5a22afae
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/5a22afae
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/5a22afae

Branch: refs/heads/master
Commit: 5a22afaeef905ec168e88f0eb24f25a6cf29be9e
Parents: 39757e4
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Thu Mar 5 00:41:16 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Thu Mar 5 00:41:16 2015 +0100

----------------------------------------------------------------------
 tck/cdi-embedded/src/test/resources/passing.xml | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/5a22afae/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index 74124ed..89debb3 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -62,6 +62,14 @@
     </packages>
 
     <classes>
+      <!-- in discussion -->
+      <!-- seems when InjectionPoint injection in for an EJB injection point then it should be null, any real reason? -->
+      <class name="org.jboss.cdi.tck.tests.lookup.injectionpoint.non.contextual.NonContextualInjectionPointTest">
+        <methods>
+          <exclude name="testNonContextualEjbInjectionPointGetBean" />
+        </methods>
+      </class>
+
       <!-- Issues in the spec -->
       <!-- CDI-437 -->
       <class name="org.jboss.cdi.tck.tests.lookup.byname.ambiguous.broken.AmbiguousELNamesTest">


[19/50] tomee git commit: few more notes on building tomee

Posted by st...@apache.org.
few more notes on building tomee


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/45271fd3
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/45271fd3
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/45271fd3

Branch: refs/heads/master
Commit: 45271fd362f2b6679a9e3352fc46f2161e860f8e
Parents: 408a686
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Thu Mar 5 12:04:02 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Thu Mar 5 12:04:02 2015 +0100

----------------------------------------------------------------------
 README.md | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/45271fd3/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 598d85b..7e3d84b 100644
--- a/README.md
+++ b/README.md
@@ -16,6 +16,10 @@ then build with:
 
 `$> mvn clean install -DskipMulticastTests=true`
 
+Full build can be executed with (will execute arquillian test on all TomEE distributions)
+
+`$> mvn clean install -Pall-adapters`
+
  
 # Quick Build
  
@@ -24,5 +28,16 @@ then you can use the following build options
 
 `mvn -Pquick -Dsurefire.useFile=false -DdisableXmlReport=true -DuniqueVersion=false -ff -Dassemble -DskipTests -DfailIfNoTests=false clean install`
 
+# Direct builds
+
+To build TomEE just execute:
+
+`$> mvn clean install -pl tomee/apache-tomee -am -Dmaven.test.skip=true`
+
+TomEE zip/tar.gz will be in tomee/apache-tomee/target
+
+To build TomEE Embedded to be able to develop with its maven plugin execute:
+
+`$> mvn clean install -pl maven/tomee-embedded-maven-plugin -am -Dmaven.test.skip=true`
 
  


[21/50] tomee git commit: disable autoVersionSubmodules as we have different module versions in our build

Posted by st...@apache.org.
disable autoVersionSubmodules as we have different module versions in our build


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/6c254f13
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/6c254f13
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/6c254f13

Branch: refs/heads/master
Commit: 6c254f1376f957ee0d4cdadb7c56755fd6985b1a
Parents: 867b328
Author: Mark Struberg <st...@apache.org>
Authored: Thu Mar 5 16:32:47 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Thu Mar 5 16:47:11 2015 +0100

----------------------------------------------------------------------
 pom.xml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/6c254f13/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 89c7485..513bbb4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -328,7 +328,8 @@
         <artifactId>maven-release-plugin</artifactId>
         <version>2.5.1</version>
         <configuration>
-          <autoVersionSubmodules>true</autoVersionSubmodules>
+          <!-- We cannot yet activate it as our submodules have different versions -->
+          <autoVersionSubmodules>false</autoVersionSubmodules>
 
           <!-- the following settings are important when working with git -->
           <localCheckout>true</localCheckout>


[06/50] tomee git commit: few generic handling for ejbs

Posted by st...@apache.org.
few generic handling for ejbs


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/a1ec5e3b
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/a1ec5e3b
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/a1ec5e3b

Branch: refs/heads/master
Commit: a1ec5e3b09099ff1dc0f938a94fa38df7142e58a
Parents: 073b05a
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed Mar 4 22:03:38 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Wed Mar 4 22:03:38 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/openejb/cdi/CdiEjbBean.java | 87 ++++++++++----------
 .../java/org/apache/openejb/cdi/CdiPlugin.java  |  3 +-
 tck/cdi-embedded/pom.xml                        |  5 +-
 tck/cdi-embedded/src/test/resources/failing.xml |  2 +-
 4 files changed, 49 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/a1ec5e3b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
index 34cd0b3..b11d079 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
@@ -34,23 +34,8 @@ import org.apache.webbeans.context.creational.CreationalContextImpl;
 import org.apache.webbeans.ejb.common.component.BaseEjbBean;
 import org.apache.webbeans.intercept.InterceptorResolutionService;
 import org.apache.webbeans.portable.InjectionTargetImpl;
+import org.apache.webbeans.util.GenericsUtil;
 
-import javax.decorator.Decorator;
-import javax.ejb.NoSuchEJBException;
-import javax.ejb.Remove;
-import javax.enterprise.context.Dependent;
-import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.Typed;
-import javax.enterprise.inject.spi.AnnotatedMethod;
-import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanAttributes;
-import javax.enterprise.inject.spi.DefinitionException;
-import javax.enterprise.inject.spi.InjectionPoint;
-import javax.enterprise.inject.spi.InjectionTarget;
-import javax.enterprise.inject.spi.SessionBeanType;
-import javax.interceptor.Interceptor;
-import javax.transaction.UserTransaction;
 import java.io.Serializable;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
@@ -61,12 +46,29 @@ import java.rmi.NoSuchObjectException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Level;
+import javax.decorator.Decorator;
+import javax.ejb.NoSuchEJBException;
+import javax.ejb.Remove;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.Typed;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanAttributes;
+import javax.enterprise.inject.spi.DefinitionException;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
+import javax.enterprise.inject.spi.SessionBeanType;
+import javax.interceptor.Interceptor;
+import javax.transaction.UserTransaction;
 
 public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker, DeploymentValidationService.BeanInterceptorInfoProvider {
     private final Map<Integer, Object> dependentSFSBToBeRemoved = new ConcurrentHashMap<Integer, Object>();
@@ -86,15 +88,16 @@ public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker,
         EjbInjectionTargetImpl.class.cast(getInjectionTarget()).setCdiEjbBean(this);
     }
 
-    public CdiEjbBean(final BeanContext beanContext, final WebBeansContext webBeansContext, final Class beanClass, final AnnotatedType<T> at,
+    public CdiEjbBean(final BeanContext bc, final WebBeansContext webBeansContext, final Class beanClass, final AnnotatedType<T> at,
                       final InjectionTargetFactoryImpl<T> factory, final BeanAttributes<T> attributes) {
-        super(webBeansContext, toSessionType(beanContext.getComponentType()), at, new EJBBeanAttributesImpl<T>(beanContext,
-                attributes, true), beanClass, factory);
-        this.beanContext = beanContext;
-        beanContext.set(Bean.class, this);
-        passivatingId = beanContext.getDeploymentID() + getReturnType().getName();
-
-        final boolean stateful = BeanType.STATEFUL.equals(beanContext.getComponentType());
+        super(webBeansContext, toSessionType(bc.getComponentType()), at,
+                new EJBBeanAttributesImpl<T>(bc, attributes),
+                beanClass, factory);
+        this.beanContext = bc;
+        bc.set(Bean.class, this);
+        passivatingId = bc.getDeploymentID() + getReturnType().getName();
+
+        final boolean stateful = BeanType.STATEFUL.equals(bc.getComponentType());
         final boolean isDependent = getScope().equals(Dependent.class);
         isDependentAndStateful = isDependent && stateful;
         if (webBeansContext.getBeanManagerImpl().isPassivatingScope(getScope()) && stateful) {
@@ -321,16 +324,11 @@ public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker,
         private final BeanContext beanContext;
         private final Set<Type> ejbTypes;
 
-        public EJBBeanAttributesImpl(final BeanContext bc, final BeanAttributes<T> beanAttributes, final boolean withSerializable) {
+        public EJBBeanAttributesImpl(final BeanContext bc, final BeanAttributes<T> beanAttributes) {
             super(beanAttributes, false);
             this.beanContext = bc;
             this.ejbTypes = new HashSet<Type>();
             initTypes();
-            if (withSerializable) {
-                if (!ejbTypes.contains(Serializable.class)) {
-                    ejbTypes.add(Serializable.class);
-                }
-            }
         }
 
         @Override
@@ -349,8 +347,19 @@ public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker,
 
             final List<Class> cl = beanContext.getBusinessLocalInterfaces();
             if (cl != null && !cl.isEmpty()) {
+                final Map<Class<?>, Type> apis = new HashMap<>(cl.size());
+                for (final Type t : beanContext.getManagedClass().getGenericInterfaces()) {
+                    if (ParameterizedType.class.isInstance(t)) {
+                        try {
+                            apis.put(Class.class.cast(ParameterizedType.class.cast(t).getRawType()), t);
+                        } catch (final Throwable th) {
+                            // no-op
+                        }
+                    }
+                }
                 for (final Class<?> c : cl) {
-                    ejbTypes.addAll(parentInterfaces(c));
+                    final Type type = apis.get(c);
+                    ejbTypes.addAll(GenericsUtil.getTypeClosure(type != null ? type : c));
                 }
             }
 
@@ -364,22 +373,14 @@ public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker,
             ejbTypes.add(Object.class);
         }
 
-        private static Collection<Class<?>> parentInterfaces(final Class<?> c) {
-            final Collection<Class<?>> set = new HashSet<>();
-            set.add(c);
-            for (final Class<?> parent : c.getInterfaces()) {
-                set.addAll(parentInterfaces(parent));
-            }
-            return set;
-        }
-
         private static void addApiTypes(final Collection<Type> clazzes, final Class<?> beanClass) {
             final Typed typed = beanClass.getAnnotation(Typed.class);
             if (typed == null || typed.value().length == 0) {
-                Class<?> current = beanClass;
-                while (current != null && !Object.class.equals(current)) {
+                Type current = beanClass;
+                while (current != null && Object.class != current) {
                     clazzes.add(current);
-                    current = current.getSuperclass();
+                    // TODO: better loop
+                    current = Class.class.isInstance(current) ? Class.class.cast(current).getGenericSuperclass() : null;
                 }
             } else {
                 Collections.addAll(clazzes, typed.value());

http://git-wip-us.apache.org/repos/asf/tomee/blob/a1ec5e3b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
index f93645d..3c04eee 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
@@ -137,8 +137,7 @@ public class CdiPlugin extends AbstractOwbPlugin implements OpenWebBeansJavaEEPl
     public <T> BeanAttributes<T> createBeanAttributes(final AnnotatedType<T> type) {
         return new CdiEjbBean.EJBBeanAttributesImpl(
                 findBeanContext(webBeansContext, type.getJavaClass()),
-                BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(type).build(),
-                false);
+                BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(type).build());
     }
 
     public void configureDeployments(final List<BeanContext> ejbDeployments) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/a1ec5e3b/tck/cdi-embedded/pom.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/pom.xml b/tck/cdi-embedded/pom.xml
index 784bdf6..dc0361b 100644
--- a/tck/cdi-embedded/pom.xml
+++ b/tck/cdi-embedded/pom.xml
@@ -171,7 +171,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.17</version>
+        <version>2.18</version>
         <configuration>
           <reuseForks>true</reuseForks>
           <forkCount>1</forkCount>
@@ -182,7 +182,7 @@
             <suiteXmlFile>src/test/resources/passing.xml</suiteXmlFile>
           </suiteXmlFiles>
           <properties>
-            <property> <!-- broken cause @RequestScoped beans are parameter and testng logs parameters -->
+            <property> <!-- broken cause @RequestScoped beans are parameters and testng logs parameters -->
               <name>usedefaultlisteners</name>
               <value>false</value>
             </property>
@@ -203,6 +203,7 @@
             <openejb.cdi.producer.interception>false</openejb.cdi.producer.interception>
             <openejb.cdi.filter.classloader>false</openejb.cdi.filter.classloader>
 
+            <openejb.strict.interface.declaration>true</openejb.strict.interface.declaration>
             <openejb.http.mock-request>true</openejb.http.mock-request>
             <openejb.http.default-content-type>text/plain</openejb.http.default-content-type>
             <openejb.embedded.try-jsp>true</openejb.embedded.try-jsp>

http://git-wip-us.apache.org/repos/asf/tomee/blob/a1ec5e3b/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index 2e50751..09755fc 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
     -Dopenejb.embedded.try-jsp=true
     -->
     <classes>
-      <class name="org.jboss.cdi.tck.tests.context.conversation.filter.ConversationFilterTest" />
+      <class name="org.jboss.cdi.tck.tests.definition.bean.types.enterprise.SessionBeanTypesTest" />
     </classes>
   </test>
 </suite>


[17/50] tomee git commit: fix release setup for GIT

Posted by st...@apache.org.
fix release setup for GIT


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/8fa8097c
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/8fa8097c
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/8fa8097c

Branch: refs/heads/master
Commit: 8fa8097c258e31bc427e0ea77e1cb7eb96daf259
Parents: 83c6ebf
Author: Mark Struberg <st...@apache.org>
Authored: Thu Jan 29 17:59:22 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Thu Mar 5 11:53:04 2015 +0100

----------------------------------------------------------------------
 pom.xml | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/8fa8097c/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 0262f78..89c7485 100644
--- a/pom.xml
+++ b/pom.xml
@@ -310,11 +310,6 @@
           <version>2.13</version>
         </plugin>
         <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-release-plugin</artifactId>
-          <version>2.5.1</version>
-        </plugin>
-        <plugin>
           <groupId>org.codehaus.gmaven</groupId>
           <artifactId>groovy-maven-plugin</artifactId>
           <version>2.0</version>
@@ -330,6 +325,20 @@
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-release-plugin</artifactId>
+        <version>2.5.1</version>
+        <configuration>
+          <autoVersionSubmodules>true</autoVersionSubmodules>
+
+          <!-- the following settings are important when working with git -->
+          <localCheckout>true</localCheckout>
+          <pushChanges>false</pushChanges>
+          <releaseProfiles></releaseProfiles>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
         <configuration>
           <source>1.7</source>


[20/50] tomee git commit: dont create a session when not needed

Posted by st...@apache.org.
dont create a session when not needed


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/867b3288
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/867b3288
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/867b3288

Branch: refs/heads/master
Commit: 867b3288250942e5761a27d75f00ba111da6804a
Parents: 45271fd
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Thu Mar 5 16:28:19 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Thu Mar 5 16:28:38 2015 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/openejb/cdi/CdiAppContextsService.java | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/867b3288/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
index 166a992..2d0598b 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
@@ -150,7 +150,10 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
         if (rc != null) {
             final HttpServletRequest req = rc.getServletRequest();
             if (req != null) {
-                return req.getSession().getId();
+                final HttpSession session = req.getSession(false);
+                if (session != null) {
+                    return session.getId();
+                }
             }
         }
         return null;


[15/50] tomee git commit: add a simple readme with building instructions as a start

Posted by st...@apache.org.
add a simple readme with building instructions as a start


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/d1cfde94
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/d1cfde94
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/d1cfde94

Branch: refs/heads/master
Commit: d1cfde9489acca18b6838ba128da25f1c350d0ad
Parents: b9623bd
Author: Mark Struberg <st...@apache.org>
Authored: Thu Mar 5 10:50:08 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Thu Mar 5 11:53:04 2015 +0100

----------------------------------------------------------------------
 README.md | 13 +++++++++++++
 1 file changed, 13 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/d1cfde94/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..8a4f61e
--- /dev/null
+++ b/README.md
@@ -0,0 +1,13 @@
+Title: Buildling Instructions
+
+Apache TomEE is built with Apache Maven.
+
+Simply use
+`$> mvn clean install`
+on your commandline to kick off the compile process of TomEE
+
+
+If you intend building in environments where multicast is not allowed
+then build with:
+ `$> mvn clean install -DskipMulticastTests=true`
+ 


[24/50] tomee git commit: add a switch to disable multicast tests

Posted by st...@apache.org.
add a switch to disable multicast tests

This is intended building in environments where multicast is not allowed.
In that case just build with. $> mvn clean install -DskipMulticastTests=true


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/9eebf368
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/9eebf368
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/9eebf368

Branch: refs/heads/master
Commit: 9eebf3687356fe63704e5e683be9d7df6f9e4bf9
Parents: 700dc59
Author: Mark Struberg <st...@apache.org>
Authored: Thu Mar 5 19:34:47 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Thu Mar 5 19:35:23 2015 +0100

----------------------------------------------------------------------
 .../openejb/server/discovery/MulticastDiscoveryAgentTest.java  | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/9eebf368/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastDiscoveryAgentTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastDiscoveryAgentTest.java b/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastDiscoveryAgentTest.java
index 7a6be56..ffcbf98 100644
--- a/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastDiscoveryAgentTest.java
+++ b/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastDiscoveryAgentTest.java
@@ -26,6 +26,7 @@ import java.net.URISyntaxException;
 import java.util.HashSet;
 import java.util.Properties;
 import java.util.Set;
+import java.util.logging.Logger;
 
 /**
  * @version $Rev$ $Date$
@@ -36,6 +37,11 @@ public class MulticastDiscoveryAgentTest extends TestCase {
     //public void testNothing(){}
 
     public void test() throws Exception {
+        if ("true".equals(System.getProperty("skipMulticastTests"))) {
+            Logger.getLogger(this.getClass().getName()).warning("Skipping MulticastTest " + this.getClass().getName());
+            return;
+        }
+
         final MulticastDiscoveryAgent[] agents = {agent("red"), agent("green"), agent("yellow"), agent("blue")};
 
         final MulticastSearch multicast = new MulticastSearch();


[50/50] tomee git commit: disable embedded TCK test which needs a running JSF container

Posted by st...@apache.org.
disable embedded TCK test which needs a running JSF container

the other method in that test also needs a container :/


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/d9024879
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/d9024879
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/d9024879

Branch: refs/heads/master
Commit: d90248796b2b454f43cfd83bf3be452fcbb8e16d
Parents: 77e7a2d
Author: Mark Struberg <st...@apache.org>
Authored: Sat Mar 7 17:53:13 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Sat Mar 7 17:53:13 2015 +0100

----------------------------------------------------------------------
 tck/cdi-embedded/src/test/resources/passing.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/d9024879/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index 05b45be..905bd2d 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -314,7 +314,7 @@
       </class>
       <class name="org.jboss.cdi.tck.tests.lookup.el.integration.IntegrationWithUnifiedELTest">
         <methods>
-          <exclude name="testELResolverRegisteredWithJsf" />
+          <exclude name=".*" />
         </methods>
       </class>
     </classes>


[45/50] tomee git commit: exclude illegal TCK test

Posted by st...@apache.org.
exclude illegal TCK test

See CDI-312. The meaning of BDA is not clearly defined. Section 5 and 12
contradict each other. The EE6 RI (Glassfish3) and also JBoss6 did implement
it like we do (and yes, this is WAY more sane).


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/2934b940
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/2934b940
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/2934b940

Branch: refs/heads/master
Commit: 2934b940eeb565127d656efdfa6a182d796e9073
Parents: 928a686
Author: Mark Struberg <st...@apache.org>
Authored: Sat Mar 7 12:59:10 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Sat Mar 7 12:59:10 2015 +0100

----------------------------------------------------------------------
 tck/cdi-embedded/src/test/resources/passing.xml | 7 +++++++
 1 file changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/2934b940/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index 045f345..f849a3b 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -252,6 +252,13 @@
               <exclude name=".*"/>
           </methods>
       </class>
+      <class name="org.jboss.cdi.tck.tests.deployment.packaging.war.modules.WebArchiveModulesTest">
+          <methods>
+              <exclude name="testAlternatives"/>
+              <exclude name="testInjectionChainVisibilityAndInterceptorEnablement"/>
+              <exclude name="testDecoratorAndCrossModuleEventObserver"/>
+          </methods>
+      </class>
 
 
 


[04/50] tomee git commit: one more step for @ConversationScoped tcks

Posted by st...@apache.org.
one more step for @ConversationScoped tcks


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/01a80f1b
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/01a80f1b
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/01a80f1b

Branch: refs/heads/master
Commit: 01a80f1baef4c9ee5b64c462d4f8fb010f1608a0
Parents: d2ee623
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed Mar 4 21:14:05 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Wed Mar 4 21:14:05 2015 +0100

----------------------------------------------------------------------
 .../openejb/cdi/CdiAppContextsService.java      | 80 ++++++--------------
 .../server/httpd/EndWebBeansListener.java       | 22 +++++-
 tck/cdi-embedded/src/test/resources/failing.xml |  2 +-
 3 files changed, 42 insertions(+), 62 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/01a80f1b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
index 3870dfa..166a992 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
@@ -38,6 +38,11 @@ import org.apache.webbeans.spi.ConversationService;
 import org.apache.webbeans.web.context.ServletRequestContext;
 import org.apache.webbeans.web.intercept.RequestScopedBeanInterceptorHandler;
 
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.context.BusyConversationException;
 import javax.enterprise.context.ContextException;
@@ -54,11 +59,6 @@ import javax.inject.Singleton;
 import javax.servlet.ServletRequestEvent;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
 
 public class CdiAppContextsService extends AbstractContextsService implements ContextsService, ConversationService {
     public static final Object EJB_REQUEST_EVENT = new Object();
@@ -262,7 +262,7 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
         } else if (scopeType.equals(ApplicationScoped.class)) {
             return getApplicationContext();
         } else if (supportsConversation() && scopeType.equals(ConversationScoped.class)) {
-            return getConversationContext(true);
+            return getConversationContext();
         } else if (scopeType.equals(Dependent.class)) {
             return dependentContext;
         } else if (scopeType.equals(Singleton.class)) {
@@ -285,7 +285,7 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
                 initSingletonContext();
             } else if (scopeType.equals(Singleton.class)) { //NOPMD
                 // Do nothing
-            } else if (supportsConversation() && scopeType.equals(ConversationScoped.class)) {
+            } else if (supportsConversation() && scopeType.equals(ConversationScoped.class) && !isTimeout()) {
                 initConversationContext(startParameter);
             } else {
                 if (logger.isWarningEnabled()) {
@@ -337,29 +337,26 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
                 //Re-initialize thread local for session
                 final HttpSession session = request.getSession(false);
 
-                String cid = null;
+                final String cid = request.getParameter("cid");
                 if (session != null) {
                     initSessionContext(session);
-
-                    final ServletRequestContext rc  = getRequestContext(false);
-                    if (rc != null && rc.getServletRequest() != null && conversationService != null && !isConversationSkipped(rc)) {
-                        cid = rc.getServletRequest().getParameter("cid");
+                    if (conversationService != null && !isConversationSkipped(request)) {
                         if (cid != null) {
                             final ConversationManager conversationManager = webBeansContext.getConversationManager();
                             final ConversationImpl c = conversationManager.getPropogatedConversation(cid, session.getId());
                             if (c != null) {
-                                conversationContext.set(conversationManager.getConversationContext(c));
+                                final ConversationContext context = conversationManager.getConversationContext(c);
+                                context.setActive(true);
+                                conversationContext.set(context);
+                                return;
                             }
                         }
                     }
-                } else {
-                    cid = getConversationId();
                 }
-                if (cid == null && conversationContext.get() == null) {
+
+                if (cid == null && !isTimeout()) {
                     // transient but active
-                    final ConversationContext context = new ConversationContext();
-                    context.setActive(true);
-                    conversationContext.set(context);
+                    initConversationContext(request);
                 }
             }
         } else if (event == EJB_REQUEST_EVENT) {
@@ -428,7 +425,7 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
             return;
         }
 
-        final ConversationContext cc = getConversationContext(false);
+        final ConversationContext cc = getConversationContext();
         if (cc == null) {
             return;
         }
@@ -557,9 +554,8 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
 
         final HttpServletRequest req = HttpServletRequest.class.isInstance(request) ? HttpServletRequest.class.cast(request) : null;
         ConversationContext context = ConversationContext.class.isInstance(request) ? ConversationContext.class.cast(request) : null;
-        final ThreadContext tc = ThreadContext.getThreadContext();
         Object event = null;
-        if (context == null && (tc == null || tc.getCurrentOperation() != Operation.TIMEOUT)) {
+        if (context == null) {
             final ConversationContext existingContext = conversationContext.get();
             if (existingContext == null) {
                 context = new ConversationContext();
@@ -593,8 +589,7 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
             return;
         }
 
-        final ConversationContext context = getConversationContext(false);
-
+        final ConversationContext context = getConversationContext();
         if (context != null) {
             context.destroy();
             final ServletRequestContext servletRequestContext = getRequestContext(false);
@@ -610,7 +605,7 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
     }
 
 
-    private ServletRequestContext getRequestContext(final boolean create) {
+    public ServletRequestContext getRequestContext(final boolean create) {
         ServletRequestContext context = requestContext.get();
         if (context == null && create) {
             initRequestContext(null);
@@ -655,40 +650,11 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
      *
      * @return conversation context
      */
-    private ConversationContext getConversationContext(final boolean createIfPropagated) {
-        ConversationContext context = conversationContext.get();
-        if (context == null && createIfPropagated && !isTimeout()) {
-            final ServletRequestContext rc  = getRequestContext(true); // needs to exist for Conversation scope
-            if (rc != null && rc.getServletRequest() != null && !isConversationSkipped(rc)) {
-                final HttpServletRequest servletRequest = rc.getServletRequest();
-                final HttpSession session = servletRequest.getSession(false);
-                if (session != null) {
-                    final String cid = rc.getServletRequest().getParameter("cid");
-                    if (cid != null) {
-                        final ConversationManager conversationManager = webBeansContext.getConversationManager();
-                        final ConversationImpl conversation = conversationManager.getPropogatedConversation(cid, session.getId());
-                        if (conversation != null) {
-                            final ConversationContext ctx = conversationManager.getConversationContext(conversation);
-                            if (ctx != null) {
-                                conversationContext.set(ctx);
-                                ctx.setActive(true);
-                                return ctx;
-                            }
-                        }
-                    }
-                    // else create a new one, we ensure we have a session before doing it cause in several cases - stateless - we don't want to create a new one if not
-                    return initConversationContext(servletRequest);
-                }
-            }
-        }
-        if (context != null && !context.isActive() && createIfPropagated) {
-            context.setActive(true);
-        }
-        return context;
+    private ConversationContext getConversationContext() {
+        return conversationContext.get();
     }
 
-    private boolean isConversationSkipped(final ServletRequestContext rc) {
-        final HttpServletRequest servletRequest = rc.getServletRequest();
+    private boolean isConversationSkipped(final HttpServletRequest servletRequest) {
         return "none".equals(servletRequest.getParameter("conversationPropagation")) || "true".equals(servletRequest.getParameter("nocid"));
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/01a80f1b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java
----------------------------------------------------------------------
diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java
index e1a7968..af340ac 100644
--- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java
+++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java
@@ -154,7 +154,7 @@ public class EndWebBeansListener implements ServletContextListener, ServletReque
      * {@inheritDoc}
      */
     @Override
-    public void sessionDestroyed(HttpSessionEvent event) {
+    public void sessionDestroyed(final HttpSessionEvent event) {
         if (webBeansContext == null) {
             return;
         }
@@ -171,16 +171,30 @@ public class EndWebBeansListener implements ServletContextListener, ServletReque
             WebappWebBeansContext.class.cast(webBeansContext).getParent().getContextsService().endContext(SessionScoped.class, event.getSession());
         }
 
+        final CdiAppContextsService appContextsService = CdiAppContextsService.class.cast(webBeansContext.getContextsService());
+        if (appContextsService.getRequestContext(false) != null) {
+            appContextsService.pushRequestReleasable(new Runnable() {
+                @Override
+                public void run() {
+                    doDestroyConversations(event.getSession().getId());
+                }
+            });
+        } else {
+            doDestroyConversations(event.getSession().getId());
+        }
+
+        destroyFakedRequest();
+    }
+
+    private void doDestroyConversations(final String id) {
         final ConversationManager conversationManager = webBeansContext.getConversationManager();
-        final Map<Conversation, ConversationContext> cc = conversationManager.getAndRemoveConversationMapWithSessionId(event.getSession().getId());
+        final Map<Conversation, ConversationContext> cc = conversationManager.getAndRemoveConversationMapWithSessionId(id);
         for (final Map.Entry<Conversation, ConversationContext> c : cc.entrySet()) {
             if (c != null) {
                 c.getValue().destroy();
                 webBeansContext.getBeanManagerImpl().fireEvent(c.getKey().getId(), CdiAppContextsService.DestroyedLiteral.CONVERSATION);
             }
         }
-
-        destroyFakedRequest();
     }
 
     private void destroyFakedRequest() {

http://git-wip-us.apache.org/repos/asf/tomee/blob/01a80f1b/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index 81a4955..613b81e 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
     -Dopenejb.embedded.try-jsp=true
     -->
     <classes>
-      <class name="org.jboss.cdi.tck.tests.deployment.initialization.ApplicationInitializationLifecycleTest" />
+      <class name="org.jboss.cdi.tck.tests.context.conversation.servlet.ServletConversationTest" />
     </classes>
   </test>
 </suite>


[40/50] tomee git commit: local bean wins over local interface for cdi

Posted by st...@apache.org.
local bean wins over local interface for cdi


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/6d1cdf47
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/6d1cdf47
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/6d1cdf47

Branch: refs/heads/master
Commit: 6d1cdf47c327406fcc1f19bcc3f1fcef6467f0ee
Parents: 643ce4f
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 6 19:18:51 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 6 19:18:51 2015 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/openejb/cdi/CdiEjbBean.java           | 2 +-
 tck/cdi-embedded/src/test/resources/failing.xml                    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/6d1cdf47/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
index b11d079..b3a1702 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
@@ -300,7 +300,7 @@ public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker,
             homeLocalBean = null;
             home = null;
             remote = null;
-        } else if (noLocalInterface && beanContext.isLocalbean()) {
+        } else if (beanContext.isLocalbean()) {
             homeLocalBean = beanContext.getBusinessLocalBeanHome();
             home = null;
             remote = null;

http://git-wip-us.apache.org/repos/asf/tomee/blob/6d1cdf47/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index e32235d..b0a5663 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
     -Dopenejb.embedded.try-jsp=true
     -->
     <classes>
-      <class name="org.jboss.cdi.tck.tests.context.application.ejb.ApplicationContextSharedTest" />
+      <class name="org.jboss.cdi.tck.tests.lookup.modules.SpecializedBeanInjectionNotAvailable02Test" />
     </classes>
   </test>
 </suite>


[10/50] tomee git commit: missing class

Posted by st...@apache.org.
missing class


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/39757e4f
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/39757e4f
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/39757e4f

Branch: refs/heads/master
Commit: 39757e4f9c8edeb1b277a57b3035cf7f565dccd9
Parents: d464d6b
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Thu Mar 5 00:29:18 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Thu Mar 5 00:29:18 2015 +0100

----------------------------------------------------------------------
 .../org/apache/openejb/ModuleTestContext.java   | 40 ++++++++++++++++++++
 1 file changed, 40 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/39757e4f/container/openejb-core/src/main/java/org/apache/openejb/ModuleTestContext.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/ModuleTestContext.java b/container/openejb-core/src/main/java/org/apache/openejb/ModuleTestContext.java
new file mode 100644
index 0000000..7f9f2e3
--- /dev/null
+++ b/container/openejb-core/src/main/java/org/apache/openejb/ModuleTestContext.java
@@ -0,0 +1,40 @@
+/*
+ * 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;
+
+import java.net.URI;
+import javax.naming.Context;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ModuleTestContext extends ModuleContext {
+    private Context moduleJndiContextOverride;
+
+    public ModuleTestContext(final String id, final URI moduleURI, final String uniqueId, final AppContext appContext, final Context moduleJndiContext, final ClassLoader classLoader) {
+        super(id, moduleURI, uniqueId, appContext, moduleJndiContext, classLoader);
+    }
+
+    public void setModuleJndiContextOverride(final Context moduleJndiContextOverride) {
+        this.moduleJndiContextOverride = moduleJndiContextOverride;
+    }
+
+    public Context getModuleJndiContext() {
+        return moduleJndiContextOverride == null ? super.getModuleJndiContext() : moduleJndiContextOverride;
+    }
+}


[09/50] tomee git commit: trying to honor java:module even with a faked managed bean test class

Posted by st...@apache.org.
trying to honor java:module even with a faked managed bean test class


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/d464d6b0
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/d464d6b0
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/d464d6b0

Branch: refs/heads/master
Commit: d464d6b047cbe847f421b38335603e5f1217f1df
Parents: aa4cfc3
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Thu Mar 5 00:29:07 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Thu Mar 5 00:29:07 2015 +0100

----------------------------------------------------------------------
 .../openejb/OpenEJBArchiveProcessor.java        |  4 ++-
 .../openejb/OpenEJBDeployableContainer.java     | 28 ++++++++++++++++++++
 .../openejb/ExceptionInjectionTest.java         |  6 ++---
 .../assembler/classic/EjbJarBuilder.java        |  5 +++-
 .../apache/openejb/core/ivm/ContextHandler.java | 11 ++++++++
 5 files changed, 49 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/d464d6b0/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
index 1d6c72f..1a75a69 100644
--- a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
+++ b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
@@ -232,7 +232,8 @@ public class OpenEJBArchiveProcessor {
         // add the test as a managed bean to be able to inject into it easily
         final Map<String, Object> testDD;
         if (javaClass != null) {
-            testDD = addTestClassAsManagedBean(javaClass, tempClassLoader, appModule).getAltDDs();
+            final EjbModule testEjbModule = addTestClassAsManagedBean(javaClass, tempClassLoader, appModule);
+            testDD = testEjbModule.getAltDDs();
         } else {
             testDD = new HashMap<>(); // ignore
         }
@@ -306,6 +307,7 @@ public class OpenEJBArchiveProcessor {
         ejbDeployment.setDeploymentId(ejbName);
         final EjbModule e = new EjbModule(ejbJar, openejbJar);
         e.getProperties().setProperty("openejb.cdi.activated", "false");
+        e.getProperties().setProperty("openejb.test.module", "true");
         e.setBeans(new Beans());
         e.setClassLoader(tempClassLoader);
         appModule.getEjbModules().add(e);

http://git-wip-us.apache.org/repos/asf/tomee/blob/d464d6b0/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
index bc699ac..0b917cd 100644
--- a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
+++ b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
@@ -17,6 +17,8 @@
 package org.apache.openejb.arquillian.openejb;
 
 import org.apache.openejb.AppContext;
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.ModuleTestContext;
 import org.apache.openejb.OpenEJB;
 import org.apache.openejb.OpenEJBRuntimeException;
 import org.apache.openejb.OpenEjbContainer;
@@ -35,6 +37,7 @@ import org.apache.openejb.config.DeploymentFilterable;
 import org.apache.openejb.config.WebModule;
 import org.apache.openejb.core.LocalInitialContext;
 import org.apache.openejb.core.LocalInitialContextFactory;
+import org.apache.openejb.jee.sun.BeanCache;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.web.LightweightWebAppBuilder;
@@ -65,6 +68,8 @@ import java.io.ByteArrayInputStream;
 import java.io.Closeable;
 import java.io.IOException;
 import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
@@ -219,6 +224,29 @@ public class OpenEJBDeployableContainer implements DeployableContainer<OpenEJBCo
             closeablesProducer.set(cl);
             info = quickDeploy(archive, testClass.get(), cl);
 
+            // try to switch module context jndi to let test use java:module naming
+            // we could put the managed bean in the war but then test class should respect all the
+            // container rules (CDI) which is not the case with this solution
+            if (archive.getName().endsWith(".war")) {
+                final List<BeanContext> beanContexts = info.appCtx.getBeanContexts();
+                if (beanContexts.size() > 1) {
+                    final Iterator<BeanContext> it = beanContexts.iterator();
+                    while (it.hasNext()) {
+                        final BeanContext next = it.next();
+                        if (ModuleTestContext.class.isInstance(next.getModuleContext()) && BeanContext.Comp.class != next.getBeanClass()) {
+                            for (final BeanContext b : beanContexts) {
+                                if (b.getModuleContext() != next.getModuleContext()) {
+                                    ModuleTestContext.class.cast(next.getModuleContext())
+                                            .setModuleJndiContextOverride(b.getModuleContext().getModuleJndiContext());
+                                    break;
+                                }
+                            }
+                            break;
+                        }
+                    }
+                }
+            }
+
             servletContextProducer.set(info.appServletContext);
             sessionProducer.set(info.appSession);
             appInfoProducer.set(info.appInfo);

http://git-wip-us.apache.org/repos/asf/tomee/blob/d464d6b0/arquillian/arquillian-openejb-embedded-5/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-openejb-embedded-5/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java b/arquillian/arquillian-openejb-embedded-5/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java
index efa6d20..bab0830 100644
--- a/arquillian/arquillian-openejb-embedded-5/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java
+++ b/arquillian/arquillian-openejb-embedded-5/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.openejb.arquillian.openejb;
 
-import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.apache.webbeans.exception.WebBeansDeploymentException;
 import org.jboss.arquillian.container.spi.client.container.DeploymentException;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.container.test.api.ShouldThrowException;
@@ -39,10 +39,10 @@ public class ExceptionInjectionTest {
     private DeploymentException de;
 
     @ArquillianResource
-    private WebBeansConfigurationException owbException;
+    private WebBeansDeploymentException owbException;
 
     @ArquillianResource
-    private javax.enterprise.inject.spi.DeploymentException oejbException;
+    private DeploymentException oejbException;
 
     @Deployment(testable = false)
     @ShouldThrowException(javax.enterprise.inject.spi.DeploymentException.class)

http://git-wip-us.apache.org/repos/asf/tomee/blob/d464d6b0/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java
index 68c14a3..0accb01 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarBuilder.java
@@ -22,6 +22,7 @@ import org.apache.openejb.BeanContext;
 import org.apache.openejb.Container;
 import org.apache.openejb.Injection;
 import org.apache.openejb.ModuleContext;
+import org.apache.openejb.ModuleTestContext;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.util.Messages;
 
@@ -54,7 +55,9 @@ public class EjbJarBuilder {
 
         final HashMap<String, BeanContext> deployments = new HashMap<String, BeanContext>();
 
-        final ModuleContext moduleContext = new ModuleContext(ejbJar.moduleName, ejbJar.moduleUri, ejbJar.uniqueId, context, moduleJndiContext, classLoader);
+        final ModuleContext moduleContext = !ejbJar.properties.containsKey("openejb.test.module") ?
+                new ModuleContext(ejbJar.moduleName, ejbJar.moduleUri, ejbJar.uniqueId, context, moduleJndiContext, classLoader) :
+                new ModuleTestContext(ejbJar.moduleName, ejbJar.moduleUri, ejbJar.uniqueId, context, moduleJndiContext, classLoader);
         moduleContext.getProperties().putAll(ejbJar.properties);
         final InterceptorBindingBuilder interceptorBindingBuilder = new InterceptorBindingBuilder(classLoader, ejbJar);
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/d464d6b0/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/ContextHandler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/ContextHandler.java b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/ContextHandler.java
index d62c592..b86aa9b 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/ContextHandler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/ContextHandler.java
@@ -17,6 +17,7 @@
 
 package org.apache.openejb.core.ivm;
 
+import org.apache.openejb.core.ThreadContext;
 import org.apache.openejb.core.ivm.naming.ContextWrapper;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.spi.ContainerSystem;
@@ -80,6 +81,16 @@ public class ContextHandler extends ContextWrapper {
             } catch (final NameNotFoundException nnfe2) {
                 // ignore, let it be thrown
             }
+            try {
+                final ThreadContext threadContext = ThreadContext.getThreadContext();
+                if (threadContext != null) {
+                    return threadContext.getBeanContext()
+                            .getModuleContext().getModuleJndiContext()
+                            .lookup(name);
+                }
+            } catch (final Exception nnfe3) {
+                // ignore, let it be thrown
+            }
             throw nnfe;
         }
     }


[02/50] tomee git commit: adding AddContainerCdiBeansExtension in cdi-embedded to (fake) scan even in embedded mode container libs + adding ScanJarService which is a configurable observer to do the same (avoid to scan the whole container - even if done a

Posted by st...@apache.org.
adding AddContainerCdiBeansExtension in cdi-embedded to (fake) scan even in embedded mode container libs + adding ScanJarService which is a configurable observer to do the same (avoid to scan the whole container - even if done a single time - for a single jar) + wiring containerUrl scanning in ears


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/8d43e385
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/8d43e385
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/8d43e385

Branch: refs/heads/master
Commit: 8d43e3857dd73c3daa381f41b64adc300f0131b1
Parents: 15767f9
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed Mar 4 18:41:38 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Wed Mar 4 18:41:38 2015 +0100

----------------------------------------------------------------------
 .../org/apache/openejb/config/AppModule.java    |   5 +
 .../apache/openejb/config/DeploymentLoader.java |  63 ++++++-----
 .../apache/openejb/config/FinderFactory.java    |   4 +-
 .../openejb/config/service/ScanJarService.java  | 113 +++++++++++++++++++
 .../embedded/AddContainerCdiBeansExtension.java |  49 ++++++++
 .../META-INF/org.apache.openejb.extension       |   3 +-
 tck/cdi-embedded/src/test/resources/failing.xml |   2 +-
 tck/cdi-embedded/src/test/resources/passing.xml |  15 +++
 8 files changed, 223 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/8d43e385/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
index 7d71a80..ea7b841 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
@@ -52,6 +52,7 @@ public class AppModule implements DeploymentModule {
     private final Application application;
     private final ValidationContext validation;
     private final List<URL> additionalLibraries = new ArrayList<URL>();
+    private final List<URL> scannableContainerUrls = new ArrayList<URL>();
     private final List<ConnectorModule> connectorModules = new ArrayList<ConnectorModule>();
     private final List<WebModule> webModules = new ArrayList<WebModule>();
     private final List<ClientModule> clientModules = new ArrayList<ClientModule>();
@@ -79,6 +80,10 @@ public class AppModule implements DeploymentModule {
         this(classLoader, jarLocation, null, false);
     }
 
+    public List<URL> getScannableContainerUrls() {
+        return scannableContainerUrls;
+    }
+
     // shared between org.apache.openejb.config.AutoConfig.resolvePersistenceRefs() and org.apache.openejb.config.AppInfoBuilder.buildPersistenceModules()
     public String persistenceUnitId(final String rootUrl, final String name) {
         return name + " " + rootUrl.hashCode() + uniqueHostIfExists();

http://git-wip-us.apache.org/repos/asf/tomee/blob/8d43e385/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
index 87db01b..da0f0fe 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
@@ -954,34 +954,7 @@ public class DeploymentLoader implements DeploymentFilterable {
         // determine war class path
 
         final List<URL> webUrls = new ArrayList<>();
-        if (containerUrls == null) {
-            if ("true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.scan.webapp.container", "false"))) {
-                synchronized (this) {
-                    if (containerUrls == null) {
-                        try {
-                            UrlSet urlSet = new UrlSet(ParentClassLoaderFinder.Helper.get());
-                            urlSet = URLs.cullSystemJars(urlSet);
-                            urlSet = NewLoaderLogic.applyBuiltinExcludes(urlSet);
-                            containerUrls = urlSet.getUrls();
-
-                            final boolean skipContainerFolders = "true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.scan.webapp.container.skip-folder", "true"));
-                            final Iterator<URL> it = containerUrls.iterator();
-                            while (it.hasNext()) { // remove lib/
-                                final File file = URLs.toFile(it.next());
-                                // TODO: see if websocket should be added in default.exclusions
-                                if ((skipContainerFolders && file.isDirectory()) || file.getName().endsWith("tomcat-websocket.jar")) {
-                                    it.remove();
-                                }
-                            }
-                        } catch (final Exception e) {
-                            logger.error(e.getMessage(), e);
-                        }
-                    }
-                }
-            } else {
-                containerUrls = Collections.emptyList();
-            }
-        }
+        ensureContainerUrls();
         webUrls.addAll(containerUrls);
 
         // add these urls first to ensure we load classes from here first
@@ -1091,6 +1064,37 @@ public class DeploymentLoader implements DeploymentFilterable {
         return webModule;
     }
 
+    private void ensureContainerUrls() {
+        if (containerUrls == null) {
+            if ("true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.scan.webapp.container", "false"))) {
+                synchronized (this) {
+                    if (containerUrls == null) {
+                        try {
+                            UrlSet urlSet = new UrlSet(ParentClassLoaderFinder.Helper.get());
+                            urlSet = URLs.cullSystemJars(urlSet);
+                            urlSet = NewLoaderLogic.applyBuiltinExcludes(urlSet);
+                            containerUrls = urlSet.getUrls();
+
+                            final boolean skipContainerFolders = "true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.scan.webapp.container.skip-folder", "true"));
+                            final Iterator<URL> it = containerUrls.iterator();
+                            while (it.hasNext()) { // remove lib/
+                                final File file = URLs.toFile(it.next());
+                                // TODO: see if websocket should be added in default.exclusions
+                                if ((skipContainerFolders && file.isDirectory()) || file.getName().endsWith("tomcat-websocket.jar")) {
+                                    it.remove();
+                                }
+                            }
+                        } catch (final Exception e) {
+                            logger.error(e.getMessage(), e);
+                        }
+                    }
+                }
+            } else {
+                containerUrls = Collections.emptyList();
+            }
+        }
+    }
+
     public static List<URL> filterWebappUrls(final URL[] webUrls, final URL exclusions) {
         Filter excludeFilter = null;
         if (exclusions != null) {
@@ -1192,6 +1196,9 @@ public class DeploymentLoader implements DeploymentFilterable {
         }
         complete.removeDuplicates();
 
+        ensureContainerUrls();
+        appModule.getScannableContainerUrls().addAll(containerUrls);
+
         IAnnotationFinder finder;
         try {
             finder = FinderFactory.createFinder(appModule);

http://git-wip-us.apache.org/repos/asf/tomee/blob/8d43e385/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
index 152f3ab..54418e7 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
@@ -84,7 +84,9 @@ public class FinderFactory {
             finder = newFinder(new ConfigurableClasspathArchive(connectorModule, connectorModule.getLibraries()));
             finder = useFallbackFinderIfNeededOrLink(module, finder);
         } else if (module instanceof AppModule) {
-            final Collection<URL> urls = NewLoaderLogic.applyBuiltinExcludes(new UrlSet(AppModule.class.cast(module).getAdditionalLibraries())).getUrls();
+            final AppModule appModule = AppModule.class.cast(module);
+            final Collection<URL> urls = NewLoaderLogic.applyBuiltinExcludes(new UrlSet(appModule.getAdditionalLibraries())).getUrls();
+            urls.addAll(appModule.getScannableContainerUrls());
             finder = newFinder(new WebappAggregatedArchive(module.getClassLoader(), module.getAltDDs(), urls));
             finder = useFallbackFinderIfNeededOrLink(module, finder);
         } else if (module.getJarLocation() != null) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/8d43e385/container/openejb-core/src/main/java/org/apache/openejb/config/service/ScanJarService.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/service/ScanJarService.java b/container/openejb-core/src/main/java/org/apache/openejb/config/service/ScanJarService.java
new file mode 100644
index 0000000..06e16ad
--- /dev/null
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/service/ScanJarService.java
@@ -0,0 +1,113 @@
+/*
+ * 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.config.service;
+
+import org.apache.openejb.cdi.CompositeBeans;
+import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.config.FinderFactory;
+import org.apache.openejb.config.ReadDescriptors;
+import org.apache.openejb.config.event.BeforeAppInfoBuilderEvent;
+import org.apache.openejb.core.ParentClassLoaderFinder;
+import org.apache.openejb.jee.Beans;
+import org.apache.openejb.observer.Observes;
+import org.apache.openejb.util.URLs;
+import org.apache.xbean.finder.archive.FileArchive;
+import org.apache.xbean.finder.archive.JarArchive;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Designed to easily add a container jar in scanning.
+ *
+ * Definition can look like:
+ *
+ * 1. scanner = new://Service?class-name=org.apache.openejb.config.service.ScanJarService
+ * 2. scanner.url = cdi-lib/foo.jar
+ * 
+ */
+public class ScanJarService {
+    private URL url;
+    private final List<String> beans = new ArrayList<>();
+    private Beans beansModel;
+
+    public void addScanningResult(@Observes final BeforeAppInfoBuilderEvent event) {
+        for (final EjbModule ejbModule : event.getAppModule().getEjbModules()) {
+            if (ejbModule.getModuleId().startsWith("ear-scoped-cdi-beans")) {
+                final Beans beans = ejbModule.getBeans();
+                if (CompositeBeans.class.isInstance(beans)) {
+                    final CompositeBeans cb = CompositeBeans.class.cast(beans);
+                    cb.getManagedClasses().put(url, new ArrayList<>(this.beans));
+
+                    if (beansModel != null) {
+                        if (beansModel.getAlternativeClasses() != null) {
+                            cb.getAlternativesByUrl().put(url, beansModel.getAlternativeClasses());
+                        }
+                        if (beansModel.getAlternativeStereotypes() != null) {
+                            cb.getAlternativeStereotypesByUrl().put(url, beansModel.getAlternativeStereotypes());
+                        }
+                        if (beansModel.getInterceptors() != null) {
+                            cb.getInterceptorsByUrl().put(url, beansModel.getInterceptors());
+                        }
+                        if (beansModel.getDecorators() != null) {
+                            cb.getDecoratorsByUrl().put(url, beansModel.getDecorators());
+                        }
+                    }
+                }
+                return;
+            }
+        }
+    }
+
+    public void setUrl(final String url) throws Exception {
+        final File f = new File(url);
+        if (f.exists()) {
+            this.url = f.toURI().toURL();
+        } else {
+            this.url = new URL(url);
+        }
+
+        final File file = URLs.toFile(this.url);
+        final ClassLoader loader = ParentClassLoaderFinder.Helper.get();
+        beans.addAll(
+                new FinderFactory.OpenEJBAnnotationFinder(
+                        file.isDirectory() ? new FileArchive(loader, file) : new JarArchive(loader, this.url))
+                        .getAnnotatedClassNames());
+
+        if (file.isDirectory()) {
+            final File beansXml = new File(file, "META-INF/beans.xml");
+            if (beansXml.exists()) {
+                final FileInputStream inputStream = new FileInputStream(beansXml);
+                beansModel = ReadDescriptors.readBeans(inputStream);
+                inputStream.close();
+            }
+        } else {
+            final URLClassLoader cl = new URLClassLoader(new URL[] { this.url });
+            final InputStream is = cl.getResourceAsStream("META-INF/beans.xml");
+            if (is != null) {
+                beansModel = ReadDescriptors.readBeans(is);
+                is.close();
+            }
+            cl.close();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/8d43e385/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/AddContainerCdiBeansExtension.java
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/AddContainerCdiBeansExtension.java b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/AddContainerCdiBeansExtension.java
new file mode 100644
index 0000000..49e4053
--- /dev/null
+++ b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/AddContainerCdiBeansExtension.java
@@ -0,0 +1,49 @@
+/*
+ * 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.tck.cdi.embedded;
+
+import org.apache.openejb.cdi.CompositeBeans;
+import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.config.event.BeforeAppInfoBuilderEvent;
+import org.apache.openejb.jee.Beans;
+import org.apache.openejb.observer.Observes;
+import org.jboss.cdi.tck.extlib.Strict;
+import org.jboss.cdi.tck.extlib.Translator;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import static java.util.Arrays.asList;
+
+public class AddContainerCdiBeansExtension {
+    private static final URL EXT_LIB = AddContainerCdiBeansExtension.class.getClassLoader().getResource(Translator.class.getName().replace(".", "/") + ".class");
+    private static final List<String> BEANS = new ArrayList<>(asList(Strict.class.getName(), Translator.class.getName()));
+
+    public void addCdiExtLib(@Observes final BeforeAppInfoBuilderEvent event) {
+        for (final EjbModule ejbModule : event.getAppModule().getEjbModules()) {
+            if (ejbModule.getModuleId().startsWith("ear-scoped-cdi-beans")) {
+                final Beans beans = ejbModule.getBeans();
+                if (CompositeBeans.class.isInstance(beans)) {
+                    final CompositeBeans cb = CompositeBeans.class.cast(beans);
+                    cb.getManagedClasses().put(EXT_LIB, new ArrayList<>(BEANS));
+                }
+                return;
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/8d43e385/tck/cdi-embedded/src/test/resources/META-INF/org.apache.openejb.extension
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/META-INF/org.apache.openejb.extension b/tck/cdi-embedded/src/test/resources/META-INF/org.apache.openejb.extension
index ff66987..a2d0db5 100644
--- a/tck/cdi-embedded/src/test/resources/META-INF/org.apache.openejb.extension
+++ b/tck/cdi-embedded/src/test/resources/META-INF/org.apache.openejb.extension
@@ -1 +1,2 @@
-org.apache.openejb.tck.cdi.embedded.TckTlds$Observer
\ No newline at end of file
+org.apache.openejb.tck.cdi.embedded.TckTlds$Observer
+org.apache.openejb.tck.cdi.embedded.AddContainerCdiBeansExtension

http://git-wip-us.apache.org/repos/asf/tomee/blob/8d43e385/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index 613b81e..550c902 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
     -Dopenejb.embedded.try-jsp=true
     -->
     <classes>
-      <class name="org.jboss.cdi.tck.tests.context.conversation.servlet.ServletConversationTest" />
+      <class name="org.jboss.cdi.tck.tests.deployment.packaging.installedLibrary.InstalledLibraryEarTest" />
     </classes>
   </test>
 </suite>

http://git-wip-us.apache.org/repos/asf/tomee/blob/8d43e385/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index 2aa532b..722e529 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -219,6 +219,21 @@
         </methods>
       </class>
 
+      <!-- ears so not in web profile, Note: can be switch on if passing but dont let them block the build -->
+      <class name="org.jboss.cdi.tck.tests.lookup.dependency.resolution.broken.ambiguous.ear.MultiModuleSessionBeanAmbiguousDependencyTest"><methods><exclude name=".*" /></methods></class>
+      <class name="org.jboss.cdi.tck.tests.lookup.modules.interceptors.InterceptorModularityTest"><methods><exclude name=".*" /></methods></class>
+      <class name="org.jboss.cdi.tck.tests.lookup.modules.specialization.SpecializationModularity03Test"><methods><exclude name=".*" /></methods></class>
+      <class name="org.jboss.cdi.tck.tests.lookup.modules.specialization.SpecializationModularity05Test"><methods><exclude name=".*" /></methods></class>
+      <class name="org.jboss.cdi.tck.tests.lookup.modules.specialization.SpecializationModularity06Test"><methods><exclude name=".*" /></methods></class>
+      <class name="org.jboss.cdi.tck.tests.lookup.modules.specialization.SpecializationModularity07Test"><methods><exclude name=".*" /></methods></class>
+      <class name="org.jboss.cdi.tck.tests.lookup.modules.SpecializedBeanInjectionNotAvailableTest"><methods><exclude name=".*" /></methods></class>
+      <class name="org.jboss.cdi.tck.tests.deployment.packaging.installedLibrary.InstalledLibraryEarTest"><methods><exclude name=".*" /></methods></class>
+      <class name="org.jboss.cdi.tck.tests.decorators.ordering.global.EnterpriseDecoratorOrderingTest"><methods><exclude name=".*" /></methods></class>
+      <class name="org.jboss.cdi.tck.tests.interceptors.ordering.global.EnterpriseInterceptorOrderingTest"><methods><exclude name=".*" /></methods></class>
+      <class name="org.jboss.cdi.tck.tests.context.application.event.ApplicationScopeEventMultiWarTest"><methods><exclude name=".*" /></methods></class>
+      <class name="org.jboss.cdi.tck.tests.deployment.packaging.ear.modules.EnterpriseArchiveModulesTest"><methods><exclude name=".*" /></methods></class>
+      <class name="org.jboss.cdi.tck.tests.context.passivating.dependency.resource.remote.ResourcePassivationDependencyTest"><methods><exclude name=".*" /></methods></class>
+
       <!-- not supported by embedded adapter -->
       <class name="org.jboss.cdi.tck.tests.lookup.injection.non.contextual.InjectionIntoNonContextualComponentTest">
         <methods>


[07/50] tomee git commit: taking into account CDI @PostConstruct/@PreDestroy interceptors (only) for EJB + fixing ordering of interceptors for CDI-EJB

Posted by st...@apache.org.
taking into account CDI @PostConstruct/@PreDestroy interceptors (only) for EJB + fixing ordering of interceptors for CDI-EJB


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/788b74f0
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/788b74f0
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/788b74f0

Branch: refs/heads/master
Commit: 788b74f0aadc279429d7ad3f9ce962b5004f1067
Parents: a1ec5e3
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed Mar 4 23:00:46 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Wed Mar 4 23:00:46 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/openejb/BeanContext.java    | 105 ++++++++-----------
 tck/cdi-embedded/src/test/resources/failing.xml |   2 +-
 2 files changed, 47 insertions(+), 60 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/788b74f0/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java b/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
index beba15d..c2f70ff 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
@@ -124,7 +124,22 @@ public class BeanContext extends DeploymentContext {
             return;
         }
 
-        boolean hasInterceptor = false;
+        final Collection<Interceptor<?>> postConstructInterceptors = Collection.class.cast(Reflections.get(injectionTarget, "postConstructInterceptors"));
+        final Collection<Interceptor<?>> preDestroyInterceptors = Collection.class.cast(Reflections.get(injectionTarget, "preDestroyInterceptors"));
+        for (final Interceptor<?> pc : postConstructInterceptors) {
+            final InterceptorData interceptorData = createInterceptorData(pc);
+            instanceScopedInterceptors.add(interceptorData);
+            cdiInterceptors.add(interceptorData);
+        }
+        for (final Interceptor<?> pd : preDestroyInterceptors) {
+            if (postConstructInterceptors.contains(pd)) {
+                continue;
+            }
+            final InterceptorData interceptorData = createInterceptorData(pd);
+            instanceScopedInterceptors.add(interceptorData);
+            cdiInterceptors.add(interceptorData);
+        }
+
         for (final Map.Entry<Method, InterceptorResolutionService.BusinessMethodInterceptorInfo> entry : info.getBusinessMethodsInfo().entrySet()) {
             final Interceptor<?>[] interceptors = entry.getValue().getCdiInterceptors();
             if (interceptors == null) {
@@ -132,65 +147,19 @@ public class BeanContext extends DeploymentContext {
             }
 
             for (final Interceptor<?> i : interceptors) {
-                final InterceptorData data;
-                if (CdiInterceptorBean.class.isInstance(i)) {
-                    final CdiInterceptorBean cdiInterceptorBean = CdiInterceptorBean.class.cast(i);
-
-                    data = new InterceptorData(i.getBeanClass());
-                    data.getAroundInvoke().addAll(getInterceptionMethodAsListOrEmpty(cdiInterceptorBean, InterceptionType.AROUND_INVOKE));
-                    data.getPostConstruct().addAll(getInterceptionMethodAsListOrEmpty(cdiInterceptorBean, InterceptionType.POST_CONSTRUCT));
-                    data.getPreDestroy().addAll(getInterceptionMethodAsListOrEmpty(cdiInterceptorBean, InterceptionType.PRE_DESTROY));
-                    data.getPostActivate().addAll(getInterceptionMethodAsListOrEmpty(cdiInterceptorBean, InterceptionType.POST_ACTIVATE));
-                    data.getPrePassivate().addAll(getInterceptionMethodAsListOrEmpty(cdiInterceptorBean, InterceptionType.PRE_PASSIVATE));
-                    data.getAroundTimeout().addAll(getInterceptionMethodAsListOrEmpty(cdiInterceptorBean, InterceptionType.AROUND_TIMEOUT));
-                    /*
-                    AfterBegin, BeforeCompletion and AfterCompletion are ignored since not handled by CDI
-                     */
-                } else { // TODO: here we are not as good as in previous if since we loose inheritance etc
-                    data = InterceptorData.scan(i.getBeanClass());
+                // already at class level, since we merge "hooks" in InterceptorData no need to add it again
+                if (postConstructInterceptors.contains(i) || preDestroyInterceptors.contains(i)) {
+                    continue;
                 }
+                final InterceptorData data = createInterceptorData(i);
                 addCdiMethodInterceptor(entry.getKey(), data);
             }
-            hasInterceptor = hasInterceptor || interceptors.length > 0;
             entry.getValue().setEjbInterceptors(new ArrayList<Interceptor<?>>());
             entry.getValue().setCdiInterceptors(new ArrayList<Interceptor<?>>());
         }
 
-        /* Was a TCK bug :)
-        if (hasInterceptor) { // 100% for TCKs, doesn't make any sense
-            for (final Method m : getManagedClass().getDeclaredMethods()) {
-                boolean inApi = false;
-                final Set<Type> types = cdiEjbBean.getTypes();
-                for (final Type t : types) {
-                    if (t == Object.class || t == Serializable.class) {
-                        continue;
-                    }
-                    if (m.getDeclaringClass() == t) {
-                        inApi = true;
-                        break;
-                    }
-                    if (Class.class.isInstance(t)) {
-                        try {
-                            Class.class.cast(t).getMethod(m.getName(), m.getParameterTypes());
-                            inApi = true;
-                            break;
-                        } catch (final NoSuchMethodException e) {
-                            // no-op
-                        }
-                    }
-                }
-                if (inApi) {
-                    continue;
-                }
-                final int modifiers = m.getModifiers();
-                if (Modifier.isFinal(modifiers) && !Modifier.isStatic(modifiers) && Modifier.isPublic(modifiers)) {
-                    throw new DeploymentException("We need to proxy " + getManagedClass() + " but " + m + " is final");
-                }
-            }
-        }
-        */
-
-        if (info.getSelfInterceptorBean() != null) { // handled by openejb
+        // handled by OpenEJB now so clean up all duplication from OWB
+        if (info.getSelfInterceptorBean() != null) {
             try {
                 final Field field = InterceptorResolutionService.BeanInterceptorInfo.class.getDeclaredField("selfInterceptorBean");
                 field.setAccessible(true);
@@ -199,18 +168,36 @@ public class BeanContext extends DeploymentContext {
                 // no-op
             }
         }
-
-        // handled by OpenEJB so clean up from OWB
         Map.class.cast(Reflections.get(injectionTarget, "methodInterceptors")).clear();
-        clear(Collection.class.cast(Reflections.get(injectionTarget, "postConstructInterceptors")));
+        clear(Collection.class.cast(postConstructInterceptors));
+        clear(Collection.class.cast(preDestroyInterceptors));
         clear(Collection.class.cast(Reflections.get(injectionTarget, "postConstructMethods")));
-        clear(Collection.class.cast(Reflections.get(injectionTarget, "preDestroyInterceptors")));
         clear(Collection.class.cast(Reflections.get(injectionTarget, "preDestroyMethods")));
-
         clear(Collection.class.cast(Reflections.get(info, "ejbInterceptors")));
         clear(Collection.class.cast(Reflections.get(info, "cdiInterceptors")));
     }
 
+    private InterceptorData createInterceptorData(final Interceptor<?> i) {
+        final InterceptorData data;
+        if (CdiInterceptorBean.class.isInstance(i)) {
+            final CdiInterceptorBean cdiInterceptorBean = CdiInterceptorBean.class.cast(i);
+
+            data = new InterceptorData(i.getBeanClass());
+            data.getAroundInvoke().addAll(getInterceptionMethodAsListOrEmpty(cdiInterceptorBean, InterceptionType.AROUND_INVOKE));
+            data.getPostConstruct().addAll(getInterceptionMethodAsListOrEmpty(cdiInterceptorBean, InterceptionType.POST_CONSTRUCT));
+            data.getPreDestroy().addAll(getInterceptionMethodAsListOrEmpty(cdiInterceptorBean, InterceptionType.PRE_DESTROY));
+            data.getPostActivate().addAll(getInterceptionMethodAsListOrEmpty(cdiInterceptorBean, InterceptionType.POST_ACTIVATE));
+            data.getPrePassivate().addAll(getInterceptionMethodAsListOrEmpty(cdiInterceptorBean, InterceptionType.PRE_PASSIVATE));
+            data.getAroundTimeout().addAll(getInterceptionMethodAsListOrEmpty(cdiInterceptorBean, InterceptionType.AROUND_TIMEOUT));
+            /*
+            AfterBegin, BeforeCompletion and AfterCompletion are ignored since not handled by CDI
+             */
+        } else { // TODO: here we are not as good as in previous since we loose inheritance for instance
+            data = InterceptorData.scan(i.getBeanClass());
+        }
+        return data;
+    }
+
     private List<Method> getInterceptionMethodAsListOrEmpty(final CdiInterceptorBean cdiInterceptorBean, final InterceptionType aroundInvoke) {
         final Method[] methods = cdiInterceptorBean.getInterceptorMethods(aroundInvoke);
         return methods == null ? Collections.<Method>emptyList() : asList(methods);
@@ -1116,8 +1103,8 @@ public class BeanContext extends DeploymentContext {
 
     public List<InterceptorData> getCallbackInterceptors() {
         final List<InterceptorData> datas = getInterceptorData();
-        datas.addAll(callbackInterceptors);
         datas.addAll(cdiInterceptors);
+        datas.addAll(callbackInterceptors);
         return datas;
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/788b74f0/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index 09755fc..01cc8b3 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
     -Dopenejb.embedded.try-jsp=true
     -->
     <classes>
-      <class name="org.jboss.cdi.tck.tests.definition.bean.types.enterprise.SessionBeanTypesTest" />
+      <class name="org.jboss.cdi.tck.interceptors.tests.contract.lifecycleCallback.bindings.ejb.SessionBeanLifecycleInterceptorDefinitionTest" />
     </classes>
   </test>
 </suite>


[23/50] tomee git commit: using getCanonicalFile when we can

Posted by st...@apache.org.
using getCanonicalFile when we can


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/700dc59a
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/700dc59a
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/700dc59a

Branch: refs/heads/master
Commit: 700dc59ade9a42a8333af36c3a6aa5f21869596b
Parents: bdce294
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Thu Mar 5 19:32:34 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Thu Mar 5 19:32:34 2015 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/tomee/catalina/Contexts.java  | 13 +++++++++++--
 .../org/apache/tomee/catalina/TomcatWebAppBuilder.java | 13 +++++++++++--
 2 files changed, 22 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/700dc59a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java
index bd5c13a..2ca6ac6 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java
@@ -26,6 +26,7 @@ import org.apache.catalina.core.StandardHost;
 import org.apache.catalina.util.ContextName;
 
 import java.io.File;
+import java.io.IOException;
 
 public class Contexts {
     public static String getHostname(final StandardContext ctx) {
@@ -50,10 +51,18 @@ public class Contexts {
         if (!file.isDirectory() && name.endsWith(".war")) {
             final File extracted = new File(file.getParentFile(), name.substring(0, name.length() - ".war".length()));
             if (extracted.exists()) {
-                return extracted;
+                try {
+                    return extracted.getCanonicalFile();
+                } catch (final IOException e) {
+                    return extracted;
+                }
             }
         }
-        return file;
+        try {
+            return file.getCanonicalFile();
+        } catch (final IOException e) {
+            return file;
+        }
     }
 
     public static File realWarPath(final Context standardContext) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/700dc59a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
index 0bfe3c2..82beba6 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
@@ -1367,9 +1367,18 @@ public class TomcatWebAppBuilder implements WebAppBuilder, ContextListener, Pare
 
     private static File rootPath(final File file) {
         if (file.isDirectory() && file.getName().equals("classes") && file.getParentFile() != null && file.getParentFile().getName().equals("WEB-INF")) {
-            return file.getParentFile().getParentFile();
+            final File parentFile = file.getParentFile().getParentFile();
+            try {
+                return parentFile.getCanonicalFile();
+            } catch (final IOException e) {
+                return parentFile;
+            }
+        }
+        try {
+            return file.getCanonicalFile();
+        } catch (final IOException e) {
+            return file;
         }
-        return file;
     }
 
     private static void deployWebServicesIfEjbCreatedHere(final AppInfo info, final Collection<BeanContext> beanContexts) {


[37/50] tomee git commit: fixing CleanUpAssembler in case of multiple apps + handling @AroundTimeout for cdi interceptors

Posted by st...@apache.org.
fixing CleanUpAssembler in case of multiple apps + handling @AroundTimeout for cdi interceptors


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/3e40a2fe
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/3e40a2fe
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/3e40a2fe

Branch: refs/heads/master
Commit: 3e40a2fee8139d5c4234cc4c1150ba946d61c34a
Parents: 37b5756
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 6 18:09:26 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 6 18:09:26 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/openejb/BeanContext.java    | 28 ++++++++++++++++++++
 .../tck/cdi/embedded/CleanUpAssembler.java      |  6 ++++-
 tck/cdi-embedded/src/test/resources/failing.xml |  6 +----
 3 files changed, 34 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/3e40a2fe/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java b/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
index d21b20f..1535f5e 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
@@ -44,6 +44,7 @@ import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.proxy.DynamicProxyImplFactory;
 import org.apache.openejb.util.proxy.LocalBeanProxyFactory;
 import org.apache.openejb.util.reflection.Reflections;
+import org.apache.webbeans.annotation.AnnotationManager;
 import org.apache.webbeans.component.CdiInterceptorBean;
 import org.apache.webbeans.component.InjectionTargetBean;
 import org.apache.webbeans.config.WebBeansContext;
@@ -53,6 +54,7 @@ import org.apache.webbeans.intercept.DecoratorHandler;
 import org.apache.webbeans.intercept.InterceptorResolutionService;
 import org.apache.webbeans.portable.InjectionTargetImpl;
 import org.apache.webbeans.proxy.InterceptorDecoratorProxyFactory;
+import org.apache.webbeans.util.AnnotationUtil;
 import org.apache.xbean.recipe.ConstructionException;
 
 import javax.ejb.ApplicationException;
@@ -70,6 +72,8 @@ import javax.ejb.TimedObject;
 import javax.ejb.Timer;
 import javax.enterprise.context.ConversationScoped;
 import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.Decorator;
 import javax.enterprise.inject.spi.InterceptionType;
 import javax.enterprise.inject.spi.Interceptor;
@@ -187,6 +191,30 @@ public class BeanContext extends DeploymentContext {
         clear(Collection.class.cast(Reflections.get(injectionTarget, "preDestroyMethods")));
         clear(Collection.class.cast(Reflections.get(info, "ejbInterceptors")));
         clear(Collection.class.cast(Reflections.get(info, "cdiInterceptors")));
+
+        // OWB doesn't compute AROUND_INVOKE so let's do it
+        final Method timeout = getEjbTimeout();
+        if (timeout != null) {
+            final AnnotatedType annotatedType = cdiEjbBean.getAnnotatedType();
+            final AnnotationManager annotationManager = getWebBeansContext().getAnnotationManager();
+            final Collection<Annotation> annotations = new HashSet<>();
+            annotations.addAll(annotationManager.getInterceptorAnnotations(annotatedType.getAnnotations()));
+            final Set<AnnotatedMethod<?>> methods = annotatedType.getMethods();
+            for (final AnnotatedMethod<?> m : methods) {
+                if (timeout.equals(m.getJavaMember())) {
+                    annotations.addAll(annotationManager.getInterceptorAnnotations(m.getAnnotations()));
+                    break;
+                }
+            }
+            for (final Interceptor<?> timeoutInterceptor : getWebBeansContext().getBeanManagerImpl()
+                    .resolveInterceptors(InterceptionType.AROUND_TIMEOUT, AnnotationUtil.asArray(annotations))) {
+                if (isEjbInterceptor(timeoutInterceptor)) {
+                    continue;
+                }
+                final InterceptorData data = createInterceptorData(timeoutInterceptor);
+                addCdiMethodInterceptor(timeout, data);
+            }
+        }
     }
 
     private boolean isEjbInterceptor(final Interceptor<?> pc) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/3e40a2fe/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
index 1db29af..c31bd36 100644
--- a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
+++ b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
@@ -19,12 +19,16 @@ package org.apache.openejb.tck.cdi.embedded;
 import org.apache.openejb.UndeployException;
 import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
 import org.jboss.cdi.tck.util.ActionSequence;
 
 public class CleanUpAssembler extends Assembler {
     @Override
     public void destroyApplication(final AppInfo appInfo) throws UndeployException {
         super.destroyApplication(appInfo);
-        ActionSequence.reset();
+        if (SystemInstance.get().getComponent(ContainerSystem.class).getAppContexts().isEmpty()) {
+            ActionSequence.reset();
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/3e40a2fe/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index 4d6b027..29c6d9b 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,11 +31,7 @@
     -Dopenejb.embedded.try-jsp=true
     -->
     <classes>
-      <!--
-      org.jboss.cdi.tck.interceptors.tests.contract.aroundTimeout.bindings.AroundTimeoutOrderInterceptorTest
-      org.jboss.cdi.tck.tests.extensions.lifecycle.processInjectionTarget.ContainerEventTest
-      -->
-      <class name="org.jboss.cdi.tck.tests.deployment.discovery.BeanDiscoveryTest" />
+      <class name="org.jboss.cdi.tck.interceptors.tests.contract.aroundTimeout.bindings.AroundTimeoutOrderInterceptorTest" />
     </classes>
   </test>
 </suite>


[16/50] tomee git commit: add a switch to disable multicast tests

Posted by st...@apache.org.
add a switch to disable multicast tests

This is intended building in environments where multicast is not allowed.
In that case just build with. $> mvn clean install -DskipMulticastTests=true


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/b9623bd9
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/b9623bd9
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/b9623bd9

Branch: refs/heads/master
Commit: b9623bd982fdcd4f133680d4b3121e696b1c6627
Parents: 8fa8097
Author: Mark Struberg <st...@apache.org>
Authored: Thu Mar 5 09:14:03 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Thu Mar 5 11:53:04 2015 +0100

----------------------------------------------------------------------
 .../server/discovery/MulticastPulseAgentTest.java    |  9 +++++++++
 .../discovery/MultipointDiscoveryAgentTest.java      | 15 ---------------
 2 files changed, 9 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/b9623bd9/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java b/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java
index a9d3aa4..223a768 100644
--- a/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java
+++ b/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MulticastPulseAgentTest.java
@@ -48,6 +48,7 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.locks.ReentrantLock;
+import java.util.logging.Logger;
 
 @SuppressWarnings("UseOfSystemOutOrSystemErr")
 public class MulticastPulseAgentTest {
@@ -96,6 +97,10 @@ public class MulticastPulseAgentTest {
      */
     @Test
     public void test() throws Exception {
+        if ("true".equals(System.getProperty("skipMulticastTests"))) {
+            Logger.getLogger(this.getClass().getName()).warning("Skipping MulticastTest " + this.getClass().getName());
+            return;
+        }
 
         final InetAddress ia;
 
@@ -393,6 +398,10 @@ public class MulticastPulseAgentTest {
 
     @Test
     public void testBroadcastBadUri() throws Exception {
+        if ("true".equals(System.getProperty("skipMulticastTests"))) {
+            Logger.getLogger(this.getClass().getName()).warning("Skipping MulticastTest " + this.getClass().getName());
+            return;
+        }
 
         final DiscoveryListener original = agent.getDiscoveryListener();
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/b9623bd9/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgentTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgentTest.java b/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgentTest.java
index d711b7b..54b4b98 100644
--- a/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgentTest.java
+++ b/server/openejb-multicast/src/test/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgentTest.java
@@ -48,23 +48,8 @@ import java.util.logging.Logger;
  */
 public class MultipointDiscoveryAgentTest extends TestCase {
 
-//    static {
-//        final FilteredHandler consoleHandler = new FilteredHandler(new ConsoleHandler(), new LogRecordFilter() {
-//            @Override
-//            public boolean accept(LogRecord record) {
-//                return Thread.currentThread().getName().contains("red");
-//            }
-//        });
-//        consoleHandler.setLevel(Level.FINEST);
-//
-//        final Logger logger = Logger.getLogger("OpenEJB.server.discovery");
-//        logger.addHandler(consoleHandler);
-//        logger.setLevel(Level.FINEST);
-//        logger.setUseParentHandlers(false);
-//    }
 
     public void test() throws Exception {
-//        System.setProperty("logging.level.OpenEJB.server.discovery", "debug");
 
         final URI testService = new URI("green://localhost:0");
 


[33/50] tomee git commit: test for ScanJarService

Posted by st...@apache.org.
test for ScanJarService


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/bdd4b263
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/bdd4b263
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/bdd4b263

Branch: refs/heads/master
Commit: bdd4b26311b0c01fc7e300d13d441c9d6626e7de
Parents: 51e9d77
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 6 15:51:24 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 6 15:51:38 2015 +0100

----------------------------------------------------------------------
 .../openejb/service/ScanJarServiceTest.java     | 56 ++++++++++++++++++++
 1 file changed, 56 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/bdd4b263/container/openejb-core/src/test/java/org/apache/openejb/service/ScanJarServiceTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/service/ScanJarServiceTest.java b/container/openejb-core/src/test/java/org/apache/openejb/service/ScanJarServiceTest.java
new file mode 100644
index 0000000..e8dd756
--- /dev/null
+++ b/container/openejb-core/src/test/java/org/apache/openejb/service/ScanJarServiceTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.service;
+
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.Configuration;
+import org.apache.openejb.testing.SimpleLog;
+import org.apache.openejb.testng.PropertiesBuilder;
+import org.apache.openejb.util.Archives;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Properties;
+import javax.inject.Inject;
+
+import static org.junit.Assert.assertNotNull;
+
+@SimpleLog
+@Classes(cdi = true)
+@RunWith(ApplicationComposer.class)
+public class ScanJarServiceTest {
+    @Configuration
+    public Properties config() throws IOException {
+        return new PropertiesBuilder()
+                .p("scanner", "new://Service?class-name=" + ScanJarService.class.getName())
+                .p("scanner.path", Archives.jarArchive(Collections.<String, Object>emptyMap(), "ScanJarServiceTest", MyBean.class).getAbsolutePath())
+                .build();
+    }
+
+    @Inject
+    private MyBean bean;
+
+    @Test
+    public void run() {
+        assertNotNull(bean);
+    }
+
+    public static class MyBean {}
+}


[18/50] tomee git commit: add more build instructions regarding quick build

Posted by st...@apache.org.
add more build instructions regarding quick build


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/408a6866
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/408a6866
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/408a6866

Branch: refs/heads/master
Commit: 408a6866739e8a33c2ad0c30e9d57eb1ddd30ced
Parents: 07a6ccb
Author: Mark Struberg <st...@apache.org>
Authored: Thu Mar 5 11:57:01 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Thu Mar 5 11:57:01 2015 +0100

----------------------------------------------------------------------
 README.md | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/408a6866/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 8a4f61e..598d85b 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,28 @@
 Title: Buildling Instructions
 
+# Basic Usage
+
 Apache TomEE is built with Apache Maven.
 
 Simply use
+
 `$> mvn clean install`
+
 on your commandline to kick off the compile process of TomEE
 
 
 If you intend building in environments where multicast is not allowed
 then build with:
- `$> mvn clean install -DskipMulticastTests=true`
+
+`$> mvn clean install -DskipMulticastTests=true`
+
+ 
+# Quick Build
+ 
+If you only like to compile all classes and package up TomEE *without* running tests
+then you can use the following build options
+
+`mvn -Pquick -Dsurefire.useFile=false -DdisableXmlReport=true -DuniqueVersion=false -ff -Dassemble -DskipTests -DfailIfNoTests=false clean install`
+
+
  


[39/50] tomee git commit: exclude illegal TCK test

Posted by st...@apache.org.
exclude illegal TCK test

See CDI-312. The meaning of BDA is not clearly defined. Section 5 and 12
contradict each other. The EE6 RI (Glassfish3) and also JBoss6 did implement
it like we do (and yes, this is WAY more sane).


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/643ce4fd
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/643ce4fd
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/643ce4fd

Branch: refs/heads/master
Commit: 643ce4fd989d14a59ad03968f80439d409982f75
Parents: 927c3ca
Author: Mark Struberg <st...@apache.org>
Authored: Fri Mar 6 19:01:43 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Fri Mar 6 19:01:43 2015 +0100

----------------------------------------------------------------------
 tck/cdi-embedded/src/test/resources/passing.xml | 10 ++++++++++
 1 file changed, 10 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/643ce4fd/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index 89debb3..0131ed5 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -220,6 +220,16 @@
           </methods>
       </class>
 
+
+      <!-- CDI-312 ambiguous BDA definition (EE-module vs JAR) -->
+      <class name="org.jboss.cdi.tck.tests.interceptors.ordering.global.GlobalInterceptorOrderingTest">
+          <methods>
+              <exclude name=".*"/>
+          </methods>
+      </class>
+
+
+
       <!-- not in web profile and not supported by embedded adapter anyway -->
       <class name="org.jboss.cdi.tck.tests.deployment.packaging.rar.ResourceAdapterArchiveTest">
         <methods>


[05/50] tomee git commit: excluding a test we'd get issues to pass in embedded mode short term

Posted by st...@apache.org.
excluding a test we'd get issues to pass in embedded mode short term


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/073b05a6
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/073b05a6
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/073b05a6

Branch: refs/heads/master
Commit: 073b05a62fe62e5cfddf07c6759e94e1e7098d3c
Parents: 01a80f1
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed Mar 4 21:17:32 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Wed Mar 4 21:17:32 2015 +0100

----------------------------------------------------------------------
 tck/cdi-embedded/src/test/resources/failing.xml | 2 +-
 tck/cdi-embedded/src/test/resources/passing.xml | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/073b05a6/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index 613b81e..2e50751 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
     -Dopenejb.embedded.try-jsp=true
     -->
     <classes>
-      <class name="org.jboss.cdi.tck.tests.context.conversation.servlet.ServletConversationTest" />
+      <class name="org.jboss.cdi.tck.tests.context.conversation.filter.ConversationFilterTest" />
     </classes>
   </test>
 </suite>

http://git-wip-us.apache.org/repos/asf/tomee/blob/073b05a6/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index 722e529..74124ed 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -240,6 +240,11 @@
           <exclude name="testInjectionIntoTagHandler" />
         </methods>
       </class>
+      <class name="org.jboss.cdi.tck.tests.context.conversation.filter.ConversationFilterTest">
+        <methods>
+          <exclude name="testConversationActivation" />
+        </methods>
+      </class>
     </classes>
   </test>
 </suite>


[44/50] tomee git commit: exclude illegal TCK test

Posted by st...@apache.org.
exclude illegal TCK test

See CDI-312. The meaning of BDA is not clearly defined. Section 5 and 12
contradict each other. The EE6 RI (Glassfish3) and also JBoss6 did implement
it like we do (and yes, this is WAY more sane).

Having a static method look up the call-stack from where it gets called is also
just a silly random generator. This would be really beyond repair to implement
it the way this TCK test is written.


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/928a6867
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/928a6867
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/928a6867

Branch: refs/heads/master
Commit: 928a68671887ef07a63847f3906f54dbf49ab3e0
Parents: ce93a79
Author: Mark Struberg <st...@apache.org>
Authored: Sat Mar 7 12:39:32 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Sat Mar 7 12:39:32 2015 +0100

----------------------------------------------------------------------
 tck/cdi-embedded/src/test/resources/passing.xml | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/928a6867/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index ac1e330..045f345 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -247,6 +247,11 @@
               <exclude name=".*"/>
           </methods>
       </class>
+      <class name="org.jboss.cdi.tck.tests.lookup.manager.provider.runtime.CDIProviderRuntimeTest">
+          <methods>
+              <exclude name=".*"/>
+          </methods>
+      </class>
 
 
 


[34/50] tomee git commit: cleaning up SequenceData in assembler is surely more appropriated + fixing test to know if we have a request in CdiAppContextsService + quick enhancement for ScanJarService to support folder

Posted by st...@apache.org.
cleaning up SequenceData in assembler is surely more appropriated + fixing test to know if we have a request in CdiAppContextsService + quick enhancement for ScanJarService to support folder


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/51e9d77d
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/51e9d77d
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/51e9d77d

Branch: refs/heads/master
Commit: 51e9d77d2fa6a0be68de50be59e82a7d4ed6b99a
Parents: 536d1c5
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 6 15:51:11 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 6 15:51:38 2015 +0100

----------------------------------------------------------------------
 .../openejb/cdi/CdiAppContextsService.java      |   3 +-
 .../apache/openejb/service/ScanJarService.java  | 173 +++++++++++++------
 tck/cdi-embedded/pom.xml                        |   1 +
 .../tck/cdi/embedded/CleanUpAssembler.java      |  30 ++++
 .../tck/cdi/embedded/StandaloneTckCleaner.java  |  34 ----
 tck/cdi-embedded/src/test/resources/failing.xml |   2 +-
 tck/cdi-embedded/src/test/resources/passing.xml |   1 -
 7 files changed, 154 insertions(+), 90 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/51e9d77d/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
index d9067db..3e352a3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
@@ -539,7 +539,8 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
             final SessionContext context = sessionContext.get();
 
             if (context != null && context.isActive()) {
-                if (getRequestContext(false) == null) {
+                final ServletRequestContext servletRequestContext = getRequestContext(false);
+                if (servletRequestContext == null || servletRequestContext.getServletRequest() == null) {
                     doDestroySession(context, session);
                 } else {
                     pushRequestReleasable(new Runnable() { // call it at the end of the request

http://git-wip-us.apache.org/repos/asf/tomee/blob/51e9d77d/container/openejb-core/src/main/java/org/apache/openejb/service/ScanJarService.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/service/ScanJarService.java b/container/openejb-core/src/main/java/org/apache/openejb/service/ScanJarService.java
index cc09e5b..55bc62c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/service/ScanJarService.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/service/ScanJarService.java
@@ -20,20 +20,23 @@ import org.apache.openejb.cdi.CompositeBeans;
 import org.apache.openejb.config.EjbModule;
 import org.apache.openejb.config.FinderFactory;
 import org.apache.openejb.config.ReadDescriptors;
+import org.apache.openejb.config.WebModule;
 import org.apache.openejb.config.event.BeforeAppInfoBuilderEvent;
 import org.apache.openejb.core.ParentClassLoaderFinder;
 import org.apache.openejb.jee.Beans;
 import org.apache.openejb.observer.Observes;
-import org.apache.openejb.util.URLs;
 import org.apache.xbean.finder.archive.FileArchive;
 import org.apache.xbean.finder.archive.JarArchive;
 
 import java.io.File;
+import java.io.FileFilter;
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.net.URL;
 import java.net.URLClassLoader;
-import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
 import java.util.List;
 
 /**
@@ -42,72 +45,136 @@ import java.util.List;
  * Definition can look like:
  *
  * 1. scanner = new://Service?class-name=org.apache.openejb.service.ScanJarService
- * 2. scanner.url = cdi-lib/foo.jar
+ * 2. scanner.path = cdi-lib/foo.jar
  * 
+ * if url is a directory containing multiple libs just use scanner.directory = true 
  */
 public class ScanJarService {
-    private URL url;
-    private final List<String> beans = new ArrayList<>();
-    private Beans beansModel;
+    private File path;
+    private boolean directory;
 
-    public void addScanningResult(@Observes final BeforeAppInfoBuilderEvent event) {
-        for (final EjbModule ejbModule : event.getAppModule().getEjbModules()) {
+    private volatile CompositeBeans beans;
+
+    public void addScanningResult(@Observes final BeforeAppInfoBuilderEvent event) throws Exception {
+        for (final EjbModule ejbModule : event.getAppModule().getEjbModules()) { // ear
             if (ejbModule.getModuleId().startsWith("ear-scoped-cdi-beans")) {
-                final Beans beans = ejbModule.getBeans();
-                if (CompositeBeans.class.isInstance(beans)) {
-                    final CompositeBeans cb = CompositeBeans.class.cast(beans);
-                    cb.getManagedClasses().put(url, new ArrayList<>(this.beans));
-
-                    if (beansModel != null) {
-                        if (beansModel.getAlternativeClasses() != null) {
-                            cb.getAlternativesByUrl().put(url, beansModel.getAlternativeClasses());
-                        }
-                        if (beansModel.getAlternativeStereotypes() != null) {
-                            cb.getAlternativeStereotypesByUrl().put(url, beansModel.getAlternativeStereotypes());
-                        }
-                        if (beansModel.getInterceptors() != null) {
-                            cb.getInterceptorsByUrl().put(url, beansModel.getInterceptors());
-                        }
-                        if (beansModel.getDecorators() != null) {
-                            cb.getDecoratorsByUrl().put(url, beansModel.getDecorators());
-                        }
-                    }
-                }
+                doMerge(ejbModule);
                 return;
             }
         }
+        // else a war
+        for (final WebModule webModule : event.getAppModule().getWebModules()) {
+            for (final EjbModule ejbModule : event.getAppModule().getEjbModules()) {
+                if (ejbModule.getModuleId().equals(webModule.getModuleId())) {
+                    doMerge(ejbModule);
+                    return;
+                }
+            }
+        }
     }
 
-    public void setUrl(final String url) throws Exception {
-        final File f = new File(url);
-        if (f.exists()) {
-            this.url = f.toURI().toURL();
-        } else {
-            this.url = new URL(url);
+    private void doMerge(final EjbModule ejbModule) throws Exception {
+        final Beans beans = ejbModule.getBeans();
+        if (CompositeBeans.class.isInstance(beans)) {
+            final CompositeBeans cb = CompositeBeans.class.cast(beans);
+            ensureInit();
+            merge(cb);
+        } else if (beans != null) {
+            ensureInit();
+            for (final URL key : this.beans.getManagedClasses().keySet()) {
+                beans.getManagedClasses().putAll(this.beans.getManagedClasses());
+                addIfNotNull(beans.getInterceptors(), this.beans.getInterceptorsByUrl().get(key));
+                addIfNotNull(beans.getAlternativeClasses(), this.beans.getAlternativesByUrl().get(key));
+                addIfNotNull(beans.getAlternativeStereotypes(), this.beans.getAlternativeStereotypesByUrl().get(key));
+                addIfNotNull(beans.getDecorators(), this.beans.getDecoratorsByUrl().get(key));
+            }
+        }
+    }
+
+    private void addIfNotNull(final List<String> out, final Collection<String> in) {
+        if (in != null) {
+            out.addAll(in);
+        }
+    }
+
+    private void merge(final CompositeBeans cb) {
+        cb.getManagedClasses().putAll(this.beans.getManagedClasses());
+        cb.getNotManagedClasses().putAll(this.beans.getNotManagedClasses());
+        cb.getAlternativesByUrl().putAll(this.beans.getAlternativesByUrl());
+        cb.getAlternativeStereotypesByUrl().putAll(this.beans.getAlternativeStereotypesByUrl());
+        cb.getInterceptorsByUrl().putAll(this.beans.getInterceptorsByUrl());
+        cb.getDecoratorsByUrl().putAll(this.beans.getDecoratorsByUrl());
+    }
+
+    private void ensureInit() throws Exception {
+        if (beans != null) {
+            return;
         }
 
-        final File file = URLs.toFile(this.url);
-        final ClassLoader loader = ParentClassLoaderFinder.Helper.get();
-        beans.addAll(
-                new FinderFactory.OpenEJBAnnotationFinder(
-                        file.isDirectory() ? new FileArchive(loader, file) : new JarArchive(loader, this.url))
-                        .getAnnotatedClassNames());
-
-        if (file.isDirectory()) {
-            final File beansXml = new File(file, "META-INF/beans.xml");
-            if (beansXml.exists()) {
-                final FileInputStream inputStream = new FileInputStream(beansXml);
-                beansModel = ReadDescriptors.readBeans(inputStream);
-                inputStream.close();
+        synchronized (this) {
+            if (beans != null) {
+                return;
+            }
+
+            final ClassLoader loader = ParentClassLoaderFinder.Helper.get();
+            final CompositeBeans mergedModel = new CompositeBeans();
+            for (final File file : findFiles()) {
+                final URL url = file.toURI().toURL();
+                if (file.isDirectory()) {
+                    final FinderFactory.OpenEJBAnnotationFinder finder = new FinderFactory.OpenEJBAnnotationFinder(new FileArchive(loader, file));
+                    mergedModel.getManagedClasses().put(url, finder.getAnnotatedClassNames());
+
+                    final File beansXml = new File(file, "META-INF/beans.xml");
+                    if (beansXml.exists()) {
+                        final FileInputStream inputStream = new FileInputStream(beansXml);
+                        final Beans beansModel = ReadDescriptors.readBeans(inputStream);
+                        mergedModel.mergeClasses(url, beansModel);
+                        inputStream.close();
+                    }
+                } else {
+                    final FinderFactory.OpenEJBAnnotationFinder finder = new FinderFactory.OpenEJBAnnotationFinder(new JarArchive(loader, url));
+                    mergedModel.getManagedClasses().put(url, finder.getAnnotatedClassNames());
+
+                    try (final URLClassLoader cl = new URLClassLoader(new URL[]{ url })) {
+                        final InputStream is = cl.getResourceAsStream("META-INF/beans.xml");
+                        if (is != null) {
+                            final Beans beansModel = ReadDescriptors.readBeans(is);
+                            mergedModel.mergeClasses(url, beansModel);
+                            is.close();
+                        }
+                    }
+                }
             }
+
+            beans = mergedModel;
+        }
+    }
+
+    private Iterable<? extends File> findFiles() {
+        final Collection<File> files = new LinkedList<>();
+        if (!directory) {
+            files.add(path);
         } else {
-            final URLClassLoader cl = new URLClassLoader(new URL[] { this.url });
-            final InputStream is = cl.getResourceAsStream("META-INF/beans.xml");
-            if (is != null) {
-                beansModel = ReadDescriptors.readBeans(is);
-                is.close();
+            final File[] children = path.listFiles(new FileFilter() {
+                @Override
+                public boolean accept(final File pathname) {
+                    final String name = pathname.getName();
+                    return name.endsWith(".jar") || name.endsWith(".zip") || pathname.isDirectory();
+                }
+            });
+            if (children != null) {
+                Collections.addAll(files, children);
             }
-            cl.close();
         }
+        return files;
+    }
+
+    public void setPath(final String path) throws Exception {
+        this.path = new File(path).getCanonicalFile();
+        
+    }
+
+    public void setDirectory(final boolean directory) {
+        this.directory = directory;
     }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/51e9d77d/tck/cdi-embedded/pom.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/pom.xml b/tck/cdi-embedded/pom.xml
index e2c9e08..8ee76d9 100644
--- a/tck/cdi-embedded/pom.xml
+++ b/tck/cdi-embedded/pom.xml
@@ -203,6 +203,7 @@
             <openejb.cdi.producer.interception>false</openejb.cdi.producer.interception>
             <openejb.cdi.filter.classloader>false</openejb.cdi.filter.classloader>
 
+            <openejb.assembler>org.apache.openejb.tck.cdi.embedded.CleanUpAssembler</openejb.assembler>
             <openejb.jul.forceReload>true</openejb.jul.forceReload>
             <openejb.strict.interface.declaration>true</openejb.strict.interface.declaration>
             <openejb.http.mock-request>true</openejb.http.mock-request>

http://git-wip-us.apache.org/repos/asf/tomee/blob/51e9d77d/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
new file mode 100644
index 0000000..1db29af
--- /dev/null
+++ b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
@@ -0,0 +1,30 @@
+/*
+ * 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.tck.cdi.embedded;
+
+import org.apache.openejb.UndeployException;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.jboss.cdi.tck.util.ActionSequence;
+
+public class CleanUpAssembler extends Assembler {
+    @Override
+    public void destroyApplication(final AppInfo appInfo) throws UndeployException {
+        super.destroyApplication(appInfo);
+        ActionSequence.reset();
+    }
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/51e9d77d/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/StandaloneTckCleaner.java
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/StandaloneTckCleaner.java b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/StandaloneTckCleaner.java
deleted file mode 100644
index a9b42a8..0000000
--- a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/StandaloneTckCleaner.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.tck.cdi.embedded;
-
-import org.jboss.cdi.tck.util.ActionSequence;
-import org.testng.IInvokedMethod;
-import org.testng.IInvokedMethodListener;
-import org.testng.ITestResult;
-
-public class StandaloneTckCleaner implements IInvokedMethodListener {
-    @Override
-    public void beforeInvocation(final IInvokedMethod iInvokedMethod, final ITestResult iTestResult) {
-        // no-op
-    }
-
-    @Override
-    public void afterInvocation(final IInvokedMethod iInvokedMethod, final ITestResult iTestResult) {
-        ActionSequence.reset();
-    }
-}

http://git-wip-us.apache.org/repos/asf/tomee/blob/51e9d77d/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index 4d56571..fd8ed45 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -35,7 +35,7 @@
       org.jboss.cdi.tck.interceptors.tests.contract.aroundTimeout.bindings.AroundTimeoutOrderInterceptorTest
       org.jboss.cdi.tck.tests.extensions.lifecycle.processInjectionTarget.ContainerEventTest
       -->
-      <class name="org.jboss.cdi.tck.tests.context.session.listener.SessionContextHttpSessionListenerTest" />
+      <class name="org.jboss.cdi.tck.tests.context.request.event.remote.RequestScopeEventRemoteTest" />
     </classes>
   </test>
 </suite>

http://git-wip-us.apache.org/repos/asf/tomee/blob/51e9d77d/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index 4f29ed7..89debb3 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -48,7 +48,6 @@
     <listener class-name="org.testng.reporters.XMLReporter"/>
     <listener class-name="org.testng.reporters.EmailableReporter"/>
     <listener class-name="org.apache.openejb.tck.cdi.embedded.HTMLReporter"/>
-    <listener class-name="org.apache.openejb.tck.cdi.embedded.StandaloneTckCleaner"/>
   </listeners>
 
   <test name="JSR-346 TCK">


[22/50] tomee git commit: making OWB web plugin and conversation service splittable for session creation (one forces creation not the other)

Posted by st...@apache.org.
making OWB web plugin and conversation service splittable for session creation (one forces creation not the other)


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/bdce294a
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/bdce294a
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/bdce294a

Branch: refs/heads/master
Commit: bdce294a12c570dec052b5b90afdb2ae3851a1d8
Parents: 6c254f1
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Thu Mar 5 17:08:11 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Thu Mar 5 17:08:25 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/openejb/cdi/CdiAppContextsService.java     | 6 +++---
 .../src/main/java/org/apache/openejb/cdi/CdiPlugin.java        | 2 +-
 tck/cdi-embedded/src/test/resources/failing.xml                | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/bdce294a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
index 2d0598b..7e616cc 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
@@ -142,15 +142,15 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
 
     @Override
     public String getConversationSessionId() {
-        return currentSessionId();
+        return currentSessionId(false);
     }
 
-    public String currentSessionId() {
+    public String currentSessionId(final boolean force) {
         final ServletRequestContext rc = requestContext.get();
         if (rc != null) {
             final HttpServletRequest req = rc.getServletRequest();
             if (req != null) {
-                final HttpSession session = req.getSession(false);
+                final HttpSession session = req.getSession(force);
                 if (session != null) {
                     return session.getId();
                 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/bdce294a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
index 3c04eee..4344137 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
@@ -113,7 +113,7 @@ public class CdiPlugin extends AbstractOwbPlugin implements OpenWebBeansJavaEEPl
 
     @Override
     public String currentSessionId() {
-        return CdiAppContextsService.class.cast(webBeansContext.getService(ContextsService.class)).currentSessionId();
+        return CdiAppContextsService.class.cast(webBeansContext.getService(ContextsService.class)).currentSessionId(true);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tomee/blob/bdce294a/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index 6b86fa7..dd71410 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
     -Dopenejb.embedded.try-jsp=true
     -->
     <classes>
-      <class name="org.jboss.cdi.tck.tests.extensions.beanManager.unmanaged.UnmanagedInstanceTest" />
+      <class name="org.jboss.cdi.tck.tests.context.conversation.ClientConversationContextTest" />
     </classes>
   </test>
 </suite>


[30/50] tomee git commit: jndi:ext context injection in test

Posted by st...@apache.org.
jndi:ext context injection in test


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/6ffa2ca7
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/6ffa2ca7
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/6ffa2ca7

Branch: refs/heads/master
Commit: 6ffa2ca71d9af240b491f5bd1a203b339e984f38
Parents: 4b5a48b
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 6 09:36:31 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 6 09:36:31 2015 +0100

----------------------------------------------------------------------
 .../openejb/server/ejbd/Server2ServerEjbRefTest.java    | 12 ++++++++++++
 1 file changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/6ffa2ca7/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/Server2ServerEjbRefTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/Server2ServerEjbRefTest.java b/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/Server2ServerEjbRefTest.java
index 1f946be..a57fa3a 100644
--- a/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/Server2ServerEjbRefTest.java
+++ b/server/openejb-ejbd/src/test/java/org/apache/openejb/server/ejbd/Server2ServerEjbRefTest.java
@@ -32,10 +32,12 @@ import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.server.ServiceDaemon;
 import org.apache.openejb.server.ServicePool;
 
+import javax.annotation.Resource;
 import javax.ejb.EJB;
 import javax.ejb.Remote;
 import javax.naming.Context;
 import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import java.util.Properties;
 
 /**
@@ -127,10 +129,20 @@ public class Server2ServerEjbRefTest extends TestCase {
         @EJB(mappedName = "jndi:ext://orange/OrangeBeanRemote")
         private OrangeRemote orangeRemote;
 
+        @Resource(lookup = "openejb:remote_jndi_contexts/orange")
+        private Context ctx;
+
         @Override
         public void hasOrangeRemote() {
             Assert.assertNotNull("orangeRemote is null", orangeRemote);
             assertEquals("olleh", orangeRemote.echo("hello"));
+            try {
+                final OrangeRemote bean = OrangeRemote.class.cast(ctx.lookup("OrangeBeanRemoteWell "));
+                assertNotNull(bean);
+                assertEquals("olleh", bean.echo("hello"));
+            } catch (final NamingException e) {
+                fail(e.getMessage());
+            }
         }
     }
 


[14/50] tomee git commit: add termporary overlay folders to SCM ignore list

Posted by st...@apache.org.
add termporary overlay folders to SCM ignore list


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/07a6ccb9
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/07a6ccb9
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/07a6ccb9

Branch: refs/heads/master
Commit: 07a6ccb963de31508f5eb88d231db2e6598a88e2
Parents: d1cfde9
Author: Mark Struberg <st...@apache.org>
Authored: Thu Mar 5 10:50:34 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Thu Mar 5 11:53:04 2015 +0100

----------------------------------------------------------------------
 .gitignore | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/07a6ccb9/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 0e24d28..92dd6e3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,5 @@ target
 *.log
 *~
 quick.bat
+/tomee/tomee-plume-webapp/overlays/
+/tomee/tomee-plus-webapp/overlays/


[27/50] tomee git commit: fixing some event payload + lifecycle + few bugs in embedded http session handling

Posted by st...@apache.org.
fixing some event payload + lifecycle + few bugs in embedded http session handling


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/845fff2d
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/845fff2d
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/845fff2d

Branch: refs/heads/master
Commit: 845fff2dad4dc6e7a89951ccac22bc5e14a4448e
Parents: 10406df
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Thu Mar 5 22:23:43 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Thu Mar 5 22:23:43 2015 +0100

----------------------------------------------------------------------
 .../openejb/cdi/CdiAppContextsService.java      | 56 +++++++++++++++-----
 .../java/org/apache/openejb/cdi/CdiPlugin.java  |  5 --
 .../apache/openejb/cdi/OpenEJBLifecycle.java    |  5 +-
 .../server/httpd/EndWebBeansListener.java       |  8 +--
 .../openejb/server/httpd/HttpRequestImpl.java   | 41 ++++++++++----
 .../openejb/server/httpd/HttpSessionImpl.java   | 14 ++---
 tck/cdi-embedded/pom.xml                        |  1 +
 .../tck/cdi/embedded/StandaloneTckCleaner.java  | 34 ++++++++++++
 tck/cdi-embedded/src/test/resources/failing.xml |  8 ++-
 .../catalina/cdi/ServletContextHandler.java     | 22 +++++++-
 10 files changed, 150 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/845fff2d/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
index 7e616cc..d9067db 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
@@ -33,8 +33,10 @@ import org.apache.webbeans.context.SingletonContext;
 import org.apache.webbeans.conversation.ConversationImpl;
 import org.apache.webbeans.conversation.ConversationManager;
 import org.apache.webbeans.el.ELContextStore;
+import org.apache.webbeans.event.EventMetadataImpl;
 import org.apache.webbeans.spi.ContextsService;
 import org.apache.webbeans.spi.ConversationService;
+import org.apache.webbeans.util.AnnotationUtil;
 import org.apache.webbeans.web.context.ServletRequestContext;
 import org.apache.webbeans.web.intercept.RequestScopedBeanInterceptorHandler;
 
@@ -56,6 +58,8 @@ import javax.enterprise.context.SessionScoped;
 import javax.enterprise.context.spi.Context;
 import javax.enterprise.util.AnnotationLiteral;
 import javax.inject.Singleton;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletRequestEvent;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
@@ -85,6 +89,8 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
 
     private final ConversationService conversationService;
 
+    private volatile Object appEvent;
+
     private static final ThreadLocal<Collection<Runnable>> endRequestRunnables = new ThreadLocal<Collection<Runnable>>() {
         @Override
         protected Collection<Runnable> initialValue() {
@@ -159,7 +165,7 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
         return null;
     }
 
-    @Override
+    @Override // this method is called after the deployment (BeansDeployer) but need beans to be here to get events
     public void init(final Object initializeObject) {
         //Start application context
         startContext(ApplicationScoped.class, initializeObject);
@@ -171,7 +177,10 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
     public void beforeStop(final Object destroyObject) {
         {   // trigger @PreDestroy mainly but keep it active until destroy(xxx)
             applicationContext.destroy();
-            webBeansContext.getBeanManagerImpl().fireEvent(destroyObject != null ? destroyObject : applicationContext, DestroyedLiteral.APP);
+            webBeansContext.getBeanManagerImpl().fireEvent(
+                    appEvent,
+                    new EventMetadataImpl(null, ServletContext.class.isInstance(appEvent) ? ServletContext.class : Object.class,null, new Annotation[] { DestroyedLiteral.APP }, webBeansContext),
+                    false);
             applicationContext.setActive(true);
 
             singletonContext.destroy();
@@ -305,10 +314,23 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
     }
 
     private void initApplicationContext(final Object init) { // in case contexts are stop/start
-        final boolean alreadyStarted = applicationContext.isActive();
-        if (!alreadyStarted) {
-            applicationContext.setActive(true);
-            webBeansContext.getBeanManagerImpl().fireEvent(init != null ? init : applicationContext, InitializedLiteral.APP);
+        if (appEvent == null) { // no need of sync cause of the lifecycle
+            Object event = init;
+            if (StartupObject.class.isInstance(init)) {
+                final StartupObject so = StartupObject.class.cast(init);
+                if (so.isFromWebApp()) { // ear webapps
+                    event = so.getWebContext().getServletContext();
+                } else if (so.getAppInfo().webAppAlone) {
+                    event = SystemInstance.get().getComponent(ServletContext.class);
+                }
+            } else if (ServletContextEvent.class.isInstance(init)) {
+                event = ServletContextEvent.class.cast(init).getServletContext();
+            }
+            appEvent = event != null ? event : applicationContext;
+            webBeansContext.getBeanManagerImpl().fireEvent(
+                    appEvent,
+                    new EventMetadataImpl(null, ServletContext.class.isInstance(appEvent) ? ServletContext.class : Object.class, null, new Annotation[] { InitializedLiteral.APP }, webBeansContext),
+                    false);
         }
     }
 
@@ -517,13 +539,16 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
             final SessionContext context = sessionContext.get();
 
             if (context != null && context.isActive()) {
-                context.destroy();
-                pushRequestReleasable(new Runnable() { // call it at the end of the request
-                    @Override
-                    public void run() {
-                        webBeansContext.getBeanManagerImpl().fireEvent(session, DestroyedLiteral.SESSION);
-                    }
-                });
+                if (getRequestContext(false) == null) {
+                    doDestroySession(context, session);
+                } else {
+                    pushRequestReleasable(new Runnable() { // call it at the end of the request
+                        @Override
+                        public void run() {
+                            doDestroySession(context, session);
+                        }
+                    });
+                }
             }
 
             //Clear thread locals
@@ -535,6 +560,11 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
         }
     }
 
+    private void doDestroySession(SessionContext context, HttpSession session) {
+        context.destroy();
+        webBeansContext.getBeanManagerImpl().fireEvent(session, DestroyedLiteral.SESSION);
+    }
+
     //we don't have initApplicationContext
 
     private void destroyApplicationContext() {

http://git-wip-us.apache.org/repos/asf/tomee/blob/845fff2d/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
index ab94535..a06ea9b 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
@@ -160,11 +160,6 @@ public class CdiPlugin extends AbstractOwbPlugin implements OpenWebBeansJavaEEPl
         return contexsServices;
     }
 
-    public void startup() {
-        this.contexsServices = (CdiAppContextsService) webBeansContext.getContextsService();
-        this.contexsServices.init(null);
-    }
-
     public void stop() throws OpenEJBException {
         final ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
         try {

http://git-wip-us.apache.org/repos/asf/tomee/blob/845fff2d/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
index b3d7767..5747c50 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
@@ -160,7 +160,6 @@ public class OpenEJBLifecycle implements ContainerLifecycle {
 
             cdiPlugin.setClassLoader(stuff.getClassLoader());
             cdiPlugin.setWebBeansContext(webBeansContext);
-            cdiPlugin.startup();
 
             //Configure EJB Deployments
             cdiPlugin.configureDeployments(stuff.getBeanContexts());
@@ -173,9 +172,6 @@ public class OpenEJBLifecycle implements ContainerLifecycle {
             //Deploy the beans
             CdiScanner cdiScanner = null;
             try {
-                //Initialize contexts
-                this.contextsService.init(startupObject);
-
                 //Scanning process
                 logger.debug("Scanning classpaths for beans artifacts.");
 
@@ -200,6 +196,7 @@ public class OpenEJBLifecycle implements ContainerLifecycle {
 
                 //Deploy bean from XML. Also configures deployments, interceptors, decorators.
                 deployer.deploy(scannerService);
+                contextsService.init(startupObject); // fire app event, this doesnt init anything else
             } catch (final Exception e1) {
                 SystemInstance.get().getComponent(Assembler.class).logger.error("CDI Beans module deployment failed", e1);
                 throw new OpenEJBRuntimeException(e1);

http://git-wip-us.apache.org/repos/asf/tomee/blob/845fff2d/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java
----------------------------------------------------------------------
diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java
index af340ac..dda5c9f 100644
--- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java
+++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java
@@ -165,24 +165,26 @@ public class EndWebBeansListener implements ServletContextListener, ServletReque
 
         // ensure session ThreadLocal is set
         webBeansContext.getContextsService().startContext(SessionScoped.class, event.getSession());
-
-        webBeansContext.getContextsService().endContext(SessionScoped.class, event.getSession());
+        
         if (WebappWebBeansContext.class.isInstance(webBeansContext)) { // end after child
             WebappWebBeansContext.class.cast(webBeansContext).getParent().getContextsService().endContext(SessionScoped.class, event.getSession());
         }
 
         final CdiAppContextsService appContextsService = CdiAppContextsService.class.cast(webBeansContext.getContextsService());
         if (appContextsService.getRequestContext(false) != null) {
+            final String id = event.getSession().getId(); // capture it eagerly!
             appContextsService.pushRequestReleasable(new Runnable() {
                 @Override
                 public void run() {
-                    doDestroyConversations(event.getSession().getId());
+                    doDestroyConversations(id);
                 }
             });
         } else {
             doDestroyConversations(event.getSession().getId());
         }
 
+        webBeansContext.getContextsService().endContext(SessionScoped.class, event.getSession());
+
         destroyFakedRequest();
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/845fff2d/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
----------------------------------------------------------------------
diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
index 9d4c0c4..2ac3b9b 100644
--- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
+++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
@@ -23,6 +23,7 @@ import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.spi.SecurityService;
 import org.apache.openejb.util.ArrayEnumeration;
 import org.apache.openejb.util.DaemonThreadFactory;
+import org.apache.openejb.util.Duration;
 import org.apache.openejb.util.Logger;
 
 import javax.security.auth.login.LoginException;
@@ -86,7 +87,7 @@ public class HttpRequestImpl implements HttpRequest {
     protected static final String JSESSIONID = "JSESSIONID";
 
     // note: no eviction so invalidate has to be called properly
-    private static final ConcurrentMap<String, HttpSession> SESSIONS = new ConcurrentHashMap<>();
+    private static final ConcurrentMap<String, RequestSession> SESSIONS = new ConcurrentHashMap<>();
 
     public static final Class<?>[] SERVLET_CONTEXT_INTERFACES = new Class<?>[]{ServletContext.class};
     public static final InvocationHandler SERVLET_CONTEXT_HANDLER = new InvocationHandler() {
@@ -110,18 +111,25 @@ public class HttpRequestImpl implements HttpRequest {
         if (!"true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.http.eviction", "true"))) {
             return;
         }
+        final Duration duration = new Duration(SystemInstance.get().getProperty("openejb.http.eviction.duration", "1 minute"));
         es = Executors.newScheduledThreadPool(1, new DaemonThreadFactory(HttpRequestImpl.class));
         es.scheduleWithFixedDelay(new Runnable() {
             @Override
             public void run() {
-                for (final HttpSession session : new ArrayList<>(SESSIONS.values())) {
-                    if (session.getMaxInactiveInterval() > 0 && session.getLastAccessedTime() + session.getMaxInactiveInterval() < System.currentTimeMillis()) {
+                for (final RequestSession data : new ArrayList<>(SESSIONS.values())) {
+                    final HttpSession session = data.session;
+                    if (session.getMaxInactiveInterval() > 0
+                            && session.getLastAccessedTime() + TimeUnit.SECONDS.toMillis(session.getMaxInactiveInterval()) < System.currentTimeMillis()) {
                         SESSIONS.remove(session.getId());
                         session.invalidate();
+
+                        if (data.request != null && data.request.end != null) {
+                            data.request.end.sessionDestroyed(new HttpSessionEvent(session));
+                        }
                     }
                 }
             }
-        }, 1, 1, TimeUnit.MINUTES);
+        }, duration.getTime(), duration.getTime(), duration.getUnit());
     }
 
     private EndWebBeansListener end;
@@ -430,9 +438,11 @@ public class HttpRequestImpl implements HttpRequest {
                 for (String c : cookies) {
                     final String current = c.trim();
                     if (current.startsWith("EJBSESSIONID=")) {
-                        session = SESSIONS.get(current.substring("EJBSESSIONID=".length()));
+                        final RequestSession requestSession = SESSIONS.get(current.substring("EJBSESSIONID=".length()));
+                        session = requestSession == null ? null : requestSession.session;
                     } else if (current.startsWith("JSESSIONID=")) {
-                        session = SESSIONS.get(current.substring("JSESSIONID=".length()));
+                        final RequestSession requestSession = SESSIONS.get(current.substring("JSESSIONID=".length()));
+                        session = requestSession == null ? null : requestSession.session;
                     }
                 }
             }
@@ -925,9 +935,9 @@ public class HttpRequestImpl implements HttpRequest {
                 session = new SessionInvalidateListener(session, end);
             }
 
-            final HttpSession previous = SESSIONS.putIfAbsent(session.getId(), session);
+            final RequestSession previous = SESSIONS.putIfAbsent(session.getId(), new RequestSession(this, session));
             if (previous != null) {
-                session = previous;
+                session = previous.session;
             } else {
                 if (es == null) {
                     synchronized (HttpRequestImpl.class) {
@@ -1253,9 +1263,9 @@ public class HttpRequestImpl implements HttpRequest {
         public void invalidate() {
             SESSIONS.remove(session.getId());
             try {
-                listener.sessionDestroyed(new HttpSessionEvent(session));
-            } finally {
                 super.invalidate();
+            } finally {
+                listener.sessionDestroyed(new HttpSessionEvent(session));
             }
         }
     }
@@ -1298,4 +1308,15 @@ public class HttpRequestImpl implements HttpRequest {
             // not yet supported: TODO: fake response write in ByteArrayOutputStream and then call HttpListenerRegistry and write it back
         }
     }
+
+    private static class RequestSession extends HttpSessionEvent {
+        private final HttpRequestImpl request;
+        private final HttpSession session;
+
+        public RequestSession(final HttpRequestImpl request, final HttpSession session) {
+            super(session);
+            this.request = request;
+            this.session = session;
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/845fff2d/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
----------------------------------------------------------------------
diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
index a5c2595..6f06708 100644
--- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
+++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
@@ -37,12 +37,12 @@ public class HttpSessionImpl implements HttpSession {
     private Collection<HttpSessionListener> listeners;
     private String sessionId = UUID.randomUUID().toString();
     private Map<String, Object> attributes = new HashMap<String, Object>();
-    private final ConcurrentMap<String, HttpSession> mapToClean;
+    private final ConcurrentMap<String, ? extends HttpSessionEvent> mapToClean;
     private final long created = System.currentTimeMillis();
-    private final long timeout;
+    private volatile long timeout;
     private volatile long lastAccessed = created;
 
-    public HttpSessionImpl(final ConcurrentMap<String, HttpSession> sessions, final String contextPath, final long timeout) {
+    public HttpSessionImpl(final ConcurrentMap<String, ? extends HttpSessionEvent> sessions, final String contextPath, final long timeout) {
         this.mapToClean = sessions;
         this.timeout = timeout;
         if (contextPath == null) {
@@ -170,12 +170,13 @@ public class HttpSessionImpl implements HttpSession {
 
     @Override
     public void setMaxInactiveInterval(int i) {
-        // no-op
+        touch();
+        timeout = (long) i;
     }
 
     @Override
     public int getMaxInactiveInterval() {
-        touch();
+        // touch(); // TODO: dont use it internally
         return (int) timeout;
     }
 
@@ -185,7 +186,8 @@ public class HttpSessionImpl implements HttpSession {
         return new HttpSessionContext() {
             @Override
             public javax.servlet.http.HttpSession getSession(final String sessionId) {
-                return mapToClean.get(sessionId);
+                final HttpSessionEvent event = mapToClean.get(sessionId);
+                return event == null ? null : event.getSession();
             }
 
             @Override

http://git-wip-us.apache.org/repos/asf/tomee/blob/845fff2d/tck/cdi-embedded/pom.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/pom.xml b/tck/cdi-embedded/pom.xml
index 4133bfb..e2c9e08 100644
--- a/tck/cdi-embedded/pom.xml
+++ b/tck/cdi-embedded/pom.xml
@@ -207,6 +207,7 @@
             <openejb.strict.interface.declaration>true</openejb.strict.interface.declaration>
             <openejb.http.mock-request>true</openejb.http.mock-request>
             <openejb.http.default-content-type>text/plain</openejb.http.default-content-type> <!-- TODO: remove it -->
+            <openejb.http.eviction.duration>1 second</openejb.http.eviction.duration>
             <openejb.embedded.try-jsp>true</openejb.embedded.try-jsp>
             <openejb.deploymentId.format>{appId}/{ejbJarId}/{ejbName}</openejb.deploymentId.format>
             <org.apache.openejb.assembler.classic.WebAppBuilder>org.apache.openejb.web.LightweightWebAppBuilder</org.apache.openejb.assembler.classic.WebAppBuilder>

http://git-wip-us.apache.org/repos/asf/tomee/blob/845fff2d/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/StandaloneTckCleaner.java
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/StandaloneTckCleaner.java b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/StandaloneTckCleaner.java
new file mode 100644
index 0000000..a9b42a8
--- /dev/null
+++ b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/StandaloneTckCleaner.java
@@ -0,0 +1,34 @@
+/*
+ * 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.tck.cdi.embedded;
+
+import org.jboss.cdi.tck.util.ActionSequence;
+import org.testng.IInvokedMethod;
+import org.testng.IInvokedMethodListener;
+import org.testng.ITestResult;
+
+public class StandaloneTckCleaner implements IInvokedMethodListener {
+    @Override
+    public void beforeInvocation(final IInvokedMethod iInvokedMethod, final ITestResult iTestResult) {
+        // no-op
+    }
+
+    @Override
+    public void afterInvocation(final IInvokedMethod iInvokedMethod, final ITestResult iTestResult) {
+        ActionSequence.reset();
+    }
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/845fff2d/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index a215086..4d56571 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -30,8 +30,12 @@
     -Dopenejb.http.mock-request=true
     -Dopenejb.embedded.try-jsp=true
     -->
-    <classes><!-- org.jboss.cdi.tck.tests.extensions.producer.remote.RemoteProducerTest -->
-      <class name="org.jboss.cdi.tck.tests.extensions.processBean.ProcessBeanTest" />
+    <classes>
+      <!--
+      org.jboss.cdi.tck.interceptors.tests.contract.aroundTimeout.bindings.AroundTimeoutOrderInterceptorTest
+      org.jboss.cdi.tck.tests.extensions.lifecycle.processInjectionTarget.ContainerEventTest
+      -->
+      <class name="org.jboss.cdi.tck.tests.context.session.listener.SessionContextHttpSessionListenerTest" />
     </classes>
   </test>
 </suite>

http://git-wip-us.apache.org/repos/asf/tomee/blob/845fff2d/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cdi/ServletContextHandler.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cdi/ServletContextHandler.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cdi/ServletContextHandler.java
index 8bfd627..b774aee 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cdi/ServletContextHandler.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cdi/ServletContextHandler.java
@@ -16,15 +16,35 @@
  */
 package org.apache.tomee.catalina.cdi;
 
+import org.apache.catalina.connector.Request;
+import org.apache.openejb.AppContext;
+import org.apache.openejb.core.WebContext;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
 import org.apache.tomee.catalina.OpenEJBSecurityListener;
 
 import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 public class ServletContextHandler implements InvocationHandler {
     @Override
     public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
         // ITE are handler by Proxys
-        return method.invoke(OpenEJBSecurityListener.requests.get().getServletContext(), args);
+        final Request request = OpenEJBSecurityListener.requests.get();
+        if (request != null) {
+            return method.invoke(request.getServletContext(), args);
+        }
+
+        OpenEJBSecurityListener.requests.remove(); // can be a not container thread so clean it up
+        for (final AppContext a : SystemInstance.get().getComponent(ContainerSystem.class).getAppContexts()) {
+            for (final WebContext w : a.getWebContexts()) {
+                if (w.getClassLoader() == Thread.currentThread().getContextClassLoader()) { // not in CXF so == should be fine
+                    return method.invoke(w.getServletContext(), args);
+                }
+            }
+        }
+
+        throw new IllegalStateException("Didnt find a web context for " + Thread.currentThread().getContextClassLoader());
     }
 }


[03/50] tomee git commit: activating conversation with request to ensure transient mode works

Posted by st...@apache.org.
activating conversation with request to ensure transient mode works


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/d2ee6239
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/d2ee6239
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/d2ee6239

Branch: refs/heads/master
Commit: d2ee6239307e2e49509d8619c69e8b0a639a1950
Parents: 8d43e38
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed Mar 4 19:33:20 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Wed Mar 4 19:33:20 2015 +0100

----------------------------------------------------------------------
 .../apache/openejb/cdi/CdiAppContextsService.java    | 15 ++++++++++++---
 tck/cdi-embedded/src/test/resources/failing.xml      |  2 +-
 2 files changed, 13 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/d2ee6239/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
index a32afb0..3870dfa 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
@@ -337,12 +337,13 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
                 //Re-initialize thread local for session
                 final HttpSession session = request.getSession(false);
 
+                String cid = null;
                 if (session != null) {
                     initSessionContext(session);
 
                     final ServletRequestContext rc  = getRequestContext(false);
                     if (rc != null && rc.getServletRequest() != null && conversationService != null && !isConversationSkipped(rc)) {
-                        final String cid = rc.getServletRequest().getParameter("cid");
+                        cid = rc.getServletRequest().getParameter("cid");
                         if (cid != null) {
                             final ConversationManager conversationManager = webBeansContext.getConversationManager();
                             final ConversationImpl c = conversationManager.getPropogatedConversation(cid, session.getId());
@@ -351,6 +352,14 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
                             }
                         }
                     }
+                } else {
+                    cid = getConversationId();
+                }
+                if (cid == null && conversationContext.get() == null) {
+                    // transient but active
+                    final ConversationContext context = new ConversationContext();
+                    context.setActive(true);
+                    conversationContext.set(context);
                 }
             }
         } else if (event == EJB_REQUEST_EVENT) {
@@ -595,7 +604,7 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
                     destroyObject == null ? context : destroyObject, DestroyedLiteral.CONVERSATION);
         }
 
-        if (null != conversationContext) {
+        if (null != context) {
             conversationContext.remove();
         }
     }
@@ -672,7 +681,7 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
                 }
             }
         }
-        if (context != null && createIfPropagated) {
+        if (context != null && !context.isActive() && createIfPropagated) {
             context.setActive(true);
         }
         return context;

http://git-wip-us.apache.org/repos/asf/tomee/blob/d2ee6239/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index 550c902..81a4955 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
     -Dopenejb.embedded.try-jsp=true
     -->
     <classes>
-      <class name="org.jboss.cdi.tck.tests.deployment.packaging.installedLibrary.InstalledLibraryEarTest" />
+      <class name="org.jboss.cdi.tck.tests.deployment.initialization.ApplicationInitializationLifecycleTest" />
     </classes>
   </test>
 </suite>


[08/50] tomee git commit: splitting ejb interceptor and self callback interceptor lists since otherwise it is not possible to order them with cdi interceptors correctly

Posted by st...@apache.org.
splitting ejb interceptor and self callback interceptor lists since otherwise it is not possible to order them with cdi interceptors correctly


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/aa4cfc35
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/aa4cfc35
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/aa4cfc35

Branch: refs/heads/master
Commit: aa4cfc3559c070dfd8dde9fcb5ab50535d9fdc28
Parents: 788b74f
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed Mar 4 23:45:45 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Wed Mar 4 23:45:45 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/openejb/BeanContext.java    | 30 +++++++++++++++++---
 tck/cdi-embedded/pom.xml                        |  3 +-
 tck/cdi-embedded/src/test/resources/failing.xml |  2 +-
 3 files changed, 29 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/aa4cfc35/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java b/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
index c2f70ff..1270cd7 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
@@ -75,6 +75,7 @@ import javax.enterprise.inject.spi.InterceptionType;
 import javax.enterprise.inject.spi.Interceptor;
 import javax.naming.Context;
 import javax.persistence.EntityManagerFactory;
+import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
@@ -127,11 +128,18 @@ public class BeanContext extends DeploymentContext {
         final Collection<Interceptor<?>> postConstructInterceptors = Collection.class.cast(Reflections.get(injectionTarget, "postConstructInterceptors"));
         final Collection<Interceptor<?>> preDestroyInterceptors = Collection.class.cast(Reflections.get(injectionTarget, "preDestroyInterceptors"));
         for (final Interceptor<?> pc : postConstructInterceptors) {
+            if (isEjbInterceptor(pc)) {
+                continue;
+            }
+
             final InterceptorData interceptorData = createInterceptorData(pc);
             instanceScopedInterceptors.add(interceptorData);
             cdiInterceptors.add(interceptorData);
         }
         for (final Interceptor<?> pd : preDestroyInterceptors) {
+            if (isEjbInterceptor(pd)) {
+                continue;
+            }
             if (postConstructInterceptors.contains(pd)) {
                 continue;
             }
@@ -177,6 +185,11 @@ public class BeanContext extends DeploymentContext {
         clear(Collection.class.cast(Reflections.get(info, "cdiInterceptors")));
     }
 
+    private boolean isEjbInterceptor(final Interceptor<?> pc) {
+        final Set<Annotation> interceptorBindings = pc.getInterceptorBindings();
+        return interceptorBindings == null || interceptorBindings.isEmpty();
+    }
+
     private InterceptorData createInterceptorData(final Interceptor<?> i) {
         final InterceptorData data;
         if (CdiInterceptorBean.class.isInstance(i)) {
@@ -282,6 +295,7 @@ public class BeanContext extends DeploymentContext {
     private TransactionPolicyFactory transactionPolicyFactory;
 
     private final List<InterceptorData> callbackInterceptors = new ArrayList<InterceptorData>();
+    private final List<InterceptorData> beanCallbackInterceptors = new ArrayList<InterceptorData>();
     private final Set<InterceptorData> instanceScopedInterceptors = new HashSet<InterceptorData>();
     private final List<InterceptorInstance> systemInterceptors = new ArrayList<InterceptorInstance>();
     private final List<InterceptorInstance> userInterceptors = new ArrayList<InterceptorInstance>();
@@ -1103,15 +1117,23 @@ public class BeanContext extends DeploymentContext {
 
     public List<InterceptorData> getCallbackInterceptors() {
         final List<InterceptorData> datas = getInterceptorData();
-        datas.addAll(cdiInterceptors);
         datas.addAll(callbackInterceptors);
+        datas.addAll(cdiInterceptors);
+        datas.addAll(beanCallbackInterceptors);
         return datas;
     }
 
     public void setCallbackInterceptors(final List<InterceptorData> callbackInterceptors) {
         //TODO shouldn't we remove the old callbackInterceptors from instanceScopedInterceptors before adding the new ones?
+        this.beanCallbackInterceptors.clear();
         this.callbackInterceptors.clear();
-        this.callbackInterceptors.addAll(callbackInterceptors);
+        for (final InterceptorData data : callbackInterceptors) {
+            if (data.getInterceptorClass().isAssignableFrom(getManagedClass())) {
+                this.beanCallbackInterceptors.add(data);
+            } else {
+                this.callbackInterceptors.add(data);
+            }
+        }
         this.instanceScopedInterceptors.addAll(callbackInterceptors);
     }
 
@@ -1130,7 +1152,7 @@ public class BeanContext extends DeploymentContext {
     }
 
     public List<InterceptorData> getInterceptorData() {
-        final List<InterceptorData> datas = new ArrayList<InterceptorData>();
+        final List<InterceptorData> datas = new ArrayList<InterceptorData>(getUserAndSystemInterceptors().size());
         for (final InterceptorInstance instance : getUserAndSystemInterceptors()) {
             datas.add(instance.getData());
         }
@@ -1634,7 +1656,7 @@ public class BeanContext extends DeploymentContext {
                 if (callbacks.isEmpty()) {
                     transactionType = TransactionType.RequiresNew;
                 } else {
-                    transactionType = getTransactionType(callbacks.iterator().next());
+                    transactionType = getTransactionType(callbacks.iterator().next()); // TODO: we should take the last one I think
                     if (transactionType == TransactionType.Required) {
                         transactionType = TransactionType.RequiresNew;
                     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/aa4cfc35/tck/cdi-embedded/pom.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/pom.xml b/tck/cdi-embedded/pom.xml
index dc0361b..4133bfb 100644
--- a/tck/cdi-embedded/pom.xml
+++ b/tck/cdi-embedded/pom.xml
@@ -203,9 +203,10 @@
             <openejb.cdi.producer.interception>false</openejb.cdi.producer.interception>
             <openejb.cdi.filter.classloader>false</openejb.cdi.filter.classloader>
 
+            <openejb.jul.forceReload>true</openejb.jul.forceReload>
             <openejb.strict.interface.declaration>true</openejb.strict.interface.declaration>
             <openejb.http.mock-request>true</openejb.http.mock-request>
-            <openejb.http.default-content-type>text/plain</openejb.http.default-content-type>
+            <openejb.http.default-content-type>text/plain</openejb.http.default-content-type> <!-- TODO: remove it -->
             <openejb.embedded.try-jsp>true</openejb.embedded.try-jsp>
             <openejb.deploymentId.format>{appId}/{ejbJarId}/{ejbName}</openejb.deploymentId.format>
             <org.apache.openejb.assembler.classic.WebAppBuilder>org.apache.openejb.web.LightweightWebAppBuilder</org.apache.openejb.assembler.classic.WebAppBuilder>

http://git-wip-us.apache.org/repos/asf/tomee/blob/aa4cfc35/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index 01cc8b3..da64e41 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
     -Dopenejb.embedded.try-jsp=true
     -->
     <classes>
-      <class name="org.jboss.cdi.tck.interceptors.tests.contract.lifecycleCallback.bindings.ejb.SessionBeanLifecycleInterceptorDefinitionTest" />
+      <class name="org.jboss.cdi.tck.tests.lookup.injectionpoint.non.contextual.NonContextualInjectionPointTest" />
     </classes>
   </test>
 </suite>


[25/50] tomee git commit: avoid NPE

Posted by st...@apache.org.
avoid NPE


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/10406df2
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/10406df2
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/10406df2

Branch: refs/heads/master
Commit: 10406df27163b305a2577b2c844b0c5d6dccecf4
Parents: ee3786c
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Thu Mar 5 20:42:27 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Thu Mar 5 20:42:41 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/openejb/BeanContext.java    | 36 +++++++++++---------
 1 file changed, 20 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/10406df2/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java b/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
index 1270cd7..d21b20f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
@@ -127,25 +127,29 @@ public class BeanContext extends DeploymentContext {
 
         final Collection<Interceptor<?>> postConstructInterceptors = Collection.class.cast(Reflections.get(injectionTarget, "postConstructInterceptors"));
         final Collection<Interceptor<?>> preDestroyInterceptors = Collection.class.cast(Reflections.get(injectionTarget, "preDestroyInterceptors"));
-        for (final Interceptor<?> pc : postConstructInterceptors) {
-            if (isEjbInterceptor(pc)) {
-                continue;
-            }
+        if (postConstructInterceptors != null) {
+            for (final Interceptor<?> pc : postConstructInterceptors) {
+                if (isEjbInterceptor(pc)) {
+                    continue;
+                }
 
-            final InterceptorData interceptorData = createInterceptorData(pc);
-            instanceScopedInterceptors.add(interceptorData);
-            cdiInterceptors.add(interceptorData);
-        }
-        for (final Interceptor<?> pd : preDestroyInterceptors) {
-            if (isEjbInterceptor(pd)) {
-                continue;
+                final InterceptorData interceptorData = createInterceptorData(pc);
+                instanceScopedInterceptors.add(interceptorData);
+                cdiInterceptors.add(interceptorData);
             }
-            if (postConstructInterceptors.contains(pd)) {
-                continue;
+        }
+        if (preDestroyInterceptors != null) {
+            for (final Interceptor<?> pd : preDestroyInterceptors) {
+                if (isEjbInterceptor(pd)) {
+                    continue;
+                }
+                if (postConstructInterceptors.contains(pd)) {
+                    continue;
+                }
+                final InterceptorData interceptorData = createInterceptorData(pd);
+                instanceScopedInterceptors.add(interceptorData);
+                cdiInterceptors.add(interceptorData);
             }
-            final InterceptorData interceptorData = createInterceptorData(pd);
-            instanceScopedInterceptors.add(interceptorData);
-            cdiInterceptors.add(interceptorData);
         }
 
         for (final Map.Entry<Method, InterceptorResolutionService.BusinessMethodInterceptorInfo> entry : info.getBusinessMethodsInfo().entrySet()) {


[46/50] tomee git commit: add exclude for illegal TCK test

Posted by st...@apache.org.
add exclude for illegal TCK test

See CDITCK-467
The TCK wrongly assumes that there must be no ProcessBeanAttributes
for a specialized away bean.


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/53fa087d
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/53fa087d
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/53fa087d

Branch: refs/heads/master
Commit: 53fa087dd83e8f0bf09d607fe413b9d73f09b700
Parents: 2934b94
Author: Mark Struberg <st...@apache.org>
Authored: Sat Mar 7 17:16:24 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Sat Mar 7 17:16:24 2015 +0100

----------------------------------------------------------------------
 tck/cdi-embedded/src/test/resources/passing.xml | 7 +++++++
 1 file changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/53fa087d/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index f849a3b..fbc7b8b 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -189,6 +189,13 @@
       </class>
 
       <!-- CDITCK-467 -->
+      <class name="org.jboss.cdi.tck.tests.extensions.lifecycle.processBeanAttributes.specialization.SpecializationTest">
+          <methods>
+              <exclude name=".*"/>
+          </methods>
+      </class>
+
+      <!-- CDI-514 (issue got moved from original CDITCK-467) -->
       <class name="org.jboss.cdi.tck.tests.event.fires.FireEventTest">
           <methods>
               <exclude name="testDuplicateBindingsToFireEventFails"/>


[35/50] tomee git commit: fixing DependenceValidationTest

Posted by st...@apache.org.
fixing DependenceValidationTest


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/7f1015a4
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/7f1015a4
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/7f1015a4

Branch: refs/heads/master
Commit: 7f1015a404c26689d7b72a9fc470d7f3438a6f75
Parents: bdd4b26
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 6 17:17:19 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 6 17:17:19 2015 +0100

----------------------------------------------------------------------
 .../test/java/org/apache/openejb/DependenceValidationTest.java  | 5 ++++-
 tck/cdi-embedded/src/test/resources/failing.xml                 | 2 +-
 2 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/7f1015a4/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java b/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
index a1e66f5..c817978 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
@@ -69,7 +69,10 @@ public class DependenceValidationTest extends TestCase {
                 "org.apache.openejb.service");
 
         // Nothing may depend on the Config code except it's subpackages
-        assertNotDependentOn("org.apache.openejb", "org.apache.openejb.config", "org.apache.openejb.config.event", "org.apache.openejb.config.typed.util", "org.apache.openejb.config.rules", "org.apache.openejb.config.sys", "org.apache.openejb.assembler", "org.apache.openejb.cdi", "org.apache.openejb.junit", "org.apache.openejb.testng", "org.apache.openejb.testing", dynamicAssembler);
+        assertNotDependentOn("org.apache.openejb", "org.apache.openejb.config",
+                "org.apache.openejb.config.event", "org.apache.openejb.config.typed.util", "org.apache.openejb.config.rules",
+                "org.apache.openejb.config.sys", "org.apache.openejb.assembler", "org.apache.openejb.cdi", "org.apache.openejb.junit",
+                "org.apache.openejb.testng", "org.apache.openejb.testing", dynamicAssembler, "org.apache.openejb.service");
 
         // The assembler may not be dependent on the config factory Implementation
         assertNotDependentOn("org.apache.openejb.assembler.classic", "org.apache.openejb.config");

http://git-wip-us.apache.org/repos/asf/tomee/blob/7f1015a4/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index fd8ed45..c16ddcc 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -35,7 +35,7 @@
       org.jboss.cdi.tck.interceptors.tests.contract.aroundTimeout.bindings.AroundTimeoutOrderInterceptorTest
       org.jboss.cdi.tck.tests.extensions.lifecycle.processInjectionTarget.ContainerEventTest
       -->
-      <class name="org.jboss.cdi.tck.tests.context.request.event.remote.RequestScopeEventRemoteTest" />
+      <class name="org.jboss.cdi.tck.tests.extensions.interceptors.InterceptorExtensionTest" />
     </classes>
   </test>
 </suite>


[38/50] tomee git commit: oops resolveInterceptors need something and doesnt support empty set

Posted by st...@apache.org.
oops resolveInterceptors need something and doesnt support empty set


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/927c3cab
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/927c3cab
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/927c3cab

Branch: refs/heads/master
Commit: 927c3cabe610196cdd1784543c76888d190d5e32
Parents: 3e40a2f
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 6 18:19:49 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 6 18:19:49 2015 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/openejb/BeanContext.java | 14 ++++++++------
 tck/cdi-embedded/src/test/resources/failing.xml       |  2 +-
 2 files changed, 9 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/927c3cab/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java b/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
index 1535f5e..45582e3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
@@ -206,13 +206,15 @@ public class BeanContext extends DeploymentContext {
                     break;
                 }
             }
-            for (final Interceptor<?> timeoutInterceptor : getWebBeansContext().getBeanManagerImpl()
-                    .resolveInterceptors(InterceptionType.AROUND_TIMEOUT, AnnotationUtil.asArray(annotations))) {
-                if (isEjbInterceptor(timeoutInterceptor)) {
-                    continue;
+            if (!annotations.isEmpty()) {
+                for (final Interceptor<?> timeoutInterceptor : getWebBeansContext().getBeanManagerImpl()
+                        .resolveInterceptors(InterceptionType.AROUND_TIMEOUT, AnnotationUtil.asArray(annotations))) {
+                    if (isEjbInterceptor(timeoutInterceptor)) {
+                        continue;
+                    }
+                    final InterceptorData data = createInterceptorData(timeoutInterceptor);
+                    addCdiMethodInterceptor(timeout, data);
                 }
-                final InterceptorData data = createInterceptorData(timeoutInterceptor);
-                addCdiMethodInterceptor(timeout, data);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/927c3cab/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index 29c6d9b..e32235d 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
     -Dopenejb.embedded.try-jsp=true
     -->
     <classes>
-      <class name="org.jboss.cdi.tck.interceptors.tests.contract.aroundTimeout.bindings.AroundTimeoutOrderInterceptorTest" />
+      <class name="org.jboss.cdi.tck.tests.context.application.ejb.ApplicationContextSharedTest" />
     </classes>
   </test>
 </suite>


[41/50] tomee git commit: exclude illegal TCK test

Posted by st...@apache.org.
exclude illegal TCK test

See CDI-312. The meaning of BDA is not clearly defined. Section 5 and 12
contradict each other. The EE6 RI (Glassfish3) and also JBoss6 did implement
it like we do (and yes, this is WAY more sane).


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/8f30ba2f
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/8f30ba2f
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/8f30ba2f

Branch: refs/heads/master
Commit: 8f30ba2fccfdbc49393bc55c1228751f53cc0f57
Parents: 6d1cdf4
Author: Mark Struberg <st...@apache.org>
Authored: Fri Mar 6 19:59:28 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Fri Mar 6 19:59:28 2015 +0100

----------------------------------------------------------------------
 tck/cdi-embedded/src/test/resources/passing.xml | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/8f30ba2f/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index 0131ed5..329ecb7 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -227,6 +227,11 @@
               <exclude name=".*"/>
           </methods>
       </class>
+      <class name="org.jboss.cdi.tck.tests.extensions.interceptors.InterceptorExtensionTest">
+          <methods>
+              <exclude name=".*"/>
+          </methods>
+      </class>
 
 
 


[36/50] tomee git commit: interceptors and decorators need to be discovered - was the case surely a wrong shortcut

Posted by st...@apache.org.
interceptors and decorators need to be discovered - was the case surely a wrong shortcut


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/37b5756e
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/37b5756e
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/37b5756e

Branch: refs/heads/master
Commit: 37b5756e65205f9cd020d146f435bf2466a210ee
Parents: 7f1015a
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 6 17:31:59 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 6 17:31:59 2015 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/openejb/config/AnnotationDeployer.java   | 3 +++
 tck/cdi-embedded/src/test/resources/failing.xml                   | 2 +-
 2 files changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/37b5756e/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
index 1464d36..eda75e6 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
@@ -147,6 +147,7 @@ import javax.annotation.security.RolesAllowed;
 import javax.annotation.security.RunAs;
 import javax.annotation.sql.DataSourceDefinition;
 import javax.annotation.sql.DataSourceDefinitions;
+import javax.decorator.Decorator;
 import javax.decorator.Delegate;
 import javax.ejb.AccessTimeout;
 import javax.ejb.ActivationConfigProperty;
@@ -1691,6 +1692,8 @@ public class AnnotationDeployer implements DynamicDeployer {
                         containerAnnot.add(Stateless.class);
                         containerAnnot.add(Stateful.class);
                         containerAnnot.add(MessageDriven.class);
+                        containerAnnot.add(javax.interceptor.Interceptor.class);
+                        containerAnnot.add(Decorator.class);
                         final ClassLoader classLoader = ParentClassLoaderFinder.Helper.get();
                         try {
                             for (final String name : asList("javax.faces.flow.FlowScoped", "javax.faces.view.ViewScoped")) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/37b5756e/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index c16ddcc..4d6b027 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -35,7 +35,7 @@
       org.jboss.cdi.tck.interceptors.tests.contract.aroundTimeout.bindings.AroundTimeoutOrderInterceptorTest
       org.jboss.cdi.tck.tests.extensions.lifecycle.processInjectionTarget.ContainerEventTest
       -->
-      <class name="org.jboss.cdi.tck.tests.extensions.interceptors.InterceptorExtensionTest" />
+      <class name="org.jboss.cdi.tck.tests.deployment.discovery.BeanDiscoveryTest" />
     </classes>
   </test>
 </suite>


[29/50] tomee git commit: cleaning auto discovery scopes

Posted by st...@apache.org.
cleaning auto discovery scopes


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/4b5a48bf
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/4b5a48bf
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/4b5a48bf

Branch: refs/heads/master
Commit: 4b5a48bfa2d13b91d037a27a906f759604c1c514
Parents: 4d0bf01
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 6 09:36:16 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 6 09:36:16 2015 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/openejb/config/AnnotationDeployer.java  | 4 ----
 1 file changed, 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/4b5a48bf/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
index d5b9d90..1464d36 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
@@ -197,7 +197,6 @@ import javax.enterprise.inject.Produces;
 import javax.enterprise.inject.Stereotype;
 import javax.enterprise.inject.spi.DefinitionException;
 import javax.enterprise.inject.spi.Extension;
-import javax.inject.Scope;
 import javax.interceptor.ExcludeClassInterceptors;
 import javax.interceptor.ExcludeDefaultInterceptors;
 import javax.interceptor.Interceptors;
@@ -1682,15 +1681,12 @@ public class AnnotationDeployer implements DynamicDeployer {
                         final Set<Class<? extends Annotation>> containerAnnot = new HashSet<>();
                         containerAnnot.add(Stereotype.class);
                         containerAnnot.add(NormalScope.class);
-                        containerAnnot.add(Scope.class);
                         containerAnnot.add(Dependent.class);
-                        containerAnnot.add(javax.inject.Singleton.class);
                         containerAnnot.add(ApplicationScoped.class);
                         containerAnnot.add(ConversationScoped.class);
                         containerAnnot.add(RequestScoped.class);
                         containerAnnot.add(SessionScoped.class);
                         containerAnnot.add(Model.class);
-                        containerAnnot.add(javax.interceptor.InterceptorBinding.class);
                         containerAnnot.add(Singleton.class);
                         containerAnnot.add(Stateless.class);
                         containerAnnot.add(Stateful.class);


[43/50] tomee git commit: exclude illegal TCK test

Posted by st...@apache.org.
exclude illegal TCK test

See CDI-312. The meaning of BDA is not clearly defined. Section 5 and 12
contradict each other. The EE6 RI (Glassfish3) and also JBoss6 did implement
it like we do (and yes, this is WAY more sane).

AlternativeSpecializedFactory is actually in the same EE module, so it must get found.
The TCK yet again tests for broken Weld behaviour.


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/ce93a790
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/ce93a790
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/ce93a790

Branch: refs/heads/master
Commit: ce93a79080db244df645f7b704c0e6632f5b9044
Parents: b3ee6c9
Author: Mark Struberg <st...@apache.org>
Authored: Sat Mar 7 09:33:21 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Sat Mar 7 09:57:40 2015 +0100

----------------------------------------------------------------------
 tck/cdi-embedded/src/test/resources/passing.xml | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/ce93a790/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index 329ecb7..ac1e330 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -232,6 +232,21 @@
               <exclude name=".*"/>
           </methods>
       </class>
+      <class name="org.jboss.cdi.tck.tests.lookup.modules.specialization.alternative.Specialization02Test">
+          <methods>
+              <exclude name=".*"/>
+          </methods>
+      </class>
+      <class name="org.jboss.cdi.tck.tests.lookup.modules.specialization.alternative.Specialization03Test">
+          <methods>
+              <exclude name=".*"/>
+          </methods>
+      </class>
+      <class name="org.jboss.cdi.tck.tests.lookup.modules.specialization.alternative.Specialization05Test">
+          <methods>
+              <exclude name=".*"/>
+          </methods>
+      </class>
 
 
 


[48/50] tomee git commit: disable embedded TCK test which needs a running JSF container

Posted by st...@apache.org.
disable embedded TCK test which needs a running JSF container


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/1c20e6f0
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/1c20e6f0
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/1c20e6f0

Branch: refs/heads/master
Commit: 1c20e6f0670e328210cea9b440d23da3c6f0cf38
Parents: 72546d8
Author: Mark Struberg <st...@apache.org>
Authored: Sat Mar 7 17:40:04 2015 +0100
Committer: Mark Struberg <st...@apache.org>
Committed: Sat Mar 7 17:40:04 2015 +0100

----------------------------------------------------------------------
 tck/cdi-embedded/src/test/resources/passing.xml | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/1c20e6f0/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index ac46838..8c1fb81 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -307,6 +307,11 @@
           <exclude name="testConversationActivation" />
         </methods>
       </class>
+      <class name="org.jboss.cdi.tck.tests.lookup.el.integration.IntegrationWithUnifiedELTest">
+        <methods>
+          <exclude name="testELResolverRegisteredWithJsf" />
+        </methods>
+      </class>
     </classes>
   </test>
 </suite>


[12/50] tomee git commit: AddContainerCdiBeansExtension for wars as well

Posted by st...@apache.org.
AddContainerCdiBeansExtension for wars as well


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/5583c703
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/5583c703
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/5583c703

Branch: refs/heads/master
Commit: 5583c7037a4a115d8ffd7dbe03331fa51749cced
Parents: 5a22afa
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Thu Mar 5 10:02:32 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Thu Mar 5 10:02:32 2015 +0100

----------------------------------------------------------------------
 .../cdi/embedded/AddContainerCdiBeansExtension.java   | 14 ++++++++++++++
 tck/cdi-embedded/src/test/resources/failing.xml       |  2 +-
 2 files changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/5583c703/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/AddContainerCdiBeansExtension.java
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/AddContainerCdiBeansExtension.java b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/AddContainerCdiBeansExtension.java
index 49e4053..a5b0cb4 100644
--- a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/AddContainerCdiBeansExtension.java
+++ b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/AddContainerCdiBeansExtension.java
@@ -18,6 +18,7 @@ package org.apache.openejb.tck.cdi.embedded;
 
 import org.apache.openejb.cdi.CompositeBeans;
 import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.config.WebModule;
 import org.apache.openejb.config.event.BeforeAppInfoBuilderEvent;
 import org.apache.openejb.jee.Beans;
 import org.apache.openejb.observer.Observes;
@@ -45,5 +46,18 @@ public class AddContainerCdiBeansExtension {
                 return;
             }
         }
+        // else a war
+        for (final WebModule webModule : event.getAppModule().getWebModules()) {
+            for (final EjbModule ejbModule : event.getAppModule().getEjbModules()) {
+                if (ejbModule.getModuleId().equals(webModule.getModuleId())) {
+                    final Beans beans = ejbModule.getBeans();
+                    if (CompositeBeans.class.isInstance(beans)) {
+                        final CompositeBeans cb = CompositeBeans.class.cast(beans);
+                        cb.getManagedClasses().put(EXT_LIB, new ArrayList<>(BEANS));
+                    }
+                    return;
+                }
+            }
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/5583c703/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index da64e41..6b86fa7 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
     -Dopenejb.embedded.try-jsp=true
     -->
     <classes>
-      <class name="org.jboss.cdi.tck.tests.lookup.injectionpoint.non.contextual.NonContextualInjectionPointTest" />
+      <class name="org.jboss.cdi.tck.tests.extensions.beanManager.unmanaged.UnmanagedInstanceTest" />
     </classes>
   </test>
 </suite>


[26/50] tomee git commit: supporting JspTag as EE component + using InjectableBeanManager and not BeanManagerImpl for injections

Posted by st...@apache.org.
supporting JspTag as EE component + using InjectableBeanManager and not BeanManagerImpl for injections


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/ee3786ce
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/ee3786ce
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/ee3786ce

Branch: refs/heads/master
Commit: ee3786ce1d0d744fa3c5a5efc3270a357f25f620
Parents: 9eebf36
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Thu Mar 5 20:40:00 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Thu Mar 5 20:42:41 2015 +0100

----------------------------------------------------------------------
 .../assembler/classic/JndiEncBuilder.java       | 28 ++++++++++----------
 .../java/org/apache/openejb/cdi/CdiPlugin.java  |  6 ++++-
 tck/cdi-embedded/src/test/resources/failing.xml |  4 +--
 tck/cdi-embedded/src/test/resources/passing.xml |  1 +
 4 files changed, 22 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/ee3786ce/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
index 89ba559..ab1142c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
@@ -50,8 +50,21 @@ import org.apache.openejb.util.IntrospectionSupport;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.container.InjectableBeanManager;
 import org.omg.CORBA.ORB;
 
+import java.io.Serializable;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.TreeMap;
+import java.util.concurrent.Callable;
 import javax.annotation.ManagedBean;
 import javax.ejb.EJBContext;
 import javax.ejb.TimerService;
@@ -81,18 +94,6 @@ import javax.ws.rs.ext.ContextResolver;
 import javax.ws.rs.ext.Providers;
 import javax.xml.ws.Service;
 import javax.xml.ws.WebServiceContext;
-import java.io.Serializable;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.TreeMap;
-import java.util.concurrent.Callable;
 
 /**
  * TODO: This class is essentially an over glorified sym-linker.  The names we were linking to are no longer guaranteed to be what we assume them to be.  We need to come up with a
@@ -380,12 +381,11 @@ public class JndiEncBuilder {
                 final String jndiName = "comp/TimerService";
                 reference = new LinkRef(jndiName);
 
-                // TODO Bind the BeanManager
             } else if (BeanManager.class.equals(type)) {
                 reference = new LazyObjectReference<BeanManager>(new Callable<BeanManager>() {
                     @Override
                     public BeanManager call() throws Exception {
-                        return WebBeansContext.currentInstance().getBeanManagerImpl();
+                        return new InjectableBeanManager(WebBeansContext.currentInstance().getBeanManagerImpl());
                     }
                 });
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/ee3786ce/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
index 4344137..ab94535 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
@@ -74,6 +74,7 @@ import javax.inject.Provider;
 import javax.servlet.Filter;
 import javax.servlet.Servlet;
 import javax.servlet.ServletContextListener;
+import javax.servlet.jsp.tagext.JspTag;
 import java.io.Serializable;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.InvocationHandler;
@@ -118,7 +119,10 @@ public class CdiPlugin extends AbstractOwbPlugin implements OpenWebBeansJavaEEPl
 
     @Override
     public boolean isEEComponent(final Class<?> impl) {
-        return Servlet.class.isAssignableFrom(impl) || Filter.class.isAssignableFrom(impl) || ServletContextListener.class.isAssignableFrom(impl);
+        return Servlet.class.isAssignableFrom(impl)
+                || Filter.class.isAssignableFrom(impl)
+                || ServletContextListener.class.isAssignableFrom(impl)
+                || JspTag.class.isAssignableFrom(impl);
     }
 
     public void setClassLoader(final ClassLoader classLoader) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/ee3786ce/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index dd71410..a215086 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -30,8 +30,8 @@
     -Dopenejb.http.mock-request=true
     -Dopenejb.embedded.try-jsp=true
     -->
-    <classes>
-      <class name="org.jboss.cdi.tck.tests.context.conversation.ClientConversationContextTest" />
+    <classes><!-- org.jboss.cdi.tck.tests.extensions.producer.remote.RemoteProducerTest -->
+      <class name="org.jboss.cdi.tck.tests.extensions.processBean.ProcessBeanTest" />
     </classes>
   </test>
 </suite>

http://git-wip-us.apache.org/repos/asf/tomee/blob/ee3786ce/tck/cdi-embedded/src/test/resources/passing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml
index 89debb3..4f29ed7 100644
--- a/tck/cdi-embedded/src/test/resources/passing.xml
+++ b/tck/cdi-embedded/src/test/resources/passing.xml
@@ -48,6 +48,7 @@
     <listener class-name="org.testng.reporters.XMLReporter"/>
     <listener class-name="org.testng.reporters.EmailableReporter"/>
     <listener class-name="org.apache.openejb.tck.cdi.embedded.HTMLReporter"/>
+    <listener class-name="org.apache.openejb.tck.cdi.embedded.StandaloneTckCleaner"/>
   </listeners>
 
   <test name="JSR-346 TCK">


[28/50] tomee git commit: avoiding infinite loop with session listener in embedded mode

Posted by st...@apache.org.
avoiding infinite loop with session listener in embedded mode


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/4d0bf01a
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/4d0bf01a
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/4d0bf01a

Branch: refs/heads/master
Commit: 4d0bf01a91eef53699deb5a0306284af9ae84b39
Parents: 845fff2
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Thu Mar 5 22:27:50 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Thu Mar 5 22:27:50 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/openejb/server/httpd/HttpRequestImpl.java    | 4 +++-
 .../java/org/apache/openejb/server/httpd/HttpSessionImpl.java    | 3 +++
 2 files changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/4d0bf01a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
----------------------------------------------------------------------
diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
index 2ac3b9b..804648d 100644
--- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
+++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
@@ -929,11 +929,13 @@ public class HttpRequestImpl implements HttpRequest {
                 }
             }
 
-            session = new HttpSessionImpl(SESSIONS, contextPath, timeout);
+            final HttpSessionImpl impl = new HttpSessionImpl(SESSIONS, contextPath, timeout);
+            session = impl;
             if (begin != null) {
                 begin.sessionCreated(new HttpSessionEvent(session));
                 session = new SessionInvalidateListener(session, end);
             }
+            impl.callListeners(); // can call req.getSession() so do it after affectation + do it after cdi init
 
             final RequestSession previous = SESSIONS.putIfAbsent(session.getId(), new RequestSession(this, session));
             if (previous != null) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/4d0bf01a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
----------------------------------------------------------------------
diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
index 6f06708..cd0a394 100644
--- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
+++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
@@ -50,6 +50,9 @@ public class HttpSessionImpl implements HttpSession {
         }
 
         this.listeners = LightweightWebAppBuilderListenerExtractor.findByTypeForContext(contextPath, HttpSessionListener.class);
+    }
+
+    public void callListeners() {
         if (!this.listeners.isEmpty()) {
             final HttpSessionEvent event = new HttpSessionEvent(this);
             for (final HttpSessionListener o : this.listeners) {