ovidiu      02/04/09 23:18:51

  Modified:    src/scratchpad/schecoon/src/org/apache/cocoon/components/flow
                        InterpreterSelector.java
  Log:
  Make use of the ExcaliburComponentSelector configure method to
  initialize the components, instead of doing the work ourselves.
  
  Revision  Changes    Path
  1.9       +22 -42    
xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/components/flow/InterpreterSelector.java
  
  Index: InterpreterSelector.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/components/flow/InterpreterSelector.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- InterpreterSelector.java  10 Apr 2002 00:36:46 -0000      1.8
  +++ InterpreterSelector.java  10 Apr 2002 06:18:51 -0000      1.9
  @@ -3,8 +3,7 @@
   import org.apache.avalon.excalibur.component.ExcaliburComponentSelector;
   import org.apache.avalon.excalibur.logger.LogKitManageable;
   import org.apache.avalon.excalibur.logger.LogKitManager;
  -import org.apache.avalon.framework.component.ComponentManager;
  -import org.apache.avalon.framework.component.Composable;
  +import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.configuration.Configurable;
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.ConfigurationException;
  @@ -13,10 +12,9 @@
   import org.apache.log.Logger;
   
   public class InterpreterSelector extends ExcaliburComponentSelector
  -  implements Configurable, ThreadSafe, Composable, LogKitManageable
  +  implements Configurable, ThreadSafe, LogKitManageable
   {
     LogKitManager logkit;
  -  ComponentManager manager;
     String defaultLanguage;
     
     ClassLoader loader = Thread.currentThread().getContextClassLoader();
  @@ -29,6 +27,8 @@
     public void configure(Configuration config)
       throws ConfigurationException
     {
  +    super.configure(config);
  +
       defaultLanguage = config.getAttribute("default", null);
       boolean reloadScripts = config.getAttributeAsBoolean("reload-scripts", false);
       long checkTime = config.getAttributeAsLong("check-time", 1000L);
  @@ -38,52 +38,32 @@
         loggerUsed = logkit.getLogger(loggerName);
       }
   
  -    Configuration[] components = config.getChildren("language");
  -    if (components.length == 0)
  +    // Finish the initialization of the already created components
  +    Configuration[] configurations = config.getChildren("component-instance");
  +    if (configurations.length == 0)
         throw new ConfigurationException("No languages defined!");
   
  -    for (int i = 0; i < components.length; i++) {
  -      Configuration component = components[i];
  -      String name = component.getAttribute("name");
  -      String className = component.getChild("class").getValue();
  -      String loadOnStartup
  -        = component.getChild("load-on-startup", true).getValue(null);
  +    for (int i = 0; i < configurations.length; i++) {
  +      Configuration conf = configurations[i];
  +      String hint = conf.getAttribute("name").trim();
  +      Interpreter interp;
   
  -      Class clazz;
         try {
  -        clazz = loader.loadClass(className);
  -        addComponent(name, clazz, component);
  -
  -        // Setup various configuration options on the scripting
  -        // language Cocoon component
  -        Interpreter interp = (Interpreter)this.select(name);
  -        if (interp instanceof AbstractInterpreter) {
  -          ((AbstractInterpreter)interp).setReloadScripts(reloadScripts);
  -          ((AbstractInterpreter)interp).setCheckTime(checkTime);
  -          if (loadOnStartup != null)
  -            ((AbstractInterpreter)interp).register(loadOnStartup);
  -        }
  -        if (interp instanceof Composable)
  -          ((Composable)interp).compose(manager);
  -
  -        if (interp instanceof Loggable)
  -          ((Loggable)interp).setLogger(loggerUsed);
  +        interp = (Interpreter)this.select(hint);
         }
  -      catch (Exception ex) {
  -        throw new ConfigurationException("Cannot load class " + className);
  +      catch (ComponentException ex) {
  +        throw new ConfigurationException("Could not find component for hint "
  +                                         + hint + ": " + ex.toString());
         }
   
  -      // If there's no default language specified through the
  -      // `default' attribute, set up as default the first language in
  -      // the sequence.
  -      if (defaultLanguage == null && i == 0)
  -        defaultLanguage = name;
  -    }
  -  }
  +      if (interp instanceof AbstractInterpreter) {
  +        ((AbstractInterpreter)interp).setReloadScripts(reloadScripts);
  +        ((AbstractInterpreter)interp).setCheckTime(checkTime);
  +      }
   
  -  public void compose(ComponentManager manager)
  -  {
  -    this.manager = manager;
  +      if (i == 0 && defaultLanguage == null)
  +        defaultLanguage = hint;
  +    }
     }
   
     public String getDefaultLanguage()
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to