You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2016/12/03 16:37:27 UTC

[01/50] tomee git commit: dont warn log4j is not there cause log4j.configurationFile was found, this logs a warn with log4j2 which is quite inconvenient for prod monitoring [Forced Update!]

Repository: tomee
Updated Branches:
  refs/heads/tomee-1.7.x c34885ec7 -> 1f4b821b9 (forced update)


dont warn log4j is not there cause log4j.configurationFile was found, this logs a warn with log4j2 which is quite inconvenient for prod monitoring


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

Branch: refs/heads/tomee-1.7.x
Commit: 43342dbc6a3df54c5b2502471da8ebcbdbd8bd0a
Parents: 0189b84
Author: rmannibucau <rm...@apache.org>
Authored: Thu Sep 29 19:49:16 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Sep 29 19:49:16 2016 +0200

----------------------------------------------------------------------
 .../src/main/java/org/apache/openejb/util/Logger.java           | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/43342dbc/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java b/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
index 40f422b..edb563b 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
@@ -142,6 +142,11 @@ public class Logger {
             if (configFile.size() == 0 && systemProperties.size() == 0) {
                 return;
             }
+            if (systemProperties.size() == 1 && "log4j.configurationFile".equals(systemProperties.stringPropertyNames().iterator().next())) {
+                // not a logger config but the overall config
+                // since log4j2 uses it too we can't pollute logs with warnings there for that only
+                return;
+            }
 
             final LogStream stream = logStreamFactory.createLogStream(LogCategory.OPENEJB);
 


[32/50] tomee git commit: trying to ensure we build on j7 even using j8 features in some tests

Posted by rm...@apache.org.
trying to ensure we build on j7 even using j8 features in some tests


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

Branch: refs/heads/tomee-1.7.x
Commit: b95c9292c00bfa9816908ab1c38abc8524847a38
Parents: c31477c
Author: rmannibucau <rm...@apache.org>
Authored: Fri Oct 14 11:43:24 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Fri Oct 14 11:43:24 2016 +0200

----------------------------------------------------------------------
 .../org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java   | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/b95c9292/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java
----------------------------------------------------------------------
diff --git a/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java b/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java
index e7e617e..5022bd8 100644
--- a/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java
+++ b/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java
@@ -23,6 +23,7 @@ import org.apache.openejb.config.DeploymentFilterable;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.NetworkUtil;
+import org.junit.Assume;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -207,6 +208,8 @@ public class TomEEEmbeddedMojoTest {
 
     @Test
     public void customScript() throws Exception {
+        Assume.assumeFalse(System.getProperty("java.version").startsWith("1.7"));
+
         // we use a dynamic InputStream to be able to simulate commands without hacking System.in
         final Input input = new Input();
         final Semaphore reloaded = new Semaphore(0);


[08/50] tomee git commit: few more library exclude for shades + allowing to exclude only some classes too

Posted by rm...@apache.org.
few more library exclude for shades + allowing to exclude only some classes too


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

Branch: refs/heads/tomee-1.7.x
Commit: 8b40e93ecd5d4bae2a773927064a837e846ee4c4
Parents: 0abf01b
Author: rmannibucau <rm...@apache.org>
Authored: Thu Sep 29 21:40:15 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Sep 29 21:40:15 2016 +0200

----------------------------------------------------------------------
 .../org/apache/openejb/config/ContainerClassesFilterTest.java     | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/8b40e93e/container/openejb-core/src/test/java/org/apache/openejb/config/ContainerClassesFilterTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/ContainerClassesFilterTest.java b/container/openejb-core/src/test/java/org/apache/openejb/config/ContainerClassesFilterTest.java
index 9adad42..a5a0b89 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/config/ContainerClassesFilterTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/ContainerClassesFilterTest.java
@@ -34,6 +34,7 @@ public class ContainerClassesFilterTest {
         assertFalse(filter.accept("org.apache.openejb.Bar"));
         assertFalse(filter.accept("org.apache.openejb.foo.Bar"));
         assertFalse(filter.accept("org.jasypt.dfzg.Bar"));
-        assertFalse(filter.accept("org.apache.commons.dbcp2.AbandonedTrace"));
+        assertFalse(filter.accept("org.codehaus.swizzle.Grep"));
+        assertTrue(filter.accept("org.codehaus.swizzle.Gre"));
     }
 }


[12/50] tomee git commit: wiring TomEEEmbeddedArg in TomEEEmbeddedApplicationRunner

Posted by rm...@apache.org.
wiring TomEEEmbeddedArg in TomEEEmbeddedApplicationRunner


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

Branch: refs/heads/tomee-1.7.x
Commit: 63792008eb783003970777fe43ca87a264d9d4ec
Parents: dafe6d2
Author: rmannibucau <rm...@apache.org>
Authored: Sat Oct 1 11:18:58 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Sat Oct 1 11:18:58 2016 +0200

----------------------------------------------------------------------
 .../TomEEEmbeddedApplicationRunner.java         | 27 +++++++++++---------
 .../embedded/component/TomEEEmbeddedArgs.java   |  6 +++++
 2 files changed, 21 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/63792008/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
index c16b970..12033d2 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
@@ -17,6 +17,7 @@
 package org.apache.tomee.embedded;
 
 import org.apache.openejb.config.DeploymentsResolver;
+import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.testing.Application;
 import org.apache.openejb.testing.ApplicationComposers;
 import org.apache.openejb.testing.Classes;
@@ -24,6 +25,7 @@ import org.apache.openejb.testing.ContainerProperties;
 import org.apache.openejb.testing.Jars;
 import org.apache.openejb.testing.RandomPort;
 import org.apache.openejb.testing.WebResource;
+import org.apache.tomee.embedded.component.TomEEEmbeddedArgs;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.inject.OWBInjector;
 import org.apache.xbean.finder.AnnotationFinder;
@@ -87,7 +89,7 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
             }
         }
         try {
-            start(app.getClass(), overrides);
+            start(app.getClass(), overrides, args);
             return this;
         } catch (final Exception e) {
             throw new IllegalStateException(e);
@@ -102,7 +104,7 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
         return app;
     }
 
-    public synchronized void start(final Class<?> marker, final Properties config) throws Exception {
+    public synchronized void start(final Class<?> marker, final Properties config, final String... args) throws Exception {
         if (started) {
             return;
         }
@@ -195,7 +197,7 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
         }
 
         final Jars jars = appClass.getAnnotation(Jars.class);
-        List<URL> urls = null;
+        final List<URL> urls;
         if (jars != null) {
             final Collection<File> files = ApplicationComposers.findFiles(jars);
             urls = new ArrayList<>(files.size());
@@ -225,15 +227,16 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
             configuration.loadFromProperties(config);
         }
 
-        final Container container = new Container(configuration)
-                .deploy(new Container.DeploymentRequest(
-                        context,
-                        // call ClasspathSearcher that lazily since container needs to be started to not preload logging
-                        urls == null ? new DeploymentsResolver.ClasspathSearcher().loadUrls(Thread.currentThread().getContextClassLoader()).getUrls() : urls,
-                        webResource != null ? new File(webResource) : null,
-                        true,
-                        null,
-                        archive));
+        final Container container = new Container(configuration);
+        SystemInstance.get().setComponent(TomEEEmbeddedArgs.class, new TomEEEmbeddedArgs(args, null));
+        container.deploy(new Container.DeploymentRequest(
+                context,
+                // call ClasspathSearcher that lazily since container needs to be started to not preload logging
+                urls == null ? new DeploymentsResolver.ClasspathSearcher().loadUrls(Thread.currentThread().getContextClassLoader()).getUrls() : urls,
+                webResource != null ? new File(webResource) : null,
+                true,
+                null,
+                archive));
 
         for (final Map.Entry<String, Field> f : ports.entrySet()) {
             switch (f.getKey()) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/63792008/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/component/TomEEEmbeddedArgs.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/component/TomEEEmbeddedArgs.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/component/TomEEEmbeddedArgs.java
index 51bd8c5..6750364 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/component/TomEEEmbeddedArgs.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/component/TomEEEmbeddedArgs.java
@@ -27,10 +27,16 @@ public class TomEEEmbeddedArgs {
         this.commandLine = commandLine;
     }
 
+    /**
+     * @return the args passed to the launcher.
+     */
     public String[] getArgs() {
         return args;
     }
 
+    /**
+     * @return the command like if used from tomee Main/FatApp, null otherwise.
+     */
     public CommandLine getCommandLine() {
         return commandLine;
     }


[43/50] tomee git commit: TOMEE-1962 deprecate LocalInitialContextFactory

Posted by rm...@apache.org.
TOMEE-1962 deprecate LocalInitialContextFactory


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

Branch: refs/heads/tomee-1.7.x
Commit: 1ead00932d18728d6b66c923f76953ee4ac7914d
Parents: e0bbf0b
Author: rmannibucau <rm...@apache.org>
Authored: Thu Oct 20 18:27:57 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Oct 20 18:27:57 2016 +0200

----------------------------------------------------------------------
 .../core/LocalInitialContextFactory.java        |  1 +
 .../core/OpenEJBInitialContextFactory.java      | 76 ++++++++++++++++
 .../client/LocalInitialContextFactory.java      |  1 +
 .../core/OpenEJBInitialContextFactoryTest.java  | 92 ++++++++++++++++++++
 4 files changed, 170 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/1ead0093/container/openejb-core/src/main/java/org/apache/openejb/core/LocalInitialContextFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/LocalInitialContextFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/core/LocalInitialContextFactory.java
index ef318e0..de7961c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/LocalInitialContextFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/LocalInitialContextFactory.java
@@ -34,6 +34,7 @@ import java.util.concurrent.locks.ReentrantLock;
  * @version $Rev$ $Date$
  */
 @SuppressWarnings("UseOfObsoleteCollectionType")
+@Deprecated // use org.apache.openejb.core.OpenEJBInitialContextFactory
 public class LocalInitialContextFactory implements InitialContextFactory {
 
     private static final ReentrantLock lock = new ReentrantLock();

http://git-wip-us.apache.org/repos/asf/tomee/blob/1ead0093/container/openejb-core/src/main/java/org/apache/openejb/core/OpenEJBInitialContextFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/OpenEJBInitialContextFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/core/OpenEJBInitialContextFactory.java
new file mode 100644
index 0000000..0d91b41
--- /dev/null
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/OpenEJBInitialContextFactory.java
@@ -0,0 +1,76 @@
+/*
+ * 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.core;
+
+import org.apache.openejb.core.ivm.naming.ContextWrapper;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+
+import javax.naming.Context;
+import javax.naming.NameNotFoundException;
+import javax.naming.NamingException;
+import javax.naming.spi.InitialContextFactory;
+import java.util.Hashtable;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+public class OpenEJBInitialContextFactory implements InitialContextFactory {
+    @Override
+    public Context getInitialContext(final Hashtable env) throws NamingException {
+        // don't validate there env content, it is commonly built from System properties and therefore can inherit a bunch of things
+        return new LocalFallbackContextWrapper(SystemInstance.get().getComponent(ContainerSystem.class).getJNDIContext());
+    }
+
+    private static class LocalFallbackContextWrapper extends ContextWrapper {
+        private final ConcurrentMap<String, String> mapping = new ConcurrentHashMap<>();
+
+        private LocalFallbackContextWrapper(final Context jndiContext) {
+            super(jndiContext);
+        }
+
+        @Override
+        public Object lookup(final String userName) throws NamingException {
+            String jndi = mapping.get(userName);
+            if (jndi == null) {
+                jndi = userName;
+            }
+            try {
+                return super.lookup(jndi);
+            } catch (final NameNotFoundException nnfe) {
+                if (!jndi.startsWith("java:") && !jndi.startsWith("openejb:")) { // try jndi lookup
+                    try {
+                        final String ejb = "java:openejb/local/" + jndi;
+                        final Object lookup = super.lookup(ejb);
+                        mapping.put(userName, ejb);
+                        return lookup;
+                    } catch (final NameNotFoundException nnfeIgnored) { // resource
+                        try {
+                            final String resource = "java:openejb/Resource/" + jndi;
+                            final Object resourceInstance = super.lookup(resource);
+                            mapping.put(userName, resource);
+                            return resourceInstance;
+                        } catch (final NameNotFoundException nnfeIgnoredAgain) {
+                            throw nnfe;
+                        }
+                    }
+                }
+                throw nnfe;
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/1ead0093/container/openejb-core/src/main/java/org/openejb/client/LocalInitialContextFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/openejb/client/LocalInitialContextFactory.java b/container/openejb-core/src/main/java/org/openejb/client/LocalInitialContextFactory.java
index 01372e1..ed3adfc 100644
--- a/container/openejb-core/src/main/java/org/openejb/client/LocalInitialContextFactory.java
+++ b/container/openejb-core/src/main/java/org/openejb/client/LocalInitialContextFactory.java
@@ -21,5 +21,6 @@ package org.openejb.client;
  * @version $Revision: 1222119 $ $Date: 2011-12-22 10:23:14 +0100 (jeu. 22 d�c. 2011) $
  * @deprecated use org.apache.openejb.core.LocalInitialContextFactory
  */
+@Deprecated
 public class LocalInitialContextFactory extends org.apache.openejb.core.LocalInitialContextFactory {
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/1ead0093/container/openejb-core/src/test/java/org/apache/openejb/core/OpenEJBInitialContextFactoryTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/core/OpenEJBInitialContextFactoryTest.java b/container/openejb-core/src/test/java/org/apache/openejb/core/OpenEJBInitialContextFactoryTest.java
new file mode 100644
index 0000000..95be0e3
--- /dev/null
+++ b/container/openejb-core/src/test/java/org/apache/openejb/core/OpenEJBInitialContextFactoryTest.java
@@ -0,0 +1,92 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.core;
+
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.ContainerProperties;
+import org.apache.openejb.testng.PropertiesBuilder;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.ejb.Singleton;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.sql.DataSource;
+import java.util.concurrent.Callable;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+@RunWith(ApplicationComposer.class)
+@Classes(innerClassesAsBean = true)
+@ContainerProperties(@ContainerProperties.Property(name = "db", value = "new://Resource?type=DataSource"))
+public class OpenEJBInitialContextFactoryTest {
+    @Test
+    public void run() throws Exception {
+        final Callable<Boolean> innerTest = new Callable<Boolean>() {
+            @Override
+            public Boolean call() throws Exception {
+                final Context ctx = new InitialContext(new PropertiesBuilder()
+                        .p(Context.INITIAL_CONTEXT_FACTORY, OpenEJBInitialContextFactory.class.getName())
+                        .build());
+
+                // ejbs
+                assertEquals("ejb", SomeEjb.class.cast(ctx.lookup("java:global/openejb/SomeEjb")).from());
+                assertEquals("ejb", SomeEjb.class.cast(ctx.lookup("global/openejb/SomeEjb")).from());
+                assertEquals("ejb", SomeEjb.class.cast(ctx.lookup("java:openejb/local/SomeEjbLocalBean")).from());
+                assertEquals("ejb", SomeEjb.class.cast(ctx.lookup("openejb/local/SomeEjbLocalBean")).from());
+                assertEquals("ejb", SomeEjb.class.cast(ctx.lookup("openejb:local/SomeEjbLocalBean")).from());
+                assertEquals("ejb", SomeEjb.class.cast(ctx.lookup("SomeEjbLocalBean")).from());
+
+                // resources (hibernate use case for instance)
+                assertTrue(DataSource.class.isInstance(ctx.lookup("openejb:Resource/db")));
+                assertTrue(DataSource.class.isInstance(ctx.lookup("java:openejb/Resource/db")));
+                assertTrue(DataSource.class.isInstance(ctx.lookup("openejb/Resource/db")));
+                assertTrue(DataSource.class.isInstance(ctx.lookup("db")));
+                return true;
+            }
+        };
+
+        // in an unmanaged thread
+        final AtomicBoolean result = new AtomicBoolean(false);
+        final Thread outOfContext = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    result.set(innerTest.call());
+                } catch (final Exception e) {
+                    result.set(false);
+                }
+            }
+        });
+        outOfContext.start();
+        outOfContext.join();
+        assertTrue(result.get());
+
+        // and in a managed thread
+        assertTrue(innerTest.call());
+    }
+
+    @Singleton
+    public static class SomeEjb {
+        public String from() {
+            return "ejb";
+        }
+    }
+}


[37/50] tomee git commit: cxf 3.1.8

Posted by rm...@apache.org.
cxf 3.1.8


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

Branch: refs/heads/tomee-1.7.x
Commit: 6db9f41800fcf0434804307bf152d52ee89a449a
Parents: 04c0e98
Author: rmannibucau <rm...@apache.org>
Authored: Tue Oct 18 22:17:56 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Tue Oct 18 22:17:56 2016 +0200

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


http://git-wip-us.apache.org/repos/asf/tomee/blob/6db9f418/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 4f5ebcd..6731cbc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -129,7 +129,7 @@
 
     <tomcat.version>8.5.6</tomcat.version>
 
-    <cxf.version>3.1.7</cxf.version>
+    <cxf.version>3.1.8</cxf.version>
     <ehcache.version>2.9.0</ehcache.version>
     <!-- used by cxf for security (replay attack) -->
     <jetty.version>7.5.3.v20111011</jetty.version>


[17/50] tomee git commit: trying to suspend the tx in progress if there when the emf is lazily created to avoid issues with our managed connections

Posted by rm...@apache.org.
trying to suspend the tx in progress if there when the emf is lazily created to avoid issues with our managed connections


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

Branch: refs/heads/tomee-1.7.x
Commit: 78b76fcaea62d78d19f9416bd361dc4346f40cc2
Parents: 9f14c06
Author: rmannibucau <rm...@apache.org>
Authored: Mon Oct 3 17:30:16 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Mon Oct 3 17:30:16 2016 +0200

----------------------------------------------------------------------
 .../classic/EntityManagerFactoryCallable.java     | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/78b76fca/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
index 854c9c4..6ef05e9 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
@@ -17,6 +17,7 @@
 
 package org.apache.openejb.assembler.classic;
 
+import org.apache.openejb.OpenEJB;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.persistence.PersistenceUnitInfoImpl;
 import org.apache.openejb.util.LogCategory;
@@ -28,6 +29,7 @@ import javax.enterprise.inject.spi.BeanManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.ValidationMode;
 import javax.persistence.spi.PersistenceProvider;
+import javax.transaction.Transaction;
 import javax.validation.ValidatorFactory;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
@@ -108,7 +110,21 @@ public class EntityManagerFactoryCallable implements Callable<EntityManagerFacto
 
             customizeProperties(properties);
 
-            final EntityManagerFactory emf = persistenceProvider.createContainerEntityManagerFactory(unitInfo, properties);
+            // ensure no tx is there cause a managed connection would fail if the provider setAutocCommit(true) and some hib* have this good idea
+            final Transaction transaction;
+            if (unitInfo.isLazilyInitialized()) {
+                transaction = OpenEJB.getTransactionManager().suspend();
+            } else {
+                transaction = null;
+            }
+            final EntityManagerFactory emf;
+            try {
+                emf = persistenceProvider.createContainerEntityManagerFactory(unitInfo, properties);
+            } finally {
+                if (unitInfo.isLazilyInitialized() && transaction != null) {
+                    OpenEJB.getTransactionManager().resume(transaction);
+                }
+            }
 
             if (unitInfo.getProperties() != null
                     && "true".equalsIgnoreCase(unitInfo.getProperties().getProperty(OPENEJB_JPA_INIT_ENTITYMANAGER))


[18/50] tomee git commit: ensuring lifecycle tasks instances can be retrieved by the application

Posted by rm...@apache.org.
ensuring lifecycle tasks instances can be retrieved by the application


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

Branch: refs/heads/tomee-1.7.x
Commit: d5e01c0ee492f2d5fda30171637e78e47a9753a7
Parents: 78b76fc
Author: rmannibucau <rm...@apache.org>
Authored: Tue Oct 4 11:29:57 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Tue Oct 4 11:29:57 2016 +0200

----------------------------------------------------------------------
 .../TomEEEmbeddedApplicationRunner.java         | 48 ++++++++++++++++++--
 .../embedded/SingleInstanceRunnerTest.java      | 16 ++++++-
 2 files changed, 59 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/d5e01c0e/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
index 12033d2..b328d4b 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
@@ -54,6 +54,7 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.CountDownLatch;
 
+import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import static org.apache.openejb.loader.JarLocation.jarLocation;
@@ -151,11 +152,14 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
             }
         }
 
+        final Collection<org.apache.tomee.embedded.LifecycleTask> lifecycleTasks = new ArrayList<>();
         final Collection<Closeable> postTasks = new ArrayList<>();
         final LifecycleTasks tasks = appClass.getAnnotation(LifecycleTasks.class);
         if (tasks != null) {
             for (final Class<? extends org.apache.tomee.embedded.LifecycleTask> type : tasks.value()) {
-                postTasks.add(type.newInstance().beforeContainerStartup());
+                final org.apache.tomee.embedded.LifecycleTask lifecycleTask = type.newInstance();
+                lifecycleTasks.add(lifecycleTask);
+                postTasks.add(lifecycleTask.beforeContainerStartup());
             }
         }
 
@@ -229,6 +233,7 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
 
         final Container container = new Container(configuration);
         SystemInstance.get().setComponent(TomEEEmbeddedArgs.class, new TomEEEmbeddedArgs(args, null));
+        SystemInstance.get().setComponent(LifecycleTaskAccessor.class, new LifecycleTaskAccessor(lifecycleTasks));
         container.deploy(new Container.DeploymentRequest(
                 context,
                 // call ClasspathSearcher that lazily since container needs to be started to not preload logging
@@ -281,9 +286,7 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
                 }
 
                 try {
-                    if (container != null) {
-                        container.close();
-                    }
+                    container.close();
                 } catch (final Exception e) {
                     e.printStackTrace();
                 }
@@ -406,6 +409,14 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
                     f.setAccessible(true);
                 }
                 f.set(target, app);
