Repository: tomee
Updated Branches:
  refs/heads/develop 1aed3c430 -> eb3736dd9


cleaner fix to link beans.xml to target/classes


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/eb3736dd
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/eb3736dd
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/eb3736dd

Branch: refs/heads/develop
Commit: eb3736dd930fbeb5fdd5c9f93c6862cc53afa7e6
Parents: 1aed3c4
Author: Romain Manni-Bucau <[email protected]>
Authored: Thu Feb 26 15:54:03 2015 +0100
Committer: Romain Manni-Bucau <[email protected]>
Committed: Thu Feb 26 15:54:03 2015 +0100

----------------------------------------------------------------------
 .../openejb/config/AnnotationDeployer.java      | 42 ++++++++------------
 .../org/apache/tomee/embedded/Container.java    | 20 +++++++++-
 2 files changed, 35 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/eb3736dd/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
 
b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
index fbcf812..167b074 100644
--- 
a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
+++ 
b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
@@ -439,15 +439,6 @@ public class AnnotationDeployer implements DynamicDeployer 
{
     }
 
     public static class DiscoverAnnotatedBeans implements DynamicDeployer {
-        private ClassesFolderDiscover classesFolderDiscover;
-
-        public DiscoverAnnotatedBeans() {
-            this.classesFolderDiscover = 
SystemInstance.get().getComponent(ClassesFolderDiscover.class);
-            if (this.classesFolderDiscover == null) {
-                this.classesFolderDiscover = new MavenClassesFolderDiscover();
-            }
-        }
-
         public AppModule deploy(AppModule appModule) throws OpenEJBException {
             if (!appModule.isWebapp() && !appModule.getWebModules().isEmpty()) 
{ // need to scan for jsf stuff at least
                 try {
@@ -1676,11 +1667,10 @@ public class AnnotationDeployer implements 
DynamicDeployer {
             Collection<Class<?>> discoveredBeans = null;
             List<Class<? extends Extension>> extensions = null;
 
-            final Object altDDFound = altDD.get("beans.xml");
-            final URL classesBeansXml = URL.class.isInstance(altDDFound) ? 
URL.class.cast(altDDFound) : null;
+            final FolderDDMapper ddMapper = 
SystemInstance.get().getComponent(FolderDDMapper.class);
             for (final Map.Entry<URL, List<String>> entry : map.entrySet()) {
                 final URL key = entry.getKey();
-                final URL beansXml = hasBeansXml(key, classesBeansXml);
+                final URL beansXml = hasBeansXml(key, ddMapper);
                 final List<String> value = entry.getValue();
                 if (beansXml != null) {
                     classes.put(beansXml, value);
@@ -1772,7 +1762,7 @@ public class AnnotationDeployer implements 
DynamicDeployer {
             }
         }
 
-        public URL hasBeansXml(final URL url, final URL classesBeansXml) {
+        public URL hasBeansXml(final URL url, final FolderDDMapper ddMapper) {
             final String urlPath = url.getPath();
             if (urlPath.endsWith("/WEB-INF/beans.xml")) {
                 return url;
@@ -1832,10 +1822,18 @@ public class AnnotationDeployer implements 
DynamicDeployer {
                     // no-op
                 }
             }
-            if (classesFolderDiscover != null) {
+            if (ddMapper != null) {
                 final File asFile = URLs.toFile(url);
-                if (asFile.isDirectory() && 
classesFolderDiscover.isClassesFolder(asFile)) {
-                    return classesBeansXml;
+                if (asFile.isDirectory()) {
+                    final File ddFolder = ddMapper.getDDFolder(asFile);
+                    final File file = new File(ddFolder, "beans.xml");
+                    if (file.isFile()) {
+                        try {
+                            return file.toURI().toURL();
+                        } catch (final MalformedURLException e) {
+                            // no-op
+                        }
+                    }
                 }
             }
             return null;
@@ -5693,15 +5691,7 @@ public class AnnotationDeployer implements 
DynamicDeployer {
         // no-method
     }
 
-    public static interface ClassesFolderDiscover {
-        boolean isClassesFolder(final File dir);
-    }
-
-    public static class MavenClassesFolderDiscover implements 
ClassesFolderDiscover {
-        @Override
-        public boolean isClassesFolder(final File dir) {
-            return dir.getName().equals("classes")
-                    && dir.getParentFile().getName().equals("target");
-        }
+    public static interface FolderDDMapper {
+        File getDDFolder(final File dir);
     }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/eb3736dd/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
----------------------------------------------------------------------
diff --git 
a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java 
b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
index 5aff35b..29e62ae 100644
--- 
a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
+++ 
b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
@@ -222,6 +222,14 @@ public class Container implements AutoCloseable {
             throw new IllegalArgumentException(e);
         }
 
+        final File beansXml = new File(docBase, "WEB-INF/beans.xml");
+        if (beansXml.exists()) { // add it since it is not in the scanned path 
by default
+            try {
+                webModule.getAltDDs().put("beans.xml", 
beansXml.toURI().toURL());
+            } catch (final MalformedURLException e) {
+                // no-op
+            }
+        }
         DeploymentLoader.addBeansXmls(webModule);
 
         final AppModule app = new AppModule(loader, null);
@@ -229,7 +237,9 @@ public class Container implements AutoCloseable {
         app.setStandaloneModule(true);
         app.setModuleId(webModule.getModuleId());
         try {
-            
webModule.getAltDDs().putAll(DeploymentLoader.getWebDescriptors(jarLocation));
+            final Map<String, URL> webDescriptors = 
DeploymentLoader.getWebDescriptors(jarLocation);
+            webDescriptors.remove("beans.xml");
+            webModule.getAltDDs().putAll(webDescriptors);
             DeploymentLoader.addWebModule(webModule, app);
             DeploymentLoader.addWebModuleDescriptors(new 
File(webModule.getJarLocation()).toURI().toURL(), webModule, app);
         } catch (final Exception e) {
@@ -239,6 +249,14 @@ public class Container implements AutoCloseable {
         addCallersAsEjbModule(loader, app, additionalCallers);
 
         systemInstance.addObserver(new StandardContextCustomizer(webModule));
+        systemInstance.setComponent(AnnotationDeployer.FolderDDMapper.class, 
new AnnotationDeployer.FolderDDMapper() {
+            @Override
+            public File getDDFolder(final File dir) {
+                // maven
+                return dir.getName().equals("classes") && 
dir.getParentFile().getName().equals("target") ?
+                        new File(docBase, "WEB-INF") : null;
+            }
+        });
 
         try {
             final AppInfo appInfo = 
configurationFactory.configureApplication(app);

Reply via email to