Author: rmannibucau
Date: Mon Mar  5 00:19:50 2012
New Revision: 1296910

URL: http://svn.apache.org/viewvc?rev=1296910&view=rev
Log:
scan.xml was badly managed for webapps and altdd was not used

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurableClasspathArchive.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WebappAggregatedArchive.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurableClasspathArchive.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurableClasspathArchive.java?rev=1296910&r1=1296909&r2=1296910&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurableClasspathArchive.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurableClasspathArchive.java
 Mon Mar  5 00:19:50 2012
@@ -1,7 +1,6 @@
 package org.apache.openejb.config;
 
 import org.apache.openejb.loader.SystemInstance;
-import org.apache.xbean.finder.ResourceFinder;
 import org.apache.xbean.finder.archive.Archive;
 import org.apache.xbean.finder.archive.ClassesArchive;
 import org.apache.xbean.finder.archive.ClasspathArchive;
@@ -20,23 +19,31 @@ import java.util.List;
 import java.util.Set;
 
 public class ConfigurableClasspathArchive extends CompositeArchive implements 
ScanConstants {
-    public ConfigurableClasspathArchive(final ClassLoader loader, final URL... 
urls) {
-        this(loader, Arrays.asList(urls));
+    public ConfigurableClasspathArchive(final Module module, final URL... 
urls) {
+        this(module, Arrays.asList(urls));
+    }
+
+    public ConfigurableClasspathArchive(final Module module, final 
Iterable<URL> urls) {
+        this(module, false, urls);
     }
 
     public ConfigurableClasspathArchive(final ClassLoader loader, final 
Iterable<URL> urls) {
-        this(loader, false, urls);
+        this(new FakeModule(loader), urls);
+    }
+
+    public ConfigurableClasspathArchive(final ClassLoader loader, final URL 
url) {
+        this(new FakeModule(loader), Arrays.asList(url));
     }
 
-    public ConfigurableClasspathArchive(final ClassLoader loader, boolean 
forceDescriptor, final Iterable<URL> urls) {
-        super(archive(loader, urls, forceDescriptor));
+    public ConfigurableClasspathArchive(final Module module, boolean 
forceDescriptor, final Iterable<URL> urls) {
+        super(archive(module, urls, forceDescriptor));
     }
 
-    public static List<Archive> archive(final ClassLoader loader, final 
Iterable<URL> urls, boolean forceDescriptor) {
+    public static List<Archive> archive(final Module module, final 
Iterable<URL> urls, boolean forceDescriptor) {
         final List<Archive> archives = new ArrayList<Archive>();
         for (URL location : urls) {
             try {
-                archives.add(archive(loader, location, forceDescriptor));
+                archives.add(archive(module, location, forceDescriptor));
             } catch (Exception e) {
                 // ignored
             }
@@ -44,10 +51,10 @@ public class ConfigurableClasspathArchiv
         return archives;
     }
 
-    public static Archive archive(final ClassLoader loader, final URL 
location, boolean forceDescriptor) {
-        final ResourceFinder scanFinder = new ResourceFinder("", location);
+    public static Archive archive(final Module module, final URL location, 
boolean forceDescriptor) {
+        final ClassLoader loader = module.getClassLoader();
         try {
-            final URL scanXml = 
scanFinder.find(SystemInstance.get().getProperty(SCAN_XML_PROPERTY, SCAN_XML));
+            final URL scanXml = (URL) 
module.getAltDDs().get(SystemInstance.get().getProperty(SCAN_XML_PROPERTY, 
SCAN_XML_NAME));
             final ScanUtil.ScanHandler scan = ScanUtil.read(scanXml);
             final Archive packageArchive = packageArchive(scan.getPackages(), 
loader, location);
             final Archive classesArchive = classesArchive(scan.getPackages(), 
scan.getClasses(), loader);
@@ -114,4 +121,16 @@ public class ConfigurableClasspathArchiv
         }
         return false;
     }
+
+    private static class FakeModule extends Module {
+        private FakeModule(final ClassLoader loader) {
+            super(false);
+            setClassLoader(loader);
+
+            final URL scanXml = loader.getResource(SCAN_XML);
+            if (scanXml != null) {
+                getAltDDs().put(SCAN_XML, scanXml);
+            }
+        }
+    }
 }

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java?rev=1296910&r1=1296909&r2=1296910&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
 Mon Mar  5 00:19:50 2012
@@ -49,11 +49,11 @@ public class FinderFactory {
         if (module instanceof WebModule) {
             WebModule webModule = (WebModule) module;
             final ClassLoader webClassLoader = webModule.getClassLoader();
-            finder = new AnnotationFinder(new 
WebappAggregatedArchive(webClassLoader, webModule.getScannableUrls())).link();
+            finder = new AnnotationFinder(new 
WebappAggregatedArchive(webModule, webClassLoader, 
webModule.getScannableUrls())).link();
         } else if (module instanceof ConnectorModule) {
                ConnectorModule connectorModule = (ConnectorModule) module;
                final ClassLoader connectorClassLoader = 
connectorModule.getClassLoader();
-               finder = new AnnotationFinder(new 
ConfigurableClasspathArchive(connectorClassLoader, 
connectorModule.getLibraries())).link();
+               finder = new AnnotationFinder(new 
ConfigurableClasspathArchive(connectorModule, 
connectorModule.getLibraries())).link();
         } else if (module.getJarLocation() != null) {
             String location = module.getJarLocation();
             File file = new File(location);
@@ -70,7 +70,11 @@ public class FinderFactory {
                 url = new URL(location);
             }
 
-            finder = new AnnotationFinder(new 
ConfigurableClasspathArchive(module.getClassLoader(), url)).link();
+            if (module instanceof Module) {
+                finder = new AnnotationFinder(new 
ConfigurableClasspathArchive((Module) module, url)).link();
+            } else {
+                finder = new AnnotationFinder(new 
ConfigurableClasspathArchive(module.getClassLoader(), url)).link();
+            }
         } else {
             finder = new AnnotationFinder(new ClassesArchive()).link();
         }

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java?rev=1296910&r1=1296909&r2=1296910&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/Module.java
 Mon Mar  5 00:19:50 2012
@@ -29,14 +29,20 @@ public class Module {
 
     private ClassLoader classLoader;
 
-    private ValidationConfigType validationConfig;
+    private ValidationConfigType validationConfig = null;
     private final Map<String, Object> altDDs = new HashMap<String, Object>();
-    private String uniqueId;
+    private String uniqueId = null;
     private AppModule appModule = null;
-    private Resources resources;
+    private Resources resources = null;
+
+    public Module(boolean needId) {
+        if (needId) {
+            uniqueId = Integer.toString(currentId++);
+        }
+    }
 
     public Module() {
-        uniqueId = Integer.toString(currentId++);
+        this(true);
     }
 
     public ValidationConfigType getValidationConfig() {

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WebappAggregatedArchive.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WebappAggregatedArchive.java?rev=1296910&r1=1296909&r2=1296910&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WebappAggregatedArchive.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WebappAggregatedArchive.java
 Mon Mar  5 00:19:50 2012
@@ -16,17 +16,15 @@ import java.util.List;
 import java.util.Map;
 
 public class WebappAggregatedArchive implements Archive, ScanConstants {
-    private static final String WEBAPP_GLOBAL_SCAN_LOCATION = "WEB-INF/" + 
SCAN_XML_NAME;
-
     private final Map<URL, List<String>> map = new HashMap<URL, 
List<String>>();
     private ScanUtil.ScanHandler handler = null;
     private boolean scanXmlExists = false; // faster than using an empty 
handler
     private Archive archive;
 
-    public WebappAggregatedArchive(final ClassLoader loader, final 
Iterable<URL> urls) {
+    public WebappAggregatedArchive(final WebModule module, final ClassLoader 
loader, final Iterable<URL> urls) {
         final List<Archive> archives = new ArrayList<Archive>();
 
-        final URL scanXml = loader.getResource(WEBAPP_GLOBAL_SCAN_LOCATION);
+        final URL scanXml = (URL) 
module.getAltDDs().get(ScanConstants.SCAN_XML_NAME);
         if (scanXml != null) {
             try {
                 handler = ScanUtil.read(scanXml);


Reply via email to