+            } else if (f.isAnnotationPresent(LifecycleTask.class)) {
+                if (!f.isAccessible()) {
+                    f.setAccessible(true);
+                }
+                final LifecycleTaskAccessor accessor = SystemInstance.get().getComponent(LifecycleTaskAccessor.class);
+                final Class type = f.getType();
+                final Object taskByType = accessor.getTaskByType(type);
+                f.set(target, taskByType);
             }
         }
         final Class<?> superclass = aClass.getSuperclass();
@@ -421,6 +432,11 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
     }
 
     @Retention(RUNTIME)
+    @Target(FIELD)
+    public @interface LifecycleTask {
+    }
+
+    @Retention(RUNTIME)
     @Target(TYPE)
     public @interface Configurers {
         Class<? extends Configurer>[] value();
@@ -429,4 +445,28 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
     public interface Configurer {
         void configure(Configuration configuration);
     }
+
+    public static class LifecycleTaskAccessor {
+        private final Collection<org.apache.tomee.embedded.LifecycleTask> tasks;
+
+        private LifecycleTaskAccessor(final Collection<org.apache.tomee.embedded.LifecycleTask> lifecycleTasks) {
+            this.tasks = lifecycleTasks;
+        }
+
+        public Collection<org.apache.tomee.embedded.LifecycleTask> getTasks() {
+            return tasks;
+        }
+
+        public <T> T getTaskByType(final Class<T> type) {
+            for (final org.apache.tomee.embedded.LifecycleTask task : tasks) {
+                if (type == task.getClass()) {
+                    return (T) task;
+                }
+            }
+            if (Collection.class.isAssignableFrom(type)) {
+                return (T) tasks;
+            }
+            return null;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/d5e01c0e/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
index cf2d039..3c5ae7d 100644
--- a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
+++ b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
@@ -30,6 +30,7 @@ import org.junit.runner.RunWith;
 import java.io.Closeable;
 import java.io.IOException;
 import java.net.URL;
+import java.util.Collection;
 import java.util.Properties;
 
 import static org.junit.Assert.assertEquals;
@@ -39,7 +40,6 @@ import static org.junit.Assert.assertTrue;
 
 // just a manual test to check it works, can't be executed with the rest of the suite,
 // we could use a different surefire execution if we want to add it to the default run
-//@Ignore("can't run with by test containers")
 @RunWith(TomEEEmbeddedSingleRunner.class)
 public class SingleInstanceRunnerTest {
     @Application // app can have several injections/helpers
@@ -58,6 +58,11 @@ public class SingleInstanceRunnerTest {
         assertNotEquals(8080, app.port);
         assertTrue(app.base.toExternalForm().endsWith("/app"));
         assertEquals(app.port, port);
+        assertNotNull(app.task);
+        assertNotNull(app.tasks);
+        assertEquals(1, app.tasks.size());
+        assertEquals(app.task, app.tasks.iterator().next());
+        assertEquals(app.task, MyTask.instance);
     }
 
     @Application
@@ -72,6 +77,12 @@ public class SingleInstanceRunnerTest {
         @RandomPort("http")
         private URL base;
 
+        @TomEEEmbeddedApplicationRunner.LifecycleTask
+        private MyTask task;
+
+        @TomEEEmbeddedApplicationRunner.LifecycleTask
+        private Collection<LifecycleTask> tasks;
+
         @org.apache.openejb.testing.Configuration
         public Properties add() {
             return new PropertiesBuilder().p("prog", "p").build();
@@ -79,8 +90,11 @@ public class SingleInstanceRunnerTest {
     }
 
     public static class MyTask implements LifecycleTask {
+        private static MyTask instance;
+
         @Override
         public Closeable beforeContainerStartup() {
+            instance = this;
             System.out.println(">>> start");
             System.setProperty("my.server.port", "128463");
             return new Closeable() {


[46/50] tomee git commit: preparing bval upgrade

Posted by rm...@apache.org.
preparing bval upgrade


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

Branch: refs/heads/tomee-1.7.x
Commit: f1eacc39db8606b1fef2e8761243d9ded59158a5
Parents: a36aa12
Author: rmannibucau <rm...@apache.org>
Authored: Thu Oct 27 17:46:22 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Oct 27 17:46:22 2016 +0200

----------------------------------------------------------------------
 .../apache/openejb/util/proxy/QueryProxy.java   | 39 ++++++++++++++------
 pom.xml                                         |  2 +-
 2 files changed, 28 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/f1eacc39/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/QueryProxy.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/QueryProxy.java b/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/QueryProxy.java
index 042b039..ae3b673 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/QueryProxy.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/QueryProxy.java
@@ -17,7 +17,6 @@
 
 package org.apache.openejb.util.proxy;
 
-import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
@@ -33,6 +32,7 @@ import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import javax.persistence.metamodel.EntityType;
 import javax.persistence.metamodel.SingularAttribute;
+import java.lang.reflect.Field;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -44,6 +44,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import static org.apache.commons.lang3.StringUtils.capitalize;
+
 public class QueryProxy implements InvocationHandler {
     private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, QueryProxy.class);
 
@@ -242,17 +244,7 @@ public class QueryProxy implements InvocationHandler {
                 }
                 final String idName = id.getName();
 
-                final Object idValue;
-                try {
-                    idValue = BeanUtils.getProperty(entity, idName);
-                } catch (final InvocationTargetException e) {
-                    throw new IllegalArgumentException("can't invoke to get entity id");
-                } catch (final NoSuchMethodException e) {
-                    throw new IllegalArgumentException("can't find the method to get entity id");
-                } catch (final IllegalAccessException e) {
-                    throw new IllegalArgumentException("can't access field/method to get entity id");
-                }
-
+                final Object idValue = getProperty(entity, idName);
                 entity = em.getReference(et.getJavaType(), idValue);
                 if (entity == null) {
                     throw new IllegalArgumentException("entity " + entity + " is not managed and can't be found.");
@@ -264,6 +256,29 @@ public class QueryProxy implements InvocationHandler {
         }
     }
 
+    // can be optimized for runtime, since there are today nice alternative we probably don't need
+    private Object getProperty(final Object entity, final String idName) {
+        try {
+            final Method method = entity.getClass().getMethod("get" + capitalize(idName));
+            if (!method.isAccessible()) {
+                method.setAccessible(true);
+            }
+            return method.invoke(entity);
+        } catch (final NoSuchMethodException | IllegalAccessException e) {
+            try {
+                final Field declaredField = entity.getClass().getDeclaredField(idName);
+                if (!declaredField.isAccessible()) {
+                    declaredField.setAccessible(true);
+                }
+                return declaredField.get(entity);
+            } catch (final NoSuchFieldException | IllegalAccessException e1) {
+                throw new IllegalArgumentException("Bad id: " + idName + " for " + entity);
+            }
+        } catch (final InvocationTargetException e) {
+            throw new IllegalStateException(e.getCause());
+        }
+    }
+
     private Object merge(final Object[] args, final Class<?> returnType) {
         if (args != null && args.length == 1 && returnType.equals(args[0].getClass())) {
             return em.merge(args[0]);

http://git-wip-us.apache.org/repos/asf/tomee/blob/f1eacc39/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index c06eaae..0ece54c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -161,7 +161,7 @@
     <commons-io.version>2.4</commons-io.version>
     <commons-net.version>3.3</commons-net.version>
 
-    <bval.version>1.1.1</bval.version>
+    <bval.version>1.1.2-SNAPSHOT</bval.version>
     <org.apache.activemq.version>5.14.1</org.apache.activemq.version>
     <org.springframework.version>3.1.4.RELEASE</org.springframework.version>
     <junit.version>4.12</junit.version>


[22/50] tomee git commit: making our best to ensure TomEEEmbeddedApplicationRunner stops the container before we delete base dir

Posted by rm...@apache.org.
making our best to ensure TomEEEmbeddedApplicationRunner stops the container before we delete base dir


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

Branch: refs/heads/tomee-1.7.x
Commit: 8143fc0fda1394153f21971bdf2126bad59e2b7b
Parents: 59deb62
Author: rmannibucau <rm...@apache.org>
Authored: Tue Oct 4 15:53:32 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Tue Oct 4 15:53:32 2016 +0200

----------------------------------------------------------------------
 .../org/apache/tomee/embedded/Container.java    |  2 +-
 .../TomEEEmbeddedApplicationRunner.java         | 31 +++++++++++++++++---
 2 files changed, 28 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/8143fc0f/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
index 0cd4cfa..06b33dd 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
@@ -424,6 +424,7 @@ public class Container implements AutoCloseable {
         // create basic installation in setup to be able to handle anything the caller does between setup() and start()
         base = new File(getBaseDir());
         if (base.exists()) {
+            // TODO: get rid of Files which has its own shutdown hook which can mess up order if started/shutdown multiple times?
             Files.delete(base);
         }
 
@@ -1103,7 +1104,6 @@ public class Container implements AutoCloseable {
     }
 
     private static class TomcatWithFastSessionIDs extends InternalTomcat {
-
         @Override
         public void start() throws LifecycleException {
             // Use fast, insecure session ID generation for all tests

http://git-wip-us.apache.org/repos/asf/tomee/blob/8143fc0f/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
index 5753bc0..7f69d32 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
@@ -53,16 +53,38 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.CountDownLatch;
+import java.util.logging.Logger;
 
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.util.logging.Level.SEVERE;
 import static org.apache.openejb.loader.JarLocation.jarLocation;
 import static org.apache.openejb.util.Classes.ancestors;
 
 @Vetoed
 public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
+    private static final ConcurrentMap<Runnable, Runnable> SHUTDOWN_TASKS = new ConcurrentHashMap<>();
+
+    static { // to ensure we have an ordering for shutdown tasks, we typically want to avoid Files.delete() before stop()
+        Runtime.getRuntime().addShutdownHook(new Thread("TomEEEmbeddedApplicationRunner-shutdown") {
+            @Override
+            public void run() {
+                for (final Runnable task : SHUTDOWN_TASKS.keySet()) {
+                    try {
+                        task.run();
+                    } catch (final Exception e) {
+                        Logger.getLogger(TomEEEmbeddedApplicationRunner.class.getName()).log(SEVERE, e.getMessage(), e);
+                    }
+                }
+                SHUTDOWN_TASKS.clear();
+            }
+        });
+    }
+
     private volatile boolean started = false;
     private volatile Object app;
     private volatile Thread hook;
@@ -269,7 +291,7 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
             }
         }
 
-        Runtime.getRuntime().addShutdownHook(hook = new Thread() {
+        hook = new Thread() {
             @Override
             public void run() { // ensure to log errors but not fail there
                 for (final Method mtd : appFinder.findAnnotatedMethods(PreDestroy.class)) {
@@ -302,12 +324,13 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
                 postTasks.clear();
                 app = null;
                 try {
-                    Runtime.getRuntime().removeShutdownHook(this);
+                    SHUTDOWN_TASKS.remove(this);
                 } catch (final Exception e) {
                     // no-op: that's ok at that moment if not called manually
                 }
             }
-        });
+        };
+        SHUTDOWN_TASKS.put(hook, hook);
     }
 
     // if app is not set then we'll check if -Dtomee.application-composer.application is set otherwise
@@ -350,7 +373,7 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
     public synchronized void close() {
         if (hook != null) {
             hook.run();
-            Runtime.getRuntime().removeShutdownHook(hook);
+            SHUTDOWN_TASKS.remove(hook);
             hook = null;
             app = null;
         }


[33/50] tomee git commit: upgrading javaee-api to have a valid bean validation api

Posted by rm...@apache.org.
upgrading javaee-api to have a valid bean validation api


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

Branch: refs/heads/tomee-1.7.x
Commit: 190b51eea0bc8e2cf9f8ac5ea99b00f253bb7396
Parents: b95c929
Author: rmannibucau <rm...@apache.org>
Authored: Fri Oct 14 12:00:09 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Fri Oct 14 12:00:09 2016 +0200

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


http://git-wip-us.apache.org/repos/asf/tomee/blob/190b51ee/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5fc5677..3679ba9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,7 +94,7 @@
     <tomee.version>${project.version}</tomee.version>
     
     <!-- to change easily the javaee api version -->
-    <version.javaee-api>7.0</version.javaee-api>
+    <version.javaee-api>7.0-1-SNAPSHOT</version.javaee-api>
 
     <openjpa.version>2.4.1</openjpa.version>
     <org.apache.openwebbeans.version>1.7.0</org.apache.openwebbeans.version>


[36/50] tomee git commit: TOMEE-1960, closing JarFile - thanks Kaloyan Spiridonov

Posted by rm...@apache.org.
TOMEE-1960, closing JarFile - thanks Kaloyan Spiridonov


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

Branch: refs/heads/tomee-1.7.x
Commit: 04c0e98e9e58110e6da47070caf4f88ae72ad3d8
Parents: 80b788d
Author: rmannibucau <rm...@apache.org>
Authored: Fri Oct 14 17:21:28 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Fri Oct 14 17:21:28 2016 +0200

----------------------------------------------------------------------
 .../tomee/catalina/TomcatWebAppBuilder.java     |  9 ++--
 .../org/apache/tomee/installer/Installer.java   | 49 +++++++++-----------
 .../apache/tomee/loader/OpenEJBListener.java    |  3 +-
 3 files changed, 27 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/04c0e98e/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 1553219..e834e83 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
@@ -471,10 +471,11 @@ public class TomcatWebAppBuilder implements WebAppBuilder, ContextListener, Pare
                         logger.info("using context file " + cXml.getAbsolutePath());
                     }
                 } else { // war
-                    final JarFile warAsJar = new JarFile(war);
-                    final JarEntry entry = warAsJar.getJarEntry(Constants.ApplicationContextXml);
-                    if (entry != null) {
-                        contextXmlUrl = new URL("jar:" + war.getAbsoluteFile().toURI().toURL().toExternalForm() + "!/" + Constants.ApplicationContextXml);
+                    try (final JarFile warAsJar = new JarFile(war)) {
+                        final JarEntry entry = warAsJar.getJarEntry(Constants.ApplicationContextXml);
+                        if (entry != null) {
+                            contextXmlUrl = new URL("jar:" + war.getAbsoluteFile().toURI().toURL().toExternalForm() + "!/" + Constants.ApplicationContextXml);
+                        }
                     }
                 }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/04c0e98e/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
index 1581045..301dfd5 100644
--- a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
+++ b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
@@ -598,29 +598,24 @@ public class Installer implements InstallerInterface {
             // the core jar contains the config files
             return;
         }
-        final JarFile coreJar;
-        try {
-            coreJar = new JarFile(openejbCoreJar);
-        } catch (final IOException e) {
-            return;
-        }
-
-        //
-        // conf/tomee.xml
-        //
-        final File openEjbXmlFile = new File(confDir, "tomee.xml");
-        if (!openEjbXmlFile.exists()) {
-            // read in the openejb.xml file from the openejb core jar
-            final String openEjbXml = Installers.readEntry(coreJar, "default.openejb.conf", alerts);
-            if (openEjbXml != null) {
-                if (Installers.writeAll(openEjbXmlFile, openEjbXml.replace("<openejb>", "<tomee>").replace("</openejb>", "</tomee>"), alerts)) {
-                    alerts.addInfo("Copy tomee.xml to conf");
+        try (final JarFile coreJar = new JarFile(openejbCoreJar)) {
+            //
+            // conf/tomee.xml
+            //
+            final File openEjbXmlFile = new File(confDir, "tomee.xml");
+            if (!openEjbXmlFile.exists()) {
+                // read in the openejb.xml file from the openejb core jar
+                final String openEjbXml = Installers.readEntry(coreJar, "default.openejb.conf", alerts);
+                if (openEjbXml != null) {
+                    if (Installers.writeAll(openEjbXmlFile, openEjbXml.replace("<openejb>", "<tomee>").replace("</openejb>", "</tomee>"), alerts)) {
+                        alerts.addInfo("Copy tomee.xml to conf");
+                    }
                 }
             }
+        } catch (final IOException e) {
+            return;
         }
 
-
-        //
         // conf/logging.properties
         // now we are using tomcat one of jdk one by default
         //
@@ -809,16 +804,14 @@ public class Installer implements InstallerInterface {
         //
         // conf/web.xml
         //
-        final JarFile openejbTomcatCommonJar;
-        try {
-            openejbTomcatCommonJar = new JarFile(paths.geOpenEJBTomcatCommonJar());
+        try (final JarFile openejbTomcatCommonJar = new JarFile(paths.geOpenEJBTomcatCommonJar())) {
+            final File webXmlFile = new File(confDir, "web.xml");
+            final String webXml = Installers.readEntry(openejbTomcatCommonJar, "conf/web.xml", alerts);
+            if (Installers.writeAll(webXmlFile, webXml, alerts)) {
+                alerts.addInfo("Set jasper in production mode in TomEE web.xml");
+            }
         } catch (final IOException e) {
-            return;
-        }
-        final File webXmlFile = new File(confDir, "web.xml");
-        final String webXml = Installers.readEntry(openejbTomcatCommonJar, "conf/web.xml", alerts);
-        if (Installers.writeAll(webXmlFile, webXml, alerts)) {
-            alerts.addInfo("Set jasper in production mode in TomEE web.xml");
+            // no-op
         }
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/04c0e98e/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java b/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java
index 3eb0e9a..b76d35d 100644
--- a/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java
+++ b/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java
@@ -141,8 +141,7 @@ public class OpenEJBListener implements LifecycleListener {
 
     private static boolean isTomEEWar(final File file) {
         final String name = file.getName();
-        try {
-            final JarFile jarFile = new JarFile(file);
+        try (final JarFile jarFile = new JarFile(file)) {
             return jarFile.getEntry("lib") != null
                     && (name.startsWith("tomee") || name.startsWith("openejb")
                     && name.endsWith(".war"));


[07/50] tomee git commit: excluding log4j-sl4j and out internal swizzle classes, pretty much no risk there

Posted by rm...@apache.org.
excluding log4j-sl4j and out internal swizzle classes, pretty much no risk there


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

Branch: refs/heads/tomee-1.7.x
Commit: 0abf01b667c1fdf612f45fdffedf96c9e31f53b9
Parents: eb2b301
Author: rmannibucau <rm...@apache.org>
Authored: Thu Sep 29 21:30:29 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Sep 29 21:30:29 2016 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/openejb/util/ContainerClassesFilter.java | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/0abf01b6/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
index 70fc8b7..eb3e811 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
@@ -96,6 +96,7 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("org.apache.johnzon");
         excluded.add("org.apache.juli");
         excluded.add("org.apache.logging.log4j.core");
+        excluded.add("org.apache.logging.slf4j");
         excluded.add("org.apache.myfaces");
         excluded.add("org.apache.neethi");
         excluded.add("org.apache.openejb");
@@ -109,6 +110,8 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("org.apache.xml.resolver");
         excluded.add("org.bouncycastle");
         excluded.add("org.codehaus.stax2");
+        excluded.add("org.codehaus.swizzle.Grep");
+        excluded.add("org.codehaus.swizzle.Lexer");
         excluded.add("org.cryptacular");
         excluded.add("org.eclipse.jdt.core");
         excluded.add("org.eclipse.jdt.internal");


[10/50] tomee git commit: cleanup some tests

Posted by rm...@apache.org.
cleanup some tests


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

Branch: refs/heads/tomee-1.7.x
Commit: d5522107219d60175f60180dc870dd2e3759e4f3
Parents: 4d3b3fb
Author: rmannibucau <rm...@apache.org>
Authored: Thu Sep 29 22:56:15 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Sep 29 22:56:15 2016 +0200

----------------------------------------------------------------------
 .../src/test/java/org/superbiz/AlternateDataSourceTest.java        | 2 +-
 .../src/test/java/org/superbiz/moviefun/MoviesEJBTest.java         | 1 -
 .../java/org/superbiz/moviefun/MoviesArquillianHtmlUnitTest.java   | 1 -
 .../src/test/java/org/superbiz/moviefun/MoviesEJBTest.java         | 1 -
 .../src/test/java/org/apache/tomee/embedded/ConfigurationTest.java | 1 -
 5 files changed, 1 insertion(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/d5522107/examples/datasource-versioning/src/test/java/org/superbiz/AlternateDataSourceTest.java
----------------------------------------------------------------------
diff --git a/examples/datasource-versioning/src/test/java/org/superbiz/AlternateDataSourceTest.java b/examples/datasource-versioning/src/test/java/org/superbiz/AlternateDataSourceTest.java
index 2877434..c7def46 100644
--- a/examples/datasource-versioning/src/test/java/org/superbiz/AlternateDataSourceTest.java
+++ b/examples/datasource-versioning/src/test/java/org/superbiz/AlternateDataSourceTest.java
@@ -41,7 +41,7 @@ public class AlternateDataSourceTest {
 
         return ShrinkWrap.create(WebArchive.class, "test.war")
                 .addClasses(DataSourceTester.class)
-                .addAsResource(new ClassLoaderAsset("META-INF/ejb-jar.xml"), "META-INF/ejb-jar.xml");
+                .addAsResource(new ClassLoaderAsset("META-INF/beans.xml"), "META-INF/beans.xml");
         //We are using src/test/conf/tomee.xml, but this also works - .addAsResource(new ClassLoaderAsset("META-INF/resources.xml"), "META-INF/resources.xml");
         //Or even using a persistence context - .addAsResource(new ClassLoaderAsset("META-INF/persistence.xml"), "META-INF/persistence.xml");
     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/d5522107/examples/moviefun-rest/src/test/java/org/superbiz/moviefun/MoviesEJBTest.java
----------------------------------------------------------------------
diff --git a/examples/moviefun-rest/src/test/java/org/superbiz/moviefun/MoviesEJBTest.java b/examples/moviefun-rest/src/test/java/org/superbiz/moviefun/MoviesEJBTest.java
index 15a0f22..e195c0c 100644
--- a/examples/moviefun-rest/src/test/java/org/superbiz/moviefun/MoviesEJBTest.java
+++ b/examples/moviefun-rest/src/test/java/org/superbiz/moviefun/MoviesEJBTest.java
@@ -39,7 +39,6 @@ public class MoviesEJBTest {
     public static WebArchive createDeployment() {
         return ShrinkWrap.create(WebArchive.class, "test.war")
                 .addClasses(Movie.class, MoviesBean.class, MoviesEJBTest.class)
-                .addAsResource(new ClassLoaderAsset("META-INF/ejb-jar.xml"), "META-INF/ejb-jar.xml")
                 .addAsResource(new ClassLoaderAsset("META-INF/persistence.xml"), "META-INF/persistence.xml");
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/d5522107/examples/moviefun/src/test/java/org/superbiz/moviefun/MoviesArquillianHtmlUnitTest.java
----------------------------------------------------------------------
diff --git a/examples/moviefun/src/test/java/org/superbiz/moviefun/MoviesArquillianHtmlUnitTest.java b/examples/moviefun/src/test/java/org/superbiz/moviefun/MoviesArquillianHtmlUnitTest.java
index c83cac4..6ae1dd0 100644
--- a/examples/moviefun/src/test/java/org/superbiz/moviefun/MoviesArquillianHtmlUnitTest.java
+++ b/examples/moviefun/src/test/java/org/superbiz/moviefun/MoviesArquillianHtmlUnitTest.java
@@ -61,7 +61,6 @@ public class MoviesArquillianHtmlUnitTest {
 
         WebArchive war = ShrinkWrap.create(WebArchive.class, "test.war")
                 .addClasses(Movie.class, MoviesBean.class, MoviesArquillianHtmlUnitTest.class, ActionServlet.class)
-                .addAsResource(new ClassLoaderAsset("META-INF/ejb-jar.xml"), "META-INF/ejb-jar.xml")
                 .addAsResource(new ClassLoaderAsset("META-INF/persistence.xml"), "META-INF/persistence.xml")
                 .addAsLibraries(libs);
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/d5522107/examples/moviefun/src/test/java/org/superbiz/moviefun/MoviesEJBTest.java
----------------------------------------------------------------------
diff --git a/examples/moviefun/src/test/java/org/superbiz/moviefun/MoviesEJBTest.java b/examples/moviefun/src/test/java/org/superbiz/moviefun/MoviesEJBTest.java
index 3824df9..63a081d 100644
--- a/examples/moviefun/src/test/java/org/superbiz/moviefun/MoviesEJBTest.java
+++ b/examples/moviefun/src/test/java/org/superbiz/moviefun/MoviesEJBTest.java
@@ -39,7 +39,6 @@ public class MoviesEJBTest {
     public static WebArchive createDeployment() {
         return ShrinkWrap.create(WebArchive.class, "test.war")
                 .addClasses(Movie.class, MoviesBean.class, MoviesEJBTest.class)
-                .addAsResource(new ClassLoaderAsset("META-INF/ejb-jar.xml"), "META-INF/ejb-jar.xml")
                 .addAsResource(new ClassLoaderAsset("META-INF/persistence.xml"), "META-INF/persistence.xml");
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/d5522107/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/ConfigurationTest.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/ConfigurationTest.java b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/ConfigurationTest.java
index b072491..ccb9a3b 100644
--- a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/ConfigurationTest.java
+++ b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/ConfigurationTest.java
@@ -56,7 +56,6 @@ public class ConfigurationTest {
                 .p("login", "")
                 .p("login.realmName", "app")
                 .p("login.authMethod", "BASIC")
-                .p("login", "")
                 .p("securityConstraint", "")
                 .p("securityConstraint.authConstraint", "true")
                 .p("securityConstraint.authRole", "**")


[16/50] tomee git commit: ensure lazy jpa property is read from system properties too

Posted by rm...@apache.org.
ensure lazy jpa property is read from system properties too


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

Branch: refs/heads/tomee-1.7.x
Commit: 9f14c0610d24a519bf4a58387f1de9bddb7446e7
Parents: 6cba733
Author: rmannibucau <rm...@apache.org>
Authored: Mon Oct 3 17:17:12 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Mon Oct 3 17:17:12 2016 +0200

----------------------------------------------------------------------
 .../org/apache/openejb/assembler/classic/PersistenceBuilder.java  | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/9f14c061/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java
index 5a54b21..1502888 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java
@@ -69,7 +69,8 @@ public class PersistenceBuilder {
         // Exclude Unlisted Classes
         unitInfo.setExcludeUnlistedClasses(info.excludeUnlistedClasses);
 
-        unitInfo.setLazilyInitialized(info.webappName != null || "true".equalsIgnoreCase(info.properties.getProperty("tomee.jpa.factory.lazy", "false")));
+        unitInfo.setLazilyInitialized(info.webappName != null || "true".equalsIgnoreCase(info.properties.getProperty("tomee.jpa.factory.lazy",
+                SystemInstance.get().getProperty("tomee.jpa.factory.lazy", "false"))));
 
         final Context context = SystemInstance.get().getComponent(ContainerSystem.class).getJNDIContext();
 


[40/50] tomee git commit: excluding owb too

Posted by rm...@apache.org.
excluding owb too


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

Branch: refs/heads/tomee-1.7.x
Commit: 2d23d10894de4898f97cc17ff6f8d2b527877135
Parents: 16fa1d5
Author: rmannibucau <rm...@apache.org>
Authored: Wed Oct 19 09:54:43 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Wed Oct 19 09:54:43 2016 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/openejb/util/ContainerClassesFilter.java   | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/2d23d108/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
index 0ab89f1..e58ccb4 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
@@ -107,6 +107,7 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("org.apache.tomcat");
         excluded.add("org.apache.tomee");
         excluded.add("org.apache.velocity");
+        excluded.add("org.apache.webbeans");
         excluded.add("org.apache.ws");
         excluded.add("org.apache.wss4j");
         excluded.add("org.apache.xbean");


[21/50] tomee git commit: final

Posted by rm...@apache.org.
final


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

Branch: refs/heads/tomee-1.7.x
Commit: 59deb6220eb8da2f74d03e64dfad4dc20dc425f2
Parents: 5c33866
Author: rmannibucau <rm...@apache.org>
Authored: Tue Oct 4 13:35:22 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Tue Oct 4 13:35:22 2016 +0200

----------------------------------------------------------------------
 .../org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/59deb622/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
index 7721aa7..5753bc0 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
@@ -449,7 +449,7 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
         void configure(Configuration configuration);
     }
 
-    public static class LifecycleTaskAccessor {
+    public static final class LifecycleTaskAccessor {
         private final Collection<org.apache.tomee.embedded.LifecycleTask> tasks;
 
         private LifecycleTaskAccessor(final Collection<org.apache.tomee.embedded.LifecycleTask> lifecycleTasks) {


[30/50] tomee git commit: TOMEE-1958 mockito integration for app composer doesn't support to be set as property

Posted by rm...@apache.org.
TOMEE-1958 mockito integration for app composer doesn't support to be set as property


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

Branch: refs/heads/tomee-1.7.x
Commit: 4d1a577c9d18d2b8e660b38b8cbafc2f26a00798
Parents: 823790b
Author: rmannibucau <rm...@apache.org>
Authored: Thu Oct 13 13:32:40 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Oct 13 13:32:40 2016 +0200

----------------------------------------------------------------------
 .../openejb/mockito/MockitoExtension.java       |  9 ++-
 .../MockitoAndAppComposerClassLevelTest.java    | 71 ++++++++++++++++++++
 2 files changed, 79 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/4d1a577c/utils/openejb-mockito/src/main/java/org/apache/openejb/mockito/MockitoExtension.java
----------------------------------------------------------------------
diff --git a/utils/openejb-mockito/src/main/java/org/apache/openejb/mockito/MockitoExtension.java b/utils/openejb-mockito/src/main/java/org/apache/openejb/mockito/MockitoExtension.java
index 2e08ea3..854a536 100644
--- a/utils/openejb-mockito/src/main/java/org/apache/openejb/mockito/MockitoExtension.java
+++ b/utils/openejb-mockito/src/main/java/org/apache/openejb/mockito/MockitoExtension.java
@@ -16,17 +16,19 @@
  */
 package org.apache.openejb.mockito;
 
+import org.apache.openejb.injection.FallbackPropertyInjector;
+import org.apache.openejb.loader.SystemInstance;
 import org.apache.webbeans.annotation.AnyLiteral;
 import org.apache.webbeans.annotation.DefaultLiteral;
 import org.apache.webbeans.annotation.NamedLiteral;
 import org.mockito.cglib.proxy.Factory;
 
-import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.context.Dependent;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.event.Observes;
 import javax.enterprise.inject.spi.AfterBeanDiscovery;
 import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeforeBeanDiscovery;
 import javax.enterprise.inject.spi.Extension;
 import javax.enterprise.inject.spi.InjectionPoint;
 import java.lang.annotation.Annotation;
@@ -44,6 +46,11 @@ public class MockitoExtension implements Extension {
     private static final Annotation DEFAULT_ANNOTATION = new DefaultLiteral();
     private static final Annotation ANY_ANNOTATION = new AnyLiteral();
 
+    public void addMocks(@Observes final BeforeBeanDiscovery bbd) {
+        // ensure it is init
+        SystemInstance.get().getComponent(FallbackPropertyInjector.class);
+    }
+
     public void addMocks(@Observes final AfterBeanDiscovery abd) {
         for (Map.Entry<Class<?>, Object> instance : MockRegistry.mocksByType().entrySet()) {
             abd.addBean(new MockBean(instance.getKey(), instance.getValue()));

http://git-wip-us.apache.org/repos/asf/tomee/blob/4d1a577c/utils/openejb-mockito/src/test/java/org/apache/openejb/mockito/MockitoAndAppComposerClassLevelTest.java
----------------------------------------------------------------------
diff --git a/utils/openejb-mockito/src/test/java/org/apache/openejb/mockito/MockitoAndAppComposerClassLevelTest.java b/utils/openejb-mockito/src/test/java/org/apache/openejb/mockito/MockitoAndAppComposerClassLevelTest.java
new file mode 100644
index 0000000..d454f58
--- /dev/null
+++ b/utils/openejb-mockito/src/test/java/org/apache/openejb/mockito/MockitoAndAppComposerClassLevelTest.java
@@ -0,0 +1,71 @@
+/**
+ * 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.mockito;
+
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.ContainerProperties;
+import org.apache.openejb.testing.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+import javax.ejb.EJB;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.when;
+
+@RunWith(ApplicationComposer.class)
+@ContainerProperties(
+        @ContainerProperties.Property(name = "org.apache.openejb.injection.FallbackPropertyInjector", value = "org.apache.openejb.mockito.MockitoInjector")
+)
+public class MockitoAndAppComposerClassLevelTest {
+    @EJB
+    private Facade facade;
+
+    @Mock
+    private Hello mock;
+
+    @Mock(name = "named")
+    private Hello named;
+
+    @Module
+    public Class<?>[] classes() {
+        return new Class<?>[] { Hello.class, Facade.class };
+    }
+
+    @Test
+    public void testDefault() {
+        // play with mocks
+        when(mock.hi())
+            .thenReturn("openejb-mockito");
+        when(mock.id())
+                .thenReturn(12345);
+
+        // test
+        assertEquals("openejb-mockito", facade.hello());
+    }
+
+    @Test
+    public void testName() {
+        // play with mocks
+        when(named.hi())
+                .thenReturn("named");
+
+        // test
+        assertEquals("named", facade.name());
+    }
+}


[19/50] tomee git commit: app class should be an observer by default and adding TomEEEmbeddedApplicationRunnerInjection to simplify custom injections

Posted by rm...@apache.org.
app class should be an observer by default and adding TomEEEmbeddedApplicationRunnerInjection to simplify custom injections


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

Branch: refs/heads/tomee-1.7.x
Commit: 3bb08cbe19cb9c1ae3419ac40e9467ed8fcb8eae
Parents: d5e01c0
Author: rmannibucau <rm...@apache.org>
Authored: Tue Oct 4 11:44:52 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Tue Oct 4 11:44:52 2016 +0200

----------------------------------------------------------------------
 .../TomEEEmbeddedApplicationRunner.java         |  4 ++
 ...TomEEEmbeddedApplicationRunnerInjection.java | 54 ++++++++++++++++++++
 .../embedded/SingleInstanceRunnerTest.java      | 19 ++++++-
 3 files changed, 76 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/3bb08cbe/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
index b328d4b..34826c3 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
@@ -26,6 +26,7 @@ import org.apache.openejb.testing.Jars;
 import org.apache.openejb.testing.RandomPort;
 import org.apache.openejb.testing.WebResource;
 import org.apache.tomee.embedded.component.TomEEEmbeddedArgs;
+import org.apache.tomee.embedded.event.TomEEEmbeddedApplicationRunnerInjection;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.inject.OWBInjector;
 import org.apache.xbean.finder.AnnotationFinder;
@@ -255,6 +256,7 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
             }
         }
 
+        SystemInstance.get().addObserver(app);
         composerInject(app);
 
         final AnnotationFinder appFinder = new AnnotationFinder(new ClassesArchive(appClass));
@@ -423,6 +425,8 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
         if (superclass != Object.class) {
             composerInject(superclass);
         }
+
+        SystemInstance.get().fireEvent(new TomEEEmbeddedApplicationRunnerInjection(target));
     }
 
     @Retention(RUNTIME)

http://git-wip-us.apache.org/repos/asf/tomee/blob/3bb08cbe/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/event/TomEEEmbeddedApplicationRunnerInjection.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/event/TomEEEmbeddedApplicationRunnerInjection.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/event/TomEEEmbeddedApplicationRunnerInjection.java
new file mode 100644
index 0000000..8be133a
--- /dev/null
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/event/TomEEEmbeddedApplicationRunnerInjection.java
@@ -0,0 +1,54 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.tomee.embedded.event;
+
+import org.apache.openejb.observer.Event;
+
+import java.lang.reflect.Field;
+
+@Event
+public class TomEEEmbeddedApplicationRunnerInjection {
+    private final Object instance;
+
+    public TomEEEmbeddedApplicationRunnerInjection(final Object instance) {
+        this.instance = instance;
+    }
+
+    public Object getInstance() {
+        return instance;
+    }
+
+    public <T> TomEEEmbeddedApplicationRunnerInjection inject(final Class<T> type, final T value) {
+        Class<?> aClass = instance.getClass();
+        while (aClass != null) {
+            for (final Field f : aClass.getDeclaredFields()) {
+                if (f.getType().isAssignableFrom(type)) {
+                    if (!f.isAccessible()) {
+                        f.setAccessible(true);
+                    }
+                    try {
+                        f.set(instance, value);
+                    } catch (final IllegalAccessException e) {
+                        throw new IllegalStateException(e);
+                    }
+                }
+            }
+            aClass = aClass.getSuperclass();
+        }
+        return this;
+    }
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/3bb08cbe/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
index 3c5ae7d..8bb73e7 100644
--- a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
+++ b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
@@ -18,11 +18,13 @@ package org.apache.tomee.embedded;
 
 import org.apache.openejb.assembler.classic.Assembler;
 import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.observer.Observes;
 import org.apache.openejb.testing.Application;
 import org.apache.openejb.testing.Classes;
 import org.apache.openejb.testing.ContainerProperties;
 import org.apache.openejb.testing.RandomPort;
 import org.apache.openejb.testng.PropertiesBuilder;
+import org.apache.tomee.embedded.event.TomEEEmbeddedApplicationRunnerInjection;
 import org.apache.tomee.embedded.junit.TomEEEmbeddedSingleRunner;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -63,12 +65,14 @@ public class SingleInstanceRunnerTest {
         assertEquals(1, app.tasks.size());
         assertEquals(app.task, app.tasks.iterator().next());
         assertEquals(app.task, MyTask.instance);
+        assertNotNull(app.custom);
     }
 
     @Application
     @Classes(context = "app")
     @ContainerProperties(@ContainerProperties.Property(name = "t", value = "set"))
-    @TomEEEmbeddedApplicationRunner.LifecycleTasks(MyTask.class) // can start a ftp/sftp/elasticsearch/mongo/... server before tomee
+    @TomEEEmbeddedApplicationRunner.LifecycleTasks(MyTask.class)
+    // can start a ftp/sftp/elasticsearch/mongo/... server before tomee
     @TomEEEmbeddedApplicationRunner.Configurers(SetMyProperty.class)
     public static class TheApp {
         @RandomPort("http")
@@ -87,6 +91,19 @@ public class SingleInstanceRunnerTest {
         public Properties add() {
             return new PropertiesBuilder().p("prog", "p").build();
         }
+
+        private Custom custom;
+
+        public void doInject(@Observes final TomEEEmbeddedApplicationRunnerInjection injector) {
+            injector.inject(Custom.class, new Custom())
+                    .inject(NotHere.class, new NotHere());
+        }
+    }
+
+    public static class NotHere {
+    }
+
+    public static class Custom {
     }
 
     public static class MyTask implements LifecycleTask {


[45/50] tomee git commit: upgrading commons lang3

Posted by rm...@apache.org.
upgrading commons lang3


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

Branch: refs/heads/tomee-1.7.x
Commit: a36aa128cd5ec832b334113db26ded733c40925e
Parents: 37eb102
Author: rmannibucau <rm...@apache.org>
Authored: Sat Oct 22 19:56:31 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Sat Oct 22 19:56:31 2016 +0200

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


http://git-wip-us.apache.org/repos/asf/tomee/blob/a36aa128/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 6731cbc..c06eaae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -157,7 +157,7 @@
     <commons-codec.version>1.10</commons-codec.version>
     <commons-fileupload.version>1.3.1</commons-fileupload.version>
     <commons-discovery.version>0.5</commons-discovery.version>
-    <commons-lang3.version>3.4</commons-lang3.version>
+    <commons-lang3.version>3.5</commons-lang3.version>
     <commons-io.version>2.4</commons-io.version>
     <commons-net.version>3.3</commons-net.version>
 


[41/50] tomee git commit: catalina from tomcat doesnt need scanning too

Posted by rm...@apache.org.
catalina from tomcat doesnt need scanning too


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

Branch: refs/heads/tomee-1.7.x
Commit: 209a0bfa60c2788d49a3a3330c3d6da520eb7ee8
Parents: 2d23d10
Author: rmannibucau <rm...@apache.org>
Authored: Wed Oct 19 09:55:31 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Wed Oct 19 09:55:31 2016 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/openejb/util/ContainerClassesFilter.java   | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/209a0bfa/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
index e58ccb4..219d1b8 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
@@ -77,6 +77,7 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("org.aeonbits.owner");
         excluded.add("org.apache.activemq");
         excluded.add("org.apache.bval");
+        excluded.add("org.apache.catalina");
         excluded.add("org.apache.camel");
         excluded.add("org.apache.commons.beanutils");
         excluded.add("org.apache.commons.cli");


[38/50] tomee git commit: skipping coyote too

Posted by rm...@apache.org.
skipping coyote too


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

Branch: refs/heads/tomee-1.7.x
Commit: 32e6d194088a26b382e6111562f4cbaafb47b7e6
Parents: 6db9f41
Author: rmannibucau <rm...@apache.org>
Authored: Wed Oct 19 09:49:37 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Wed Oct 19 09:49:37 2016 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/openejb/util/ContainerClassesFilter.java   | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/32e6d194/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
index 1baff7e..950b5c9 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
@@ -89,6 +89,7 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("org.apache.commons.lang3");
         excluded.add("org.apache.commons.logging");
         excluded.add("org.apache.commons.pool2");
+        excluded.add("org.apache.coyote");
         excluded.add("org.apache.cxf");
         excluded.add("org.apache.geronimo.javamail");
         excluded.add("org.apache.geronimo.mail");


[28/50] tomee git commit: tomcat 8.5.6

Posted by rm...@apache.org.
tomcat 8.5.6


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

Branch: refs/heads/tomee-1.7.x
Commit: 4e1571d098c078bdeac97abef0c948237a4c8a9b
Parents: 14c7483
Author: rmannibucau <rm...@apache.org>
Authored: Tue Oct 11 22:34:13 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Tue Oct 11 22:34:13 2016 +0200

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


http://git-wip-us.apache.org/repos/asf/tomee/blob/4e1571d0/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 782ed64..5fc5677 100644
--- a/pom.xml
+++ b/pom.xml
@@ -127,7 +127,7 @@
     <version.shrinkwrap.descriptor>2.0.0-alpha-7</version.shrinkwrap.descriptor>
     <version.shrinkwrap.shrinkwrap>1.2.2</version.shrinkwrap.shrinkwrap>
 
-    <tomcat.version>8.5.5</tomcat.version>
+    <tomcat.version>8.5.6</tomcat.version>
 
     <cxf.version>3.1.7</cxf.version>
     <ehcache.version>2.9.0</ehcache.version>


[09/50] tomee git commit: few more library exclude for shades + allowing to exclude only some classes too

Posted by rm...@apache.org.
few more library exclude for shades + allowing to exclude only some classes too


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

Branch: refs/heads/tomee-1.7.x
Commit: 4d3b3fb7169be42b145252e9aed96dc6d7ca59e9
Parents: 8b40e93
Author: rmannibucau <rm...@apache.org>
Authored: Thu Sep 29 21:40:42 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Sep 29 21:40:42 2016 +0200

----------------------------------------------------------------------
 .../java/org/apache/openejb/util/ContainerClassesFilter.java   | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/4d3b3fb7/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
index eb3e811..1baff7e 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
@@ -58,6 +58,7 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("com.sun.xml.bind");
         excluded.add("com.sun.xml.messaging.saaj");
         excluded.add("com.sun.xml.txw2");
+        excluded.add("io.jsonwebtoken");
         excluded.add("io.netty");
         excluded.add("io.swagger.annotations");
         excluded.add("io.swagger.config");
@@ -73,6 +74,7 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("junit");
         excluded.add("net.sf.ehcache");
         excluded.add("net.shibboleth.utilities.java.support");
+        excluded.add("org.aeonbits.owner");
         excluded.add("org.apache.activemq");
         excluded.add("org.apache.bval");
         excluded.add("org.apache.camel");
@@ -121,6 +123,7 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("org.jasypt");
         excluded.add("org.jboss.marshalling");
         excluded.add("org.joda.time");
+        excluded.add("org.jose4j");
         excluded.add("org.junit");
         excluded.add("org.jvnet.mimepull");
         excluded.add("org.metatype.sxc");
@@ -134,6 +137,7 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("org.terracotta.entity");
         excluded.add("org.terracotta.modules.ehcache");
         excluded.add("org.terracotta.statistics");
+        excluded.add("org.yaml.snakeyaml");
         excluded.add("serp");
 
         final Set<String> included = new HashSet<>();
@@ -186,7 +190,7 @@ public class ContainerClassesFilter implements Filter {
                 }
                 dot = name.indexOf('.', dot + 1);
             }
-            return false;
+            return included.contains(name);
         }
     }
 }


[06/50] tomee git commit: ecj and hsqldb dont need to be scanned and is big + excluding swagger which is common in shades

Posted by rm...@apache.org.
ecj and hsqldb dont need to be scanned and is big + excluding swagger which is common in shades


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

Branch: refs/heads/tomee-1.7.x
Commit: eb2b3018eedb0623d1d201b6ef52d172dca5596f
Parents: a56f66a
Author: rmannibucau <rm...@apache.org>
Authored: Thu Sep 29 21:24:44 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Sep 29 21:24:44 2016 +0200

----------------------------------------------------------------------
 .../org/apache/openejb/util/ContainerClassesFilter.java | 12 ++++++++++++
 1 file changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/eb2b3018/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
index 34715ee..70fc8b7 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
@@ -59,6 +59,15 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("com.sun.xml.messaging.saaj");
         excluded.add("com.sun.xml.txw2");
         excluded.add("io.netty");
+        excluded.add("io.swagger.annotations");
+        excluded.add("io.swagger.config");
+        excluded.add("io.swagger.converter");
+        excluded.add("io.swagger.core");
+        excluded.add("io.swagger.jackson");
+        excluded.add("io.swagger.jaxrs");
+        excluded.add("io.swagger.model");
+        excluded.add("io.swagger.models");
+        excluded.add("io.swagger.util");
         excluded.add("javax");
         excluded.add("jnr");
         excluded.add("junit");
@@ -101,8 +110,11 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("org.bouncycastle");
         excluded.add("org.codehaus.stax2");
         excluded.add("org.cryptacular");
+        excluded.add("org.eclipse.jdt.core");
+        excluded.add("org.eclipse.jdt.internal");
         excluded.add("org.fusesource.hawtbuf");
         excluded.add("org.hamcrest");
+        excluded.add("org.hsqldb");
         excluded.add("org.jasypt");
         excluded.add("org.jboss.marshalling");
         excluded.add("org.joda.time");


[49/50] tomee git commit: TOMEE-1964 always return false for isSameResource when required on a XADataSource

Posted by rm...@apache.org.
TOMEE-1964 always return false for isSameResource when required on a XADataSource


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

Branch: refs/heads/tomee-1.7.x
Commit: 1b222cabd659ed661830ec4e11e995cadc556e48
Parents: d39d1bc
Author: rmannibucau <rm...@apache.org>
Authored: Thu Nov 3 19:26:39 2016 +0100
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Nov 3 19:26:39 2016 +0100

----------------------------------------------------------------------
 .../openejb/config/ConfigurationFactory.java    |   5 +-
 .../resource/jdbc/DataSourceFactory.java        |  15 ++-
 .../jdbc/xa/IsDifferentXaDataSourceWrapper.java | 107 +++++++++++++++++++
 .../jdbc/XADataSourceIsDifferentTest.java       |  87 +++++++++++++++
 4 files changed, 211 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/1b222cab/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
index f5dd8ba..a348da3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
@@ -1778,8 +1778,9 @@ public class ConfigurationFactory implements OpenEjbConfigurationFactory {
                         }
                     } else {
                         final String trim = String.valueOf(value).trim();
-                        if (ids.contains(trim)) {
-                            refs.add(trim);
+                        final String id = (trim.startsWith("@") || trim.startsWith("$")) && trim.length() > 1 ? trim.substring(1) : trim;
+                        if (ids.contains(id)) {
+                            refs.add(id);
                         }
                     }
                 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/1b222cab/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
index be23efa..e0db5e3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
@@ -77,6 +77,8 @@ public class DataSourceFactory {
     public static final String GLOBAL_FLUSH_PROPERTY = "openejb.jdbc.flushable";
     public static final String POOL_PROPERTY = "openejb.datasource.pool";
     public static final String DATA_SOURCE_CREATOR_PROP = "DataSourceCreator";
+    public static final String XA_GLOBAL_FORCE_DIFFERENT = "openejb.datasource.xa.force-different-xaresource";
+    public static final String XA_FORCE_DIFFERENT = "XAForceDifferent";
     public static final String HANDLER_PROPERTY = "TomEEProxyHandler";
     public static final String GLOBAL_HANDLER_PROPERTY = "openejb.jdbc.handler";
 
@@ -105,6 +107,7 @@ public class DataSourceFactory {
         final String handler = SystemInstance.get().getOptions().get(GLOBAL_HANDLER_PROPERTY, (String) properties.remove(HANDLER_PROPERTY));
         boolean flushable = SystemInstance.get().getOptions().get(GLOBAL_FLUSH_PROPERTY,
             "true".equalsIgnoreCase((String) properties.remove(FLUSHABLE_PROPERTY)));
+        final String forceDifferent = SystemInstance.get().getOptions().get(XA_GLOBAL_FORCE_DIFFERENT, String.class.cast(properties.remove(XA_FORCE_DIFFERENT)));
 
         convert(properties, maxWaitTime, "maxWaitTime", "maxWait");
         convert(properties, timeBetweenEvictionRuns, "timeBetweenEvictionRuns", "timeBetweenEvictionRunsMillis");
@@ -175,8 +178,18 @@ public class DataSourceFactory {
                     recipe.setProperty("url", properties.getProperty("JdbcUrl"));
                 }
 
-                final CommonDataSource dataSource = (CommonDataSource) recipe.create();
+                CommonDataSource dataSource = (CommonDataSource) recipe.create();
                 final boolean isDs = DataSource.class.isInstance(dataSource);
+                if (!isDs && XADataSource.class.isInstance(dataSource) && forceDifferent != null) {
+                    try {
+                        dataSource = CommonDataSource.class.cast(Thread.currentThread().getContextClassLoader()
+                                        .loadClass("true".equals(forceDifferent) ? "org.apache.openejb.resource.jdbc.xa.IsDifferentXaDataSourceWrapper" : forceDifferent)
+                                        .getConstructor(XADataSource.class)
+                                        .newInstance(dataSource));
+                    } catch (InvocationTargetException | ClassNotFoundException | NoSuchMethodException e) {
+                        throw new IllegalArgumentException(e);
+                    }
+                }
 
                 if (managed) {
                     if (isDs && usePool(properties)) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/1b222cab/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/xa/IsDifferentXaDataSourceWrapper.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/xa/IsDifferentXaDataSourceWrapper.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/xa/IsDifferentXaDataSourceWrapper.java
new file mode 100644
index 0000000..e15e8cb
--- /dev/null
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/xa/IsDifferentXaDataSourceWrapper.java
@@ -0,0 +1,107 @@
+/*
+ * 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.resource.jdbc.xa;
+
+import javax.sql.XAConnection;
+import javax.sql.XADataSource;
+import javax.transaction.xa.XAResource;
+import java.io.PrintWriter;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.logging.Logger;
+
+public class IsDifferentXaDataSourceWrapper implements XADataSource {
+    private static final Class<?>[] API_CONNECTION = {XAConnection.class};
+    private static final Class<?>[] API_RESOURCE = {XAResource.class};
+    private final XADataSource delegate;
+
+    public IsDifferentXaDataSourceWrapper(final XADataSource delegate) {
+        this.delegate = delegate;
+    }
+
+    @Override
+    public XAConnection getXAConnection() throws SQLException {
+        return wrap(delegate.getXAConnection());
+    }
+
+    @Override
+    public XAConnection getXAConnection(final String user, final String password) throws SQLException {
+        return wrap(delegate.getXAConnection(user, password));
+    }
+
+    private XAConnection wrap(final XAConnection xaConnection) {
+        return XAConnection.class.cast(Proxy.newProxyInstance(xaConnection.getClass().getClassLoader(), API_CONNECTION, new InvocationHandler() {
+            @Override
+            public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
+                if ("getXAResource".equals(method.getName())) {
+                    try {
+                        final Object xaResource = method.invoke(xaConnection, args);
+                        return Proxy.newProxyInstance(xaResource.getClass().getClassLoader(), API_RESOURCE, new InvocationHandler() {
+                            @Override
+                            public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
+                                if ("isSameRM".equals(method.getName())) {
+                                    return false; // that's the goal!
+                                }
+                                try {
+                                    return method.invoke(xaResource, args);
+                                } catch (final InvocationTargetException ite) {
+                                    throw ite.getCause();
+                                }
+                            }
+                        });
+                    } catch (final InvocationTargetException ite) {
+                        throw ite.getCause();
+                    }
+                }
+                try {
+                    return method.invoke(xaConnection, args);
+                } catch (final InvocationTargetException ite) {
+                    throw ite.getCause();
+                }
+            }
+        }));
+    }
+
+    @Override
+    public PrintWriter getLogWriter() throws SQLException {
+        return delegate.getLogWriter();
+    }
+
+    @Override
+    public void setLogWriter(final PrintWriter out) throws SQLException {
+        delegate.setLogWriter(out);
+    }
+
+    @Override
+    public void setLoginTimeout(final int seconds) throws SQLException {
+        delegate.setLoginTimeout(seconds);
+    }
+
+    @Override
+    public int getLoginTimeout() throws SQLException {
+        return delegate.getLoginTimeout();
+    }
+
+    @Override
+    public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+        return delegate.getParentLogger();
+    }
+}

http://git-wip-us.apache.org/repos/asf/tomee/blob/1b222cab/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/XADataSourceIsDifferentTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/XADataSourceIsDifferentTest.java b/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/XADataSourceIsDifferentTest.java
new file mode 100644
index 0000000..9ab23bd
--- /dev/null
+++ b/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/XADataSourceIsDifferentTest.java
@@ -0,0 +1,87 @@
+/*
+ * 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.resource.jdbc;
+
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.loader.Files;
+import org.apache.openejb.resource.jdbc.dbcp.DbcpDataSourceCreator;
+import org.apache.openejb.resource.jdbc.pool.DataSourceCreator;
+import org.apache.openejb.resource.jdbc.xa.IsDifferentXaDataSourceWrapper;
+import org.apache.openejb.testing.Configuration;
+import org.apache.openejb.testing.Module;
+import org.hsqldb.jdbc.pool.JDBCXADataSource;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.annotation.Resource;
+import javax.sql.XADataSource;
+import javax.transaction.UserTransaction;
+import java.io.File;
+import java.util.Properties;
+
+import static org.junit.Assert.assertFalse;
+
+@RunWith(ApplicationComposer.class)
+public class XADataSourceIsDifferentTest {
+    @Resource
+    private UserTransaction ut;
+
+    @Resource(name = "xaFacade")
+    private XADataSource ds;
+
+    @Test
+    public void run() throws Exception {
+        ut.begin();
+        try {
+            assertFalse(ds.getXAConnection().getXAResource().isSameRM(ds.getXAConnection().getXAResource()));
+        } finally {
+            ut.commit();
+        }
+    }
+
+    @Configuration
+    public Properties config() {
+        final File file = new File("target/test/xa/howl");
+        if (file.isDirectory()) {
+            Files.delete(file);
+        }
+
+        final Properties p = new Properties();
+        p.put(DataSourceCreator.class.getName(), DbcpDataSourceCreator.class.getName()); // default dbcp pool supports xaDataSource config, not our proxy layer
+
+        p.put("txMgr", "new://TransactionManager?type=TransactionManager");
+        p.put("txMgr.txRecovery", "true");
+        p.put("txMgr.logFileDir", "target/test/xa/howl");
+
+        p.put("xa", "new://Resource?class-name=" + JDBCXADataSource.class.getName());
+        p.put("xa.url", "jdbc:hsqldb:mem:xa");
+        p.put("xa.user", "sa");
+        p.put("xa.password", "");
+        p.put("xa.SkipImplicitAttributes", "true"); // conflict with connectionProperties
+
+        p.put("xaFacade", "new://Resource?class-name=" + IsDifferentXaDataSourceWrapper.class.getName() + "&constructor=delegate");
+        p.put("xaFacade.delegate", "@xa");
+
+        return p;
+    }
+
+    @Module
+    public EjbJar app() throws Exception {
+        return new EjbJar();
+    }
+}


[42/50] tomee git commit: naming too

Posted by rm...@apache.org.
naming too


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

Branch: refs/heads/tomee-1.7.x
Commit: e0bbf0be6b40fc1331f06eed6feda5f28b782f3a
Parents: 209a0bf
Author: rmannibucau <rm...@apache.org>
Authored: Wed Oct 19 09:56:14 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Wed Oct 19 09:56:14 2016 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/openejb/util/ContainerClassesFilter.java   | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/e0bbf0be/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
index 219d1b8..0946a54 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
@@ -102,6 +102,7 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("org.apache.logging.log4j.core");
         excluded.add("org.apache.logging.slf4j");
         excluded.add("org.apache.myfaces");
+        excluded.add("org.apache.naming");
         excluded.add("org.apache.neethi");
         excluded.add("org.apache.openejb");
         excluded.add("org.apache.oro");


[15/50] tomee git commit: TOMEE-1905 AMQ 5.14.1

Posted by rm...@apache.org.
TOMEE-1905 AMQ 5.14.1


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

Branch: refs/heads/tomee-1.7.x
Commit: 6cba7334abc99ef456414d94fde71d0a7829850a
Parents: e2a4c2a
Author: rmannibucau <rm...@apache.org>
Authored: Mon Oct 3 14:45:54 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Mon Oct 3 14:45:54 2016 +0200

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


http://git-wip-us.apache.org/repos/asf/tomee/blob/6cba7334/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 3dc0fed..782ed64 100644
--- a/pom.xml
+++ b/pom.xml
@@ -162,7 +162,7 @@
     <commons-net.version>3.3</commons-net.version>
 
     <bval.version>1.1.1</bval.version>
-    <org.apache.activemq.version>5.14.0</org.apache.activemq.version>
+    <org.apache.activemq.version>5.14.1</org.apache.activemq.version>
     <org.springframework.version>3.1.4.RELEASE</org.springframework.version>
     <junit.version>4.12</junit.version>
     <org.apache.axis2.version>1.4.1</org.apache.axis2.version>


[26/50] tomee git commit: TOMEE-1953 adding custom web resources list in tomee embedded configuration and wiring it in its mojo

Posted by rm...@apache.org.
TOMEE-1953 adding custom web resources list in tomee embedded configuration and wiring it in its mojo


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

Branch: refs/heads/tomee-1.7.x
Commit: fb545612f726039605e2a82187b97df74f919cad
Parents: 446c578
Author: rmannibucau <rm...@apache.org>
Authored: Thu Oct 6 11:29:55 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Oct 6 11:29:55 2016 +0200

----------------------------------------------------------------------
 .../gradle/embedded/TomEEEmbeddedExtension.java |   9 ++
 .../gradle/embedded/TomEEEmbeddedTask.java      |  12 +++
 .../maven/plugins/TomEEEmbeddedMojo.java        |  11 ++
 .../maven/plugins/TomEEEmbeddedMojoTest.java    | 105 ++++++++++++++-----
 tomee/tomee-embedded/pom.xml                    |   6 ++
 .../apache/tomee/embedded/Configuration.java    |  19 ++++
 .../internal/StandardContextCustomizer.java     |  17 +++
 7 files changed, 152 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/fb545612/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedExtension.java
----------------------------------------------------------------------
diff --git a/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedExtension.java b/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedExtension.java
index 809667b..98ef2b0 100644
--- a/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedExtension.java
+++ b/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedExtension.java
@@ -60,6 +60,7 @@ public class TomEEEmbeddedExtension {
     private String inlinedTomEEXml;
     private File workDir;
     private List<File> modules;
+    private List<String> customWebResources;
     private File docBase;
     private String dir;
     private String conf;
@@ -343,4 +344,12 @@ public class TomEEEmbeddedExtension {
     public void setConf(final String conf) {
         this.conf = conf;
     }
+
+    public List<String> getCustomWebResources() {
+        return customWebResources;
+    }
+
+    public void setCustomWebResources(final List<String> customWebResources) {
+        this.customWebResources = customWebResources;
+    }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/fb545612/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java
----------------------------------------------------------------------
diff --git a/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java b/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java
index b3ce50d..82c6526 100644
--- a/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java
+++ b/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java
@@ -126,6 +126,10 @@ public class TomEEEmbeddedTask extends DefaultTask {
 
     @Optional
     @Input
+    private Collection<String> customWebResources;
+
+    @Optional
+    @Input
     private boolean webResourceCached = true;
 
     @Optional
@@ -712,4 +716,12 @@ public class TomEEEmbeddedTask extends DefaultTask {
     public void setSingleClassloader(final boolean singleClassloader) {
         this.singleClassloader = singleClassloader;
     }
+
+    public Collection<String> getCustomWebResources() {
+        return customWebResources;
+    }
+
+    public void setCustomWebResources(final Collection<String> customWebResources) {
+        this.customWebResources = customWebResources;
+    }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/fb545612/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 95038ab..da697cb 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
@@ -213,6 +213,12 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
     protected List<File> modules;
 
     /**
+     * Additional web resources (directories).
+     */
+    @Parameter(property = "tomee-embedded-plugin.web-resources")
+    protected List<File> webResources;
+
+    /**
      * Where is docBase/web resources.
      */
     @Parameter(property = "tomee-embedded-plugin.docBase", defaultValue = "${project.basedir}/src/main/webapp")
@@ -662,6 +668,11 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
             }
             config.getProperties().setProperty("tomee.force-reloadable", "true");
         }
+        if (webResources != null && !webResources.isEmpty()) {
+            for (final File f : webResources) {
+                config.addCustomWebResources(f.getAbsolutePath());
+            }
+        }
         return config;
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/fb545612/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java
----------------------------------------------------------------------
diff --git a/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java b/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java
index 21a511a..3a51b51 100644
--- a/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java
+++ b/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java
@@ -40,6 +40,7 @@ import java.util.concurrent.atomic.AtomicReference;
 
 import static java.lang.System.lineSeparator;
 import static java.lang.Thread.sleep;
+import static java.util.Collections.singletonList;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
@@ -86,33 +87,7 @@ public class TomEEEmbeddedMojoTest {
             }
         });
 
-        final CountDownLatch stopped = new CountDownLatch(1);
-
-        final AtomicReference<Exception> error = new AtomicReference<>();
-        final Thread mojoThread = new Thread() {
-            {
-                setName("Mojo-Starter");
-            }
-
-            @Override
-            public void run() {
-                try {
-                    mojo.execute();
-                } catch (final Exception e) {
-                    error.set(e);
-                } finally {
-                    stopped.countDown();
-                }
-            }
-        };
-        mojoThread.start();
-        try {
-            started.await(10, TimeUnit.MINUTES);
-        } catch (final InterruptedException e) {
-            Thread.interrupted();
-        }
-
-        assertNull("all started fine", error.get());
+        final CountDownLatch stopped = doStart(started, mojo);
         assertEquals("ok", IO.slurp(new URL("http://localhost:" + mojo.httpPort + "/endpoint/")).trim());
 
         long initTs = timestamp(mojo);
@@ -156,6 +131,82 @@ public class TomEEEmbeddedMojoTest {
         input.close();
     }
 
+
+    @Test
+    public void customWebResource() throws Exception {
+        final File docBase = new File("target/TomEEEmbeddedMojoTest/customWebResource");
+        docBase.mkdirs();
+        try (final FileWriter w = new FileWriter(new File(docBase, "index.html"))) {
+            w.write("resource");
+        }
+
+        // we use a dynamic InputStream to be able to simulate commands without hacking System.in
+        final Input input = new Input();
+        final Semaphore reloaded = new Semaphore(0);
+        final CountDownLatch started = new CountDownLatch(1);
+        final TomEEEmbeddedMojo mojo = new TomEEEmbeddedMojo() {
+            @Override
+            protected Scanner newScanner() {
+                return new Scanner(input);
+            }
+        };
+        mojo.classpathAsWar = true;
+        mojo.httpPort = NetworkUtil.getNextAvailablePort();
+        mojo.ssl = false;
+        mojo.webResources = singletonList(docBase);
+        mojo.webResourceCached = false;
+        mojo.setLog(new SystemStreamLog() { // not the best solution but fine for now...
+            @Override
+            public void info(final CharSequence charSequence) {
+                final String string = charSequence.toString();
+                if (string.startsWith("TomEE embedded started on") || string.equals("can't start TomEE")) {
+                    started.countDown();
+                } else if (string.contains("Redeployed /")) {
+                    reloaded.release();
+                }
+                super.info(charSequence);
+            }
+        });
+
+        final CountDownLatch stopped = doStart(started, mojo);
+        assertEquals("resource", IO.slurp(new URL("http://localhost:" + mojo.httpPort + "/")).trim());
+
+        input.write("exit");
+        stopped.await(5, TimeUnit.MINUTES);
+        input.close();
+    }
+
+    private CountDownLatch doStart(final CountDownLatch started, final TomEEEmbeddedMojo mojo) {
+        final CountDownLatch stopped = new CountDownLatch(1);
+
+        final AtomicReference<Exception> error = new AtomicReference<>();
+        final Thread mojoThread = new Thread() {
+            {
+                setName("Mojo-Starter");
+            }
+
+            @Override
+            public void run() {
+                try {
+                    mojo.execute();
+                } catch (final Exception e) {
+                    error.set(e);
+                } finally {
+                    stopped.countDown();
+                }
+            }
+        };
+        mojoThread.start();
+        try {
+            started.await(10, TimeUnit.MINUTES);
+        } catch (final InterruptedException e) {
+            Thread.interrupted();
+        }
+
+        assertNull("all started fine", error.get());
+        return stopped;
+    }
+
     private long timestamp(final TomEEEmbeddedMojo mojo) throws IOException {
         return Long.parseLong(IO.slurp(new URL("http://localhost:" + mojo.httpPort + "/endpoint/timestamp")).trim());
     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/fb545612/tomee/tomee-embedded/pom.xml
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/pom.xml b/tomee/tomee-embedded/pom.xml
index 81e4cfe..99e1255 100644
--- a/tomee/tomee-embedded/pom.xml
+++ b/tomee/tomee-embedded/pom.xml
@@ -452,6 +452,12 @@
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-websocket</artifactId>
       <version>${tomcat.version}</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>tomcat-juli</artifactId>
+          <groupId>org.apache.tomcat</groupId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>commons-io</groupId>

http://git-wip-us.apache.org/repos/asf/tomee/blob/fb545612/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
index e55f0cf..61f5530 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
@@ -37,6 +37,8 @@ import java.util.LinkedList;
 import java.util.Map;
 import java.util.Properties;
 
+import static java.util.Arrays.asList;
+
 /**
  * @version $Rev$ $Date$
  */
@@ -65,6 +67,7 @@ public class Configuration {
     private String webXml;
     private LoginConfigBuilder loginConfig;
     private Collection<SecurityConstaintBuilder> securityConstraints = new LinkedList<>();
+    private Collection<String> customWebResources = new LinkedList<>();
 
     private Realm realm;
 
@@ -225,6 +228,10 @@ public class Configuration {
         if (tempDir != null) {
             setTempDir(tempDir);
         }
+        final String customWebResources = config.getProperty("customWebResources");
+        if (customWebResources != null) {
+            setCustomWebResources(customWebResources);
+        }
         final String classesFilterType = config.getProperty("classesFilter");
         if (classesFilterType != null) {
             try {
@@ -611,6 +618,18 @@ public class Configuration {
         this.deleteBaseOnStartup = deleteBaseOnStartup;
     }
 
+    public void setCustomWebResources(final String web) {
+        customWebResources.addAll(asList(web.split(",")));
+    }
+
+    public void addCustomWebResources(final String web) {
+        customWebResources.add(web);
+    }
+
+    public Collection<String> getCustomWebResources() {
+        return customWebResources;
+    }
+
     public interface ConfigurationCustomizer {
         void customize(Configuration configuration);
     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/fb545612/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/internal/StandardContextCustomizer.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/internal/StandardContextCustomizer.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/internal/StandardContextCustomizer.java
index 3fa62a5..736a1f5 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/internal/StandardContextCustomizer.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/internal/StandardContextCustomizer.java
@@ -37,8 +37,10 @@ import org.apache.tomee.embedded.SecurityConstaintBuilder;
 
 import java.beans.PropertyChangeListener;
 import java.io.File;
+import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.List;
+import java.util.logging.Logger;
 
 public class StandardContextCustomizer {
     private final WebModule module;
@@ -96,6 +98,21 @@ public class StandardContextCustomizer {
                         } // else endsWith .war => ignore
                     }
                 }
+                if (config.getCustomWebResources() != null) {
+                    for (final String web : config.getCustomWebResources()) {
+                        final File file = new File(web);
+                        if (file.isDirectory()) {
+                            try {
+                                resources.createWebResourceSet(WebResourceRoot.ResourceSetType.RESOURCE_JAR, "/", file.toURI().toURL(), "/");
+                            } catch (final MalformedURLException e) {
+                                throw new IllegalArgumentException(e);
+                            }
+                        } else {
+                            Logger.getLogger(StandardContextCustomizer.class.getName())
+                                    .warning("'" + web + "' is not a directory, ignoring");
+                        }
+                    }
+                }
 
                 if (config.getLoginConfig() != null) {
                     context.setLoginConfig(config.getLoginConfig().build());


[50/50] tomee git commit: TOMEE-1974 backporting url cleanup from master to use authorization parameter instead of introducing a new authentication way less powerful

Posted by rm...@apache.org.
TOMEE-1974 backporting url cleanup from master to use authorization parameter instead of introducing a new authentication way less powerful


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

Branch: refs/heads/tomee-1.7.x
Commit: 1f4b821b91960f651d57792fdfe5ca2bb38d70f1
Parents: 1b222ca
Author: rmannibucau <rm...@apache.org>
Authored: Sat Dec 3 17:33:07 2016 +0100
Committer: rmannibucau <rm...@apache.org>
Committed: Sat Dec 3 17:33:07 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/openejb/client/Client.java  |  4 +--
 .../apache/openejb/client/ClientDataSource.java |  4 ++-
 .../openejb/client/EjbObjectInputStream.java    |  2 +-
 .../openejb/client/HttpConnectionFactory.java   | 29 ++++++++++++++++----
 .../apache/openejb/client/ResourceFinder.java   |  4 ++-
 .../apache/openejb/client/ServiceLocator.java   |  4 ++-
 .../openejb/client/proxy/Jdk13ProxyFactory.java |  2 +-
 .../openejb/client/HttpConnectionTest.java      |  4 +++
 8 files changed, 40 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/1f4b821b/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java b/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java
index 837a2ea..1559e37 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/Client.java
@@ -56,7 +56,7 @@ public class Client {
     private boolean FINEST = logger.isLoggable(Level.FINEST);
     private boolean FINER = logger.isLoggable(Level.FINER);
 
-    public static final ThreadLocal<Set<URI>> failed = new ThreadLocal<>();
+    public static final ThreadLocal<Set<URI>> failed = new ThreadLocal<Set<URI>>();
     private static final ProtocolMetaData PROTOCOL_META_DATA = new ProtocolMetaData();
 
     private static Client client = new Client();
@@ -67,7 +67,7 @@ public class Client {
         COMPATIBLE_META_DATA = (null != version ? new ProtocolMetaData(version) : null);
     }
 
-    private List<Class<? extends Throwable>> retryConditions = new CopyOnWriteArrayList<>();
+    private List<Class<? extends Throwable>> retryConditions = new CopyOnWriteArrayList<Class<? extends Throwable>>();
     private boolean retry = false;
 
     private final Observers observers = new Observers();

http://git-wip-us.apache.org/repos/asf/tomee/blob/1f4b821b/server/openejb-client/src/main/java/org/apache/openejb/client/ClientDataSource.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/ClientDataSource.java b/server/openejb-client/src/main/java/org/apache/openejb/client/ClientDataSource.java
index 3f28b34..ab44500 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/ClientDataSource.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/ClientDataSource.java
@@ -69,8 +69,10 @@ public class ClientDataSource implements DataSource {
         final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
         try {
             Class.forName(jdbcDriver, true, classLoader);
-        } catch (ClassNotFoundException | NoClassDefFoundError e) {
+        } catch (final NoClassDefFoundError e) {
             throw new IllegalStateException("Cannot use DataSource in client VM without the JDBC Driver in classpath: " + jdbcDriver, e);
+        } catch (final ClassNotFoundException cnfe) {
+            throw new IllegalStateException("Cannot use DataSource in client VM without the JDBC Driver in classpath: " + jdbcDriver, cnfe);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/1f4b821b/server/openejb-client/src/main/java/org/apache/openejb/client/EjbObjectInputStream.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/EjbObjectInputStream.java b/server/openejb-client/src/main/java/org/apache/openejb/client/EjbObjectInputStream.java
index 59b48df..66d0570 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/EjbObjectInputStream.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/EjbObjectInputStream.java
@@ -29,7 +29,7 @@ import java.util.regex.Pattern;
  */
 public class EjbObjectInputStream extends ObjectInputStream {
     private static final AtomicReference<BlacklistClassResolver> RESOLVER_ATOMIC_REFERENCE =
-        new AtomicReference<>(new BlacklistClassResolver());
+        new AtomicReference<BlacklistClassResolver>(new BlacklistClassResolver());
 
     public static void reloadResolverConfig() {
         RESOLVER_ATOMIC_REFERENCE.set(new BlacklistClassResolver());

http://git-wip-us.apache.org/repos/asf/tomee/blob/1f4b821b/server/openejb-client/src/main/java/org/apache/openejb/client/HttpConnectionFactory.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/HttpConnectionFactory.java b/server/openejb-client/src/main/java/org/apache/openejb/client/HttpConnectionFactory.java
index 7344864..a93fdcb 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/HttpConnectionFactory.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/HttpConnectionFactory.java
@@ -38,8 +38,8 @@ import java.util.concurrent.ConcurrentMap;
  */
 public class HttpConnectionFactory implements ConnectionFactory {
     // this map only ensures JVM keep alive socket caching works properly
-    private final ConcurrentMap<URI, SSLSocketFactory> socketFactoryMap = new ConcurrentHashMap<>();
-    private final Queue<byte[]> drainBuffers = new ConcurrentLinkedQueue<>();
+    private final ConcurrentMap<URI, SSLSocketFactory> socketFactoryMap = new ConcurrentHashMap<URI, SSLSocketFactory>();
+    private final Queue<byte[]> drainBuffers = new ConcurrentLinkedQueue<byte[]>();
 
     @Override
     public Connection getConnection(final URI uri) throws IOException {
@@ -74,7 +74,10 @@ public class HttpConnectionFactory implements ConnectionFactory {
                 throw new IllegalArgumentException("Invalid uri " + uri.toString(), e);
             }
 
-            httpURLConnection = (HttpURLConnection) url.openConnection();
+            final String authorization = params.get("authorization");
+
+            httpURLConnection = (HttpURLConnection) (authorization == null ?
+                    url : new URL(stripQuery(url.toExternalForm(), "authorization"))).openConnection();
             httpURLConnection.setDoOutput(true);
 
             final int timeout;
@@ -89,8 +92,8 @@ public class HttpConnectionFactory implements ConnectionFactory {
             if (params.containsKey("readTimeout")) {
                 httpURLConnection.setReadTimeout(Integer.parseInt(params.get("readTimeout")));
             }
-            if (params.containsKey("authorization")) {
-                httpURLConnection.setRequestProperty("Authorization", params.get("authorization"));
+            if (authorization != null) {
+                httpURLConnection.setRequestProperty("Authorization", authorization);
             }
 
             if (params.containsKey("sslKeyStore") || params.containsKey("sslTrustStore")) {
@@ -105,7 +108,9 @@ public class HttpConnectionFactory implements ConnectionFactory {
                     }
 
                     ((HttpsURLConnection) httpURLConnection).setSSLSocketFactory(sslSocketFactory);
-                } catch (final NoSuchAlgorithmException | KeyManagementException e) {
+                } catch (final KeyManagementException e) {
+                    throw new ClientRuntimeException(e.getMessage(), e);
+                } catch (final NoSuchAlgorithmException e) {
                     throw new ClientRuntimeException(e.getMessage(), e);
                 }
             }
@@ -117,6 +122,18 @@ public class HttpConnectionFactory implements ConnectionFactory {
             }
         }
 
+        private String stripQuery(final String url, final String param) {
+            String result = url;
+            do {
+                final int h = result.indexOf(param + '=');
+                final int end = result.indexOf('&', h);
+                if (h <= 0) {
+                    return result;
+                }
+                result = result.substring(0, h - 1) + (end < 0 ? "" : result.substring(end + 1, result.length()));
+            } while (true);
+        }
+
         @Override
         public void discard() {
             try {

http://git-wip-us.apache.org/repos/asf/tomee/blob/1f4b821b/server/openejb-client/src/main/java/org/apache/openejb/client/ResourceFinder.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/ResourceFinder.java b/server/openejb-client/src/main/java/org/apache/openejb/client/ResourceFinder.java
index b768b75..848a30f 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/ResourceFinder.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/ResourceFinder.java
@@ -1067,8 +1067,10 @@ public class ResourceFinder {
                         return resourceURL;
                     }
                 }
-            } catch (SecurityException | IOException e) {
+            } catch (final IOException e) {
                 // Keep iterating through the URL list
+            } catch (final SecurityException e) {
+                // no-op
             }
         }
         return null;

http://git-wip-us.apache.org/repos/asf/tomee/blob/1f4b821b/server/openejb-client/src/main/java/org/apache/openejb/client/ServiceLocator.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/ServiceLocator.java b/server/openejb-client/src/main/java/org/apache/openejb/client/ServiceLocator.java
index 72b42bd..ed18d54 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/ServiceLocator.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/ServiceLocator.java
@@ -58,7 +58,9 @@ public class ServiceLocator {
     public Object lookup(final String name) {
         try {
             return context.lookup(name);
-        } catch (NamingException | RuntimeException e) {
+        } catch (final RuntimeException e) {
+            throw new IllegalArgumentException(e);
+        } catch (final NamingException e) {
             throw new IllegalArgumentException(e);
         }
     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/1f4b821b/server/openejb-client/src/main/java/org/apache/openejb/client/proxy/Jdk13ProxyFactory.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/proxy/Jdk13ProxyFactory.java b/server/openejb-client/src/main/java/org/apache/openejb/client/proxy/Jdk13ProxyFactory.java
index a8e0f8e..e0c7fbb 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/proxy/Jdk13ProxyFactory.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/proxy/Jdk13ProxyFactory.java
@@ -108,7 +108,7 @@ public class Jdk13ProxyFactory implements ProxyFactory {
             //noinspection RedundantArrayCreation
             return cons.newInstance(new Object[]{new Jdk13InvocationHandler()});
 
-        } catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
+        } catch (final Exception e) {
             throw new InternalError(e.toString());
         }
     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/1f4b821b/server/openejb-client/src/test/java/org/apache/openejb/client/HttpConnectionTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/test/java/org/apache/openejb/client/HttpConnectionTest.java b/server/openejb-client/src/test/java/org/apache/openejb/client/HttpConnectionTest.java
index a37d8d3..1f6717e 100644
--- a/server/openejb-client/src/test/java/org/apache/openejb/client/HttpConnectionTest.java
+++ b/server/openejb-client/src/test/java/org/apache/openejb/client/HttpConnectionTest.java
@@ -48,6 +48,10 @@ public class HttpConnectionTest {
 
                 final OutputStream responseBody = exchange.getResponseBody();
                 responseBody.write("secure page".getBytes());
+                final String query = exchange.getRequestURI().getQuery();
+                if (query != null) {
+                    responseBody.write(query.getBytes());
+                }
                 final String authorization = exchange.getRequestHeaders().getFirst("Authorization");
                 if (authorization != null) {
                     responseBody.write(authorization.getBytes("UTF-8"));


[25/50] tomee git commit: TOMEE-1889 ensuring complex uri work with basic auth for openejb-client http connection

Posted by rm...@apache.org.
TOMEE-1889 ensuring complex uri work with basic auth for openejb-client http connection


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

Branch: refs/heads/tomee-1.7.x
Commit: 446c5784300da33266be0bc79afb2b883c87d5d5
Parents: 2493f40
Author: rmannibucau <rm...@apache.org>
Authored: Wed Oct 5 23:24:01 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Wed Oct 5 23:24:01 2016 +0200

----------------------------------------------------------------------
 .../client/FailoverConnectionFactory.java       |  4 +--
 .../openejb/client/HttpConnectionTest.java      | 31 ++++++++++++++++++++
 2 files changed, 33 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/446c5784/server/openejb-client/src/main/java/org/apache/openejb/client/FailoverConnectionFactory.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/FailoverConnectionFactory.java b/server/openejb-client/src/main/java/org/apache/openejb/client/FailoverConnectionFactory.java
index 22fd8a9..47c8ff5 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/FailoverConnectionFactory.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/FailoverConnectionFactory.java
@@ -57,12 +57,12 @@ public class FailoverConnectionFactory implements ConnectionFactory {
         // failover:sticky:ejbd://foo:4201,ejbd://bar:4202
 
         // trim off the "failover:"
-        final String remainder = failoverUri.getSchemeSpecificPart();
+        final String remainder = failoverUri.getRawSchemeSpecificPart();
 
         final URI uri = URI.create(remainder);
 
         String strategy = uri.getScheme();
-        String servers = uri.getSchemeSpecificPart();
+        String servers = uri.getRawSchemeSpecificPart();
 
         if (servers.startsWith("//")) {
             strategy = "default";

http://git-wip-us.apache.org/repos/asf/tomee/blob/446c5784/server/openejb-client/src/test/java/org/apache/openejb/client/HttpConnectionTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/test/java/org/apache/openejb/client/HttpConnectionTest.java b/server/openejb-client/src/test/java/org/apache/openejb/client/HttpConnectionTest.java
index 565ce56..a37d8d3 100644
--- a/server/openejb-client/src/test/java/org/apache/openejb/client/HttpConnectionTest.java
+++ b/server/openejb-client/src/test/java/org/apache/openejb/client/HttpConnectionTest.java
@@ -32,6 +32,8 @@ import java.net.InetSocketAddress;
 import java.net.URI;
 import java.net.URISyntaxException;
 
+import static org.junit.Assert.fail;
+
 public class HttpConnectionTest {
     private HttpServer server;
 
@@ -124,4 +126,33 @@ public class HttpConnectionTest {
             Assert.assertTrue("should contain", sb.toString().contains("secure pageBasic token"));
         }
     }
+
+    @Test
+    public void complexURIAuthorization() throws IOException, URISyntaxException {
+        final String baseHttp = "http://localhost:" + server.getAddress().getPort() + "/e?authorization=";
+        final String uri = "failover:sticky+random:" + baseHttp + "Basic%20ABCD&" + baseHttp + "Basic%20EFG";
+        final Connection connection = ConnectionManager.getConnection(new URI(uri));
+        BufferedReader br = null;
+        final StringBuilder sb = new StringBuilder();
+        String line;
+        try {
+            br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+            while ((line = br.readLine()) != null) {
+                sb.append(line);
+            }
+        } catch (final IOException e) {
+            fail(e.getMessage());
+        } finally {
+            if (br != null) {
+                try {
+                    br.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            connection.close();
+        }
+        final String out = sb.toString();
+        Assert.assertTrue(out, out.contains("secure pageBasic ABCD"));
+    }
 }


[23/50] tomee git commit: adding DeleteBaseOnStartup option to tomee embedded and ensuring properties are filtered

Posted by rm...@apache.org.
adding DeleteBaseOnStartup option to tomee embedded and ensuring properties are filtered


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

Branch: refs/heads/tomee-1.7.x
Commit: f86f5a355d7f324df989613ee61ae501d4343ec0
Parents: 8143fc0
Author: rmannibucau <rm...@apache.org>
Authored: Tue Oct 4 16:04:00 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Tue Oct 4 16:04:00 2016 +0200

----------------------------------------------------------------------
 .../apache/tomee/embedded/Configuration.java    | 35 ++++++++++++++++++++
 .../org/apache/tomee/embedded/Container.java    | 19 ++++++-----
 .../TomEEEmbeddedApplicationRunner.java         |  4 ++-
 .../embedded/SingleInstanceRunnerTest.java      |  7 +++-
 4 files changed, 54 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/f86f5a35/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
index b74ad95..e55f0cf 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
@@ -18,6 +18,8 @@ package org.apache.tomee.embedded;
 
 import org.apache.catalina.Realm;
 import org.apache.catalina.connector.Connector;
+import org.apache.commons.lang3.text.StrLookup;
+import org.apache.commons.lang3.text.StrSubstitutor;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.util.NetworkUtil;
 import org.apache.xbean.finder.filter.Filter;
@@ -85,6 +87,7 @@ public class Configuration {
     private boolean webResourceCached = true;
 
     private String conf;
+    private boolean deleteBaseOnStartup = true;
 
     public Configuration loadFrom(final String resource) {
         try (final InputStream is = findStream(resource)) {
@@ -110,6 +113,26 @@ public class Configuration {
     }
 
     public void loadFromProperties(final Properties config) {
+        // filtering properties with system properties or themself
+        final StrSubstitutor strSubstitutor = new StrSubstitutor(new StrLookup<String>() {
+            @Override
+            public String lookup(final String key) {
+                final String property = System.getProperty(key);
+                return property == null ? config.getProperty(key) : null;
+            }
+        });
+        for (final String key : config.stringPropertyNames()) {
+            final String val = config.getProperty(key);
+            if (val == null || val.trim().isEmpty()) {
+                continue;
+            }
+            final String newVal = strSubstitutor.replace(config.getProperty(key));
+            if (!val.equals(newVal)) {
+                config.setProperty(key, newVal);
+            }
+        }
+
+
         final String http = config.getProperty("http");
         if (http != null) {
             setHttpPort(Integer.parseInt(http));
@@ -154,6 +177,10 @@ public class Configuration {
         if (http2 != null) {
             setHttp2(Boolean.parseBoolean(http2));
         }
+        final String deleteBaseOnStartup = config.getProperty("deleteBaseOnStartup");
+        if (deleteBaseOnStartup != null) {
+            setDeleteBaseOnStartup(Boolean.parseBoolean(deleteBaseOnStartup));
+        }
         final String webResourceCached = config.getProperty("webResourceCached");
         if (webResourceCached != null) {
             setWebResourceCached(Boolean.parseBoolean(webResourceCached));
@@ -576,6 +603,14 @@ public class Configuration {
         return classesFilter;
     }
 
+    public boolean isDeleteBaseOnStartup() {
+        return deleteBaseOnStartup;
+    }
+
+    public void setDeleteBaseOnStartup(final boolean deleteBaseOnStartup) {
+        this.deleteBaseOnStartup = deleteBaseOnStartup;
+    }
+
     public interface ConfigurationCustomizer {
         void customize(Configuration configuration);
     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/f86f5a35/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
index 06b33dd..aa2d054 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
@@ -423,14 +423,13 @@ public class Container implements AutoCloseable {
 
         // create basic installation in setup to be able to handle anything the caller does between setup() and start()
         base = new File(getBaseDir());
-        if (base.exists()) {
-            // TODO: get rid of Files which has its own shutdown hook which can mess up order if started/shutdown multiple times?
+        if (base.exists() && configuration.isDeleteBaseOnStartup()) {
             Files.delete(base);
+        } else if (!base.exists()) {
+            Files.mkdirs(base);
+            Files.deleteOnExit(base);
         }
 
-        Files.mkdirs(base);
-        Files.deleteOnExit(base);
-
         final File conf = createDirectory(base, "conf");
         createDirectory(base, "lib");
         createDirectory(base, "logs");
@@ -842,10 +841,12 @@ public class Container implements AutoCloseable {
         } catch (final LifecycleException e) {
             e.printStackTrace();
         }
-        try {
-            deleteTree(base);
-        } catch (final Exception e) {
-            e.printStackTrace();
+        if (configuration.isDeleteBaseOnStartup()) {
+            try {
+                deleteTree(base);
+            } catch (final Exception e) {
+                e.printStackTrace();
+            }
         }
 
         OpenEJB.destroy();

http://git-wip-us.apache.org/repos/asf/tomee/blob/f86f5a35/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
index 7f69d32..ffc4dcd 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
@@ -16,6 +16,7 @@
  */
 package org.apache.tomee.embedded;
 
+import org.apache.commons.lang3.text.StrSubstitutor;
 import org.apache.openejb.config.DeploymentsResolver;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.testing.Application;
@@ -147,9 +148,10 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
             for (final ContainerProperties.Property p : props.value()) {
                 final String name = p.name();
                 if (name.startsWith("tomee.embedded.application.runner.")) { // allow to tune the Configuration
+                    // no need to filter there since it is done in loadFromProperties()
                     runnerProperties.setProperty(name.substring("tomee.embedded.application.runner.".length()), p.value());
                 } else {
-                    configuration.property(name, p.value());
+                    configuration.property(name, StrSubstitutor.replaceSystemProperties(p.value()));
                 }
             }
             if (!runnerProperties.isEmpty()) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/f86f5a35/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
index 8bb73e7..7435205 100644
--- a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
+++ b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SingleInstanceRunnerTest.java
@@ -53,6 +53,7 @@ public class SingleInstanceRunnerTest {
     @Test
     public void run() {
         assertNotNull(SystemInstance.get().getComponent(Assembler.class));
+        assertEquals("val", SystemInstance.get().getProperty("simple"));
         assertEquals("set", SystemInstance.get().getProperty("t"));
         assertEquals("p", SystemInstance.get().getProperty("prog"));
         assertEquals("128463", SystemInstance.get().getProperty("my.server.port"));
@@ -70,7 +71,11 @@ public class SingleInstanceRunnerTest {
 
     @Application
     @Classes(context = "app")
-    @ContainerProperties(@ContainerProperties.Property(name = "t", value = "set"))
+    @ContainerProperties({
+            @ContainerProperties.Property(name = "simple", value = "val"),
+            @ContainerProperties.Property(name = "tomee.embedded.application.runner.properties.t", value = "${t.value}"),
+            @ContainerProperties.Property(name = "tomee.embedded.application.runner.t.value", value = "set")
+    })
     @TomEEEmbeddedApplicationRunner.LifecycleTasks(MyTask.class)
     // can start a ftp/sftp/elasticsearch/mongo/... server before tomee
     @TomEEEmbeddedApplicationRunner.Configurers(SetMyProperty.class)


[02/50] tomee git commit: TOMEE-1949 remove descriptors from openejb-core

Posted by rm...@apache.org.
TOMEE-1949 remove descriptors from openejb-core


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

Branch: refs/heads/tomee-1.7.x
Commit: f367d4ae9d29d8c2e9ef57235e541c7ce046cb99
Parents: 43342db
Author: rmannibucau <rm...@apache.org>
Authored: Thu Sep 29 20:42:19 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Sep 29 20:42:19 2016 +0200

----------------------------------------------------------------------
 .../src/main/resources/META-INF/ejb-jar.xml     | 21 ----------------
 .../src/main/resources/META-INF/openejb-jar.xml | 26 --------------------
 2 files changed, 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/f367d4ae/container/openejb-core/src/main/resources/META-INF/ejb-jar.xml
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/resources/META-INF/ejb-jar.xml b/container/openejb-core/src/main/resources/META-INF/ejb-jar.xml
deleted file mode 100644
index 7e42c45..0000000
--- a/container/openejb-core/src/main/resources/META-INF/ejb-jar.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
--->
-
-<!-- $Rev$ $Date$ -->
-
-<ejb-jar/>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/f367d4ae/container/openejb-core/src/main/resources/META-INF/openejb-jar.xml
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/resources/META-INF/openejb-jar.xml b/container/openejb-core/src/main/resources/META-INF/openejb-jar.xml
deleted file mode 100644
index 4d1746a..0000000
--- a/container/openejb-core/src/main/resources/META-INF/openejb-jar.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ 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.
-  -->
-
-<!-- $Rev$ $Date$ -->
-
-<openejb-jar>
-  <properties>
-     openejb.deploymentId.format = {ejbName}
-     openejb.jndiname.format = {deploymentId}{interfaceType.openejbLegacyName}
-  </properties>
-</openejb-jar>


[04/50] tomee git commit: adding log4j2 core to container classes to not scan them

Posted by rm...@apache.org.
adding log4j2 core to container classes to not scan them


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

Branch: refs/heads/tomee-1.7.x
Commit: 187a5321c98282936dacafa6edb2855e92219c68
Parents: 12f29b9
Author: rmannibucau <rm...@apache.org>
Authored: Thu Sep 29 21:10:40 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Sep 29 21:10:40 2016 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/openejb/util/ContainerClassesFilter.java   | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/187a5321/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
index 62f896c..1396a35 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
@@ -80,6 +80,7 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("org.apache.jcp");
         excluded.add("org.apache.johnzon");
         excluded.add("org.apache.juli");
+        excluded.add("org.apache.logging.log4j.core");
         excluded.add("org.apache.myfaces");
         excluded.add("org.apache.neethi");
         excluded.add("org.apache.openejb");


[29/50] tomee git commit: treat / as a different path for cxf jaxrs resource handling integration - due to tomcat 8.5.6 upgrade

Posted by rm...@apache.org.
treat / as a different path for cxf jaxrs resource handling integration - due to tomcat 8.5.6 upgrade


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

Branch: refs/heads/tomee-1.7.x
Commit: 823790b98af391c721e1d4103fc94c6d688f1de5
Parents: 4e1571d
Author: rmannibucau <rm...@apache.org>
Authored: Wed Oct 12 16:52:18 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Wed Oct 12 16:52:18 2016 +0200

----------------------------------------------------------------------
 ...AvoidConflictWithWebXmlWithNoResourceMatchingTest.java |  4 ++--
 .../apache/openejb/server/cxf/rs/CxfRsHttpListener.java   | 10 +++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/823790b9/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/src/test/java/org/apache/openejb/arquillian/tests/jaxrs/staticresources/AvoidConflictWithWebXmlWithNoResourceMatchingTest.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/src/test/java/org/apache/openejb/arquillian/tests/jaxrs/staticresources/AvoidConflictWithWebXmlWithNoResourceMatchingTest.java b/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/src/test/java/org/apache/openejb/arquillian/tests/jaxrs/staticresources/AvoidConflictWithWebXmlWithNoResourceMatchingTest.java
index dd8de77..8ebbf44 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/src/test/java/org/apache/openejb/arquillian/tests/jaxrs/staticresources/AvoidConflictWithWebXmlWithNoResourceMatchingTest.java
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/src/test/java/org/apache/openejb/arquillian/tests/jaxrs/staticresources/AvoidConflictWithWebXmlWithNoResourceMatchingTest.java
@@ -74,12 +74,12 @@ public class AvoidConflictWithWebXmlWithNoResourceMatchingTest {
     // but it would be not deterministic otherwise so not better
     @Test(expected = FileNotFoundException.class)
     public void jsp() throws IOException {
-        assertEquals("JSP 5", IO.slurp(new URL(url + "index.jsp")).trim());
+        IO.slurp(new URL(url + "index.jsp"));
     }
 
     @Test(expected = FileNotFoundException.class) // same as for jsp()
     public void home() throws IOException {
-        assertEquals("JSP 5", IO.slurp(url).trim());
+        IO.slurp(url);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/tomee/blob/823790b9/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
----------------------------------------------------------------------
diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
index e08ca05..7bede36 100644
--- a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
+++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
@@ -279,16 +279,16 @@ public class CxfRsHttpListener implements RsHttpListener {
                 pathInfo = pathInfo.substring(0, indexOf);
             }
         }
-        InputStream is = request.getServletContext().getResourceAsStream(pathInfo);
-        if (is == null && ("/".equals(pathInfo) || pathInfo.isEmpty())) {
+        if ("/".equals(pathInfo) || pathInfo.isEmpty()) { // root is redirected to welcomefiles
             for (final String n : welcomeFiles) {
-                is = request.getServletContext().getResourceAsStream(n);
+                final InputStream is = request.getServletContext().getResourceAsStream(n);
                 if (is != null) {
-                    break;
+                    return is;
                 }
             }
+            return null; // "/" resolves to an empty string otherwise, we need to avoid it
         }
-        return is;
+        return request.getServletContext().getResourceAsStream(pathInfo);
     }
 
     public boolean serveStaticContent(final HttpServletRequest request,


[39/50] tomee git commit: skipping xbean too

Posted by rm...@apache.org.
skipping xbean too


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

Branch: refs/heads/tomee-1.7.x
Commit: 16fa1d5db20444f7439da511615cece1428c460c
Parents: 32e6d19
Author: rmannibucau <rm...@apache.org>
Authored: Wed Oct 19 09:51:05 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Wed Oct 19 09:51:05 2016 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/openejb/util/ContainerClassesFilter.java   | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/16fa1d5d/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
index 950b5c9..0ab89f1 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
@@ -109,6 +109,7 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("org.apache.velocity");
         excluded.add("org.apache.ws");
         excluded.add("org.apache.wss4j");
+        excluded.add("org.apache.xbean");
         excluded.add("org.apache.xml");
         excluded.add("org.apache.xml.resolver");
         excluded.add("org.bouncycastle");


[44/50] tomee git commit: style

Posted by rm...@apache.org.
style


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

Branch: refs/heads/tomee-1.7.x
Commit: 37eb102e47bceceda1507dcb05c82cdba215d364
Parents: 1ead009
Author: rmannibucau <rm...@apache.org>
Authored: Thu Oct 20 22:10:40 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Oct 20 22:10:40 2016 +0200

----------------------------------------------------------------------
 .../java/org/apache/openejb/core/OpenEJBInitialContextFactory.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/37eb102e/container/openejb-core/src/main/java/org/apache/openejb/core/OpenEJBInitialContextFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/OpenEJBInitialContextFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/core/OpenEJBInitialContextFactory.java
index 0d91b41..e614159 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/OpenEJBInitialContextFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/OpenEJBInitialContextFactory.java
@@ -36,7 +36,7 @@ public class OpenEJBInitialContextFactory implements InitialContextFactory {
         return new LocalFallbackContextWrapper(SystemInstance.get().getComponent(ContainerSystem.class).getJNDIContext());
     }
 
-    private static class LocalFallbackContextWrapper extends ContextWrapper {
+    private static final class LocalFallbackContextWrapper extends ContextWrapper {
         private final ConcurrentMap<String, String> mapping = new ConcurrentHashMap<>();
 
         private LocalFallbackContextWrapper(final Context jndiContext) {


[48/50] tomee git commit: bval release

Posted by rm...@apache.org.
bval release


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

Branch: refs/heads/tomee-1.7.x
Commit: d39d1bc2a92a419cd53479c6d68d6730d7bea4a4
Parents: 8381fdb
Author: rmannibucau <rm...@apache.org>
Authored: Thu Nov 3 17:57:36 2016 +0100
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Nov 3 17:57:36 2016 +0100

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


http://git-wip-us.apache.org/repos/asf/tomee/blob/d39d1bc2/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 0ece54c..dc450b5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -161,7 +161,7 @@
     <commons-io.version>2.4</commons-io.version>
     <commons-net.version>3.3</commons-net.version>
 
-    <bval.version>1.1.2-SNAPSHOT</bval.version>
+    <bval.version>1.1.2</bval.version>
     <org.apache.activemq.version>5.14.1</org.apache.activemq.version>
     <org.springframework.version>3.1.4.RELEASE</org.springframework.version>
     <junit.version>4.12</junit.version>


[47/50] tomee git commit: beanutils is no more there by default

Posted by rm...@apache.org.
beanutils is no more there by default


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

Branch: refs/heads/tomee-1.7.x
Commit: 8381fdbc37557a633a5e0b8246052eb4fa2cb299
Parents: f1eacc3
Author: rmannibucau <rm...@apache.org>
Authored: Thu Oct 27 23:40:26 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Oct 27 23:40:26 2016 +0200

----------------------------------------------------------------------
 examples/deltaspike-fullstack/pom.xml | 4 ----
 1 file changed, 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/8381fdbc/examples/deltaspike-fullstack/pom.xml
----------------------------------------------------------------------
diff --git a/examples/deltaspike-fullstack/pom.xml b/examples/deltaspike-fullstack/pom.xml
index fb95228..5116ec8 100644
--- a/examples/deltaspike-fullstack/pom.xml
+++ b/examples/deltaspike-fullstack/pom.xml
@@ -294,10 +294,6 @@
           <artifactId>commons-logging</artifactId>
           <groupId>commons-logging</groupId>
         </exclusion>
-        <exclusion>
-          <artifactId>commons-beanutils</artifactId>
-          <groupId>commons-beanutils</groupId>
-        </exclusion>
       </exclusions>
     </dependency>
     <dependency>


[05/50] tomee git commit: adding jsch and jackson to default fatjar exclusions

Posted by rm...@apache.org.
adding jsch and jackson to default fatjar exclusions


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

Branch: refs/heads/tomee-1.7.x
Commit: a56f66a72f7368f6f4eb9ead914d89569eb7f5e9
Parents: 187a532
Author: rmannibucau <rm...@apache.org>
Authored: Thu Sep 29 21:15:40 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Sep 29 21:15:40 2016 +0200

----------------------------------------------------------------------
 .../java/org/apache/openejb/util/ContainerClassesFilter.java   | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/a56f66a7/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
index 1396a35..34715ee 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/ContainerClassesFilter.java
@@ -43,9 +43,15 @@ public class ContainerClassesFilter implements Filter {
         excluded.add("com.codehale.metrics");
         excluded.add("com.ctc.wstx");
         excluded.add("com.datastax.driver.core");
+        excluded.add("com.fasterxml.jackson.annotation");
+        excluded.add("com.fasterxml.jackson.core");
+        excluded.add("com.fasterxml.jackson.databind");
+        excluded.add("com.fasterxml.jackson.dataformat");
+        excluded.add("com.fasterxml.jackson.module");
         excluded.add("com.google.common");
         excluded.add("com.google.thirdparty");
         excluded.add("com.ibm.wsdl");
+        excluded.add("com.jcraft.jsch");
         excluded.add("com.kenai.jffi");
         excluded.add("com.kenai.jnr");
         excluded.add("com.sun.istack");


[24/50] tomee git commit: TOMEE-1952 throw denied exception when logged in the request for ejbd more properly

Posted by rm...@apache.org.
TOMEE-1952 throw denied exception when logged in the request for ejbd more properly


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

Branch: refs/heads/tomee-1.7.x
Commit: 2493f404f443025ddcfb6707de46b07b61ce4ec0
Parents: f86f5a3
Author: rmannibucau <rm...@apache.org>
Authored: Tue Oct 4 17:08:51 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Tue Oct 4 17:08:51 2016 +0200

----------------------------------------------------------------------
 .../apache/openejb/client/EJBObjectHandler.java |  5 +++
 .../org/apache/openejb/client/EJBResponse.java  |  3 ++
 .../apache/openejb/AuthentWithRequestTest.java  | 44 ++++++++++++++------
 3 files changed, 40 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/2493f404/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java b/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
index 7923b70..cac4399 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
@@ -307,6 +307,11 @@ public abstract class EJBObjectHandler extends EJBInvocationHandler {
                 throw new ApplicationException((ThrowableArtifact) getResult(res));
             case ResponseCodes.EJB_OK:
                 return getResult(res);
+            case ResponseCodes.AUTH_DENIED:
+                final Object result = res.getResult();
+                if (ThrowableArtifact.class.isInstance(result)) {
+                    throw ThrowableArtifact.class.cast(result).getThrowable();
+                } // else it be a remote exception
             default:
                 throw new RemoteException("Received invalid response code from server: " + res.getResponseCode());
         }

http://git-wip-us.apache.org/repos/asf/tomee/blob/2493f404/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java b/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java
index 04c8c29..46959eb 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java
@@ -110,6 +110,9 @@ public class EJBResponse implements ClusterableResponse {
             case ResponseCodes.EJB_SYS_EXCEPTION:
                 s = new StringBuffer("EJB_SYS_EXCEPTION");
                 break;
+            case ResponseCodes.AUTH_DENIED:
+                s = new StringBuffer("AUTH_DENIED");
+                break;
             default:
                 s = new StringBuffer("UNKNOWN_RESPONSE");
         }

http://git-wip-us.apache.org/repos/asf/tomee/blob/2493f404/server/openejb-ejbd/src/test/java/org/apache/openejb/AuthentWithRequestTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-ejbd/src/test/java/org/apache/openejb/AuthentWithRequestTest.java b/server/openejb-ejbd/src/test/java/org/apache/openejb/AuthentWithRequestTest.java
index 70d834d..4d282f7 100644
--- a/server/openejb-ejbd/src/test/java/org/apache/openejb/AuthentWithRequestTest.java
+++ b/server/openejb-ejbd/src/test/java/org/apache/openejb/AuthentWithRequestTest.java
@@ -33,6 +33,7 @@ import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import javax.ejb.EJBException;
 import javax.ejb.Remote;
 import javax.ejb.Stateless;
 import javax.naming.Context;
@@ -49,6 +50,7 @@ import java.util.Properties;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
 public class AuthentWithRequestTest {
 
@@ -82,19 +84,37 @@ public class AuthentWithRequestTest {
         assembler.createApplication(config.configureApplication(ejbJar));
 
         try {
+            { // ok case
+                final Context context = new InitialContext(new PropertiesBuilder()
+                        .p(Context.INITIAL_CONTEXT_FACTORY, RemoteInitialContextFactory.class.getName())
+                        .p(Context.PROVIDER_URL, "ejbd://127.0.0.1:" + port)
+                        .p(JNDIContext.AUTHENTICATE_WITH_THE_REQUEST, "true")
+                        .p("java.naming.security.principal", "foo")
+                        .p("java.naming.security.credentials", "bar")
+                        .p("openejb.authentication.realmName", "LM")
+                        .build());
+                final AnInterfaceRemote client = AnInterfaceRemote.class.cast(context.lookup("RemoteWithSecurityRemote"));
+                assertNotNull(client);
+
+                assertEquals("foo", client.call());
+            }
 
-            final Context context = new InitialContext(new PropertiesBuilder()
-                .p(Context.INITIAL_CONTEXT_FACTORY, RemoteInitialContextFactory.class.getName())
-                .p(Context.PROVIDER_URL, "ejbd://127.0.0.1:" + port)
-                .p(JNDIContext.AUTHENTICATE_WITH_THE_REQUEST, "true")
-                .p("java.naming.security.principal", "foo")
-                .p("java.naming.security.credentials", "bar")
-                .p("openejb.authentication.realmName", "LM")
-                .build());
-            final AnInterfaceRemote client = AnInterfaceRemote.class.cast(context.lookup("RemoteWithSecurityRemote"));
-            assertNotNull(client);
-
-            assertEquals("foo", client.call());
+            {// now the failing case
+                final Context context = new InitialContext(new PropertiesBuilder()
+                        .p(Context.INITIAL_CONTEXT_FACTORY, RemoteInitialContextFactory.class.getName())
+                        .p(Context.PROVIDER_URL, "ejbd://127.0.0.1:" + port)
+                        .p(JNDIContext.AUTHENTICATE_WITH_THE_REQUEST, "true")
+                        .p("java.naming.security.principal", "wrong")
+                        .p("java.naming.security.credentials", "wrong")
+                        .p("openejb.authentication.realmName", "LM")
+                        .build());
+                final AnInterfaceRemote client = AnInterfaceRemote.class.cast(context.lookup("RemoteWithSecurityRemote"));
+                try {
+                    client.call();
+                } catch (final EJBException e) {
+                    assertTrue(LoginException.class.isInstance(e.getCause()));
+                }
+            }
         } finally {
             serviceDaemon.stop();
             OpenEJB.destroy();


[27/50] tomee git commit: TOMEE-1957 adding @Args for tomee embedded

Posted by rm...@apache.org.
TOMEE-1957 adding @Args for tomee embedded


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

Branch: refs/heads/tomee-1.7.x
Commit: 14c7483b9a972a4b60795c5c3cde363061abc4dd
Parents: fb54561
Author: rmannibucau <rm...@apache.org>
Authored: Sun Oct 9 18:23:09 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Sun Oct 9 18:23:09 2016 +0200

----------------------------------------------------------------------
 .../embedded/TomEEEmbeddedApplicationRunner.java      | 14 ++++++++++++++
 .../tomee/embedded/NoScannerSingleRunnerTest.java     |  4 ++++
 2 files changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/14c7483b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
index ffc4dcd..62f305d 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
@@ -445,6 +445,15 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
                     final Class type = f.getType();
                     final Object taskByType = accessor.getTaskByType(type);
                     f.set(target, taskByType);
+                } else if (f.isAnnotationPresent(Args.class)) {
+                    if (String[].class != f.getType()) {
+                        throw new IllegalArgumentException("@Args can only be used for String[] field, not on " + f.getType());
+                    }
+                    if (!f.isAccessible()) {
+                        f.setAccessible(true);
+                    }
+                    final TomEEEmbeddedArgs args = SystemInstance.get().getComponent(TomEEEmbeddedArgs.class);
+                    f.set(target, args == null ? new String[0] : args.getArgs());
                 }
             }
             aClass = aClass.getSuperclass();
@@ -465,6 +474,11 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
     }
 
     @Retention(RUNTIME)
+    @Target(FIELD)
+    public @interface Args {
+    }
+
+    @Retention(RUNTIME)
     @Target(TYPE)
     public @interface Configurers {
         Class<? extends Configurer>[] value();

http://git-wip-us.apache.org/repos/asf/tomee/blob/14c7483b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/NoScannerSingleRunnerTest.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/NoScannerSingleRunnerTest.java b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/NoScannerSingleRunnerTest.java
index 570f88a..78927db 100644
--- a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/NoScannerSingleRunnerTest.java
+++ b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/NoScannerSingleRunnerTest.java
@@ -37,8 +37,12 @@ public class NoScannerSingleRunnerTest {
     @Application // app can have several injections/helpers
     private ScanApp app;
 
+    @TomEEEmbeddedApplicationRunner.Args
+    private String[] args;
+
     @Test
     public void run() {
+        assertNotNull(app);
         app.check();
     }
 


[34/50] tomee git commit: removing codehause snapshot repo, shouldnt be needed

Posted by rm...@apache.org.
removing codehause snapshot repo, shouldnt be needed


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

Branch: refs/heads/tomee-1.7.x
Commit: 6a2ecdd841abb9df8a0fd8b6774b08ea5bb7d49c
Parents: 190b51e
Author: rmannibucau <rm...@apache.org>
Authored: Fri Oct 14 12:05:58 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Fri Oct 14 12:05:58 2016 +0200

----------------------------------------------------------------------
 pom.xml | 45 ---------------------------------------------
 1 file changed, 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/6a2ecdd8/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 3679ba9..95ed2b3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -593,13 +593,6 @@
 
       <repositories>
         <repository>
-          <releases>
-            <enabled>false</enabled>
-          </releases>
-          <id>Codehaus Snapshots</id>
-          <url>http://snapshots.repository.codehaus.org/</url>
-        </repository>
-        <repository>
           <id>apache-snapshots</id>
           <name>Apache Snapshots Repository</name>
           <url>https://repository.apache.org/content/groups/snapshots</url>
@@ -611,16 +604,6 @@
           </snapshots>
         </repository>
       </repositories>
-
-      <pluginRepositories>
-        <pluginRepository>
-          <releases>
-            <enabled>false</enabled>
-          </releases>
-          <id>Codehaus Snapshots</id>
-          <url>http://snapshots.repository.codehaus.org/</url>
-        </pluginRepository>
-      </pluginRepositories>
     </profile>
 
     <profile>
@@ -677,24 +660,6 @@
           </plugin>
         </plugins>
       </build>
-      <repositories>
-        <repository>
-          <releases>
-            <enabled>false</enabled>
-          </releases>
-          <id>Codehaus Snapshots</id>
-          <url>http://snapshots.repository.codehaus.org/</url>
-        </repository>
-      </repositories>
-      <pluginRepositories>
-        <pluginRepository>
-          <releases>
-            <enabled>false</enabled>
-          </releases>
-          <id>Codehaus Snapshots</id>
-          <url>http://snapshots.repository.codehaus.org/</url>
-        </pluginRepository>
-      </pluginRepositories>
     </profile>
   </profiles>
   <repositories>
@@ -771,16 +736,6 @@
         <enabled>true</enabled>
       </snapshots>
     </pluginRepository>
-    <pluginRepository>
-      <id>Codehaus Snapshots</id>
-      <url>http://snapshots.repository.codehaus.org/</url>
-      <releases>
-        <enabled>false</enabled>
-      </releases>
-      <snapshots>
-        <enabled>true</enabled>
-      </snapshots>
-    </pluginRepository>
   </pluginRepositories>
   <dependencyManagement>
     <dependencies>


[14/50] tomee git commit: align eclipselink version used in core-eclipselink

Posted by rm...@apache.org.
align eclipselink version used in core-eclipselink


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

Branch: refs/heads/tomee-1.7.x
Commit: e2a4c2a870915969e1ef6887076e267d13b41d7e
Parents: 0737513
Author: rmannibucau <rm...@apache.org>
Authored: Mon Oct 3 14:31:19 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Mon Oct 3 14:31:19 2016 +0200

----------------------------------------------------------------------
 utils/openejb-core-eclipselink/pom.xml | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/e2a4c2a8/utils/openejb-core-eclipselink/pom.xml
----------------------------------------------------------------------
diff --git a/utils/openejb-core-eclipselink/pom.xml b/utils/openejb-core-eclipselink/pom.xml
index 2a06871..1d3c066 100644
--- a/utils/openejb-core-eclipselink/pom.xml
+++ b/utils/openejb-core-eclipselink/pom.xml
@@ -44,12 +44,20 @@
     <dependency>
       <groupId>org.eclipse.persistence</groupId>
       <artifactId>eclipselink</artifactId>
-      <version>2.5.2</version>
+      <version>${version.eclipselink}</version>
       <exclusions>
         <exclusion>
           <groupId>org.eclipse.persistence</groupId>
           <artifactId>javax.persistence</artifactId>
         </exclusion>
+        <exclusion>
+          <groupId>javax.validation</groupId>
+          <artifactId>validation-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.glassfish</groupId>
+          <artifactId>javax.json</artifactId>
+        </exclusion>
       </exclusions>
     </dependency>
   </dependencies>


[35/50] tomee git commit: removing terracota repo

Posted by rm...@apache.org.
removing terracota repo


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

Branch: refs/heads/tomee-1.7.x
Commit: 80b788d460efac91d530a51ccc33b5cb774538a4
Parents: 6a2ecdd
Author: rmannibucau <rm...@apache.org>
Authored: Fri Oct 14 13:16:56 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Fri Oct 14 13:16:56 2016 +0200

----------------------------------------------------------------------
 pom.xml | 16 ----------------
 1 file changed, 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/80b788d4/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 95ed2b3..4f5ebcd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -707,22 +707,6 @@
         <enabled>true</enabled>
       </snapshots>
     </repository>
-    <!--<repository>-->
-    <!--<id>apache-incubating-repository</id>-->
-    <!--<name>Apache Incubating Repository</name>-->
-    <!--<url>http://people.apache.org/repo/m2-incubating-repository</url>-->
-    <!--<releases>-->
-    <!--<enabled>true</enabled>-->
-    <!--</releases>-->
-    <!--<snapshots>-->
-    <!--<enabled>false</enabled>-->
-    <!--</snapshots>-->
-    <!--</repository>-->
-    <repository>
-      <id>terracotta</id>
-      <name>Terracotta</name>
-      <url>http://repo.terracotta.org/maven2/</url>
-    </repository>
   </repositories>
   <pluginRepositories>
     <pluginRepository>


[03/50] tomee git commit: TOMEE-1950 support of most of descriptors in classpath for tomee embedded case

Posted by rm...@apache.org.
TOMEE-1950 support of most of descriptors in classpath for tomee embedded case


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

Branch: refs/heads/tomee-1.7.x
Commit: 12f29b9076a8b47d165f866635c16a82bf9c3eff
Parents: f367d4a
Author: rmannibucau <rm...@apache.org>
Authored: Thu Sep 29 20:43:20 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Sep 29 20:43:20 2016 +0200

----------------------------------------------------------------------
 .../org/apache/tomee/embedded/Container.java    | 23 +++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/12f29b90/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
index 600a4d8..0cd4cfa 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
@@ -102,6 +102,7 @@ import java.io.Writer;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -279,7 +280,7 @@ public class Container implements AutoCloseable {
             } catch (final MalformedURLException e) {
                 // no-op
             }
-        }
+        } // else no classpath finding since we'll likely find it
         DeploymentLoader.addBeansXmls(webModule);
 
         final AppModule app = new AppModule(loader, null);
@@ -288,6 +289,26 @@ public class Container implements AutoCloseable {
         app.setModuleId(webModule.getModuleId());
         try {
             final Map<String, URL> webDescriptors = DeploymentLoader.getWebDescriptors(jarLocation);
+            if (webDescriptors.isEmpty()) { // likely so let's try to find them in the classpath
+                final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+                final Collection<String> metaDir = asList("META-INF/tomee/", "META-INF/");
+                for (final String dd : asList(
+                        "app-ctx.xml", "module.properties", "application.properties",
+                        "env-entries.properties", NewLoaderLogic.EXCLUSION_FILE,
+                        "web.xml", "ejb-jar.xml", "openejb-jar.xml", "validation.xml")) {
+                    if (Boolean.parseBoolean(SystemInstance.get().getProperty("tomee.embedded.descriptors.classpath." + dd + ".skip"))
+                            || webDescriptors.containsKey(dd)) {
+                        continue;
+                    }
+                    for (final String meta : metaDir) {
+                        final URL url = classLoader.getResource(meta + dd);
+                        if (url != null) {
+                            webDescriptors.put(dd, url);
+                            break;
+                        }
+                    }
+                }
+            }
             webDescriptors.remove("beans.xml");
             webModule.getAltDDs().putAll(webDescriptors);
             DeploymentLoader.addWebModule(webModule, app);


[31/50] tomee git commit: TOMEE-1959 script customizers for tomee embedded plugin

Posted by rm...@apache.org.
TOMEE-1959 script customizers for tomee embedded plugin


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

Branch: refs/heads/tomee-1.7.x
Commit: c31477cf61c4942fa4959a3bb90af949194405fb
Parents: 4d1a577
Author: rmannibucau <rm...@apache.org>
Authored: Fri Oct 14 09:30:58 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Fri Oct 14 09:30:58 2016 +0200

----------------------------------------------------------------------
 .../maven/plugins/TomEEEmbeddedMojo.java        | 40 ++++++++++
 .../maven/plugins/TomEEEmbeddedMojoTest.java    | 82 +++++++++++++++++++-
 .../maven/plugin/test/JsCustomizertest.java     |  2 +-
 .../org/apache/tomee/embedded/Container.java    | 11 +++
 4 files changed, 133 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/c31477cf/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 da697cb..1267169 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
@@ -49,8 +49,13 @@ import org.codehaus.plexus.configuration.PlexusConfiguration;
 import org.codehaus.plexus.util.FileUtils;
 
 import javax.naming.NamingException;
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineManager;
+import javax.script.ScriptException;
+import javax.script.SimpleBindings;
 import java.io.File;
 import java.io.IOException;
+import java.io.StringReader;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.net.MalformedURLException;
@@ -332,6 +337,18 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
     @Parameter(property = "tomee-plugin.liveReload", defaultValue = "false")
     private boolean withLiveReload;
 
+    /**
+     * A list of js scripts executed before the container starts.
+     */
+    @Parameter
+    protected List<String> jsCustomizers;
+
+    /**
+     * A list of groovy scripts executed before the container starts. Needs to add groovy as dependency.
+     */
+    @Parameter
+    protected List<String> groovyCustomizers;
+
     private Map<String, Command> commands;
     private String deployedName;
 
@@ -385,6 +402,10 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
                         throw new TomEERuntimeException(e);
                     }
                 }
+
+                final String base = getBase().getAbsolutePath();
+                scriptCustomization(jsCustomizers, "js", base);
+                scriptCustomization(groovyCustomizers, "groovy", base);
             }
         };
         final Configuration config = getConfig();
@@ -478,6 +499,25 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
         }
     }
 
+    private void scriptCustomization(final List<String> customizers, final String ext, final String base) {
+        if (customizers == null || customizers.isEmpty()) {
+            return;
+        }
+        final ScriptEngine engine = new ScriptEngineManager().getEngineByExtension(ext);
+        if (engine == null) {
+            throw new IllegalStateException("No engine for " + ext + ". Maybe add the JSR223 implementation as plugin dependency.");
+        }
+        for (final String js : customizers) {
+            try {
+                final SimpleBindings bindings = new SimpleBindings();
+                bindings.put("catalinaBase", base);
+                engine.eval(new StringReader(js), bindings);
+            } catch (final ScriptException e) {
+                throw new IllegalStateException(e.getMessage(), e);
+            }
+        }
+    }
+
     protected Scanner newScanner() {
         return new Scanner(System.in);
     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/c31477cf/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java
----------------------------------------------------------------------
diff --git a/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java b/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java
index 3a51b51..e7e617e 100644
--- a/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java
+++ b/maven/tomee-embedded-maven-plugin/src/test/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojoTest.java
@@ -21,15 +21,23 @@ import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.logging.SystemStreamLog;
 import org.apache.openejb.config.DeploymentFilterable;
 import org.apache.openejb.loader.IO;
+import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.NetworkUtil;
+import org.junit.Before;
 import org.junit.Test;
 
+import javax.management.InstanceNotFoundException;
+import javax.management.IntrospectionException;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
+import java.lang.management.ManagementFactory;
 import java.net.URL;
 import java.util.HashMap;
 import java.util.Scanner;
@@ -42,11 +50,33 @@ import static java.lang.System.lineSeparator;
 import static java.lang.Thread.sleep;
 import static java.util.Collections.singletonList;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 public class TomEEEmbeddedMojoTest {
+    @Before // there can be a small latency stopping/restarting tomcat so ensure we don't have conflicts between tests
+    public void ensureTomcatIsDown() throws MalformedObjectNameException, IntrospectionException, ReflectionException {
+        for (int i = 0; i < 10; i++) {
+            try {
+                assertFalse(SystemInstance.isInitialized());
+                try {
+                    assertNull(ManagementFactory.getPlatformMBeanServer().getMBeanInfo(new ObjectName("Tomcat:type=Server")));
+                } catch (final InstanceNotFoundException e) {
+                    // ok
+                }
+            } catch (final AssertionError ae) {
+                try {
+                    sleep(1000);
+                } catch (final InterruptedException e) {
+                    Thread.interrupted();
+                    fail();
+                }
+            }
+        }
+    }
+
     @Test
     public void run() throws MojoFailureException, MojoExecutionException, IOException, InterruptedException {
         final File docBase = new File("target/TomEEEmbeddedMojoTest/base");
@@ -131,7 +161,6 @@ public class TomEEEmbeddedMojoTest {
         input.close();
     }
 
-
     @Test
     public void customWebResource() throws Exception {
         final File docBase = new File("target/TomEEEmbeddedMojoTest/customWebResource");
@@ -176,6 +205,57 @@ public class TomEEEmbeddedMojoTest {
         input.close();
     }
 
+    @Test
+    public void customScript() throws Exception {
+        // we use a dynamic InputStream to be able to simulate commands without hacking System.in
+        final Input input = new Input();
+        final Semaphore reloaded = new Semaphore(0);
+        final CountDownLatch started = new CountDownLatch(1);
+        final TomEEEmbeddedMojo mojo = new TomEEEmbeddedMojo() {
+            @Override
+            protected Scanner newScanner() {
+                return new Scanner(input);
+            }
+        };
+        mojo.classpathAsWar = true;
+        mojo.httpPort = NetworkUtil.getNextAvailablePort();
+        mojo.ssl = false;
+        mojo.webResourceCached = false;
+        mojo.jsCustomizers = singletonList(
+                "var File = Java.type('java.io.File');" +
+                        "var FileWriter = Java.type('java.io.FileWriter');" +
+                        "var out = new File(catalinaBase, 'conf/app.conf');" +
+                        "var writer = new FileWriter(out);" +
+                        "writer.write('test=ok');" +
+                        "writer.close();");
+        mojo.setLog(new SystemStreamLog() { // not the best solution but fine for now...
+            @Override
+            public void info(final CharSequence charSequence) {
+                final String string = charSequence.toString();
+                if (string.startsWith("TomEE embedded started on") || string.equals("can't start TomEE")) {
+                    started.countDown();
+                } else if (string.contains("Redeployed /")) {
+                    reloaded.release();
+                }
+                super.info(charSequence);
+            }
+        });
+
+        CountDownLatch stopped = null;
+        try {
+            stopped = doStart(started, mojo);
+            final File appConf = new File(System.getProperty("catalina.base"), "conf/app.conf");
+            assertTrue(appConf.exists());
+            assertEquals("ok", IO.readProperties(appConf).getProperty("test", "ko"));
+        } finally {
+            input.write("exit");
+            if (stopped != null) {
+                stopped.await(5, TimeUnit.MINUTES);
+            }
+            input.close();
+        }
+    }
+
     private CountDownLatch doStart(final CountDownLatch started, final TomEEEmbeddedMojo mojo) {
         final CountDownLatch stopped = new CountDownLatch(1);
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/c31477cf/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/test/JsCustomizertest.java
----------------------------------------------------------------------
diff --git a/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/test/JsCustomizertest.java b/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/test/JsCustomizertest.java
index b8c340f..1d0c556 100644
--- a/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/test/JsCustomizertest.java
+++ b/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/test/JsCustomizertest.java
@@ -42,8 +42,8 @@ public class JsCustomizertest {
         "" +
         "var junit = resolver.resolve('junit', 'junit', '4.12');" +
         "Files.copy(junit.toPath(), new File(catalinaBase, 'lib/JsCustomizertest.jar').toPath(), StandardCopyOption.REPLACE_EXISTING);"
-    );
 
+    );
     @Config
     private final File catalinaBase = new File("target/JsCustomizertest");
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/c31477cf/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
index aa2d054..4a30f0e 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
@@ -106,6 +106,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -356,6 +357,16 @@ public class Container implements AutoCloseable {
 
     private static void addCallersAsEjbModule(final ClassLoader loader, final AppModule app, final String... additionalCallers) {
         final Set<String> callers = new HashSet<>(NewLoaderLogic.callers(Filters.classes(Container.class.getName(), "org.apache.openejb.maven.plugins.TomEEEmbeddedMojo")));
+        // we don't care of these
+        callers.remove("org.apache.tomee.embedded.Container");
+        callers.remove("org.apache.tomee.gradle.embedded.TomEEEmbeddedTask");
+        final Iterator<String> callerIt = callers.iterator();
+        while (callerIt.hasNext()) { // TomEEEmbeddedMojo is also used with some anonymous classes (TomEEEmbeddedMojo$x)
+            if (callerIt.next().startsWith("org.apache.openejb.maven.plugins.TomEEEmbeddedMojo")) {
+                callerIt.remove();
+                // no break since we remove anonymous class+the mojo itself
+            }
+        }
         if (additionalCallers != null && additionalCallers.length > 0) {
             callers.addAll(asList(additionalCallers));
         }


[20/50] tomee git commit: fixing application runner injections when there is a parent

Posted by rm...@apache.org.
fixing application runner injections when there is a parent


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

Branch: refs/heads/tomee-1.7.x
Commit: 5c33866d94742043a6ed301286adc22eb8502e3b
Parents: 3bb08cb
Author: rmannibucau <rm...@apache.org>
Authored: Tue Oct 4 12:22:41 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Tue Oct 4 12:22:41 2016 +0200

----------------------------------------------------------------------
 .../TomEEEmbeddedApplicationRunner.java         | 65 ++++++++++----------
 1 file changed, 32 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/5c33866d/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
index 34826c3..7721aa7 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
@@ -387,43 +387,42 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
             OWBInjector.inject(webBeansContext.getBeanManagerImpl(), target, null);
         }
 
-        final Class<?> aClass = target.getClass();
-        for (final Field f : aClass.getDeclaredFields()) {
-            final RandomPort randomPort = f.getAnnotation(RandomPort.class);
-            if (randomPort != null) {
-                for (final Field field : app.getClass().getDeclaredFields()) {
-                    final RandomPort appPort = field.getAnnotation(RandomPort.class);
-                    if (field.getType() == f.getType() && appPort != null && appPort.value().equals(randomPort.value())) {
-                        if (!field.isAccessible()) {
-                            field.setAccessible(true);
+        Class<?> aClass = target.getClass();
+        while (aClass != null && aClass != Object.class) {
+            for (final Field f : aClass.getDeclaredFields()) {
+                final RandomPort randomPort = f.getAnnotation(RandomPort.class);
+                if (randomPort != null) {
+                    for (final Field field : app.getClass().getDeclaredFields()) {
+                        final RandomPort appPort = field.getAnnotation(RandomPort.class);
+                        if (field.getType() == f.getType() && appPort != null && appPort.value().equals(randomPort.value())) {
+                            if (!field.isAccessible()) {
+                                field.setAccessible(true);
+                            }
+                            if (!f.isAccessible()) {
+                                f.setAccessible(true);
+                            }
+
+                            final Object value = field.get(app);
+                            f.set(target, value);
+                            break;
                         }
-                        if (!f.isAccessible()) {
-                            f.setAccessible(true);
-                        }
-
-                        final Object value = field.get(app);
-                        f.set(target, value);
-                        break;
                     }
+                } else if (f.isAnnotationPresent(Application.class)) {
+                    if (!f.isAccessible()) {
+                        f.setAccessible(true);
+                    }
+                    f.set(target, app);
+                } else if (f.isAnnotationPresent(LifecycleTask.class)) {
+                    if (!f.isAccessible()) {
+                        f.setAccessible(true);
+                    }
+                    final LifecycleTaskAccessor accessor = SystemInstance.get().getComponent(LifecycleTaskAccessor.class);
+                    final Class type = f.getType();
+                    final Object taskByType = accessor.getTaskByType(type);
+                    f.set(target, taskByType);
                 }
-            } else if (f.isAnnotationPresent(Application.class)) {
-                if (!f.isAccessible()) {
-                    f.setAccessible(true);
-                }
-                f.set(target, app);
-            } else if (f.isAnnotationPresent(LifecycleTask.class)) {
-                if (!f.isAccessible()) {
-                    f.setAccessible(true);
-                }
-                final LifecycleTaskAccessor accessor = SystemInstance.get().getComponent(LifecycleTaskAccessor.class);
-                final Class type = f.getType();
-                final Object taskByType = accessor.getTaskByType(type);
-                f.set(target, taskByType);
             }
-        }
-        final Class<?> superclass = aClass.getSuperclass();
-        if (superclass != Object.class) {
-            composerInject(superclass);
+            aClass = aClass.getSuperclass();
         }
 
         SystemInstance.get().fireEvent(new TomEEEmbeddedApplicationRunnerInjection(target));


[11/50] tomee git commit: way to configure the Configuration of tomee embedded in TomEEEmbeddedApplicationRunner + using system properties too

Posted by rm...@apache.org.
way to configure the Configuration of tomee embedded in TomEEEmbeddedApplicationRunner + using system properties too


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

Branch: refs/heads/tomee-1.7.x
Commit: dafe6d287875f63ea16cd466110a83e1023f1fb2
Parents: d552210
Author: rmannibucau <rm...@apache.org>
Authored: Fri Sep 30 15:13:48 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Fri Sep 30 15:13:48 2016 +0200

----------------------------------------------------------------------
 .../tomee/embedded/TomEEEmbeddedApplicationRunner.java  | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/dafe6d28/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
index 91755af..c16b970 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
@@ -117,10 +117,20 @@ public class TomEEEmbeddedApplicationRunner implements AutoCloseable {
         final Configuration configuration = new Configuration();
         final ContainerProperties props = appClass.getAnnotation(ContainerProperties.class);
         if (props != null) {
+            final Properties runnerProperties = new Properties();
             for (final ContainerProperties.Property p : props.value()) {
-                configuration.property(p.name(), p.value());
+                final String name = p.name();
+                if (name.startsWith("tomee.embedded.application.runner.")) { // allow to tune the Configuration
+                    runnerProperties.setProperty(name.substring("tomee.embedded.application.runner.".length()), p.value());
+                } else {
+                    configuration.property(name, p.value());
+                }
+            }
+            if (!runnerProperties.isEmpty()) {
+                configuration.loadFromProperties(runnerProperties);
             }
         }
+        configuration.loadFromProperties(System.getProperties()); // overrides, note that some config are additive by design
 
         final List<Method> annotatedMethods = finder.findAnnotatedMethods(org.apache.openejb.testing.Configuration.class);
         if (annotatedMethods.size() > 1) {


[13/50] tomee git commit: TOMEE-1951 making JPA CDI aware

Posted by rm...@apache.org.
TOMEE-1951 making JPA CDI aware


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

Branch: refs/heads/tomee-1.7.x
Commit: 0737513ae6e4755ac94699b3b8b09ee2371ece09
Parents: 6379200
Author: rmannibucau <rm...@apache.org>
Authored: Mon Oct 3 11:02:59 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Mon Oct 3 11:02:59 2016 +0200

----------------------------------------------------------------------
 .../openejb/assembler/classic/Assembler.java    |   6 +-
 .../classic/EntityManagerFactoryCallable.java   |  53 +++++++-
 .../assembler/classic/PersistenceBuilder.java   |   9 +-
 .../classic/ReloadableEntityManagerFactory.java |  47 ++++---
 .../openejb/persistence/JtaEntityManager.java   |   9 +-
 .../openejb/jpa/JPAHasBeanManagerTest.java      | 121 +++++++++++++++++++
 6 files changed, 216 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/0737513a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
index ae52f14..08eb1a3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
@@ -765,6 +765,8 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
             final Map<String, Object> appBindings = appBuilder.buildBindings(JndiEncBuilder.JndiScope.app);
             final Context appJndiContext = appBuilder.build(appBindings);
 
+            final boolean cdiActive = shouldStartCdi(appInfo);
+
             try {
                 // Generate the cmp2/cmp1 concrete subclasses
                 final CmpJarBuilder cmpJarBuilder = new CmpJarBuilder(appInfo, classLoader);
@@ -861,7 +863,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
                 for (final PersistenceUnitInfo info : appInfo.persistenceUnits) {
                     final ReloadableEntityManagerFactory factory;
                     try {
-                        factory = persistenceBuilder.createEntityManagerFactory(info, classLoader, validatorFactoriesByConfig);
+                        factory = persistenceBuilder.createEntityManagerFactory(info, classLoader, validatorFactoriesByConfig, cdiActive);
                         containerSystem.getJNDIContext().bind(PERSISTENCE_UNIT_NAMING_CONTEXT + info.id, factory);
                         units.put(info.name, PERSISTENCE_UNIT_NAMING_CONTEXT + info.id);
                     } catch (final NameAlreadyBoundException e) {
@@ -907,7 +909,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
                     propagateApplicationExceptions(appInfo, classLoader, allDeployments);
                 }
 
-                if (shouldStartCdi(appInfo)) {
+                if (cdiActive) {
                     new CdiBuilder().build(appInfo, appContext, allDeployments);
                     ensureWebBeansContext(appContext);
                     appJndiContext.bind("app/BeanManager", appContext.getBeanManager());

http://git-wip-us.apache.org/repos/asf/tomee/blob/0737513a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
index cb5706b..854c9c4 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EntityManagerFactoryCallable.java
@@ -19,11 +19,20 @@ package org.apache.openejb.assembler.classic;
 
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.persistence.PersistenceUnitInfoImpl;
+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 javax.enterprise.inject.spi.BeanManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.ValidationMode;
 import javax.persistence.spi.PersistenceProvider;
 import javax.validation.ValidatorFactory;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.Callable;
@@ -35,14 +44,29 @@ public class EntityManagerFactoryCallable implements Callable<EntityManagerFacto
     private final String persistenceProviderClassName;
     private final PersistenceUnitInfoImpl unitInfo;
     private final Map<ComparableValidationConfig, ValidatorFactory> potentialValidators;
+    private final boolean cdi;
     private ClassLoader appClassLoader;
 
     public EntityManagerFactoryCallable(final String persistenceProviderClassName, final PersistenceUnitInfoImpl unitInfo,
-                                        final ClassLoader cl, final Map<ComparableValidationConfig, ValidatorFactory> validators) {
+                                        final ClassLoader cl, final Map<ComparableValidationConfig, ValidatorFactory> validators,
+                                        final boolean hasCdi) {
         this.persistenceProviderClassName = persistenceProviderClassName;
         this.unitInfo = unitInfo;
         this.appClassLoader = cl;
         this.potentialValidators = validators;
+        this.cdi = hasCdi;
+    }
+
+    public Class<?> getProvider() {
+        final ClassLoader old = Thread.currentThread().getContextClassLoader();
+        Thread.currentThread().setContextClassLoader(appClassLoader);
+        try {
+            return appClassLoader.loadClass(persistenceProviderClassName);
+        } catch (final ClassNotFoundException e) {
+            throw new IllegalArgumentException(e);
+        } finally {
+            Thread.currentThread().setContextClassLoader(old);
+        }
     }
 
     @Override
@@ -58,14 +82,37 @@ public class EntityManagerFactoryCallable implements Callable<EntityManagerFacto
             if (!ValidationMode.NONE.equals(unitInfo.getValidationMode())) {
                 properties.put("javax.persistence.validation.factory", new ValidatorFactoryWrapper(potentialValidators));
             }
+            if (cdi && "true".equalsIgnoreCase(unitInfo.getProperties().getProperty("tomee.jpa.cdi", "true"))
+                    && "true".equalsIgnoreCase(SystemInstance.get().getProperty("tomee.jpa.cdi", "true"))) {
+                properties.put("javax.persistence.bean.manager", // TODO: impl a passthrough BM?
+                        Proxy.newProxyInstance(appClassLoader, new Class<?>[]{BeanManager.class}, new InvocationHandler() {
+                            private volatile BeanManager bm;
+
+                            @Override
+                            public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
+                                try {
+                                    return method.invoke(findBm(), args);
+                                } catch (final InvocationTargetException ite) {
+                                    Logger.getInstance(LogCategory.OPENEJB_JPA, EntityManagerFactoryCallable.class)
+                                            .warning("Exception calling CDI, if a lifecycle issue you should maybe set tomee.jpa.factory.lazy=true", ite.getCause());
+                                    throw ite.getCause();
+                                }
+                            }
+
+                            private Object findBm() {
+                                return bm != null ? bm : (bm = new InjectableBeanManager(WebBeansContext.currentInstance().getBeanManagerImpl()));
+                            }
+                        })
+                );
+            }
 
             customizeProperties(properties);
 
             final EntityManagerFactory emf = persistenceProvider.createContainerEntityManagerFactory(unitInfo, properties);
 
             if (unitInfo.getProperties() != null
-                && "true".equalsIgnoreCase(unitInfo.getProperties().getProperty(OPENEJB_JPA_INIT_ENTITYMANAGER))
-                || SystemInstance.get().getOptions().get(OPENEJB_JPA_INIT_ENTITYMANAGER, false)) {
+                    && "true".equalsIgnoreCase(unitInfo.getProperties().getProperty(OPENEJB_JPA_INIT_ENTITYMANAGER))
+                    || SystemInstance.get().getOptions().get(OPENEJB_JPA_INIT_ENTITYMANAGER, false)) {
                 emf.createEntityManager().close();
             }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/0737513a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java
index 992404e..5a54b21 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java
@@ -25,7 +25,6 @@ import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 
-import java.util.Map;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
@@ -35,6 +34,7 @@ import javax.persistence.spi.PersistenceUnitTransactionType;
 import javax.sql.CommonDataSource;
 import javax.sql.DataSource;
 import javax.validation.ValidatorFactory;
+import java.util.Map;
 
 public class PersistenceBuilder {
 
@@ -50,7 +50,8 @@ public class PersistenceBuilder {
     }
 
     public ReloadableEntityManagerFactory createEntityManagerFactory(final PersistenceUnitInfo info, final ClassLoader classLoader,
-                                                                     final Map<ComparableValidationConfig, ValidatorFactory> validators) throws Exception {
+                                                                     final Map<ComparableValidationConfig, ValidatorFactory> validators,
+                                                                     final boolean hasCdi) throws Exception {
         final PersistenceUnitInfoImpl unitInfo = new PersistenceUnitInfoImpl(persistenceClassLoaderHandler);
 
         // Persistence Unit Id
@@ -68,7 +69,7 @@ public class PersistenceBuilder {
         // Exclude Unlisted Classes
         unitInfo.setExcludeUnlistedClasses(info.excludeUnlistedClasses);
 
-        unitInfo.setLazilyInitialized(info.webappName != null);
+        unitInfo.setLazilyInitialized(info.webappName != null || "true".equalsIgnoreCase(info.properties.getProperty("tomee.jpa.factory.lazy", "false")));
 
         final Context context = SystemInstance.get().getComponent(ContainerSystem.class).getJNDIContext();
 
@@ -151,7 +152,7 @@ public class PersistenceBuilder {
         final String persistenceProviderClassName = unitInfo.getPersistenceProviderClassName();
         unitInfo.setPersistenceProviderClassName(persistenceProviderClassName);
 
-        final EntityManagerFactoryCallable callable = new EntityManagerFactoryCallable(persistenceProviderClassName, unitInfo, classLoader, validators);
+        final EntityManagerFactoryCallable callable = new EntityManagerFactoryCallable(persistenceProviderClassName, unitInfo, classLoader, validators, hasCdi);
         return new ReloadableEntityManagerFactory(classLoader, callable, unitInfo);
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/0737513a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
index c61b207..a9ba815 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
@@ -86,7 +86,7 @@ public class ReloadableEntityManagerFactory implements EntityManagerFactory, Ser
 
     private final PersistenceUnitInfoImpl unitInfoImpl;
     private ClassLoader classLoader;
-    private EntityManagerFactory delegate;
+    private volatile EntityManagerFactory delegate;
     private final EntityManagerFactoryCallable entityManagerFactoryCallable;
     private ObjectName objectName;
 
@@ -112,6 +112,21 @@ public class ReloadableEntityManagerFactory implements EntityManagerFactory, Ser
         unitInfoImpl.setClassLoader(loader);
     }
 
+    public EntityManagerFactoryCallable getEntityManagerFactoryCallable() {
+        return entityManagerFactoryCallable;
+    }
+
+    private EntityManagerFactory delegate() {
+        if (delegate == null) {
+            synchronized (this) {
+                if (delegate == null) {
+                    createDelegate();
+                }
+            }
+        }
+        return delegate;
+    }
+
     public void createDelegate() {
         JPAThreadContext.infos.put("properties", entityManagerFactoryCallable.getUnitInfo().getProperties());
         final long start = System.nanoTime();
@@ -145,7 +160,7 @@ public class ReloadableEntityManagerFactory implements EntityManagerFactory, Ser
     public EntityManager createEntityManager() {
         EntityManager em;
         try {
-            em = delegate.createEntityManager();
+            em = delegate().createEntityManager();
         } catch (final LinkageError le) {
             em = delegate.createEntityManager();
         }
@@ -160,7 +175,7 @@ public class ReloadableEntityManagerFactory implements EntityManagerFactory, Ser
     public EntityManager createEntityManager(final Map map) {
         EntityManager em;
         try {
-            em = delegate.createEntityManager(map);
+            em = delegate().createEntityManager(map);
         } catch (final LinkageError le) {
             em = delegate.createEntityManager(map);
         }
@@ -175,7 +190,7 @@ public class ReloadableEntityManagerFactory implements EntityManagerFactory, Ser
     public EntityManager createEntityManager(final SynchronizationType synchronizationType) {
         EntityManager em;
         try {
-            em = delegate.createEntityManager(synchronizationType);
+            em = delegate().createEntityManager(synchronizationType);
         } catch (final LinkageError le) {
             em = delegate.createEntityManager(synchronizationType);
         }
@@ -190,7 +205,7 @@ public class ReloadableEntityManagerFactory implements EntityManagerFactory, Ser
     public EntityManager createEntityManager(final SynchronizationType synchronizationType, final Map map) {
         EntityManager em;
         try {
-            em = delegate.createEntityManager(synchronizationType, map);
+            em = delegate().createEntityManager(synchronizationType, map);
         } catch (final LinkageError le) {
             em = delegate.createEntityManager(synchronizationType, map);
         }
@@ -206,56 +221,56 @@ public class ReloadableEntityManagerFactory implements EntityManagerFactory, Ser
         if (cls.isAssignableFrom(getClass())) {
             return cls.cast(this);
         }
-        return delegate.unwrap(cls);
+        return delegate().unwrap(cls);
     }
 
     @Override
     public void addNamedQuery(final String name, final Query query) {
-        delegate.addNamedQuery(name, query);
+        delegate().addNamedQuery(name, query);
     }
 
     @Override
     public <T> void addNamedEntityGraph(final String graphName, final EntityGraph<T> entityGraph) {
-        delegate.addNamedEntityGraph(graphName, entityGraph);
+        delegate().addNamedEntityGraph(graphName, entityGraph);
     }
 
     @Override
     public CriteriaBuilder getCriteriaBuilder() {
-        return delegate.getCriteriaBuilder();
+        return delegate().getCriteriaBuilder();
     }
 
     @Override
     public Metamodel getMetamodel() {
-        return delegate.getMetamodel();
+        return delegate().getMetamodel();
     }
 
     @Override
     public boolean isOpen() {
-        return delegate.isOpen();
+        return delegate().isOpen();
     }
 
     @Override
     public void close() {
-        delegate.close();
+        delegate().close();
     }
 
     @Override
     public Map<String, Object> getProperties() {
-        return delegate.getProperties();
+        return delegate().getProperties();
     }
 
     @Override
     public Cache getCache() {
-        return delegate.getCache();
+        return delegate().getCache();
     }
 
     @Override
     public PersistenceUnitUtil getPersistenceUnitUtil() {
-        return delegate.getPersistenceUnitUtil();
+        return delegate().getPersistenceUnitUtil();
     }
 
     public EntityManagerFactory getDelegate() {
-        return delegate;
+        return delegate();
     }
 
     public void register() throws OpenEJBException {

http://git-wip-us.apache.org/repos/asf/tomee/blob/0737513a/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java b/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
index 208f6d5..79d3154 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
@@ -120,13 +120,14 @@ public class JtaEntityManager implements EntityManager, Serializable {
 
     public static boolean isJPA21(final EntityManagerFactory entityManagerFactory) {
         return ReloadableEntityManagerFactory.class.isInstance(entityManagerFactory) ?
-                isJPA21(ReloadableEntityManagerFactory.class.cast(entityManagerFactory).getDelegate())
-                : hasMethod(entityManagerFactory, "createEntityManager", SynchronizationType.class);
+                hasMethod(
+                        ReloadableEntityManagerFactory.class.cast(entityManagerFactory).getEntityManagerFactoryCallable().getProvider(),
+                        "createEntityManager", SynchronizationType.class)
+                : hasMethod(entityManagerFactory.getClass(), "createEntityManager", SynchronizationType.class);
     }
 
-    private static boolean hasMethod(final Object object, final String name, final Class<?>... params) {
+    private static boolean hasMethod(final Class<?> objectClass, final String name, final Class<?>... params) {
         try {
-            final Class<?> objectClass = object.getClass();
             Boolean result = IS_JPA21.get(objectClass);
             if (result == null) {
                 result = !Modifier.isAbstract(objectClass.getMethod(name, params).getModifiers());

http://git-wip-us.apache.org/repos/asf/tomee/blob/0737513a/container/openejb-core/src/test/java/org/apache/openejb/jpa/JPAHasBeanManagerTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/jpa/JPAHasBeanManagerTest.java b/container/openejb-core/src/test/java/org/apache/openejb/jpa/JPAHasBeanManagerTest.java
new file mode 100644
index 0000000..9e42db3
--- /dev/null
+++ b/container/openejb-core/src/test/java/org/apache/openejb/jpa/JPAHasBeanManagerTest.java
@@ -0,0 +1,121 @@
+/*
+ * 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.jpa;
+
+import org.apache.openejb.api.configuration.PersistenceUnitDefinition;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
+import org.apache.openjpa.persistence.PersistenceProviderImpl;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.annotation.PostConstruct;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.context.Initialized;
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.inject.Inject;
+import javax.persistence.Entity;
+import javax.persistence.EntityManager;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.PersistenceContext;
+import javax.persistence.spi.PersistenceUnitInfo;
+import javax.transaction.Transactional;
+import java.util.Map;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+@Classes(cdi = true, innerClassesAsBean = true)
+@RunWith(ApplicationComposer.class)
+public class JPAHasBeanManagerTest {
+    @Inject
+    private Dao dao;
+
+    @Test
+    public void run() {
+        dao.doAsserts();
+    }
+
+    @Transactional
+    @ApplicationScoped
+    @PersistenceUnitDefinition(
+            entitiesPackage = "org.apache.openejb.jpa",
+            properties = {"openjpa.RuntimeUnenhancedClasses=supported", "tomee.jpa.factory.lazy=true"},
+            provider = "org.apache.openejb.jpa.JPAHasBeanManagerTest$TheTestProvider")
+    public static class Dao {
+        @PersistenceContext
+        private EntityManager em;
+        private TheTestEntity persisted;
+
+        public void start(@Observes @Initialized(ApplicationScoped.class) final Object boot) {
+            TheTestEntity entity = new TheTestEntity();
+            em.persist(entity); // ensure it works
+            persisted = entity;
+        }
+
+        public void doAsserts() {
+            assertNotNull(TheTestProvider.MAP);
+            final Object bm = TheTestProvider.MAP.get("javax.persistence.bean.manager");
+            assertNotNull(bm);
+            assertTrue(BeanManager.class.isInstance(bm));
+            assertNotNull(em.find(TheTestEntity.class, persisted.getId()));
+        }
+    }
+
+    @Startup
+    @Singleton
+    public static class EJBDao {
+        @PersistenceContext
+        private EntityManager em;
+
+        @PostConstruct
+        public void start() {
+            TheTestEntity entity = new TheTestEntity();
+            em.persist(entity); // ensure it works
+        }
+    }
+
+    public static class TheTestProvider extends PersistenceProviderImpl {
+        private static Map MAP;
+
+        @Override
+        public OpenJPAEntityManagerFactory createContainerEntityManagerFactory(final PersistenceUnitInfo pui, final Map m) {
+            MAP = m;
+            // only works cause of lazy property
+            final BeanManager beanManager = BeanManager.class.cast(m.get("javax.persistence.bean.manager"));
+            assertNotNull(beanManager.getReference(beanManager.resolve(beanManager.getBeans(Dao.class)), Dao.class, null));
+            // just delegate to openjpa since we don't aim at reimplementing JPA in a test ;)
+            return super.createContainerEntityManagerFactory(pui, m);
+        }
+    }
+
+    @Entity
+    public static class TheTestEntity {
+        @Id
+        @GeneratedValue
+        private long id;
+
+        public long getId() {
+            return id;
+        }
+    }
+}