You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2020/05/03 11:52:26 UTC

[maven-shade-plugin] branch MSHADE-363 updated: [MSHADE-363] add ReproducibleResourceTransformer to keep compatibility

This is an automated email from the ASF dual-hosted git repository.

hboutemy pushed a commit to branch MSHADE-363
in repository https://gitbox.apache.org/repos/asf/maven-shade-plugin.git


The following commit(s) were added to refs/heads/MSHADE-363 by this push:
     new 3d0af77  [MSHADE-363] add ReproducibleResourceTransformer to keep compatibility
3d0af77 is described below

commit 3d0af7704b227d6c9007550c246b9063f73b6a0c
Author: Hervé Boutemy <hb...@apache.org>
AuthorDate: Sun May 3 13:52:21 2020 +0200

    [MSHADE-363] add ReproducibleResourceTransformer to keep compatibility
---
 .../apache/maven/plugins/shade/DefaultShader.java  | 28 ++++++++++++--------
 ....java => AbstractCompatibilityTransformer.java} | 30 ++++++++--------------
 .../resource/ApacheLicenseResourceTransformer.java |  2 +-
 .../resource/ApacheNoticeResourceTransformer.java  |  2 +-
 .../shade/resource/AppendingTransformer.java       |  2 +-
 .../resource/ComponentsXmlResourceTransformer.java |  2 +-
 .../resource/DontIncludeResourceTransformer.java   |  2 +-
 .../shade/resource/GroovyResourceTransformer.java  |  2 +-
 .../shade/resource/IncludeResourceTransformer.java |  2 +-
 .../resource/ManifestResourceTransformer.java      |  2 +-
 .../resource/PluginXmlResourceTransformer.java     |  2 +-
 ...r.java => ReproducibleResourceTransformer.java} | 24 +++++------------
 .../ResourceBundleAppendingTransformer.java        |  2 +-
 .../shade/resource/ResourceTransformer.java        |  4 +--
 .../resource/ServicesResourceTransformer.java      |  2 +-
 .../shade/resource/XmlAppendingTransformer.java    |  2 +-
 .../resource/properties/PropertiesTransformer.java | 11 ++++++--
 .../shade/resource/rule/TransformerTesterRule.java | 23 +++++++++--------
 18 files changed, 70 insertions(+), 74 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java b/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
index f5897c3..4fac59d 100644
--- a/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
+++ b/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
@@ -49,6 +49,7 @@ import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugins.shade.filter.Filter;
 import org.apache.maven.plugins.shade.relocation.Relocator;
 import org.apache.maven.plugins.shade.resource.ManifestResourceTransformer;
+import org.apache.maven.plugins.shade.resource.ReproducibleResourceTransformer;
 import org.apache.maven.plugins.shade.resource.ResourceTransformer;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -76,7 +77,7 @@ public class DefaultShader
     {
         Set<String> resources = new HashSet<>();
 
-        ResourceTransformer manifestTransformer = null;
+        ManifestResourceTransformer manifestTransformer = null;
         List<ResourceTransformer> transformers =
             new ArrayList<>( shadeRequest.getResourceTransformers() );
         for ( Iterator<ResourceTransformer> it = transformers.iterator(); it.hasNext(); )
@@ -84,7 +85,7 @@ public class DefaultShader
             ResourceTransformer transformer = it.next();
             if ( transformer instanceof ManifestResourceTransformer )
             {
-                manifestTransformer = transformer;
+                manifestTransformer = (ManifestResourceTransformer) transformer;
                 it.remove();
             }
         }
