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);