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]