Author: rmannibucau
Date: Mon Oct 1 13:38:08 2012
New Revision: 1392321
URL: http://svn.apache.org/viewvc?rev=1392321&view=rev
Log:
TOMEE-440 arquillian classes should be injectable only when deployed within the
container + small hack (for test) to avoid IllegalStateException (this one
should be removed)
Modified:
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TestClassDiscoverer.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java
Modified:
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TestClassDiscoverer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TestClassDiscoverer.java?rev=1392321&r1=1392320&r2=1392321&view=diff
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TestClassDiscoverer.java
(original)
+++
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TestClassDiscoverer.java
Mon Oct 1 13:38:08 2012
@@ -39,6 +39,12 @@ public class TestClassDiscoverer impleme
return module;
}
+ try {
+ module.getClassLoader().loadClass(name);
+ } catch (ClassNotFoundException e) {
+ return module;
+ }
+
final EjbJar ejbJar = new EjbJar();
final OpenejbJar openejbJar = new OpenejbJar();
final ManagedBean bean = ejbJar.addEnterpriseBean(new
ManagedBean(name, name, true));
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java?rev=1392321&r1=1392320&r2=1392321&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java
Mon Oct 1 13:38:08 2012
@@ -44,6 +44,7 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
@@ -187,11 +188,11 @@ public class TomEEWebappLoader extends W
final Enumeration<URL> result;
if (webapp.isStarted() || webapp.getParent() == null) { // we set
a parent so if it is null webapp was detroyed
- add(urls, app.getResources(name));
- add(urls, webapp.getResources(name));
+ add(urls, secureGetResources(app, name));
+ add(urls, secureGetResources(webapp, name));
result = new ArrayEnumeration(clear(urls.values()));
} else {
- result = app.getResources(name);
+ result = secureGetResources(app, name);
}
if (URLClassLoaderFirst.isSlf4jQuery(name)) {
@@ -201,6 +202,14 @@ public class TomEEWebappLoader extends W
return result;
}
+ private Enumeration<URL> secureGetResources(final ClassLoader loader,
final String name) throws IOException{
+ try {
+ return loader.getResources(name);
+ } catch (IllegalStateException ise) {
+ return Collections.enumeration(Collections.EMPTY_LIST);
+ }
+ }
+
private List<URL> clear(Iterable<URL> urls) { // take care of
antiJarLocking
final List<URL> clean = new ArrayList<URL>();
for (URL url : urls) {