sorry i updated OWB in the same commit (// taks + some network latency :s) is it an issue for anyone?
*Romain Manni-Bucau* *Twitter: @rmannibucau* *Blog: http://rmannibucau.wordpress.com* ---------- Forwarded message ---------- From: <[email protected]> Date: 2012/9/12 Subject: svn commit: r1384123 - in /openejb/trunk/openejb: pom.xml tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java To: [email protected] Author: rmannibucau Date: Wed Sep 12 21:01:26 2012 New Revision: 1384123 URL: http://svn.apache.org/viewvc?rev=1384123&view=rev Log: tomcat 7.0.30 doesn't scan exactly the same way servlet 3 annotations and sometimes give subfolder instead of webinf/classes. just adapting the classname to manage it Modified: openejb/trunk/openejb/pom.xml openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java Modified: openejb/trunk/openejb/pom.xml URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/pom.xml?rev=1384123&r1=1384122&r2=1384123&view=diff ============================================================================== --- openejb/trunk/openejb/pom.xml (original) +++ openejb/trunk/openejb/pom.xml Wed Sep 12 21:01:26 2012 @@ -143,7 +143,7 @@ <junit.version>4.9</junit.version> <org.apache.axis2.version>1.4.1</org.apache.axis2.version> <scannotation.version>1.0.2</scannotation.version> - <org.apache.openwebbeans.version>1.1.5</org.apache.openwebbeans.version> + <org.apache.openwebbeans.version>1.1.6-SNAPSHOT</org.apache.openwebbeans.version> <geronimo.connector.version>3.1.1</geronimo.connector.version> <geronimo-osgi.version>1.1</geronimo-osgi.version> <geronimo-javamail_1.4_spec.version>1.7.1</geronimo-javamail_1.4_spec.version> Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java?rev=1384123&r1=1384122&r2=1384123&view=diff ============================================================================== --- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java (original) +++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java Wed Sep 12 21:01:26 2012 @@ -25,6 +25,7 @@ import org.apache.openejb.assembler.clas import org.apache.openejb.loader.SystemInstance; import org.apache.openejb.util.LogCategory; import org.apache.openejb.util.Logger; +import org.apache.xbean.finder.util.Classes; import org.xml.sax.InputSource; import javax.servlet.ServletContainerInitializer; @@ -44,6 +45,9 @@ public class OpenEJBContextConfig extend private static final String MYFACES_TOMEEM_CONTAINER_INITIALIZER = "org.apache.tomee.myfaces.TomEEMyFacesContainerInitializer"; private static final String TOMEE_MYFACES_CONTEXT_LISTENER = "org.apache.tomee.myfaces.TomEEMyFacesContextListener"; + private static final String CLASSES = "classes"; + private static final String WEB_INF = "WEB-INF"; + private TomcatWebAppBuilder.StandardContextInfo info; public OpenEJBContextConfig(TomcatWebAppBuilder.StandardContextInfo standardContextInfo) { @@ -144,7 +148,7 @@ public class OpenEJBContextConfig extend final URLClassLoader loader = new URLClassLoader(new URL[]{file.toURI().toURL()}); for (String webAnnotatedClassName : webAppInfo.webAnnotatedClasses) { - final String classFile = webAnnotatedClassName.replace('.', '/') + ".class"; + final String classFile = webAnnotatedClassName.substring(getSubPackage(file).length()).replace('.', '/') + ".class"; final URL classUrl = loader.getResource(classFile); if (classUrl == null) { @@ -170,6 +174,34 @@ public class OpenEJBContextConfig extend } } + // because we don't always get WEB-INF/classes folder, simply get the already appended subpackage + private static String getSubPackage(final File file) { + File current = file.getParentFile(); + if (current == null) { + return ""; + } + + File previous = file; + while (current.getParentFile() != null) { + if (CLASSES.equals(previous.getName()) && WEB_INF.equals(current.getName())) { + String path = file.getAbsolutePath().replaceFirst(previous.getAbsolutePath(), ""); + if (path.startsWith(File.separator)) { + path = path.substring(File.separator.length()); + } + if (path.endsWith(File.separator)) { + path = path.substring(0, path.length() - 1); + } + + return path + File.separator; + } + + previous = current; + current = current.getParentFile(); + } + + return ""; // no subpackage found + } + @Override protected void processAnnotationsUrl(URL url, WebXml fragment, boolean handlesTypeOnly) { logger.debug("processAnnotationsUrl " + url);
