SLING-12238 : Prevent NullPointerException if global transformer returns null
diff --git a/src/main/java/org/apache/sling/rewriter/TransformerFactory.java b/src/main/java/org/apache/sling/rewriter/TransformerFactory.java index 761bbee..cf6f6e1 100644 --- a/src/main/java/org/apache/sling/rewriter/TransformerFactory.java +++ b/src/main/java/org/apache/sling/rewriter/TransformerFactory.java
@@ -45,7 +45,10 @@ /** * Create a new transformer for the pipeline. - * @return A new transformer. + * If the factory is not able to create a transformer, it should return {@code null}. + * If the transformer is not a global transformer and is not optional, returning {@code null} will + * fail the pipeline creation. + * @return A new transformer or {@code null} */ Transformer createTransformer(); }
diff --git a/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java b/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java index a4a3e88..7e72f8b 100644 --- a/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java +++ b/src/main/java/org/apache/sling/rewriter/impl/PipelineImpl.java
@@ -93,10 +93,12 @@ // add all pre rewriter transformers transformers = new Transformer[transformerCount]; for(int i=0; i< rewriters[0].length; i++) { - transformers[index] = rewriters[0][i]; - LOGGER.debug("Using pre transformer: {}.", transformers[index]); - transformers[index].init(processingContext, ProcessingComponentConfigurationImpl.EMPTY); - index++; + if ( rewriters[0][i] != null ) { + transformers[index] = rewriters[0][i]; + LOGGER.debug("Using pre transformer: {}.", transformers[index]); + transformers[index].init(processingContext, ProcessingComponentConfigurationImpl.EMPTY); + index++; + } } if ( transformerConfigs != null ) { for(int i=0; i< transformerConfigs.length;i++) { @@ -112,10 +114,12 @@ } } for(int i=0; i< rewriters[1].length; i++) { - transformers[index] = rewriters[1][i]; - LOGGER.debug("Using post transformer: {}.", transformers[index]); - transformers[index].init(processingContext, ProcessingComponentConfigurationImpl.EMPTY); - index++; + if ( rewriters[1][i] != null ) { + transformers[index] = rewriters[1][i]; + LOGGER.debug("Using post transformer: {}.", transformers[index]); + transformers[index].init(processingContext, ProcessingComponentConfigurationImpl.EMPTY); + index++; + } } } else { transformers = EMPTY_TRANSFORMERS;
diff --git a/src/main/java/org/apache/sling/rewriter/package-info.java b/src/main/java/org/apache/sling/rewriter/package-info.java index 02658bb..dbaaa86 100644 --- a/src/main/java/org/apache/sling/rewriter/package-info.java +++ b/src/main/java/org/apache/sling/rewriter/package-info.java
@@ -17,7 +17,7 @@ * under the License. */ -@Version("1.0.0") +@Version("1.0.1") package org.apache.sling.rewriter; import org.osgi.annotation.versioning.Version;