@@ -261,11 +262,11 @@ public class DefaultShader
     }
 
     private void goThroughAllJarEntriesForManifestTransformer( ShadeRequest shadeRequest, Set<String> resources,
-                                                               ResourceTransformer resourceTransformer,
+                                                               ManifestResourceTransformer manifestTransformer,
                                                                JarOutputStream jos )
         throws IOException
     {
-        if ( resourceTransformer != null )
+        if ( manifestTransformer != null )
         {
             for ( File jar : shadeRequest.getJars() )
             {
@@ -275,22 +276,22 @@ public class DefaultShader
                     {
                         JarEntry entry = en.nextElement();
                         String resource = entry.getName();
-                        if ( resourceTransformer.canTransformResource( resource ) )
+                        if ( manifestTransformer.canTransformResource( resource ) )
                         {
                             resources.add( resource );
                             try ( InputStream inputStream = jarFile.getInputStream( entry ) )
                             {
-                                resourceTransformer.processResource( resource, inputStream,
-                                        shadeRequest.getRelocators(), entry.getTime() );
+                                manifestTransformer.processResource( resource, inputStream,
+                                                                     shadeRequest.getRelocators(), entry.getTime() );
                             }
                             break;
                         }
                     }
                 }
             }
-            if ( resourceTransformer.hasTransformedResource() )
+            if ( manifestTransformer.hasTransformedResource() )
             {
-                resourceTransformer.modifyOutputStream( jos );
+                manifestTransformer.modifyOutputStream( jos );
             }
         }
     }
