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>
+ * <add-languages>
+ * <language name="potatoscript" src="edu.purdue.cs.bsf.engines.Potatoscript">
+ * <extension map:value="pos"/>
+ * <extension map:value="psc"/>
+ * <language>
+ * <language name="kawa-scheme" src="org.gnu.kawa.bsf.engines.KawaEngine">
+ * <extension map:value="scm"/>
+ * <language>
+ * </add-languages>
+ * </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