[jboss-cvs] jboss-seam/src/main/org/jboss/seam/init ...

Norman Richards norman.richards at jboss.com
Fri Jun 15 18:55:50 EDT 2007


  User: nrichards
  Date: 07/06/15 18:55:50

  Modified:    src/main/org/jboss/seam/init  Initialization.java
  Log:
  JBSEAM-669
  
  Revision  Changes    Path
  1.176     +36 -47    jboss-seam/src/main/org/jboss/seam/init/Initialization.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Initialization.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/init/Initialization.java,v
  retrieving revision 1.175
  retrieving revision 1.176
  diff -u -b -r1.175 -r1.176
  --- Initialization.java	10 Jun 2007 19:25:58 -0000	1.175
  +++ Initialization.java	15 Jun 2007 22:55:50 -0000	1.176
  @@ -56,7 +56,7 @@
   /**
    * @author Gavin King
    * @author <a href="mailto:theute at jboss.org">Thomas Heute</a>
  - * @version $Revision: 1.175 $
  + * @version $Revision: 1.176 $
    */
   public class Initialization
   {
  @@ -602,75 +602,64 @@
         {
            Set<Class<Object>> scannedClasses = new HashSet<Class<Object>>();
            scannedClasses.addAll(scanner.getClasses());
  -         Set<Package> scannedPackages = new HashSet<Package>();
            for (Class<Object> scannedClass: scannedClasses)
            {
  -            installScannedClass(scannedPackages, scannedClass);
  +            installScannedComponentAndRoles(scannedClass);
            }
         }
      }
   
      private void scanForComponents()
      {
  -      Set<Class<Object>> scannedClasses = new HashSet<Class<Object>>();
  -      scannedClasses.addAll( new ComponentScanner("seam.properties").getClasses() );
  -      scannedClasses.addAll( new ComponentScanner("META-INF/seam.properties").getClasses() );
  -      scannedClasses.addAll( new ComponentScanner("META-INF/components.xml").getClasses() );
  +      ComponentScanner[] scanners = {
  +             new ComponentScanner("seam.properties"),
  +             new ComponentScanner("META-INF/seam.properties"),
  +             new ComponentScanner("META-INF/components.xml")
  +      };
   
  -      Set<Package> scannedPackages = new HashSet<Package>();
  -      for (Class<Object> scannedClass: scannedClasses)
  -      {
  -         installScannedClass(scannedPackages, scannedClass);
  -      }
  +      Set<Class<Object>> scannedClasses = new HashSet<Class<Object>>();
  +      for (ComponentScanner scanner: scanners) {
  +          scannedClasses.addAll(scanner.getClasses());          
      }
   
  -   private void installScannedClass(Set<Package> scannedPackages, Class<Object> scannedClass)
  -   {
  +      for (Class<Object> scannedClass: scannedClasses) {
         installScannedComponentAndRoles(scannedClass);
  -      installComponentsFromDescriptor( classDescriptorFilename(scannedClass), scannedClass );
  -      Package pkg = scannedClass.getPackage();
  -      if (pkg != null && scannedPackages.add(pkg) )
  -      {
  -         installComponentsFromDescriptor( packageDescriptorFilename(pkg), scannedClass );
  +      }
  +      
  +      for (ComponentScanner scanner: scanners) {
  +          for (String name: scanner.getResources()) {
  +              installComponentsFromDescriptor(name, scanner.getClassLoader());              
  +          }
         }
      }
   
  -   private static String classDescriptorFilename(Class<Object> scannedClass)
  -   {
  -      return scannedClass.getName().replace('.', '/') + ".component.xml";
  +
  +   private static String classFilenameFromDescriptor(String descriptor) {
  +       int pos = descriptor.lastIndexOf(".component.xml");
  +       if (pos==-1) {
  +           return null;
      }
   
  -   private static String packageDescriptorFilename(Package pkg)
  -   {
  -      return pkg.getName().replace('.', '/') + "/components.xml";
  +       return descriptor.substring(0,pos).replace('/', '.').replace('\\', '.');
      }
   
  -   private void installComponentsFromDescriptor(String fileName, Class clazz)
  +   private void installComponentsFromDescriptor(String fileName, ClassLoader loader)
      {
         //note: this is correct, we do not need to scan other classloaders!
  -      InputStream stream = clazz.getClassLoader().getResourceAsStream(fileName); 
  -      if (stream != null)
  -      {
  -         try
  -         {
  +      InputStream stream = loader.getResourceAsStream(fileName); 
  +      if (stream != null) {
  +         try {
               Properties replacements = getReplacements();
               Element root = XML.getRootElement(stream);
  -            if ( root.getName().equals("components") )
  -            {
  +            if (root.getName().equals("components")) {
                  installComponentsFromXmlElements(root, replacements);
  -            }
  -            else
  -            {
  -               //TODO: namespaced components!!!
  -               installComponentFromXmlElement(
  -                        root, 
  +            } else{
  +                installComponentFromXmlElement(root, 
                           root.attributeValue("name"), 
  -                        clazz.getName(), replacements
  -                     );
  +                        classFilenameFromDescriptor(fileName),
  +                        replacements);
               }
  -         }
  -         catch (Exception e)
  -         {
  +         } catch (Exception e) {
               throw new RuntimeException("error while reading " + fileName, e);
            }
         }
  
  
  



More information about the jboss-cvs-commits mailing list