vgritsenko 02/03/29 12:32:01 Modified: src/java/org/apache/cocoon/components/language/generator ProgramGeneratorImpl.java src/java/org/apache/cocoon/components/language/programming AbstractProgrammingLanguage.java CompiledProgrammingLanguage.java ProgrammingLanguage.java src/java/org/apache/cocoon/components/language/programming/java AbstractJavaCompiler.java src/java/org/apache/cocoon/components/language/programming/javascript JavascriptLanguage.java Log: separate load and preload steps Revision Changes Path 1.14 +2 -2 xml-cocoon2/src/java/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java Index: ProgramGeneratorImpl.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- ProgramGeneratorImpl.java 7 Mar 2002 16:49:03 -0000 1.13 +++ ProgramGeneratorImpl.java 29 Mar 2002 20:32:01 -0000 1.14 @@ -85,7 +85,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a> * @author <a href="mailto:[EMAIL PROTECTED]">Vadim Gritsenko</a> - * @version CVS $Id: ProgramGeneratorImpl.java,v 1.13 2002/03/07 16:49:03 vgritsenko Exp $ + * @version CVS $Id: ProgramGeneratorImpl.java,v 1.14 2002/03/29 20:32:01 vgritsenko Exp $ */ public class ProgramGeneratorImpl extends AbstractLoggable implements ProgramGenerator, Contextualizable, Composable, Parameterizable, @@ -242,7 +242,7 @@ programmingLanguage = (ProgrammingLanguage)this.languageSelector.select(programmingLanguageName); programmingLanguage.setLanguageName(programmingLanguageName); - program = programmingLanguage.load(normalizedName, + program = programmingLanguage.preload(normalizedName, this.workDir, markupLanguage.getEncoding()); this.cache.addGenerator(newManager, normalizedName, program); 1.7 +2 -2 xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/AbstractProgrammingLanguage.java Index: AbstractProgrammingLanguage.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/AbstractProgrammingLanguage.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- AbstractProgrammingLanguage.java 22 Feb 2002 07:00:09 -0000 1.6 +++ AbstractProgrammingLanguage.java 29 Mar 2002 20:32:01 -0000 1.7 @@ -69,7 +69,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a> * @author <a href="mailto:[EMAIL PROTECTED]">Vadim Gritsenko</a> - * @version CVS $Id: AbstractProgrammingLanguage.java,v 1.6 2002/02/22 07:00:09 cziegeler Exp $ + * @version CVS $Id: AbstractProgrammingLanguage.java,v 1.7 2002/03/29 20:32:01 vgritsenko Exp $ */ public abstract class AbstractProgrammingLanguage extends AbstractLoggable implements ProgrammingLanguage, Parameterizable { @@ -84,7 +84,7 @@ * sitemap-specified source code formatter * * @param params The configuration parameters - * @exception Exception If the language compiler cannot be loaded + * @exception ParameterException If the language compiler cannot be loaded */ public void parameterize(Parameters params) throws ParameterException { String className = params.getParameter("code-formatter", null); 1.10 +22 -12 xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/CompiledProgrammingLanguage.java Index: CompiledProgrammingLanguage.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/CompiledProgrammingLanguage.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- CompiledProgrammingLanguage.java 22 Feb 2002 07:00:09 -0000 1.9 +++ CompiledProgrammingLanguage.java 29 Mar 2002 20:32:01 -0000 1.10 @@ -68,7 +68,7 @@ * A compiled programming language. This class extends <code>AbstractProgrammingLanguage</code> adding support for compilation * and object program files * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a> - * @version CVS $Id: CompiledProgrammingLanguage.java,v 1.9 2002/02/22 07:00:09 cziegeler Exp $ + * @version CVS $Id: CompiledProgrammingLanguage.java,v 1.10 2002/03/29 20:32:01 vgritsenko Exp $ */ public abstract class CompiledProgrammingLanguage extends AbstractProgrammingLanguage implements Contextualizable { @@ -84,7 +84,7 @@ /** * Set the configuration parameters. This method instantiates the sitemap-specified language compiler * @param params The configuration parameters - * @exception Exception If the language compiler cannot be loaded + * @exception ParameterException If the language compiler cannot be loaded */ public void parameterize(Parameters params) throws ParameterException { super.parameterize(params); @@ -99,8 +99,8 @@ } /** - * Set the global component manager - * @param manager The global component manager + * Set the context + * @param context The context */ public void contextualize(Context context) throws ContextException { this.classpath = (String) context.get(Constants.CONTEXT_CLASSPATH); @@ -124,8 +124,7 @@ * @param program The previously loaded object program * @param filename The base filename of the object program * @param baseDirectory The directory contaning the object program file - * @return the value - * @exception EXCEPTION_NAME If an error occurs + * @exception LanguageException If an error occurs */ protected final void doUnload(Object program, String filename, File baseDirectory) throws LanguageException { int index = filename.lastIndexOf(File.separator); @@ -162,8 +161,8 @@ protected abstract void compile(String filename, File baseDirectory, String encoding) throws LanguageException; /** - * Load an object program from a file. - * This method compiled the corresponding source file if necessary. + * Preload an object program from a file. + * This method does not compiles the corresponding source file. * * @param filename The object program base file name * @param baseDirectory The directory containing the object program file @@ -171,17 +170,28 @@ * @return The loaded object program * @exception LanguageException If an error occurs during compilation */ - public Program load(String filename, File baseDirectory, String encoding) throws LanguageException { - - // Used for preload/precompile option. + public Program preload(String filename, File baseDirectory, String encoding) throws LanguageException { // Don't need to test for existence of the object code as it might be bundled into the WAR. try { Class program = this.loadProgram(filename, baseDirectory); Object testInstance = program.newInstance(); return new JavaProgram(program); } catch (Throwable t) { - // Ignore errors if any, try to compile. + throw new LanguageException("Unable to preload program " + filename, t); } + } + + /** + * Load an object program from a file. + * This method compiles the corresponding source file if necessary. + * + * @param filename 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 + * @return The loaded object program + * @exception LanguageException If an error occurs during compilation + */ + public Program load(String filename, File baseDirectory, String encoding) throws LanguageException { // Does source file exist? File sourceFile = new File(baseDirectory, filename + "." + this.getSourceExtension()); 1.7 +14 -1 xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/ProgrammingLanguage.java Index: ProgrammingLanguage.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/ProgrammingLanguage.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- ProgrammingLanguage.java 22 Feb 2002 07:00:09 -0000 1.6 +++ ProgrammingLanguage.java 29 Mar 2002 20:32:01 -0000 1.7 @@ -61,7 +61,7 @@ * This interface states the functionality of a programming language processor * * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a> - * @version CVS $Id: ProgrammingLanguage.java,v 1.6 2002/02/22 07:00:09 cziegeler Exp $ + * @version CVS $Id: ProgrammingLanguage.java,v 1.7 2002/03/29 20:32:01 vgritsenko Exp $ */ public interface ProgrammingLanguage extends Component { @@ -73,6 +73,19 @@ * @return The canonical source file extension */ String getSourceExtension(); + + /** + * Preload a program from a file + * + * @param filename The program base file name + * @param baseDirectory The directory containing the program file + * @param encoding The encoding expected in the source file or + * <code>null</code> if it is the platform's default encoding + * @return The loaded program + * @exception LanguageException If an error occurs during loading + */ + Program preload(String filename, File baseDirectory, String encoding) + throws LanguageException; /** * Load a program from a file 1.7 +2 -2 xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/java/AbstractJavaCompiler.java Index: AbstractJavaCompiler.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/programming/java/AbstractJavaCompiler.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- AbstractJavaCompiler.java 22 Feb 2002 07:00:09 -0000 1.6 +++ AbstractJavaCompiler.java 29 Mar 2002 20:32:01 -0000 1.7 @@ -63,7 +63,7 @@ /** * This class implements the functionality common to all Java compilers. * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> - * @version CVS $Id: AbstractJavaCompiler.java,v 1.6 2002/02/22 07:00:09 cziegeler Exp $ + * @version CVS $Id: AbstractJavaCompiler.java,v 1.7 2002/03/29 20:32:01 vgritsenko Exp $ * @since 2.0 */ public abstract class AbstractJavaCompiler extends AbstractLoggable implements LanguageCompiler, Recyclable { @@ -171,7 +171,7 @@ /** * Fill the arguments taken by the Java compiler * - * @param argument The list of compilation arguments + * @param arguments The list of compilation arguments * @return The prepared list of compilation arguments */ protected List fillArguments(List arguments) { 1.10 +5 -1 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.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- JavascriptLanguage.java 8 Mar 2002 04:08:53 -0000 1.9 +++ JavascriptLanguage.java 29 Mar 2002 20:32:01 -0000 1.10 @@ -73,9 +73,13 @@ * 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.9 2002/03/08 04:08:53 vgritsenko Exp $ + * @version CVS $Id: JavascriptLanguage.java,v 1.10 2002/03/29 20:32:01 vgritsenko Exp $ */ public class JavascriptLanguage extends AbstractProgrammingLanguage implements ProgrammingLanguage { + + public Program preload(String filename, File baseDirectory, String encoding) throws LanguageException { + return load(filename, baseDirectory, encoding); + } public Program load(String filename, File baseDirectory, String encoding) throws LanguageException { // Does source file exist?
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]