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 2014/08/14 21:07:32 UTC

svn commit: r1618021 - in /tomee/tomee/trunk: container/openejb-core/src/main/java/org/apache/openejb/core/ container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/ maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/ t...

Author: rmannibucau
Date: Thu Aug 14 19:07:31 2014
New Revision: 1618021

URL: http://svn.apache.org/r1618021
Log:
flushable datasources should be unwrappable too + fixing tomee embedded/tomee maven plugin @WebXXX handling (both needs opposite behavior)

Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
    tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java?rev=1618021&r1=1618020&r2=1618021&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java Thu Aug 14 19:07:31 2014
@@ -26,6 +26,7 @@ import org.apache.xbean.asm5.shade.commo
 
 import java.io.BufferedInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
@@ -258,6 +259,7 @@ public class TempClassLoader extends URL
 
     // let maven resources go after other ones (arquillian tomee embedded and @WebXXX needs it absolutely)
     private static final class ResourceComparator implements Comparator<URL> {
+        private static final boolean FORCE_MAVEN_FIRST = "true".equals(SystemInstance.get().getProperty("openejb.classloader.force-maven", "false"));
         private static final ClassLoader STOP_LOADER = getSystemClassLoader().getParent();
 
         private final ClassLoader loader;
@@ -277,8 +279,31 @@ public class TempClassLoader extends URL
             final int weight1 = weight(o1);
             final int weight2 = weight(o2);
             if (weight1 == weight2) {
-                return o1.toExternalForm().compareTo(o2.toExternalForm());
+                final String s1 = o1.toExternalForm().replace(File.separatorChar, '/');
+                final String s2 = o2.toExternalForm().replace(File.separatorChar, '/');
+                if (FORCE_MAVEN_FIRST) { // tomee maven plugin dev feature
+                    if (s1.contains("/target/classes/")) {
+                        return -1;
+                    }
+                    if (s2.contains("/target/classes/")) {
+                        return 1;
+                    }
+                    if (s1.contains("/target/test-classes/")) {
+                        return -1;
+                    }
+                    if (s2.contains("/target/test-classes/")) {
+                        return 1;
+                    }
+                }
+                if (s1.contains("/WEB-INF/classes/")) {
+                    return -1;
+                }
+                if (s2.contains("/WEB-INF/classes/")) {
+                    return 1;
+                }
+                return s1.compareTo(s2);
             }
+            // tomee embedded case, we can load with system loader instead of webapp loader
             return weight1 - weight2;
         }
 

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java?rev=1618021&r1=1618020&r2=1618021&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java Thu Aug 14 19:07:31 2014
@@ -345,13 +345,16 @@ public class DataSourceFactory {
             return o;
         }
 
-        if (Proxy.isProxyClass(o.getClass())) {
+        Object ds = o;
+        while (Proxy.isProxyClass(ds.getClass())) {
             final InvocationHandler handler = Proxy.getInvocationHandler(o);
             if (handler instanceof LoggingSqlDataSource) {
-                return ((LoggingSqlDataSource) handler).getDelegate();
+                ds = ((LoggingSqlDataSource) handler).getDelegate();
+            } else if (FlushableDataSourceHandler.class.isInstance(handler)) {
+                ds = FlushableDataSourceHandler.class.cast(handler).getDelegate();
             }
         }
 
-        return o;
+        return ds;
     }
 }

Modified: tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java?rev=1618021&r1=1618020&r2=1618021&view=diff
==============================================================================
--- tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java (original)
+++ tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java Thu Aug 14 19:07:31 2014
@@ -55,6 +55,7 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Enumeration;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -826,7 +827,11 @@ public abstract class AbstractTomEEMojo 
 
         boolean deactivateStrictServletCompliance = args == null || !args.contains(servletCompliance);
 
-        final List<String> strings = new ArrayList<String>();
+        if (webappDefaultConfig) {
+            forceDefaultForNiceWebAppDevelopment();
+        }
+
+        final List<String> strings = new ArrayList<>();
         if (systemVariables != null) {
             for (final Map.Entry<String, String> entry : systemVariables.entrySet()) {
                 final String key = entry.getKey();
@@ -849,10 +854,6 @@ public abstract class AbstractTomEEMojo 
             }
         }
 
-        if (webappDefaultConfig) {
-            forceDefaultForNiceWebAppDevelopment();
-        }
-
         if (deactivateStrictServletCompliance) {
             strings.add("-D" + servletCompliance + "=false");
         }
@@ -963,6 +964,12 @@ public abstract class AbstractTomEEMojo 
             getLog().info("adding " + webappClasses.toString() + " externalRepository");
             externalRepositories.add(webappClasses);
         }
+        if (systemVariables == null) {
+            systemVariables = new HashMap<>();
+        }
+        if (!systemVariables.containsKey("openejb.classloader.resources.deeper-first")) {
+            systemVariables.put("openejb.classloader.force-maven", "true");
+        }
     }
 
     private static String filesToString(final Collection<File> files) {

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java?rev=1618021&r1=1618020&r2=1618021&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java Thu Aug 14 19:07:31 2014
@@ -533,7 +533,6 @@ public class OpenEJBContextConfig extend
                     }
                 } catch (final MalformedURLException e) {
                     logger.warning(e.getMessage(), e);
-                    continue;
                 }
             }
         } else {