You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by co...@apache.org on 2004/04/01 18:50:32 UTC
cvs commit: cocoon-2.1/src/java/org/apache/cocoon/generation JXTemplateGenerator.java
coliver 2004/04/01 08:50:32
Modified: src/java/org/apache/cocoon/generation
JXTemplateGenerator.java
Log:
Set up service manager on generator when called from transformer
Revision Changes Path
1.39 +41 -10 cocoon-2.1/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java
Index: JXTemplateGenerator.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/generation/JXTemplateGenerator.java,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- JXTemplateGenerator.java 5 Mar 2004 13:02:55 -0000 1.38
+++ JXTemplateGenerator.java 1 Apr 2004 16:50:32 -0000 1.39
@@ -40,6 +40,8 @@
import java.util.TimeZone;
import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceException;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.components.flow.FlowHelper;
import org.apache.cocoon.components.flow.WebContinuation;
@@ -48,7 +50,7 @@
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.SourceResolver;
-import org.apache.cocoon.transformation.AbstractTransformer;
+import org.apache.cocoon.transformation.ServiceableTransformer;
import org.apache.cocoon.xml.XMLConsumer;
import org.apache.cocoon.xml.IncludeXMLConsumer;
import org.apache.cocoon.xml.dom.DOMBuilder;
@@ -2248,6 +2250,16 @@
return this.startEvent;
}
+
+ void recycle() {
+ startEvent = null;
+ lastEvent = null;
+ stack.clear();
+ locator = null;
+ charLocation = null;
+ charBuf = null;
+ }
+
private void addEvent(Event ev) throws SAXException {
if (ev == null) {
throw new NullPointerException("null event");
@@ -2680,16 +2692,24 @@
* you effectively recompile the template for every instance document)
*/
- public static class TransformerAdapter extends AbstractTransformer {
+ public static class TransformerAdapter extends ServiceableTransformer {
static class TemplateConsumer extends Parser implements XMLConsumer {
- public TemplateConsumer(SourceResolver resolver, Map objectModel,
- String src, Parameters parameters)
- throws ProcessingException, SAXException, IOException {
+ public TemplateConsumer() {
this.gen = new JXTemplateGenerator();
+ }
+
+ public void setup(SourceResolver resolver, Map objectModel,
+ String src, Parameters parameters)
+ throws ProcessingException, SAXException, IOException {
this.gen.setup(resolver, objectModel, null, parameters);
}
+ public void service(ServiceManager manager)
+ throws ServiceException {
+ this.gen.service(manager);
+ }
+
public void endDocument() throws SAXException {
super.endDocument();
gen.performGeneration(gen.getConsumer(), gen.getJexlContext(),
@@ -2700,21 +2720,32 @@
gen.setConsumer(consumer);
}
+ void recycle() {
+ super.recycle();
+ gen.recycle();
+ }
+
JXTemplateGenerator gen;
}
- TemplateConsumer templateConsumer;
+ TemplateConsumer templateConsumer = new TemplateConsumer();
public void recycle() {
super.recycle();
- templateConsumer = null;
+ templateConsumer.recycle();
}
public void setup(SourceResolver resolver, Map objectModel,
String src, Parameters parameters)
throws ProcessingException, SAXException, IOException {
- templateConsumer = new TemplateConsumer(resolver, objectModel,
- src, parameters);
+ super.setup(resolver, objectModel, src, parameters);
+ templateConsumer.setup(resolver, objectModel, src, parameters);
+ }
+
+ public void service(ServiceManager manager)
+ throws ServiceException {
+ super.service(manager);
+ templateConsumer.service(manager);
}
public void setConsumer(XMLConsumer xmlConsumer) {