[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