WICKET-5827 Allow to apply multiple Javascript / CSS compressors Allow IJavaScriptCompressors to be IScopeAwareTextResourceProcessor too
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/1a4844f5 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/1a4844f5 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/1a4844f5 Branch: refs/heads/wicket-6.x Commit: 1a4844f5c8da09d0055909c436fa20a9fb292158 Parents: c92ad13 Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Authored: Mon Feb 16 15:56:14 2015 +0200 Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Committed: Mon Feb 16 15:56:14 2015 +0200 ---------------------------------------------------------------------- .../resource/JavaScriptPackageResource.java | 25 +++++++++++++------ .../wicket/resource/CompositeCssCompressor.java | 3 +-- .../resource/CompositeJavaScriptCompressor.java | 26 +++++++++++++++----- 3 files changed, 38 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/1a4844f5/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java index 210fee1..49f393a 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/JavaScriptPackageResource.java @@ -20,11 +20,12 @@ import java.util.Locale; import org.apache.wicket.Application; import org.apache.wicket.javascript.IJavaScriptCompressor; +import org.apache.wicket.resource.IScopeAwareTextResourceProcessor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Package resource for javascript files. It strips comments and whitespace from javascript. + * Package resource for javascript files. */ public class JavaScriptPackageResource extends PackageResource { @@ -32,20 +33,18 @@ public class JavaScriptPackageResource extends PackageResource private static final Logger log = LoggerFactory.getLogger(JavaScriptPackageResource.class); + private final String name; + /** * Construct. - * - * @param scope - * @param name - * @param locale - * @param style - * @param variation */ public JavaScriptPackageResource(Class<?> scope, String name, Locale locale, String style, String variation) { super(scope, name, locale, style, variation); + this.name = name; + // JS resources can be compressed if there is configured IJavaScriptCompressor setCompress(true); } @@ -62,7 +61,17 @@ public class JavaScriptPackageResource extends PackageResource try { String nonCompressed = new String(processedResponse, "UTF-8"); - return compressor.compress(nonCompressed).getBytes("UTF-8"); + String output; + if (compressor instanceof IScopeAwareTextResourceProcessor) + { + IScopeAwareTextResourceProcessor scopeAwareProcessor = (IScopeAwareTextResourceProcessor)compressor; + output = scopeAwareProcessor.process(nonCompressed, getScope(), name); + } + else + { + output = compressor.compress(nonCompressed); + } + return output.getBytes(); } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/wicket/blob/1a4844f5/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java index 6e7b1c3..7d0dc8b 100644 --- a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java +++ b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeCssCompressor.java @@ -40,7 +40,6 @@ import org.apache.wicket.css.ICssCompressor; * * @since 6.20.0 * @author Tobias Soloschenko - * */ public class CompositeCssCompressor implements IScopeAwareTextResourceProcessor, ICssCompressor { @@ -98,4 +97,4 @@ public class CompositeCssCompressor implements IScopeAwareTextResourceProcessor, compressors.add(compressor); return this; } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/wicket/blob/1a4844f5/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java index c1f0c15..fb94a75 100644 --- a/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java +++ b/wicket-core/src/main/java/org/apache/wicket/resource/CompositeJavaScriptCompressor.java @@ -40,9 +40,8 @@ import org.apache.wicket.javascript.IJavaScriptCompressor; * * @since 6.20.0 * @author Tobias Soloschenko - * */ -public class CompositeJavaScriptCompressor implements IJavaScriptCompressor +public class CompositeJavaScriptCompressor implements IScopeAwareTextResourceProcessor, IJavaScriptCompressor { /* Compressors to compress javascript content */ private final List<IJavaScriptCompressor> compressors = new ArrayList<IJavaScriptCompressor>(); @@ -65,16 +64,31 @@ public class CompositeJavaScriptCompressor implements IJavaScriptCompressor * given the original content is going to be returned. */ @Override - public String compress(String original) + public String process(String input, Class<?> scope, String name) { - String compressed = original; + String compressed = input; for (IJavaScriptCompressor compressor : compressors) { - compressed = compressor.compress(compressed); + if (compressor instanceof IScopeAwareTextResourceProcessor) + { + IScopeAwareTextResourceProcessor processor = (IScopeAwareTextResourceProcessor)compressor; + compressed = processor.process(compressed, scope, name); + } + else + { + compressed = compressor.compress(compressed); + } } return compressed; } + @Override + public String compress(String original) + { + throw new UnsupportedOperationException(CompositeCssCompressor.class.getSimpleName() + + ".process() should be used instead!"); + } + /** * Adds a IJavaScriptCompressor to the list of delegates. * @@ -85,4 +99,4 @@ public class CompositeJavaScriptCompressor implements IJavaScriptCompressor compressors.add(compressor); return this; } -} \ No newline at end of file +}