You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2010/05/06 03:34:54 UTC

svn commit: r941561 - in /geronimo/server/trunk: ./ plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/ plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/

Author: xuhaihong
Date: Thu May  6 01:34:53 2010
New Revision: 941561

URL: http://svn.apache.org/viewvc?rev=941561&view=rev
Log:
Enable ServletContainerInitializer scanning as we have an ASM-based class finder now

Modified:
    geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
    geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/MergeHelper.java
    geronimo/server/trunk/pom.xml

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java?rev=941561&r1=941560&r2=941561&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java Thu May  6 01:34:53 2010
@@ -451,7 +451,7 @@ public abstract class AbstractWebModuleB
         }
         //TODO From my understanding, whether we scan ServletContainerInitializer has nothing to do with meta-complete/web.xml schema version
         //Might need double-check !
-        //MergeHelper.processServletContainerInitializer(earContext, webModule, bundle);
+        MergeHelper.processServletContainerInitializer(earContext, webModule, bundle);
 
         //Process Web Service
         Map servletNameToPathMap = buildServletNameToPathMap((WebAppType) webModule.getSpecDD(), webModule.getContextRoot());

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/MergeHelper.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/MergeHelper.java?rev=941561&r1=941560&r2=941561&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/MergeHelper.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/MergeHelper.java Thu May  6 01:34:53 2010
@@ -90,6 +90,7 @@ import org.apache.geronimo.xbeans.javaee
 import org.apache.geronimo.xbeans.javaee6.WebFragmentDocument;
 import org.apache.geronimo.xbeans.javaee6.WebFragmentType;
 import org.apache.xbean.finder.BundleAnnotationFinder;
+import org.apache.xbean.finder.BundleAssignableClassFinder;
 import org.apache.xbean.osgi.bundle.util.BundleClassFinder;
 import org.apache.xbean.osgi.bundle.util.BundleResourceFinder;
 import org.apache.xbean.osgi.bundle.util.ClassDiscoveryFilter;
@@ -292,37 +293,14 @@ public class MergeHelper {
                     }
                 }
             });
-            //TODO we might need to change to ASM
-            BundleClassFinder bundleClassFinder = new BundleClassFinder(packageAdmin, bundle, new ClassDiscoveryFilter() {
-
-                @Override
-                public boolean directoryDiscoveryRequired(String directory) {
-                    return true;
-                }
-
-                @Override
-                public boolean jarFileDiscoveryRequired(String jarUrl) {
-                    return !excludedJarNames.contains(jarUrl);
-                }
-
-                @Override
-                public boolean packageDiscoveryRequired(String packageName) {
-                    return true;
-                }
-
-                @Override
-                public boolean rangeDiscoveryRequired(DiscoveryRange discoveryRange) {
-                    return discoveryRange.equals(DiscoveryRange.BUNDLE_CLASSPATH);
-                }
-            });
             Map<String, Set<String>> servletContainerInitializerClassNamesMap = new HashMap<String, Set<String>>();
-            List<Class> allAvailbleClasses = bundleClassFinder.loadClasses(bundleClassFinder.find());
             for (String servletContainerInitializer : servletContainerInitializers) {
                 Class<?> servletContainerInitializerClass = null;
                 try {
                     servletContainerInitializerClass = bundle.loadClass(servletContainerInitializer);
                 } catch (Exception e) {
                     logger.warn("Fail to load ServletContainerInitializer class " + servletContainerInitializer, e);
+                    continue;
                 }
                 if (!ServletContainerInitializer.class.isAssignableFrom(servletContainerInitializerClass)) {
                     logger.warn("Class " + servletContainerInitializer + " does not implement ServletContainerInitializer interface, ignored");
@@ -333,15 +311,29 @@ public class MergeHelper {
                     servletContainerInitializerClassNamesMap.put(servletContainerInitializer, null);
                     continue;
                 }
-                Set<String> acceptedClassNames = new HashSet<String>();
-                for (Class candidateClass : allAvailbleClasses) {
-                    for (Class expectedClass : handlesTypes.value()) {
-                        if (expectedClass.isAssignableFrom(candidateClass)) {
-                            acceptedClassNames.add(candidateClass.getName());
-                            break;
-                        }
+                BundleClassFinder bundleClassFinder = new BundleAssignableClassFinder(packageAdmin, bundle, handlesTypes.value(), new ClassDiscoveryFilter() {
+
+                    @Override
+                    public boolean directoryDiscoveryRequired(String directory) {
+                        return true;
                     }
-                }
+
+                    @Override
+                    public boolean jarFileDiscoveryRequired(String jarUrl) {
+                        return !excludedJarNames.contains(jarUrl);
+                    }
+
+                    @Override
+                    public boolean packageDiscoveryRequired(String packageName) {
+                        return true;
+                    }
+
+                    @Override
+                    public boolean rangeDiscoveryRequired(DiscoveryRange discoveryRange) {
+                        return discoveryRange.equals(DiscoveryRange.BUNDLE_CLASSPATH);
+                    }
+                });
+                Set<String> acceptedClassNames = bundleClassFinder.find();
                 servletContainerInitializerClassNamesMap.put(servletContainerInitializer, acceptedClassNames.size() > 0 ? acceptedClassNames : null);
             }
             earContext.getGeneralData().put(AbstractWebModuleBuilder.SERVLET_CONTAINER_INITIALIZERS, servletContainerInitializerClassNamesMap);
@@ -354,7 +346,8 @@ public class MergeHelper {
 
     public static void processWebFragmentsAndAnnotations(EARContext earContext, Module module, Bundle bundle, WebAppType webApp) throws DeploymentException {
         final Map<String, WebFragmentDocument> jarUrlWebFragmentDocumentMap = new LinkedHashMap<String, WebFragmentDocument>();
-        final String validJarNamePrefix = module.isStandAlone() ? "WEB-INF/lib" : module.getName() + "/WEB-INF/lib";
+        //TODO Double check the name prefix once we have ear support
+        final String validJarNamePrefix = module.isStandAlone() ? "WEB-INF/lib" : module.getTargetPath() + "/WEB-INF/lib";
         WebFragmentEntry[] webFragmentEntries = null;
         Enumeration<String> enumeration = bundle.getEntryPaths(validJarNamePrefix);
         if (enumeration != null) {

Modified: geronimo/server/trunk/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/pom.xml?rev=941561&r1=941560&r2=941561&view=diff
==============================================================================
--- geronimo/server/trunk/pom.xml (original)
+++ geronimo/server/trunk/pom.xml Thu May  6 01:34:53 2010
@@ -498,6 +498,12 @@
                 <groupId>org.apache.xbean</groupId>
                 <artifactId>xbean-finder</artifactId>
                 <version>${xbeanVersion}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.slf4j</groupId>
+                        <artifactId>slf4j-api</artifactId>
+                    </exclusion>
+                </exclusions>
             </dependency>
 
             <dependency>
@@ -528,6 +534,12 @@
                 <groupId>org.apache.xbean</groupId>
                 <artifactId>xbean-bundleutils</artifactId>
                 <version>${xbeanVersion}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.slf4j</groupId>
+                        <artifactId>slf4j-api</artifactId>
+                    </exclusion>
+                </exclusions>
             </dependency>
 
             <dependency>