You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2009/07/10 10:34:24 UTC
svn commit: r792831 - in
/sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter:
Generator.java Serializer.java Transformer.java
impl/HtmlGeneratorFactory.java impl/HtmlSerializerFactory.java
impl/PipelineImpl.java
Author: cziegeler
Date: Fri Jul 10 08:34:23 2009
New Revision: 792831
URL: http://svn.apache.org/viewvc?rev=792831&view=rev
Log:
Pipeline components can be disposed after a pipeline run.
Modified:
sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Generator.java
sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Serializer.java
sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Transformer.java
sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/HtmlGeneratorFactory.java
sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/HtmlSerializerFactory.java
sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java
Modified: sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Generator.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Generator.java?rev=792831&r1=792830&r2=792831&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Generator.java (original)
+++ sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Generator.java Fri Jul 10 08:34:23 2009
@@ -55,4 +55,13 @@
* Notify the generator that parsing is finished.
*/
void finished() throws IOException, SAXException;
+
+ /**
+ * Dispose the generator.
+ * This method is always invoked by the rewriter in order to
+ * allow the generator to release any resources etc. After
+ * this method has been called the instance is considered
+ * unusable.
+ */
+ void dispose();
}
Modified: sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Serializer.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Serializer.java?rev=792831&r1=792830&r2=792831&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Serializer.java (original)
+++ sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Serializer.java Fri Jul 10 08:34:23 2009
@@ -32,4 +32,13 @@
*/
void init(ProcessingContext context, ProcessingComponentConfiguration config)
throws IOException;
+
+ /**
+ * Dispose the serializer.
+ * This method is always invoked by the rewriter in order to
+ * allow the serializer to release any resources etc. After
+ * this method has been called the instance is considered
+ * unusable.
+ */
+ void dispose();
}
Modified: sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Transformer.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Transformer.java?rev=792831&r1=792830&r2=792831&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Transformer.java (original)
+++ sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/Transformer.java Fri Jul 10 08:34:23 2009
@@ -38,4 +38,13 @@
* @param handler Another transformer or a serializer.
*/
void setContentHandler(ContentHandler handler);
+
+ /**
+ * Dispose the transformer.
+ * This method is always invoked by the rewriter in order to
+ * allow the transformer to release any resources etc. After
+ * this method has been called the instance is considered
+ * unusable.
+ */
+ void dispose();
}
Modified: sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/HtmlGeneratorFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/HtmlGeneratorFactory.java?rev=792831&r1=792830&r2=792831&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/HtmlGeneratorFactory.java (original)
+++ sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/HtmlGeneratorFactory.java Fri Jul 10 08:34:23 2009
@@ -673,5 +673,12 @@
ioe.initCause(se);
return ioe;
}
+
+ /**
+ * @see org.apache.sling.rewriter.Generator#dispose()
+ */
+ public void dispose() {
+ // nothing to do
+ }
}
}
Modified: sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/HtmlSerializerFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/HtmlSerializerFactory.java?rev=792831&r1=792830&r2=792831&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/HtmlSerializerFactory.java (original)
+++ sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/HtmlSerializerFactory.java Fri Jul 10 08:34:23 2009
@@ -210,5 +210,12 @@
throws SAXException {
// not used atm
}
+
+ /**
+ * @see org.apache.sling.rewriter.Serializer#dispose()
+ */
+ public void dispose() {
+ // nothing to do
+ }
}
}
Modified: sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java?rev=792831&r1=792830&r2=792831&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java (original)
+++ sling/trunk/contrib/extensions/rewriter/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java Fri Jul 10 08:34:23 2009
@@ -47,6 +47,12 @@
/** The starting point of the pipeline. */
private Generator generator;
+ /** The transformers. */
+ private Transformer[] transformers;
+
+ /** The end point. */
+ private Serializer serializer;
+
/** The first component in the pipeline after the generator */
private ContentHandler firstContentHandler;
@@ -76,12 +82,11 @@
final Transformer[][] rewriters = this.factoryCache.getRewriterTransformers();
final ProcessingComponentConfiguration generatorConfig = config.getGeneratorConfiguration();
- final Generator generator = this.getPipelineComponent(Generator.class, generatorConfig.getType());
+ this.generator = this.getPipelineComponent(Generator.class, generatorConfig.getType());
LOGGER.debug("Using generator type {}: {}.", generatorConfig.getType(), generator);
generator.init(processingContext, generatorConfig);
final int transformerCount = (transformerConfigs == null ? 0 : transformerConfigs.length) + rewriters[0].length + rewriters[1].length;
- final Transformer[] transformers;
if ( transformerCount > 0 ) {
// add all pre rewriter transformers
transformers = new Transformer[transformerCount];
@@ -111,7 +116,7 @@
}
final ProcessingComponentConfiguration serializerConfig = config.getSerializerConfiguration();
- final Serializer serializer = this.getPipelineComponent(Serializer.class, serializerConfig.getType());
+ this.serializer = this.getPipelineComponent(Serializer.class, serializerConfig.getType());
LOGGER.debug("Using serializer type {}: {}.", serializerConfig.getType(), serializer);
serializer.init(processingContext, serializerConfig);
@@ -137,8 +142,6 @@
final ComponentType component;
if ( typeClass == Generator.class ) {
component = (ComponentType)this.factoryCache.getGenerator(type);
- // we keep the generator
- this.generator = (Generator)component;
} else if ( typeClass == Transformer.class ) {
component = (ComponentType)this.factoryCache.getTransformer(type);
} else if ( typeClass == Serializer.class ) {
@@ -172,14 +175,30 @@
* @see org.apache.sling.rewriter.Processor#finished()
*/
public void finished() throws IOException {
+ IOException ioe = null;
try {
this.generator.finished();
} catch (SAXException se) {
if ( se.getCause() != null && se.getCause() instanceof IOException ) {
- throw (IOException)se.getCause();
+ ioe = (IOException)se.getCause();
+ } else {
+ ioe = new IOException("Pipeline exception: " + se.getMessage());
+ ioe.initCause(se);
}
- final IOException ioe = new IOException("Pipeline exception.");
- ioe.initCause(se);
+ }
+ // now dispose component
+ if ( this.generator != null ) {
+ this.generator.dispose();
+ }
+ if ( this.transformers != null ) {
+ for(final Transformer transformer : this.transformers ) {
+ transformer.dispose();
+ }
+ }
+ if ( this.serializer != null ) {
+ this.serializer.dispose();
+ }
+ if ( ioe != null ) {
throw ioe;
}
}