cziegeler 01/07/06 02:59:51
Modified: src/org/apache/cocoon/acting
AbstractComplementaryConfigurableAction.java
src/org/apache/cocoon/components/language/markup/xsp
XSPFormValidatorHelper.java XSPGenerator.java
src/org/apache/cocoon/components/source SitemapSource.java
URLSource.java
src/org/apache/cocoon/environment Source.java
src/org/apache/cocoon/generation FileGenerator.java
HTMLGenerator.java
src/org/apache/cocoon/transformation
CIncludeTransformer.java I18nTransformer.java
Log:
Using Source streaming instead of directly parsing
Revision Changes Path
1.4 +10 -18
xml-cocoon2/src/org/apache/cocoon/acting/AbstractComplementaryConfigurableAction.java
Index: AbstractComplementaryConfigurableAction.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/AbstractComplementaryConfigurableAction.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AbstractComplementaryConfigurableAction.java 2001/05/31 15:38:51 1.3
+++ AbstractComplementaryConfigurableAction.java 2001/07/06 09:59:35 1.4
@@ -15,9 +15,8 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.SAXConfigurationHandler;
import org.apache.cocoon.Roles;
-import org.apache.cocoon.components.parser.Parser;
-import org.apache.cocoon.components.url.URLFactory;
-import org.xml.sax.InputSource;
+import org.apache.cocoon.components.source.SourceHandler;
+import org.apache.cocoon.environment.Source;
/**
* Set up environment for configurable form handling data. This group
@@ -27,7 +26,7 @@
* effective. The name of the root configuration element is irrelevant.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
- * @version CVS $Revision: 1.3 $ $Date: 2001/05/31 15:38:51 $
+ * @version CVS $Revision: 1.4 $ $Date: 2001/07/06 09:59:35 $
*/
public abstract class AbstractComplementaryConfigurableAction extends
ComposerAction {
private static Map configurations = new HashMap();
@@ -49,29 +48,22 @@
conf = (Configuration)
AbstractComplementaryConfigurableAction.configurations.get(descriptor);
if (conf == null) {
- URLFactory urlFactory = null;
- Parser parser = null;
- URL resource = null;
+ SourceHandler sourceHandler = null;
+ Source resource = null;
try {
- urlFactory = (URLFactory)
this.manager.lookup(Roles.URL_FACTORY);
- resource = urlFactory.getURL(descriptor);
+ sourceHandler = (SourceHandler)
this.manager.lookup(Roles.SOURCE_HANDLER);
+ resource = sourceHandler.getSource(null, descriptor);
- parser = (Parser)this.manager.lookup(Roles.PARSER);
SAXConfigurationHandler builder = new SAXConfigurationHandler();
- InputSource inputSource = new
InputSource(resource.openStream());
- inputSource.setSystemId(resource.toExternalForm());
+ resource.stream(builder);
- parser.setContentHandler(builder);
- parser.parse(inputSource);
-
conf = builder.getConfiguration();
} catch (Exception e) {
getLogger().error("Could not configure Database mapping
environment", e);
- throw new ConfigurationException("Error trying to load
configurations for resource: " + resource.toExternalForm());
+ throw new ConfigurationException("Error trying to load
configurations for resource: " + (resource == null ? "null" : resource.getSystemId()));
} finally {
- if (urlFactory != null) this.manager.release((Component)
urlFactory);
- if (parser != null) this.manager.release(parser);
+ if (sourceHandler != null) this.manager.release((Component)
sourceHandler);
}
this.cacheConfiguration(descriptor, conf);
1.5 +7 -17
xml-cocoon2/src/org/apache/cocoon/components/language/markup/xsp/XSPFormValidatorHelper.java
Index: XSPFormValidatorHelper.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/xsp/XSPFormValidatorHelper.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XSPFormValidatorHelper.java 2001/07/04 07:56:49 1.4
+++ XSPFormValidatorHelper.java 2001/07/06 09:59:38 1.5
@@ -15,9 +15,8 @@
import org.apache.cocoon.Roles;
import org.apache.cocoon.acting.ValidatorActionResult;
import org.apache.cocoon.acting.ConfigurationHelper;
-import org.apache.cocoon.components.parser.Parser;
-import org.apache.cocoon.components.url.URLFactory;
import org.apache.cocoon.components.language.markup.xsp.XSPObjectHelper;
+import org.apache.cocoon.components.source.SourceHandler;
import org.apache.cocoon.components.source.URLSource;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Source;
@@ -39,7 +38,7 @@
* The <code>ValidatorActionResult</code> object helper
*
* @author <a href="mailto:[EMAIL PROTECTED]">Christian Haul</a>
- * @version CVS $Revision: 1.4 $ $Date: 2001/07/04 07:56:49 $
+ * @version CVS $Revision: 1.5 $ $Date: 2001/07/06 09:59:38 $
*/
public class XSPFormValidatorHelper {
/**
@@ -466,12 +465,10 @@
synchronized (XSPFormValidatorHelper.configurations) {
conf = (ConfigurationHelper)
XSPFormValidatorHelper.configurations.get(descriptor);
Source source = null;
- Parser parser = null;
- URLFactory urlFactory = null;
+ SourceHandler sourceHandler = null;
try {
- urlFactory = (URLFactory) manager.lookup(Roles.URL_FACTORY);
- URL resource = urlFactory.getURL(descriptor);
- source = new URLSource(resource, manager);
+ sourceHandler = (SourceHandler)
manager.lookup(Roles.SOURCE_HANDLER);
+ source = sourceHandler.getSource(null, descriptor);
if (conf == null || ( reloadable && conf.lastModified <
source.getLastModified())) {
logger.debug("XSPFormValidatorHelper.getConfiguration: (Re)Loading " +
descriptor);
@@ -479,15 +476,9 @@
if (conf == null)
conf = new ConfigurationHelper();
- parser = (Parser) manager.lookup(Roles.PARSER);
SAXConfigurationHandler builder = new SAXConfigurationHandler();
+ source.stream(builder);
- InputSource inputSource = source.getInputSource();
- inputSource.setSystemId(source.getSystemId());
-
- parser.setContentHandler(builder);
- parser.parse(inputSource);
-
conf.lastModified = source.getLastModified();
conf.configuration = builder.getConfiguration();
@@ -499,8 +490,7 @@
logger.error("XSPFormValidatorHelper.getConfiguration: Could not configure
Database mapping environment", e);
throw new ConfigurationException("Error trying to load configurations for
resource: " + source.getSystemId());
} finally {
- if (urlFactory != null) manager.release((Component) urlFactory);
- if (parser != null) manager.release(parser);
+ if (sourceHandler != null) manager.release((Component)
sourceHandler);
}
}
1.5 +1 -2
xml-cocoon2/src/org/apache/cocoon/components/language/markup/xsp/XSPGenerator.java
Index: XSPGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/xsp/XSPGenerator.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XSPGenerator.java 2001/06/15 11:49:22 1.4
+++ XSPGenerator.java 2001/07/06 09:59:39 1.5
@@ -14,7 +14,6 @@
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.cocoon.Roles;
import org.apache.cocoon.components.language.generator.CompiledComponent;
-import org.apache.cocoon.components.parser.Parser;
import org.apache.cocoon.generation.AbstractServerPage;
import org.apache.avalon.excalibur.pool.Recyclable;
@@ -22,7 +21,7 @@
* Base class for XSP-generated <code>ServerPagesGenerator</code> classes
*
* @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
- * @version CVS $Revision: 1.4 $ $Date: 2001/06/15 11:49:22 $
+ * @version CVS $Revision: 1.5 $ $Date: 2001/07/06 09:59:39 $
*/
public abstract class XSPGenerator extends AbstractServerPage implements
CompiledComponent, Contextualizable, Recyclable {
protected Context avalonContext = null;
1.5 +10 -2
xml-cocoon2/src/org/apache/cocoon/components/source/SitemapSource.java
Index: SitemapSource.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/source/SitemapSource.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SitemapSource.java 2001/07/04 14:00:46 1.4
+++ SitemapSource.java 2001/07/06 09:59:41 1.5
@@ -24,7 +24,6 @@
import org.apache.cocoon.Constants;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Roles;
-import org.apache.cocoon.components.parser.Parser;
import org.apache.cocoon.components.pipeline.EventPipeline;
import org.apache.cocoon.components.pipeline.StreamPipeline;
import org.apache.cocoon.environment.Environment;
@@ -33,8 +32,10 @@
import org.apache.cocoon.serialization.Serializer;
import org.apache.cocoon.sitemap.Sitemap;
import org.apache.cocoon.sitemap.SitemapComponentSelector;
+import org.apache.cocoon.xml.ContentHandlerWrapper;
import org.apache.cocoon.xml.XMLConsumer;
import org.apache.cocoon.xml.XMLProducer;
+import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -42,7 +43,7 @@
* Description of a source which is defined by a pipeline.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.4 $ $Date: 2001/07/04 14:00:46 $
+ * @version CVS $Revision: 1.5 $ $Date: 2001/07/06 09:59:41 $
*/
public final class SitemapSource
@@ -239,5 +240,12 @@
}
}
+ /**
+ * Stream content to the content handler
+ */
+ public void stream(ContentHandler contentHandler)
+ throws ProcessingException, SAXException, IOException {
+ this.stream(new ContentHandlerWrapper(contentHandler));
+ }
}
1.3 +20 -1
xml-cocoon2/src/org/apache/cocoon/components/source/URLSource.java
Index: URLSource.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/source/URLSource.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- URLSource.java 2001/07/04 07:57:01 1.2
+++ URLSource.java 2001/07/06 09:59:42 1.3
@@ -24,6 +24,7 @@
import org.apache.cocoon.components.parser.Parser;
import org.apache.cocoon.environment.Source;
import org.apache.cocoon.xml.XMLConsumer;
+import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -31,7 +32,7 @@
* Description of a source which is described by an URL.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/07/04 07:57:01 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/07/06 09:59:42 $
*/
public final class URLSource
@@ -280,6 +281,24 @@
parser = (Parser)this.manager.lookup(Roles.PARSER);
parser.setConsumer(consumer);
+ parser.parse(this.getInputSource());
+ } catch (ComponentException e){
+ throw new ProcessingException("Exception in URLSource.stream()", e);
+ } finally {
+ if (parser != null) this.manager.release(parser);
+ }
+ }
+
+ /**
+ * Stream content to the content handler
+ */
+ public void stream(ContentHandler contentHandler)
+ throws ProcessingException, SAXException, IOException {
+ Parser parser = null;
+ try {
+ parser = (Parser)this.manager.lookup(Roles.PARSER);
+
+ parser.setContentHandler(contentHandler);
parser.parse(this.getInputSource());
} catch (ComponentException e){
throw new ProcessingException("Exception in URLSource.stream()", e);
1.8 +9 -1 xml-cocoon2/src/org/apache/cocoon/environment/Source.java
Index: Source.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/environment/Source.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- Source.java 2001/06/28 09:56:36 1.7
+++ Source.java 2001/07/06 09:59:45 1.8
@@ -19,6 +19,7 @@
import java.net.URLConnection;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.xml.XMLConsumer;
+import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -27,7 +28,7 @@
* for accessing any resource (URL, local file etc).
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.7 $ $Date: 2001/06/28 09:56:36 $
+ * @version CVS $Revision: 1.8 $ $Date: 2001/07/06 09:59:45 $
*/
public interface Source {
@@ -83,5 +84,12 @@
*/
void stream(XMLConsumer consumer)
throws ProcessingException, SAXException, IOException;
+
+ /**
+ * Stream content to the content handler
+ */
+ void stream(ContentHandler contentHandler)
+ throws ProcessingException, SAXException, IOException;
+
}
1.15 +1 -2 xml-cocoon2/src/org/apache/cocoon/generation/FileGenerator.java
Index: FileGenerator.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/FileGenerator.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- FileGenerator.java 2001/06/28 09:56:42 1.14
+++ FileGenerator.java 2001/07/06 09:59:47 1.15
@@ -22,7 +22,6 @@
import org.apache.cocoon.caching.CacheValidity;
import org.apache.cocoon.caching.Cacheable;
import org.apache.cocoon.caching.TimeStampCacheValidity;
-import org.apache.cocoon.components.parser.Parser;
import org.apache.cocoon.environment.Source;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.util.HashUtil;
@@ -39,7 +38,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a>
* (Apache Software Foundation, Exoffice Technologies)
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.14 $ $Date: 2001/06/28 09:56:42 $
+ * @version CVS $Revision: 1.15 $ $Date: 2001/07/06 09:59:47 $
*/
public class FileGenerator extends ComposerGenerator
implements Cacheable, Recyclable {
1.5 +2 -3 xml-cocoon2/src/org/apache/cocoon/generation/HTMLGenerator.java
Index: HTMLGenerator.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/HTMLGenerator.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- HTMLGenerator.java 2001/05/22 14:40:55 1.4
+++ HTMLGenerator.java 2001/07/06 09:59:47 1.5
@@ -25,7 +25,6 @@
import org.apache.cocoon.caching.Cacheable;
import org.apache.cocoon.caching.CacheValidity;
import org.apache.cocoon.caching.TimeStampCacheValidity;
-import org.apache.cocoon.components.parser.Parser;
import org.apache.cocoon.environment.Source;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.util.HashUtil;
@@ -36,7 +35,7 @@
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.4 $ $Date: 2001/05/22 14:40:55 $
+ * @version CVS $Revision: 1.5 $ $Date: 2001/07/06 09:59:47 $
*/
public class HTMLGenerator extends ComposerGenerator implements Cacheable,
Recyclable {
@@ -115,7 +114,7 @@
getLogger().error("HTMLGenerator.generate()", e);
throw(e);
} catch (Exception e){
- getLogger().error("Could not get parser", e);
+ getLogger().error("Could not setup jtidy", e);
throw new ProcessingException("Exception in
HTMLGenerator.generate()",e);
}
}
1.3 +4 -14
xml-cocoon2/src/org/apache/cocoon/transformation/CIncludeTransformer.java
Index: CIncludeTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/CIncludeTransformer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CIncludeTransformer.java 2001/06/19 13:39:21 1.2
+++ CIncludeTransformer.java 2001/07/06 09:59:50 1.3
@@ -15,7 +15,6 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Roles;
-import org.apache.cocoon.components.parser.Parser;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.xml.IncludeXMLConsumer;
import org.xml.sax.Attributes;
@@ -32,7 +31,7 @@
* which surrounds the included content.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/06/19 13:39:21 $ $Author: cziegeler $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/07/06 09:59:50 $ $Author: cziegeler $
*/
public class CIncludeTransformer extends AbstractTransformer
implements Recyclable, Composable {
@@ -124,23 +123,14 @@
attrs);
}
- Parser parser = null;
try {
- parser = (Parser)this.manager.lookup(Roles.PARSER);
-
- parser.setConsumer(consumer);
- parser.parse(this.sourceResolver.resolve(src).getInputSource());
+ this.sourceResolver.resolve(src).stream(consumer);
} catch (IOException e) {
getLogger().error("CIncludeTransformer", e);
throw new SAXException("CIncludeTransformer could not read resource",
e);
- } catch (SAXException e) {
- getLogger().error("CIncludeTransformer", e);
- throw(e);
- } catch (Exception e){
- getLogger().error("Could not get parser", e);
+ } catch (ProcessingException e){
+ getLogger().error("Could not stream input", e);
throw new SAXException("Exception in CIncludeTransformer",e);
- } finally {
- if (parser != null) this.manager.release(parser);
}
if (!"".equals(element)) {
1.12 +1 -12
xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer.java
Index: I18nTransformer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- I18nTransformer.java 2001/06/28 09:56:49 1.11
+++ I18nTransformer.java 2001/07/06 09:59:50 1.12
@@ -12,7 +12,6 @@
import org.apache.cocoon.Roles;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.acting.LangSelect;
-import org.apache.cocoon.components.parser.Parser;
import org.apache.cocoon.environment.Source;
import org.apache.cocoon.environment.SourceResolver;
@@ -857,18 +856,13 @@
private void initialiseDictionary(Source inputSource)
throws ProcessingException, SAXException, MalformedURLException, IOException {
- Parser parser = null;
try
{
- parser = (Parser)(manager.lookup(Roles.PARSER));
- InputSource input = new InputSource(inputSource.getInputStream());
-
// How this could be cached?
this.dictionary = new HashMap();
I18nContentHandler i18n_handler = new I18nContentHandler();
- parser.setContentHandler(i18n_handler);
- parser.parse(input);
+ inputSource.stream(i18n_handler);
} catch(SAXException e) {
getLogger().error("Error in initialiseDictionary", e);
throw e;
@@ -878,11 +872,6 @@
} catch(IOException e) {
getLogger().error("Error in initialiseDictionary", e);
throw e;
- } catch(ComponentException e) {
- getLogger().error("Error in initialiseDictionary", e);
- throw new SAXException(e);
- } finally {
- if(parser != null) this.manager.release((Component) parser);
}
}
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]