bloritsch 01/02/21 07:52:47
Modified: src/org/apache/cocoon/components/language/generator Tag:
xml-cocoon2 GeneratorSelector.java
Log:
Try to add support for using pre-compiled classes.
Revision Changes Path
No revision
No revision
1.1.2.2 +35 -1
xml-cocoon/src/org/apache/cocoon/components/language/generator/Attic/GeneratorSelector.java
Index: GeneratorSelector.java
===================================================================
RCS file:
/home/cvs/xml-cocoon/src/org/apache/cocoon/components/language/generator/Attic/GeneratorSelector.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- GeneratorSelector.java 2001/02/16 16:21:37 1.1.2.1
+++ GeneratorSelector.java 2001/02/21 15:52:47 1.1.2.2
@@ -7,17 +7,51 @@
*****************************************************************************/
package org.apache.cocoon.components.language.generator;
+import org.apache.avalon.Component;
+import org.apache.avalon.ComponentManager;
+import org.apache.avalon.ComponentManagerException;
+import org.apache.avalon.ComponentNotAccessibleException;
+
+import org.apache.cocoon.components.classloader.ClassLoaderManager;
+import org.apache.cocoon.Roles;
import org.apache.cocoon.CocoonComponentSelector;
+import org.apache.cocoon.util.ClassUtils;
/**
* This interface is the common base of all Compiled Components. This
* includes Sitemaps and XSP Pages
*
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
- * @version CVS $Revision: 1.1.2.1 $ $Date: 2001/02/16 16:21:37 $
+ * @version CVS $Revision: 1.1.2.2 $ $Date: 2001/02/21 15:52:47 $
*/
public class GeneratorSelector extends CocoonComponentSelector {
+ private ClassLoaderManager classManager;
+
+ public void compose (ComponentManager manager) throws
ComponentManagerException {
+ super.compose(manager);
+
+ this.classManager = (ClassLoaderManager)
manager.lookup(Roles.CLASS_LOADER);
+ }
+ public Component select(Object hint) throws ComponentManagerException {
+ try {
+ return super.select(hint);
+ } catch (Exception e) {
+ // if it isn't loaded, it may already be compiled...
+ this.addGenerator(hint);
+ return super.select(hint);
+ }
+ }
+
+ private void addGenerator(Object hint) throws ComponentManagerException {
+ Class generator;
+ try {
+ generator = classManager.loadClass((String) hint);
+ } catch (Exception e) {
+ throw new ComponentNotAccessibleException("Could not add
component for class: " + hint.toString(), e);
+ }
+ this.addGenerator(hint, generator);
+ }
public void addGenerator(Object hint, Class generator) {
this.components.put(hint, generator);
}