You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by di...@apache.org on 2001/05/15 13:48:56 UTC

cvs commit: xml-cocoon2/src/org/apache/cocoon/generation ScriptGenerator.java

dims        01/05/15 04:48:56

  Modified:    src/org/apache/cocoon/generation ScriptGenerator.java
  Log:
  Patch for configure the ScriptGenerator to support additional languages
  from Allan Erskine (a.erskine@cs.ucl.ac.uk)
  
  Revision  Changes    Path
  1.4       +77 -6     xml-cocoon2/src/org/apache/cocoon/generation/ScriptGenerator.java
  
  Index: ScriptGenerator.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/ScriptGenerator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ScriptGenerator.java	2001/05/14 13:51:23	1.3
  +++ ScriptGenerator.java	2001/05/15 11:48:51	1.4
  @@ -28,18 +28,74 @@
   
   /**
    * The Scriptgenerator executes arbitraty scripts using the BSF framework
  - * and additional interpreter (Rhino, Jython, etc.) as a Cocoon Generator
  + * and additional interpreter (Rhino, Jython, etc.) as a Cocoon Generator.
    *
  + * Additional language support can be added during configuration, eg
  + * using:
  + *
  + * <pre>
  + *   &lt;add-languages&gt;
  + *     &lt;language name="potatoscript" src="edu.purdue.cs.bsf.engines.Potatoscript"&gt;
  + *       &lt;extension map:value="pos"/&gt;
  + *       &lt;extension map:value="psc"/&gt;
  + *     &lt;language&gt;
  + *     &lt;language name="kawa-scheme" src="org.gnu.kawa.bsf.engines.KawaEngine"&gt;
  + *       &lt;extension map:value="scm"/&gt;
  + *     &lt;language&gt;
  + *   &lt;/add-languages&gt;
  + * </pre>
  + * 
    * @author <a href="mailto:jafoster@engmail.uwaterloo.ca">Jason Foster</a>
  - * @version CVS $Revision: 1.3 $ $Date: 2001/05/14 13:51:23 $
  + * @version CVS $Revision: 1.4 $ $Date: 2001/05/15 11:48:51 $
    */
  -public class ScriptGenerator extends ComposerGenerator implements Recyclable {
  +public class ScriptGenerator extends ComposerGenerator implements Configurable {
  +
  +    protected class BSFLanguage 
  +    {
  +        public String name;
  +        public String engineSrc;
  +        public String[] extensions;
  +    }
   
       private static final String FILE = "file:";
   
  -    public void configure(Configuration conf) throws ConfigurationException {
  -        // TODO: figure out what configure might be good for
  -        // void configure
  +    protected BSFLanguage[] additionalLanguages;
  +
  +    public void configure(Configuration conf) throws ConfigurationException
  +    {
  +        if (conf != null)
  +        {
  +            //add optional support for additional languages
  +            Configuration languagesToAdd = conf.getChild("add-languages");
  +                      
  +            Configuration[] languages = languagesToAdd.getChildren("language");
  +            this.additionalLanguages = new BSFLanguage[languages.length];
  +            
  +
  +            for (int i = 0; i < languages.length; ++i)
  +            {
  +                Configuration language = languages[i];
  +                BSFLanguage bsfLanguage = new BSFLanguage();
  +                
  +                bsfLanguage.name = language.getAttribute("name");
  +                bsfLanguage.engineSrc = language.getAttribute("src");
  +
  +                getLogger().debug("Configuring ScriptGenerator with additional BSF language " + bsfLanguage.name);
  +                getLogger().debug("Configuring ScriptGenerator with BSF engine " + bsfLanguage.engineSrc);
  +                
  +                
  +                Configuration[] extensions = language.getChildren("extension");
  +                bsfLanguage.extensions = new String[extensions.length];
  +                
  +                for (int j = 0; j < extensions.length; ++j)
  +                {
  +                    bsfLanguage.extensions[i] = extensions[i].getValue();
  +                    getLogger().debug("Configuring ScriptGenerator with lang extension " + bsfLanguage.extensions[i]);
  +                }
  +
  +                this.additionalLanguages[i] = bsfLanguage;
  +            }
  +        }
       }
   
       public void generate() throws ProcessingException {
  @@ -64,6 +120,21 @@
               // Set up the BSF manager and register relevant helper "beans"
   
               BSFManager mgr = new BSFManager();
  +
  +            // add support for additional languages
  +
  +            if (this.additionalLanguages != null)
  +            {    
  +                for (int i = 0; i < this.additionalLanguages.length; ++i)
  +                {
  +                    getLogger().debug("adding BSF language " + this.additionalLanguages[i].name + " with engine " + this.additionalLanguages[i].engineSrc);
  +                    
  +                    mgr.registerScriptingEngine(this.additionalLanguages[i].name,
  +                                                this.additionalLanguages[i].engineSrc,
  +                                                this.additionalLanguages[i].extensions);
  +                }
  +            }
  + 
               StringBuffer output = new StringBuffer();
   
               mgr.registerBean("resolver", this.resolver);
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org