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 {