You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2011/03/03 19:42:23 UTC

svn commit: r1076721 - in /tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5: internal/services/assets/ services/assets/

Author: hlship
Date: Thu Mar  3 18:42:23 2011
New Revision: 1076721

URL: http://svn.apache.org/viewvc?rev=1076721&view=rev
Log:
TAP5-73: Convert the master ResourceMinimizer to use a configuration that maps content types to ResourceMinimizer implementations

Added:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java
      - copied, changed from r1076456, tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DefaultResourceMinimizer.java
Removed:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DefaultResourceMinimizer.java
Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetsModule.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceMinimizer.java

Copied: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java (from r1076456, tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DefaultResourceMinimizer.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java?p2=tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java&p1=tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DefaultResourceMinimizer.java&r1=1076456&r2=1076721&rev=1076721&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DefaultResourceMinimizer.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/MasterResourceMinimizer.java Thu Mar  3 18:42:23 2011
@@ -15,18 +15,32 @@
 package org.apache.tapestry5.internal.services.assets;
 
 import java.io.IOException;
+import java.util.Map;
 
+import org.apache.tapestry5.ioc.annotations.Marker;
+import org.apache.tapestry5.ioc.annotations.Primary;
 import org.apache.tapestry5.services.assets.ResourceMinimizer;
 import org.apache.tapestry5.services.assets.StreamableResource;
 
 /**
- * Default implementation that simply returns the resource unchanged.
+ * Implementation that delegates, via its configuration, to a real implementation based on the content type of the
+ * resource.
  */
-public class DefaultResourceMinimizer implements ResourceMinimizer
+@Marker(Primary.class)
+public class MasterResourceMinimizer implements ResourceMinimizer
 {
+    private final Map<String, ResourceMinimizer> configuration;
+
+    public MasterResourceMinimizer(Map<String, ResourceMinimizer> configuration)
+    {
+        this.configuration = configuration;
+    }
+
     /** Does nothing; an override of this service can be installed to provide minimization. */
     public StreamableResource minimize(StreamableResource resource) throws IOException
     {
-        return resource;
+        ResourceMinimizer minimizer = configuration.get(resource.getContentType());
+
+        return minimizer == null ? resource : minimizer.minimize(resource);
     }
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetsModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetsModule.java?rev=1076721&r1=1076720&r2=1076721&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetsModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetsModule.java Thu Mar  3 18:42:23 2011
@@ -17,7 +17,7 @@ package org.apache.tapestry5.services.as
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.internal.services.assets.CompressionAnalyzerImpl;
 import org.apache.tapestry5.internal.services.assets.ContentTypeAnalyzerImpl;
-import org.apache.tapestry5.internal.services.assets.DefaultResourceMinimizer;
+import org.apache.tapestry5.internal.services.assets.MasterResourceMinimizer;
 import org.apache.tapestry5.internal.services.assets.ResourceChangeTracker;
 import org.apache.tapestry5.internal.services.assets.ResourceChangeTrackerImpl;
 import org.apache.tapestry5.internal.services.assets.SRSCachingInterceptor;
@@ -48,7 +48,7 @@ public class AssetsModule
         binder.bind(CompressionAnalyzer.class, CompressionAnalyzerImpl.class);
         binder.bind(ContentTypeAnalyzer.class, ContentTypeAnalyzerImpl.class);
         binder.bind(ResourceChangeTracker.class, ResourceChangeTrackerImpl.class);
-        binder.bind(ResourceMinimizer.class, DefaultResourceMinimizer.class);
+        binder.bind(ResourceMinimizer.class, MasterResourceMinimizer.class);
     }
 
     @Contribute(SymbolProvider.class)

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceMinimizer.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceMinimizer.java?rev=1076721&r1=1076720&r2=1076721&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceMinimizer.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceMinimizer.java Thu Mar  3 18:42:23 2011
@@ -16,18 +16,24 @@ package org.apache.tapestry5.services.as
 
 import java.io.IOException;
 
+import org.apache.tapestry5.ioc.annotations.Primary;
+import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
+
 /**
  * Certain kinds of resources can be minimized: this primarily refers to JavaScript and CSS, both of which contain
  * whitespace, comments and other features that can be reduced.
+ * <p>
+ * The service configuration maps a MIME content type (e.g., "text/javascript") to an appropriate implementation of this
+ * interface. The master service has the @{@link Primary} marker interface.
  * 
  * @since 5.3.0
  */
+@UsesMappedConfiguration(ResourceMinimizer.class)
 public interface ResourceMinimizer
 {
     /**
      * Checks the {@linkplain StreamableResource#getContentType() content type} of the resource and applies an
-     * appropriate
-     * minimization to it if possible.
+     * appropriate minimization to it if possible.
      * 
      * @param resource
      *            to minimize