[jboss-cvs] JBossAS SVN: r72383 - trunk/server/src/main/org/jboss/deployment.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Apr 17 16:02:30 EDT 2008


Author: scott.stark at jboss.org
Date: 2008-04-17 16:02:29 -0400 (Thu, 17 Apr 2008)
New Revision: 72383

Modified:
   trunk/server/src/main/org/jboss/deployment/AnnotationMetaDataDeployer.java
Log:
Include app client main in classes to scan

Modified: trunk/server/src/main/org/jboss/deployment/AnnotationMetaDataDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/AnnotationMetaDataDeployer.java	2008-04-17 20:01:39 UTC (rev 72382)
+++ trunk/server/src/main/org/jboss/deployment/AnnotationMetaDataDeployer.java	2008-04-17 20:02:29 UTC (rev 72383)
@@ -26,6 +26,8 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.jar.Attributes;
+import java.util.jar.Manifest;
 
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.DeploymentStages;
@@ -172,13 +174,42 @@
                classpathClasses.putAll(classes);
             }
          }
+         // Always need to include a client app main class
+         Class clientMainClass = null;
+         if(ejbJarMetaData == null && webMetaData == null && clientMetaData == null)
+         {
+            VirtualFile mfvf = unit.getMetaDataFile("MANIFEST.MF");
+            if(mfvf != null)
+            {
+               Manifest mf = new Manifest(mfvf.openStream());
+               mfvf.close();
+               String mainClass = mf.getMainAttributes().getValue(Attributes.Name.MAIN_CLASS);
+               if(mainClass != null)
+               {
+                  VirtualFile mainClassVF = unit.getFile(mainClass.replace('.', '/')+".class");
+                  if(mainClassVF != null)
+                  {
+                     try
+                     {
+                        clientMainClass = loader.loadClass(mainClass);
+                        log.info("Saw Main-Class: "+mainClass);
+                        classpathClasses.put(mainClassVF, clientMainClass);
+                     }
+                     catch(ClassNotFoundException e)
+                     {
+                        log.debug("Ignoring invalid Main-Class: "+mainClass, e);
+                     }
+                  }
+               }
+            }
+         }
 
          if(classpathClasses.size() > 0)
          {
             AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
             if(webMetaData != null)
                processJBossWebMetaData(unit, finder, classpathClasses);
-            else if(clientMetaData != null)
+            else if(clientMetaData != null || clientMainClass != null)
                processJBossClientMetaData(unit, finder, classpathClasses);
             else
                processJBossMetaData(unit, finder, classpathClasses);




More information about the jboss-cvs-commits mailing list