cziegeler 01/10/29 04:22:01
Modified: . changes.xml
src/org/apache/cocoon Cocoon.java
src/org/apache/cocoon/components/parser JaxpParser.java
Log:
The JAXPParser is now Poolable and Configurable. It is theoretically
possible to turn on validation now.
Revision Changes Path
1.46 +4 -1 xml-cocoon2/changes.xml
Index: changes.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/changes.xml,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- changes.xml 2001/10/25 10:34:00 1.45
+++ changes.xml 2001/10/29 12:22:01 1.46
@@ -4,7 +4,7 @@
<!--
History of Cocoon changes
- $Id: changes.xml,v 1.45 2001/10/25 10:34:00 sylvain Exp $
+ $Id: changes.xml,v 1.46 2001/10/29 12:22:01 cziegeler Exp $
-->
<changes title="History of Changes">
@@ -26,6 +26,9 @@
</devs>
<release version="2.1-dev" date="@date@">
+ <action dev="CZ" type="update">
+ The JaxpParser is now poolable and configurable.
+ </action>
<action dev="SW" type="update">
The sitemap engine is now a regular component available through Processor.ROLE.
This allows
alternative implementations of Processors (e.g. interpreted sitemap, flowmap,
statemap) to
1.32 +10 -10 xml-cocoon2/src/org/apache/cocoon/Cocoon.java
Index: Cocoon.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/Cocoon.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- Cocoon.java 2001/10/25 10:34:00 1.31
+++ Cocoon.java 2001/10/29 12:22:01 1.32
@@ -56,7 +56,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> (Apache
Software Foundation, Exoffice Technologies)
* @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Leo Sutic</a>
- * @version CVS $Revision: 1.31 $ $Date: 2001/10/25 10:34:00 $
+ * @version CVS $Revision: 1.32 $ $Date: 2001/10/29 12:22:01 $
*/
public class Cocoon
extends AbstractLoggable
@@ -101,7 +101,7 @@
/** maximum request count */
private static int maxRequestCount = 0;
-
+
/** the Processor if it is ThreadSafe */
private Processor threadSafeProcessor = null;
@@ -163,7 +163,7 @@
startupManager.setLogKitManager(this.logKitManager);
try {
- startupManager.addComponent(Parser.ROLE, ClassUtils.loadClass(parser),
null);
+ startupManager.addComponent(Parser.ROLE, ClassUtils.loadClass(parser),
new org.apache.avalon.framework.configuration.DefaultConfiguration("", "empty"));
} catch (Exception e) {
getLogger().error("Could not load parser, Cocoon object not created.",
e);
throw new ConfigurationException("Could not load parser " + parser, e);
@@ -216,7 +216,7 @@
} finally {
this.componentManager.release(server);
}
-
+
}
/** Dump System Properties */
@@ -464,10 +464,10 @@
incRequestCount();
this.debug(environment, null, null);
}
-
+
if (this.threadSafeProcessor != null) {
return this.threadSafeProcessor.process(environment);
- } else {
+ } else {
Processor processor =
(Processor)this.componentManager.lookup(Processor.ROLE);
try {
return processor.process(environment);
@@ -496,7 +496,7 @@
incRequestCount();
this.debug(environment, pipeline, eventPipeline);
}
-
+
if (this.threadSafeProcessor != null) {
return this.threadSafeProcessor.process(environment, pipeline,
eventPipeline);
} else {
@@ -568,15 +568,15 @@
* result if it's the maximum.
*/
private static synchronized void incRequestCount() {
- if (++activeRequestCount > maxRequestCount)
- maxRequestCount = activeRequestCount;
+ if (++activeRequestCount > maxRequestCount)
+ maxRequestCount = activeRequestCount;
}
/**
* Decrement active request count.
*/
private static synchronized void decRequestCount() {
- --activeRequestCount;
+ --activeRequestCount;
}
}
1.11 +35 -34
xml-cocoon2/src/org/apache/cocoon/components/parser/JaxpParser.java
Index: JaxpParser.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/parser/JaxpParser.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- JaxpParser.java 2001/10/10 09:18:28 1.10
+++ JaxpParser.java 2001/10/29 12:22:01 1.11
@@ -7,30 +7,22 @@
*****************************************************************************/
package org.apache.cocoon.components.parser;
+import org.apache.avalon.excalibur.pool.Recyclable;
import org.apache.avalon.framework.component.ComponentException;
-
import org.apache.avalon.framework.component.ComponentManager;
-
import org.apache.avalon.framework.component.Composable;
-
-import org.apache.avalon.framework.thread.SingleThreaded;
-
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.components.resolver.Resolver;
-
import org.apache.cocoon.util.ClassUtils;
-
import org.apache.cocoon.xml.AbstractXMLProducer;
-
import org.w3c.dom.DOMImplementation;
-
import org.w3c.dom.Document;
-
import org.xml.sax.*;
-
-
import javax.xml.parsers.*;
-
import java.io.IOException;
/**
@@ -38,43 +30,52 @@
* If only we can get rid of the need for the Document...
*
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
- * @version CVS $Revision: 1.10 $ $Date: 2001/10/10 09:18:28 $
+ * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
+ * @version CVS $Revision: 1.11 $ $Date: 2001/10/29 12:22:01 $
*/
public class JaxpParser extends AbstractXMLProducer
-implements Parser, ErrorHandler, Composable, SingleThreaded {
+implements Parser, ErrorHandler, Composable, Configurable, Recyclable {
/** the SAX Parser factory */
- final SAXParserFactory factory = SAXParserFactory.newInstance();
+ protected SAXParserFactory factory;
/** the Document Builder factory */
- final DocumentBuilderFactory docfactory = DocumentBuilderFactory.newInstance();
+ protected DocumentBuilderFactory docfactory;
/** the component manager */
protected ComponentManager manager;
/** the Entity Resolver */
- protected Resolver resolver = null;
+ protected Resolver resolver;
- public JaxpParser ()
- throws SAXException, ParserConfigurationException {
- this.factory.setNamespaceAware(true);
- this.factory.setValidating(false);
- this.docfactory.setNamespaceAware(true);
- this.docfactory.setValidating(false);
+ /**
+ * Get the Entity Resolver from the component manager
+ */
+ public void compose(ComponentManager manager)
+ throws ComponentException {
+ try {
+ this.manager = manager;
+ getLogger().debug("Looking up " + Resolver.ROLE);
+ this.resolver = (Resolver)manager.lookup(Resolver.ROLE);
+ } catch(ComponentException e) {
+ // This exception is ok during initialization/startup.
+ getLogger().debug("Error in JaxpParser: Cannot find " + Resolver.ROLE);
+ }
}
/**
- * Get the Entity Resolver from the component manager
+ * Configure
*/
- public void compose(ComponentManager manager) throws ComponentException {
- try {
- this.manager = manager;
- getLogger().debug("Looking up " + Resolver.ROLE);
- this.resolver = (Resolver)manager.lookup(Resolver.ROLE);
- } catch(ComponentException e) {
- // This exception is ok during initialization/startup.
- getLogger().debug("Error in JaxpParser: Cannot find " + Resolver.ROLE);
- }
+ public void configure(Configuration config)
+ throws ConfigurationException {
+ Parameters params = Parameters.fromConfiguration(config);
+ boolean validate = params.getParameterAsBoolean("validate", false);
+ this.factory = SAXParserFactory.newInstance();
+ this.docfactory = DocumentBuilderFactory.newInstance();
+ this.factory.setNamespaceAware(true);
+ this.factory.setValidating(validate);
+ this.docfactory.setNamespaceAware(true);
+ this.docfactory.setValidating(validate);
}
public void parse(InputSource in)
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]