You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by bl...@apache.org on 2001/01/16 16:27:02 UTC
cvs commit: xml-cocoon/src/org/apache/cocoon Cocoon.java DefaultComponentManager.java
bloritsch 01/01/16 07:27:02
Modified: src/org/apache/cocoon Tag: xml-cocoon2 Cocoon.java
DefaultComponentManager.java
Log:
Fixes for step 2 of cocoon.xconf complexity cleanup
Revision Changes Path
No revision
No revision
1.4.2.43 +29 -3 xml-cocoon/src/org/apache/cocoon/Cocoon.java
Index: Cocoon.java
===================================================================
RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/Cocoon.java,v
retrieving revision 1.4.2.42
retrieving revision 1.4.2.43
diff -u -r1.4.2.42 -r1.4.2.43
--- Cocoon.java 2001/01/15 04:45:42 1.4.2.42
+++ Cocoon.java 2001/01/16 15:26:59 1.4.2.43
@@ -47,7 +47,7 @@
* @author <a href="mailto:fumagalli@exoffice.com">Pierpaolo Fumagalli</a>
* (Apache Software Foundation, Exoffice Technologies)
* @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
- * @version CVS $Revision: 1.4.2.42 $ $Date: 2001/01/15 04:45:42 $
+ * @version CVS $Revision: 1.4.2.43 $ $Date: 2001/01/16 15:26:59 $
*/
public class Cocoon
implements Component, Configurable, ComponentManager, Modifiable, Processor, Constants {
@@ -113,7 +113,7 @@
public Cocoon(final URL configurationFile, final String classpath, File workDir, final String root)
throws SAXException,
IOException,
- ConfigurationException,
+ ConfigurationException,
ComponentManagerException {
this();
@@ -191,12 +191,16 @@
Configuration co = (Configuration) e.next();
String type = co.getAttribute("type", "");
String role = co.getAttribute("role", "");
- String className = co.getAttribute("class");
+ String className = co.getAttribute("class", "");
if (! type.equals("")) {
role = RoleUtils.lookup(type);
}
+ if (className.equals("")) {
+ className = RoleUtils.defaultClass(role);
+ }
+
try {
log.debug("Adding component (" + role + " = " + className + ")");
componentManager.addComponent(role,ClassUtils.loadClass(className),co);
@@ -204,6 +208,28 @@
log.error("Could not load class " + className, ex);
throw new ConfigurationException("Could not get class " + className
+ " for role " + role, ex);
+ }
+ }
+
+ e = RoleUtils.shorthandNames();
+ while (e.hasNext()) {
+ Configuration co = conf.getChild((String) e.next());
+ if (! co.getLocation().equals("-")) {
+ String role = RoleUtils.lookup(co.getName());
+ String className = co.getAttribute("class", "");
+
+ if (className.equals("")) {
+ className = RoleUtils.defaultClass(role);
+ }
+
+ try {
+ log.debug("Adding component (" + role + " = " + className + ")");
+ componentManager.addComponent(role, ClassUtils.loadClass(className), co);
+ } catch ( Exception ex ) {
+ log.error("Could not load class " + className, ex);
+ throw new ConfigurationException("Could not get class " + className
+ + " for role " + role, ex);
+ }
}
}
1.1.2.9 +19 -5 xml-cocoon/src/org/apache/cocoon/Attic/DefaultComponentManager.java
Index: DefaultComponentManager.java
===================================================================
RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/Attic/DefaultComponentManager.java,v
retrieving revision 1.1.2.8
retrieving revision 1.1.2.9
diff -u -r1.1.2.8 -r1.1.2.9
--- DefaultComponentManager.java 2001/01/05 16:20:59 1.1.2.8
+++ DefaultComponentManager.java 2001/01/16 15:27:00 1.1.2.9
@@ -25,8 +25,10 @@
import org.apache.avalon.Configuration;
import org.apache.avalon.Composer;
import org.apache.avalon.ConfigurationException;
+import org.apache.avalon.DefaultConfiguration;
import org.apache.cocoon.util.ClassUtils;
+import org.apache.cocoon.util.RoleUtils;
import org.apache.cocoon.util.ComponentPool;
import org.apache.cocoon.util.ComponentPoolController;
import org.apache.cocoon.CocoonComponentSelector;
@@ -36,7 +38,7 @@
/** Default component manager for Cocoon's non sitemap components.
* @author <a href="mailto:paul@luminas.co.uk">Paul Russell</a>
- * @version CVS $Revision: 1.1.2.8 $ $Date: 2001/01/05 16:20:59 $
+ * @version CVS $Revision: 1.1.2.9 $ $Date: 2001/01/16 15:27:00 $
*/
public class DefaultComponentManager implements ComponentManager {
@@ -91,11 +93,23 @@
if ( componentClass == null ) {
component = (Component)this.instances.get(role);
if ( component == null ) {
- log.error(role + " could not be found");
- throw new ComponentNotFoundException("Could not find component for role '" + role + "'.");
+ String className = RoleUtils.defaultClass(role);
+ if (className == null) {
+ log.error(role + " could not be found");
+ throw new ComponentNotFoundException("Could not find component for role '" + role + "'.");
+ }
+ try {
+ componentClass = ClassUtils.loadClass(className);
+ } catch (Exception e) {
+ throw new ComponentNotAccessibleException("Could not load component for role '" + role + "'.", e);
+ }
+ this.components.put(role, componentClass);
+ if (Configurable.class.isAssignableFrom(componentClass)) {
+ this.configurations.put(role, new DefaultConfiguration("", "-"));
+ }
} else {
// we found an individual instance of a component.
- log.debug("DefaultComponentManager returned instance for role " + role + ".");
+ log.debug("DefaultComponentManager returned instance for role " + role + ".");
return component;
}
}
@@ -110,7 +124,7 @@
// Work out what class of component we're dealing with.
if ( ThreadSafe.class.isAssignableFrom(componentClass) ) {
- log.debug("DefaultComponentManager using threadsafe instance of " + componentClass.getName() + " for role " + role + ".");
+ log.debug("DefaultComponentManager using threadsafe instance of " + componentClass.getName() + " for role " + role + ".");
component = getThreadsafeComponent(componentClass);
} else if ( Poolable.class.isAssignableFrom(componentClass) ) {
log.debug("DefaultComponentManager using poolable instance of "