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);
       }
  
  
  

Reply via email to