Author: rmannibucau
Date: Thu Jun 27 10:07:08 2013
New Revision: 1497283
URL: http://svn.apache.org/r1497283
Log:
TOMEE-983 TOMEE-984 allowing to use mojarra
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java?rev=1497283&r1=1497282&r2=1497283&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
Thu Jun 27 10:07:08 2013
@@ -341,11 +341,6 @@ public class URLClassLoaderFirst extends
return false;
}
- final ClassLoader parentLoader = findParent(loader);
- if (parentLoader == null) {
- return true;
- }
-
// using annotation to test to avoid to load more classes with deps
final String testClass;
if ("javax.faces.bean.RequestScoped".equals(name)) {
@@ -355,12 +350,16 @@ public class URLClassLoaderFirst extends
}
final String classname = testClass.replace('.', '/') + ".class";
- final URL thisJSf = loader.getResource(classname);
- if (thisJSf == null) {
+ try {
+ final Enumeration<URL> resources = loader.getResources(classname);
+ final Collection<URL> thisJSf = Collections.list(resources);
+ if (thisJSf == null || thisJSf.isEmpty()) {
+ return true;
+ }
+ return thisJSf.size() <= 1;
+ } catch (final IOException e) {
return true;
}
- final URL containerJsf = parentLoader.getResource(classname);
- return containerJsf != null && thisJSf.equals(containerJsf);
}
Modified:
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java?rev=1497283&r1=1497282&r2=1497283&view=diff
==============================================================================
---
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
(original)
+++
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
Thu Jun 27 10:07:08 2013
@@ -75,10 +75,13 @@ public class LazyStopWebappClassLoader e
synchronized (this) {
final ClassLoader old = system;
system = NoClassClassLoader.INSTANCE;
+ final boolean delegate = getDelegate();
+ setDelegate(false);
try {
return super.loadClass(name);
} finally {
system = old;
+ setDelegate(delegate);
}
}
}
@@ -92,6 +95,16 @@ public class LazyStopWebappClassLoader e
} catch (NoClassDefFoundError ncdfe) {
return super.loadClass(name);
}
+ } else if (name.startsWith("javax.faces.") ||
name.startsWith("org.apache.webbeans.jsf.")) {
+ final boolean delegate = getDelegate();
+ synchronized (this) {
+ setDelegate(false);
+ try {
+ return super.loadClass(name);
+ } finally {
+ setDelegate(delegate);
+ }
+ }
}
return super.loadClass(name);
}
@@ -103,7 +116,7 @@ public class LazyStopWebappClassLoader e
@Override
protected boolean filter(final String name) {
- return URLClassLoaderFirst.shouldSkip(name);
+ return !"org.apache.tomee.mojarra.TomEEInjectionProvider".equals(name)
&& URLClassLoaderFirst.shouldSkip(name);
}
public void internalStop() throws LifecycleException {