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 2015/02/26 15:54:17 UTC

tomee git commit: cleaner fix to link beans.xml to target/classes

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 <rm...@apache.org>
Authored: Thu Feb 26 15:54:03 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
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);