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 2013/01/28 18:04:16 UTC
svn commit: r1439504 -
/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
Author: rmannibucau
Date: Mon Jan 28 17:04:16 2013
New Revision: 1439504
URL: http://svn.apache.org/viewvc?rev=1439504&view=rev
Log:
managing @Web in jars even in embedded mode with lightweightwebappbuilder
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java?rev=1439504&r1=1439503&r2=1439504&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java Mon Jan 28 17:04:16 2013
@@ -174,9 +174,7 @@ public class LightweightWebAppBuilder im
for (ClassListInfo info : webAppInfo.webAnnotatedClasses) {
final String url = info.name;
for (String filterPath : info.list) {
- String classname = nameFromUrls(url, filterPath);
-
- final Class<?> clazz = webContext.getClassLoader().loadClass(classname);
+ final Class<?> clazz = loadFromUrls(webContext.getClassLoader(), url, filterPath);
final WebFilter annotation = clazz.getAnnotation(WebFilter.class);
if (annotation != null) {
final Properties initParams = new Properties();
@@ -187,7 +185,7 @@ public class LightweightWebAppBuilder im
final FilterConfig config = new SimpleFilterConfig(sce.getServletContext(), info.name, initParams);
for (String mapping: annotation.urlPatterns()) {
try {
- addFilterMethod.invoke(null, classname, webContext, mapping, config);
+ addFilterMethod.invoke(null, clazz.getName(), webContext, mapping, config);
deployedWebObjects.filterMappings.add(mapping);
} catch (Exception e) {
LOGGER.warning(e.getMessage(), e);
@@ -236,14 +234,12 @@ public class LightweightWebAppBuilder im
for (ClassListInfo info : webAppInfo.webAnnotatedClasses) {
final String url = info.name;
for (String servletPath : info.list) {
- String classname = nameFromUrls(url, servletPath);
-
- final Class<?> clazz = webContext.getClassLoader().loadClass(classname);
+ final Class<?> clazz = loadFromUrls(webContext.getClassLoader(), url, servletPath);
final WebServlet annotation = clazz.getAnnotation(WebServlet.class);
if (annotation != null) {
for (String mapping: annotation.urlPatterns()) {
try {
- addServletMethod.invoke(null, classname, webContext, mapping);
+ addServletMethod.invoke(null, clazz.getName(), webContext, mapping);
deployedWebObjects.mappings.add(mapping);
} catch (Exception e) {
LOGGER.warning(e.getMessage(), e);
@@ -255,9 +251,16 @@ public class LightweightWebAppBuilder im
}
}
- private static String nameFromUrls(final String url, final String path) {
- final String value = path.substring(url.length()).replace(File.separatorChar, '/').replace('/', '.');
- return value.substring(0, value.length() - ".class".length());
+ private static Class<?> loadFromUrls(final ClassLoader loader, final String url, final String path) throws ClassNotFoundException {
+ try { // in WEB-INF/classes
+ return loader.loadClass(className(path.substring(url.length())));
+ } catch (ClassNotFoundException cnfe) { // in a dependency (jar)
+ return loader.loadClass(className(path.substring(path.indexOf("!") + 2)));
+ }
+ }
+
+ private static String className(final String value) {
+ return value.substring(0, value.length() - ".class".length()).replace(File.separatorChar, '/').replace('/', '.');
}
@Override