vgritsenko 02/02/20 18:42:49 Modified: src/java/org/apache/cocoon/components/language/markup/xsp/javascript xsp.xsl src/java/org/apache/cocoon/components/language/programming/javascript CompiledJavascriptLanguage.java JavascriptLanguage.java JavascriptProgram.java Log: Implement dependency checking for Javascript XSP pages Revision Changes Path 1.3 +15 -13 xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/javascript/xsp.xsl Index: xsp.xsl =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/javascript/xsp.xsl,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- xsp.xsl 11 Feb 2002 04:45:40 -0000 1.2 +++ xsp.xsl 21 Feb 2002 02:42:49 -0000 1.3 @@ -1,6 +1,6 @@ <?xml version="1.0"?> -<!-- $Id: xsp.xsl,v 1.2 2002/02/11 04:45:40 vgritsenko Exp $--> +<!-- $Id: xsp.xsl,v 1.3 2002/02/21 02:42:49 vgritsenko Exp $--> <!-- ***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * @@ -12,11 +12,12 @@ --> <!-- + * XSP Core logicsheet for the JavaScript language + * * @author <a href="mailto:[EMAIL PROTECTED]>Vadim Gritsenko</a> - * @version CVS $Revision: 1.2 $ $Date: 2002/02/11 04:45:40 $ + * @version CVS $Revision: 1.3 $ $Date: 2002/02/21 02:42:49 $ --> -<!-- XSP Core logicsheet for the JavaScript language --> <xsl:stylesheet version="1.0" xmlns:xsp="http://apache.org/xsp" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" @@ -38,21 +39,22 @@ xmlns:XSLTExtension="org.apache.cocoon.components.language.markup.xsp.java.XSLTExtension"/> <xsl:template match="/"> - <code xml:space="preserve">// $Cocoon extends: org.apache.cocoon.components.language.markup.xsp.JSGenerator$ + <code> + <xsl:text>// $Cocoon extends: org.apache.cocoon.components.language.markup.xsp.JSGenerator$ +</xsl:text> + <xsl:for-each select="//xsp:dependency"> + <xsl:text>// $Cocoon depends: </xsl:text> + <xsl:value-of select="translate(., '\','/')"/> + <xsl:text>$ +</xsl:text> + </xsl:for-each> + <xsl:apply-templates select="xsp:page"/> </code> </xsl:template> - <xsl:template match="xsp:page"> + <xsl:template match="xsp:page" xml:space="preserve"> // Generated by XSP. Edit at your own risk, :-) - - function getDependencies() { - <xsl:text>return "</xsl:text> - <xsl:for-each select="//xsp:dependency"> - <xsl:value-of select="translate(., '\','/')"/><xsl:text>;</xsl:text> - </xsl:for-each> - <xsl:text>";</xsl:text> - } /* Built-in beans not available for use */ // page - "this" in Java 1.2 +2 -2 xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/javascript/CompiledJavascriptLanguage.java Index: CompiledJavascriptLanguage.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/javascript/CompiledJavascriptLanguage.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- CompiledJavascriptLanguage.java 9 Feb 2002 03:32:05 -0000 1.1 +++ CompiledJavascriptLanguage.java 21 Feb 2002 02:42:49 -0000 1.2 @@ -66,7 +66,7 @@ * The compiled Javascript (Rhino) programming language processor * * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a> - * @version CVS $Id: CompiledJavascriptLanguage.java,v 1.1 2002/02/09 03:32:05 vgritsenko Exp $ + * @version CVS $Id: CompiledJavascriptLanguage.java,v 1.2 2002/02/21 02:42:49 vgritsenko Exp $ */ public class CompiledJavascriptLanguage extends JavaLanguage { @@ -82,7 +82,7 @@ /** * Compile a source file yielding a loadable class file. * - * @param filename The object program base file name + * @param name The object program base file name * @param baseDirectory The directory containing the object program file * @param encoding The encoding expected in the source file or * <code>null</code> if it is the platform's default encoding 1.7 +31 -16 xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/javascript/JavascriptLanguage.java Index: JavascriptLanguage.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/javascript/JavascriptLanguage.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- JavascriptLanguage.java 10 Feb 2002 05:08:24 -0000 1.6 +++ JavascriptLanguage.java 21 Feb 2002 02:42:49 -0000 1.7 @@ -67,6 +67,7 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.util.ArrayList; /** * The interpreted Javascript programming language. @@ -77,7 +78,7 @@ * The class specified will be used as a Java wrapper interpreting javascript program. * * @author <a href="mailto:[EMAIL PROTECTED]">Vadim Gritsenko</a> - * @version CVS $Id: JavascriptLanguage.java,v 1.6 2002/02/10 05:08:24 vgritsenko Exp $ + * @version CVS $Id: JavascriptLanguage.java,v 1.7 2002/02/21 02:42:49 vgritsenko Exp $ */ public class JavascriptLanguage extends AbstractProgrammingLanguage implements ProgrammingLanguage { @@ -99,30 +100,24 @@ } Class clazz = null; + ArrayList dependecies = new ArrayList(); + String className = null; BufferedReader r = null; try { r = new BufferedReader(new FileReader(sourceFile)); - className = r.readLine(); - if (className != null) { - int i = className.indexOf("$Cocoon extends: "); - if (i != -1) { - int j = className.indexOf("$", i + 1); - if (j != -1) { - className = className.substring(i + "$Cocoon extends: ".length(), j); - } else { - className = null; - } - } else { - className = null; - } - } + className = getMeta(r.readLine(), "extends"); if (className == null) { throw new LanguageException("Can't load program - Signature is not found: " + IOUtils.getFullFilename(sourceFile)); } clazz = ClassUtils.loadClass(className); + + String line; + while((line = getMeta(r.readLine(), "depends")) != null) { + dependecies.add(line); + } } catch (IOException e) { throw new LanguageException("Can't load program - Signature is not found: " + IOUtils.getFullFilename(sourceFile)); @@ -136,7 +131,27 @@ } } - return new JavascriptProgram(sourceFile, clazz); + return new JavascriptProgram(sourceFile, clazz, dependecies); + } + + private String getMeta(String line, String meta) { + if (line == null) { + return null; + } + + meta = "$Cocoon " + meta + ": "; + int i = line.indexOf(meta); + if (i != -1) { + int j = line.indexOf("$", i + 1); + if (j != -1) { + line = line.substring(i + meta.length(), j); + } else { + line = null; + } + } else { + line = null; + } + return line; } protected void doUnload(Object program, String filename, File baseDir) 1.2 +12 -2 xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/javascript/JavascriptProgram.java Index: JavascriptProgram.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/javascript/JavascriptProgram.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- JavascriptProgram.java 9 Feb 2002 03:32:05 -0000 1.1 +++ JavascriptProgram.java 21 Feb 2002 02:42:49 -0000 1.2 @@ -68,6 +68,8 @@ import org.apache.cocoon.components.language.programming.Program; import java.io.File; +import java.util.Collection; +import java.util.Iterator; public class JavascriptProgram implements Program { @@ -75,14 +77,22 @@ protected Class clazz; protected DefaultConfiguration config; - public JavascriptProgram(File file, Class clazz) { + public JavascriptProgram(File file, Class clazz, Collection dependecies) { + DefaultConfiguration child; + this.file = file; this.clazz = clazz; config = new DefaultConfiguration("", "GeneratorSelector"); - DefaultConfiguration child = new DefaultConfiguration("file", ""); + child = new DefaultConfiguration("file", ""); child.setValue(file.toString()); config.addChild(child); + + for (Iterator i = dependecies.iterator(); i.hasNext(); ) { + child = new DefaultConfiguration("dependency", ""); + child.setValue(i.next().toString()); + config.addChild(child); + } } public String getName() {
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]