vgritsenko 02/01/24 19:38:37 Modified: src/java/org/apache/cocoon/components/language/markup AbstractMarkupLanguage.java Logicsheet.java LogicsheetCodeGenerator.java Log: - some code formatting - added FIXME: recycle source Revision Changes Path 1.2 +85 -87 xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/AbstractMarkupLanguage.java Index: AbstractMarkupLanguage.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/AbstractMarkupLanguage.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- AbstractMarkupLanguage.java 3 Jan 2002 12:31:09 -0000 1.1 +++ AbstractMarkupLanguage.java 25 Jan 2002 03:38:36 -0000 1.2 @@ -38,13 +38,13 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a> * @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a> * @author <a href="mailto:[EMAIL PROTECTED]">Ovidiu Predescu</a> - * @version CVS $Revision: 1.1 $ $Date: 2002/01/03 12:31:09 $ + * @version CVS $Revision: 1.2 $ $Date: 2002/01/25 03:38:36 $ */ public abstract class AbstractMarkupLanguage extends AbstractLoggable implements MarkupLanguage, Composable, Configurable { - /** The 'file' URL protocol. */ - private static final String FILE = "file:"; + /** The 'file' URL protocol. */ + private static final String FILE = "file:"; /** The supported language table */ protected Hashtable languages; @@ -64,10 +64,10 @@ /** Prefix for cache keys to avoid name clash with the XSLTProcessor */ private static final String CACHE_PREFIX = "logicsheet:"; - /** - * The URL factory used to resolve URIs. - */ - URLFactory urlFactory; + /** + * The URL factory used to resolve URIs. + */ + URLFactory urlFactory; /** * Set the global component manager. @@ -172,57 +172,57 @@ return logicsheet; } - /** - * Return the source document's encoding. This can be <code>null</code> for - * the platform's default encoding. The default implementation returns - * <code>null, but derived classes may override it if encoding applies to - * their concrete languages. FIXME: There should be a way to get the - * XML document's encoding as seen by the parser; unfortunately, this - * information is not returned by current DOM or SAX parsers... - * @return The document-specified encoding - */ - public String getEncoding() { - return null; - } - - /** - * Returns a filter that chains on the fly the requested - * transformers for source code generation. This method scans the - * input SAX events for built-in logicsheet declared as namespace - * attribute on the root element. Derived class should overide - * this method and the public inner class in order to add more - * specif action and to build a more specific transformer chain. - * - * @param logicsheetMarkupGenerator the logicsheet markup generator - * @param resolver the entity resolver - * @return XMLFilter the filter that build on the fly the transformer chain - */ - protected TransformerChainBuilderFilter getTranformerChainBuilder - (LogicsheetCodeGenerator logicsheetMarkupGenerator, - SourceResolver resolver) - { - return new TransformerChainBuilderFilter(logicsheetMarkupGenerator, - resolver); - } + /** + * Return the source document's encoding. This can be <code>null</code> for + * the platform's default encoding. The default implementation returns + * <code>null, but derived classes may override it if encoding applies to + * their concrete languages. FIXME: There should be a way to get the + * XML document's encoding as seen by the parser; unfortunately, this + * information is not returned by current DOM or SAX parsers... + * @return The document-specified encoding + */ + public String getEncoding() { + return null; + } + + /** + * Returns a filter that chains on the fly the requested + * transformers for source code generation. This method scans the + * input SAX events for built-in logicsheet declared as namespace + * attribute on the root element. Derived class should overide + * this method and the public inner class in order to add more + * specif action and to build a more specific transformer chain. + * + * @param logicsheetMarkupGenerator the logicsheet markup generator + * @param resolver the entity resolver + * @return XMLFilter the filter that build on the fly the transformer chain + */ + protected TransformerChainBuilderFilter getTranformerChainBuilder + (LogicsheetCodeGenerator logicsheetMarkupGenerator, + SourceResolver resolver) + { + return new TransformerChainBuilderFilter(logicsheetMarkupGenerator, + resolver); + } - /** - * Prepare the input source for logicsheet processing and code - * generation with a preprocess filter. The return - * <code>XMLFilter</code> object is the first filter on the - * transformer chain. The default implementation does nothing by - * returning a identity filter, but derived classes should (at - * least) use the passed programming language to quote - * <code>Strings</code> - * - * @param filename The source filename - * @param language The target programming language - * @return The preprocess filter - */ - protected XMLFilter getPreprocessFilter(String filename, - ProgrammingLanguage language) - { - return new XMLFilterImpl(); - } + /** + * Prepare the input source for logicsheet processing and code + * generation with a preprocess filter. The return + * <code>XMLFilter</code> object is the first filter on the + * transformer chain. The default implementation does nothing by + * returning a identity filter, but derived classes should (at + * least) use the passed programming language to quote + * <code>Strings</code> + * + * @param filename The source filename + * @param language The target programming language + * @return The preprocess filter + */ + protected XMLFilter getPreprocessFilter(String filename, + ProgrammingLanguage language) + { + return new XMLFilterImpl(); + } /** * Add a dependency on an external file to the document for inclusion in @@ -252,26 +252,26 @@ * @exception Exception If an error occurs during code generation */ public String generateCode(InputSource input, String filename, ProgrammingLanguage programmingLanguage, - SourceResolver resolver) throws Exception { - String languageName = programmingLanguage.getLanguageName(); - LanguageDescriptor language = (LanguageDescriptor)this.languages.get(languageName); - if (language == null) { - throw new IllegalArgumentException("Unsupported programming language: " + languageName); - } - // Create a XMLReader - XMLReader reader = XMLReaderFactory.createXMLReader(); - // Get the needed preprocess filter - XMLFilter preprocessFilter = this.getPreprocessFilter(filename, programmingLanguage); - preprocessFilter.setParent(reader); - // Create code generator - LogicsheetCodeGenerator codeGenerator = new LogicsheetCodeGenerator(); - codeGenerator.setLogger(getLogger()); - codeGenerator.initialize(); - // set the transformer chain builder filter - TransformerChainBuilderFilter tranBuilder = getTranformerChainBuilder(codeGenerator, resolver); - tranBuilder.setLanguageDescriptor(language); - tranBuilder.setParent(preprocessFilter); - return codeGenerator.generateCode(tranBuilder, input, filename); + SourceResolver resolver) throws Exception { + String languageName = programmingLanguage.getLanguageName(); + LanguageDescriptor language = (LanguageDescriptor)this.languages.get(languageName); + if (language == null) { + throw new IllegalArgumentException("Unsupported programming language: " + languageName); + } + // Create a XMLReader + XMLReader reader = XMLReaderFactory.createXMLReader(); + // Get the needed preprocess filter + XMLFilter preprocessFilter = this.getPreprocessFilter(filename, programmingLanguage); + preprocessFilter.setParent(reader); + // Create code generator + LogicsheetCodeGenerator codeGenerator = new LogicsheetCodeGenerator(); + codeGenerator.setLogger(getLogger()); + codeGenerator.initialize(); + // set the transformer chain builder filter + TransformerChainBuilderFilter tranBuilder = getTranformerChainBuilder(codeGenerator, resolver); + tranBuilder.setLanguageDescriptor(language); + tranBuilder.setParent(preprocessFilter); + return codeGenerator.generateCode(tranBuilder, input, filename); } LinkedList logicSheetList = new LinkedList(); @@ -318,24 +318,22 @@ throws MalformedURLException, IOException, SAXException, ProcessingException { Logicsheet logicsheet = (Logicsheet)logicsheetCache.get(CACHE_PREFIX + logicsheetLocation); - String logicsheetName; - - getLogger().debug("AbstractMarkupLanguage addLogicsheetToList: " - + "logicsheetLocation " + logicsheetLocation - + ", logicsheet instance " + logicsheet); + String logicsheetName; if (logicsheet == null) { Source inputSource = resolver.resolve(logicsheetLocation); logicsheet = new Logicsheet(inputSource, manager, resolver); logicsheetName = logicsheet.getSystemId(); - logicsheetCache.store(CACHE_PREFIX + logicsheetName, logicsheet); - } - else + // FIXME(VG): inputSource.recylce() !!! + } else { logicsheetName = logicsheet.getSystemId(); + } getLogger().debug("AbstractMarkupLanguage addLogicsheetToList: " - + "logicsheetName " + logicsheetName); + + "name: " + logicsheetName + + ", location: " + logicsheetLocation + + ", instance: " + logicsheet); if (logicsheetName.startsWith(FILE)) { String filename = logicsheetName.substring(FILE.length()); @@ -437,7 +435,7 @@ /** - * a XMLFilter that build the chain of transformers on the fly. + * An XMLFilter that build the chain of transformers on the fly. * Each time a stylesheet is found, a call to the code generator is done * to add the new transformer at the end of the current transformer chain. */ 1.2 +1 -2 xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/Logicsheet.java Index: Logicsheet.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/Logicsheet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Logicsheet.java 3 Jan 2002 12:31:09 -0000 1.1 +++ Logicsheet.java 25 Jan 2002 03:38:36 -0000 1.2 @@ -41,7 +41,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a> * @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a> * @author <a href="mailto:[EMAIL PROTECTED]">Ovidiu Predescu</a> - * @version CVS $Revision: 1.1 $ $Date: 2002/01/03 12:31:09 $ + * @version CVS $Revision: 1.2 $ $Date: 2002/01/25 03:38:36 $ */ public class Logicsheet extends AbstractLoggable { @@ -203,5 +203,4 @@ super.startElement(namespaceURI, localName, qName, atts); } } - } 1.2 +7 -6 xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/LogicsheetCodeGenerator.java Index: LogicsheetCodeGenerator.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/LogicsheetCodeGenerator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- LogicsheetCodeGenerator.java 3 Jan 2002 12:31:09 -0000 1.1 +++ LogicsheetCodeGenerator.java 25 Jan 2002 03:38:36 -0000 1.2 @@ -12,6 +12,9 @@ import org.xml.sax.ContentHandler; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; +import org.xml.sax.Locator; +import org.xml.sax.SAXException; +import org.xml.sax.Attributes; import javax.xml.transform.OutputKeys; import javax.xml.transform.TransformerConfigurationException; @@ -28,7 +31,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a> * @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a> - * @version CVS $Revision: 1.1 $ $Date: 2002/01/03 12:31:09 $ + * @version CVS $Revision: 1.2 $ $Date: 2002/01/25 03:38:36 $ */ public class LogicsheetCodeGenerator extends AbstractLoggable implements MarkupCodeGenerator { @@ -46,8 +49,8 @@ private SAXTransformerFactory tfactory = null; /** - * Initialize the LogicsheetCodeGenerator. - */ + * Initialize the LogicsheetCodeGenerator. + */ public void initialize() { Properties format = new Properties(); @@ -90,7 +93,7 @@ * @param logicsheet The logicsheet to be added */ public void addLogicsheet(Logicsheet logicsheet) { - if (this.currentParent==null) { + if (this.currentParent == null) { // Setup the first transformer of the chain. this.currentParent = logicsheet.getTransformerHandler(); @@ -130,6 +133,4 @@ this.rootReader.parse(input); return this.writer.toString(); } - } -
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]