@@ -526,7 +527,14 @@ public class DefaultShader
             {
                 getLogger().debug( "Transforming " + name + " using " + transformer.getClass().getName() );
 
-                transformer.processResource( name, is, relocators, time );
+                if ( transformer instanceof ReproducibleResourceTransformer )
+                {
+                    ( (ReproducibleResourceTransformer) transformer ).processResource( name, is, relocators, time );
+                }
+                else
+                {
+                    transformer.processResource( name, is, relocators );
+                }
 
                 resourceTransformed = true;
 
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/AbstractCompatibilityTransformer.java
similarity index 57%
copy from src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
copy to src/main/java/org/apache/maven/plugins/shade/resource/AbstractCompatibilityTransformer.java
index bb4400a..392ddb9 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/AbstractCompatibilityTransformer.java
@@ -24,26 +24,16 @@ import org.apache.maven.plugins.shade.relocation.Relocator;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
-import java.util.jar.JarOutputStream;
 
-/** @author Jason van Zyl */
-public interface ResourceTransformer
+/**
+ * An abstract class to implement once the old non-reproducible ResourceTransformer API.
+ */
+abstract class AbstractCompatibilityTransformer
+    implements ReproducibleResourceTransformer
 {
-    boolean canTransformResource( String resource );
-
-    /**
-     * Transform an individual resource
-     * @param resource The resource name
-     * @param is An input stream for the resource, the implementation should *not* close this stream
-     * @param relocators  A list of relocators
-     * @param time the time of the resource to process
-     * @throws IOException When the IO blows up
-     */
-    void processResource( String resource, InputStream is, List<Relocator> relocators, long time )
-        throws IOException;
-
-    boolean hasTransformedResource();
-
-    void modifyOutputStream( JarOutputStream os )
-        throws IOException;
+    public final void processResource( String resource, InputStream is, List<Relocator> relocators )
+        throws IOException
+    {
+        processResource( resource, is, relocators, 0 );
+    }
 }
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ApacheLicenseResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ApacheLicenseResourceTransformer.java
index 6fd7931..524ffdd 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ApacheLicenseResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ApacheLicenseResourceTransformer.java
@@ -30,7 +30,7 @@ import org.apache.maven.plugins.shade.relocation.Relocator;
  * Prevents duplicate copies of the license
  */
 public class ApacheLicenseResourceTransformer
-    implements ResourceTransformer
+    extends AbstractCompatibilityTransformer
 {
     private static final String LICENSE_PATH = "META-INF/LICENSE";
 
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformer.java
index 173d1d9..e75062b 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformer.java
@@ -43,7 +43,7 @@ import java.util.jar.JarOutputStream;
  * Merges <code>META-INF/NOTICE.TXT</code> files.
  */
 public class ApacheNoticeResourceTransformer
-    implements ResourceTransformer
+    extends AbstractCompatibilityTransformer
 {
     Set<String> entries = new LinkedHashSet<>();
 
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/AppendingTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/AppendingTransformer.java
index 61556eb..c3cc937 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/AppendingTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/AppendingTransformer.java
@@ -33,7 +33,7 @@ import java.util.jar.JarOutputStream;
  * A resource processor that appends content for a resource, separated by a newline.
  */
 public class AppendingTransformer
-    implements ResourceTransformer
+    extends AbstractCompatibilityTransformer
 {
     String resource;
 
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformer.java
index b82b0d7..9f83618 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformer.java
@@ -42,7 +42,7 @@ import java.util.jar.JarOutputStream;
  * A resource processor that aggregates plexus <code>components.xml</code> files.
  */
 public class ComponentsXmlResourceTransformer
-    implements ResourceTransformer
+    extends AbstractCompatibilityTransformer
 {
     private Map<String, Xpp3Dom> components = new LinkedHashMap<>();
 
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/DontIncludeResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/DontIncludeResourceTransformer.java
index bfd1f0e..e1b7bc2 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/DontIncludeResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/DontIncludeResourceTransformer.java
@@ -32,7 +32,7 @@ import java.util.jar.JarOutputStream;
  * resource into the shaded JAR.
  */
 public class DontIncludeResourceTransformer
-    implements ResourceTransformer
+    extends AbstractCompatibilityTransformer
 {
     String resource;
     
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java
index f54c0cb..1a8d61d 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java
@@ -36,7 +36,7 @@ import java.util.jar.JarOutputStream;
  * Aggregate Apache Groovy extension modules descriptors
  */
 public class GroovyResourceTransformer
-    implements ResourceTransformer
+    extends AbstractCompatibilityTransformer
 {
 
     static final String EXT_MODULE_NAME_LEGACY = "META-INF/services/org.codehaus.groovy.runtime.ExtensionModule";
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/IncludeResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/IncludeResourceTransformer.java
index ab360d1..dfe3326 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/IncludeResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/IncludeResourceTransformer.java
@@ -35,7 +35,7 @@ import java.util.jar.JarOutputStream;
  * content into the shaded JAR.
  */
 public class IncludeResourceTransformer
-    implements ResourceTransformer
+    extends AbstractCompatibilityTransformer
 {
     File file;
 
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.java
index 6bf711b..b66c73a 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.java
@@ -41,7 +41,7 @@ import org.apache.maven.plugins.shade.relocation.Relocator;
  * @since 1.2
  */
 public class ManifestResourceTransformer
-    implements ResourceTransformer
+    extends AbstractCompatibilityTransformer
 {
     private final List<String> defaultAttributes = Arrays.asList( "Export-Package",
                                                                   "Import-Package",
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/PluginXmlResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/PluginXmlResourceTransformer.java
index 9392b53..0cbb3fa 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/PluginXmlResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/PluginXmlResourceTransformer.java
@@ -44,7 +44,7 @@ import org.codehaus.plexus.util.xml.Xpp3DomWriter;
  * @since 3.0
  */
 public class PluginXmlResourceTransformer
-    implements ResourceTransformer
+    extends AbstractCompatibilityTransformer
 {
     private List<Xpp3Dom> mojos = new ArrayList<>();
 
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ReproducibleResourceTransformer.java
similarity index 64%
copy from src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
copy to src/main/java/org/apache/maven/plugins/shade/resource/ReproducibleResourceTransformer.java
index bb4400a..f6a87f2 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ReproducibleResourceTransformer.java
@@ -24,26 +24,14 @@ import org.apache.maven.plugins.shade.relocation.Relocator;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
-import java.util.jar.JarOutputStream;
 
-/** @author Jason van Zyl */
-public interface ResourceTransformer
+/**
+ * Copy of original interface necessary to MSHADE-363_old-plugin IT.
+ * @since 3.2.4
+ */
+public interface ReproducibleResourceTransformer
+    extends ResourceTransformer
 {
-    boolean canTransformResource( String resource );
-
-    /**
-     * Transform an individual resource
-     * @param resource The resource name
-     * @param is An input stream for the resource, the implementation should *not* close this stream
-     * @param relocators  A list of relocators
-     * @param time the time of the resource to process
-     * @throws IOException When the IO blows up
-     */
     void processResource( String resource, InputStream is, List<Relocator> relocators, long time )
         throws IOException;
-
-    boolean hasTransformedResource();
-
-    void modifyOutputStream( JarOutputStream os )
-        throws IOException;
 }
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceBundleAppendingTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ResourceBundleAppendingTransformer.java
index 77223ee..5ea56cf 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceBundleAppendingTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ResourceBundleAppendingTransformer.java
@@ -39,7 +39,7 @@ import org.codehaus.plexus.util.IOUtil;
  * @since 3.0.0
  */
 public class ResourceBundleAppendingTransformer
-    implements ResourceTransformer
+    extends AbstractCompatibilityTransformer
 {
     private Map<String, ByteArrayOutputStream>  dataMap = new HashMap<>();
     
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
index bb4400a..7b76666 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
@@ -36,10 +36,10 @@ public interface ResourceTransformer
      * @param resource The resource name
      * @param is An input stream for the resource, the implementation should *not* close this stream
      * @param relocators  A list of relocators
-     * @param time the time of the resource to process
      * @throws IOException When the IO blows up
+     * @deprecated prefer ReproducibleResourceTransformer
      */
-    void processResource( String resource, InputStream is, List<Relocator> relocators, long time )
+    void processResource( String resource, InputStream is, List<Relocator> relocators )
         throws IOException;
 
     boolean hasTransformedResource();
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java
index 929c5fa..b2f5dd6 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java
@@ -46,7 +46,7 @@ import org.apache.maven.plugins.shade.relocation.Relocator;
  * shading process.
  */
 public class ServicesResourceTransformer
-    implements ResourceTransformer
+    extends AbstractCompatibilityTransformer
 {
 
     private static final String SERVICES_PATH = "META-INF/services";
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/XmlAppendingTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/XmlAppendingTransformer.java
index 608c1a2..f5f6ac8 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/XmlAppendingTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/XmlAppendingTransformer.java
@@ -44,7 +44,7 @@ import org.xml.sax.SAXException;
  * Appends multiple occurrences of some XML file.
  */
 public class XmlAppendingTransformer
-    implements ResourceTransformer
+    extends AbstractCompatibilityTransformer
 {
     public static final String XSI_NS = "http://www.w3.org/2001/XMLSchema-instance";
 
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/properties/PropertiesTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/properties/PropertiesTransformer.java
index 8040923..9b92797 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/properties/PropertiesTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/properties/PropertiesTransformer.java
@@ -32,7 +32,7 @@ import java.util.jar.JarEntry;
 import java.util.jar.JarOutputStream;
 
 import org.apache.maven.plugins.shade.relocation.Relocator;
-import org.apache.maven.plugins.shade.resource.ResourceTransformer;
+import org.apache.maven.plugins.shade.resource.ReproducibleResourceTransformer;
 import org.apache.maven.plugins.shade.resource.properties.io.NoCloseOutputStream;
 import org.apache.maven.plugins.shade.resource.properties.io.SkipPropertiesDateLineWriter;
 
@@ -42,7 +42,7 @@ import org.apache.maven.plugins.shade.resource.properties.io.SkipPropertiesDateL
  * @since 3.2.2
  */
 public class PropertiesTransformer
-    implements ResourceTransformer
+    implements ReproducibleResourceTransformer
 {
     private String resource;
     private String alreadyMergedKey;
@@ -74,6 +74,13 @@ public class PropertiesTransformer
     }
 
     @Override
+    public final void processResource( String resource, InputStream is, List<Relocator> relocators )
+        throws IOException
+    {
+        processResource( resource, is, relocators, 0 );
+    }
+
+    @Override
     public void processResource( final String resource, final InputStream is, final List<Relocator> relocators,
                                  long time )
             throws IOException
diff --git a/src/test/java/org/apache/maven/plugins/shade/resource/rule/TransformerTesterRule.java b/src/test/java/org/apache/maven/plugins/shade/resource/rule/TransformerTesterRule.java
index 1eaf2b1..c159841 100644
--- a/src/test/java/org/apache/maven/plugins/shade/resource/rule/TransformerTesterRule.java
+++ b/src/test/java/org/apache/maven/plugins/shade/resource/rule/TransformerTesterRule.java
@@ -39,7 +39,7 @@ import java.util.jar.JarInputStream;
 import java.util.jar.JarOutputStream;
 
 import org.apache.maven.plugins.shade.relocation.Relocator;
-import org.apache.maven.plugins.shade.resource.ResourceTransformer;
+import org.apache.maven.plugins.shade.resource.ReproducibleResourceTransformer;
 import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
 import org.codehaus.plexus.component.configurator.converters.ConfigurationConverter;
 import org.codehaus.plexus.component.configurator.converters.lookup.ConverterLookup;
@@ -51,7 +51,8 @@ import org.junit.rules.TestRule;
 import org.junit.runner.Description;
 import org.junit.runners.model.Statement;
 
-public class TransformerTesterRule implements TestRule
+public class TransformerTesterRule
+    implements TestRule
 {
     @Override
     public Statement apply( final Statement base, final Description description )
@@ -71,9 +72,9 @@ public class TransformerTesterRule implements TestRule
                 final Map<String, String> jar;
                 try
                 {
-                    final ResourceTransformer transformer = createTransformer(spec);
-                    visit(spec, transformer);
-                    jar = captureOutput(transformer);
+                    final ReproducibleResourceTransformer transformer = createTransformer( spec );
+                    visit( spec, transformer );
+                    jar = captureOutput( transformer );
                 }
                 catch ( final Exception ex )
                 {
@@ -110,7 +111,8 @@ public class TransformerTesterRule implements TestRule
         }
     }
 
-    private Map<String, String> captureOutput(final ResourceTransformer transformer ) throws IOException
+    private Map<String, String> captureOutput( final ReproducibleResourceTransformer transformer )
+        throws IOException
     {
         final ByteArrayOutputStream out = new ByteArrayOutputStream();
         try ( final JarOutputStream jar = new JarOutputStream( out ) )
@@ -130,11 +132,12 @@ public class TransformerTesterRule implements TestRule
         return created;
     }
 
-    private void visit( final TransformerTest spec, final ResourceTransformer transformer ) throws IOException
+    private void visit( final TransformerTest spec, final ReproducibleResourceTransformer transformer )
+        throws IOException
     {
         for ( final Resource resource : spec.visited() )
         {
-            if ( transformer.canTransformResource( resource.path() ))
+            if ( transformer.canTransformResource( resource.path() ) )
             {
                 transformer.processResource(
                         resource.path(),
@@ -156,7 +159,7 @@ public class TransformerTesterRule implements TestRule
         return builder.toString();
     }
 
-    private ResourceTransformer createTransformer(final TransformerTest spec)
+    private ReproducibleResourceTransformer createTransformer(final TransformerTest spec)
     {
         final ConverterLookup lookup = new DefaultConverterLookup();
         try
@@ -167,7 +170,7 @@ public class TransformerTesterRule implements TestRule
             {
                 configuration.addChild( property.name(), property.value() );
             }
-            return ResourceTransformer.class.cast(
+            return ReproducibleResourceTransformer.class.cast(
                     converter.fromConfiguration( lookup, configuration,  spec.transformer(), spec.transformer(),
                         Thread.currentThread().getContextClassLoader(),
                         new DefaultExpressionEvaluator() ) );