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 ([EMAIL PROTECTED])
  
  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:[EMAIL PROTECTED]">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:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to