You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@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