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
+}

Reply via email to