Author: hlship
Date: Mon Jan 12 12:40:08 2009
New Revision: 733894

URL: http://svn.apache.org/viewvc?rev=733894&view=rev
Log:
TAP5-445: Add ability to turn off GZIP compression easily, for both static 
assets and dynamic page renders

Modified:
    tapestry/tapestry5/trunk/src/site/apt/guide/conf.apt
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
    
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/services/AppModule.java

Modified: tapestry/tapestry5/trunk/src/site/apt/guide/conf.apt
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/src/site/apt/guide/conf.apt?rev=733894&r1=733893&r2=733894&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/src/site/apt/guide/conf.apt (original)
+++ tapestry/tapestry5/trunk/src/site/apt/guide/conf.apt Mon Jan 12 12:40:08 
2009
@@ -159,6 +159,9 @@
      When true, all URIs will be absolute URIs (including the
      context path, and the complete path for the request).
 
+  [tapestry.gzip-compression-enabled]
+    Override to "false" to disable GZIP compression of dynamic Tapestry pages 
and static assets.
+     
   [tapestry.min-gzip-size]
     The minimum stream size necessary for Tapestry to use GZIP compression on 
the response stream.
 

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java?rev=733894&r1=733893&r2=733894&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
 Mon Jan 12 12:40:08 2009
@@ -112,6 +112,7 @@
      * Minimum output stream size, in bytes, before output is compressed using 
GZIP. Shorter streams are not compressed.
      * Tapestry buffers this amount and switches to a GZIP output stream as 
needed.
      *
+     * @see #GZIP_COMPRESSION_ENABLED
      * @since 5.1.0.0
      */
     public static final String MIN_GZIP_SIZE = "tapestry.min-gzip-size";
@@ -132,4 +133,14 @@
      * @since 5.1.0.0
      */
     public static final String OMIT_GENERATOR_META = 
"tapestry.omit-generator-meta";
+
+    /**
+     * If "true" (the default) then GZip compression is enabled for dynamic 
requests and for static assets. If you are
+     * using a server that handles GZip compression for you, or you don't want 
to ue the extra processing power necessary
+     * to GZIP requests, then override this to "false".
+     *
+     * @see #MIN_GZIP_SIZE
+     * @since 5.1.0.0
+     */
+    public static final String GZIP_COMPRESSION_ENABLED = 
"tapestry.gzip-compression-enabled";
 }

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java?rev=733894&r1=733893&r2=733894&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
 Mon Jan 12 12:40:08 2009
@@ -215,10 +215,8 @@
         };
     }
 
-    public ResourceCache buildResourceCache(ResourceDigestGenerator 
digestGenerator)
+    public ResourceCache buildResourceCache(@Autobuild ResourceCacheImpl 
service)
     {
-        ResourceCacheImpl service = new ResourceCacheImpl(digestGenerator);
-
         updateListenerHub.addUpdateListener(service);
 
         return service;

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java?rev=733894&r1=733893&r2=733894&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java
 Mon Jan 12 12:40:08 2009
@@ -49,6 +49,8 @@
 
     private final int compressionCutoff;
 
+    private final boolean compressionEnabled;
+
     public ResourceStreamerImpl(Request request,
 
                                 Response response,
@@ -62,7 +64,10 @@
                                 ResponseCompressionAnalyzer analyzer,
 
                                 @Symbol(SymbolConstants.MIN_GZIP_SIZE)
-                                int compressionCutoff)
+                                int compressionCutoff,
+
+                                
@Symbol(SymbolConstants.GZIP_COMPRESSION_ENABLED)
+                                boolean compressionEnabled)
 
     {
         this.request = request;
@@ -72,6 +77,7 @@
         this.configuration = configuration;
         this.analyzer = analyzer;
         this.compressionCutoff = compressionCutoff;
+        this.compressionEnabled = compressionEnabled;
     }
 
     public void streamResource(Resource resource) throws IOException
@@ -89,7 +95,8 @@
 
         String contentType = identifyContentType(resource, streamble);
 
-        boolean compress = analyzer.isGZipSupported() &&
+        boolean compress = compressionEnabled &&
+                analyzer.isGZipSupported() &&
                 streamble.getSize(false) >= compressionCutoff &&
                 analyzer.isCompressable(contentType);
 

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=733894&r1=733893&r2=733894&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
 Mon Jan 12 12:40:08 2009
@@ -64,7 +64,7 @@
 /**
  * The root module for Tapestry.
  */
-...@suppresswarnings({"JavaDoc"})
+...@suppresswarnings({ "JavaDoc" })
 @Marker(Core.class)
 @SubModule(InternalModule.class)
 public final class TapestryModule
@@ -99,8 +99,8 @@
     /**
      * We inject all sorts of common dependencies (including builders) into 
the module itself (note: even though some of
      * these service are defined by the module itself, that's ok because 
services are always lazy proxies).  This isn't
-     * about efficiency (it may be slightly more efficient, but not in any 
noticable way), it's about eliminating the
-     * need to keep injecting these dependencies into invividual service 
builder and contribution methods.
+     * about efficiency (it may be slightly more efficient, but not in any 
noticable way), it's about eliminating the need
+     * to keep injecting these dependencies into invividual service builder 
and contribution methods.
      */
     public TapestryModule(PipelineBuilder pipelineBuilder,
 
@@ -297,9 +297,9 @@
      * their values between requests</dd> <dt>Persist </dt> <dd>Allows fields 
to store their their value persistently
      * between requests</dd> <dt>Parameter </dt> <dd>Identifies parameters 
based on the {...@link
      * org.apache.tapestry5.annotations.Parameter} annotation</dd> 
<dt>Component </dt> <dd>Defines embedded components
-     * based on the {...@link org.apache.tapestry5.annotations.Component} 
annotation</dd> <dt>Mixin </dt> <dd>Adds a mixin
-     * as part of a component's implementation</dd> <dt>Environment </dt> 
<dd>Allows fields to contain values extracted
-     * from the {...@link org.apache.tapestry5.services.Environment} 
service</dd> <dt>Inject </dt> <dd>Used with the {...@link
+     * based on the {...@link org.apache.tapestry5.annotations.Component} 
annotation</dd> <dt>Mixin </dt> <dd>Adds a mixin as
+     * part of a component's implementation</dd> <dt>Environment </dt> 
<dd>Allows fields to contain values extracted from
+     * the {...@link org.apache.tapestry5.services.Environment} service</dd> 
<dt>Inject </dt> <dd>Used with the {...@link
      * org.apache.tapestry5.ioc.annotations.Inject} annotation, when a value 
is supplied</dd> <dt>InjectService</dt>
      * <dd>Handles the {...@link 
org.apache.tapestry5.ioc.annotations.InjectService} annotation</dd> 
<dt>InjectPage</dt>
      * <dd>Adds code to allow access to other pages via the {...@link 
org.apache.tapestry5.annotations.InjectPage} field
@@ -307,18 +307,17 @@
      * <dt>IncludeStylesheet </dt> <dd>Supports the {...@link 
org.apache.tapestry5.annotations.IncludeStylesheet}
      * annotation</dd> <dt>IncludeJavaScriptLibrary </dt> <dd>Supports the 
{...@link org.apache.tapestry5.annotations.IncludeJavaScriptLibrary}
      * annotation</dd> <dt>SupportsInformalParameters </dt> <dd>Checks for the 
annotation</dd> <dt>Meta </dt> <dd>Checks
-     * for meta data and adds it to the component model</dd> 
<dt>ApplicationState </dt> <dd>Converts fields that
-     * reference application state objects <dt>UnclaimedField </dt> 
<dd>Identifies unclaimed fields and resets them to
-     * null/0/false at the end of the request</dd> <dt>RenderCommand </dt> 
<dd>Ensures all components also implement
-     * {...@link org.apache.tapestry5.runtime.RenderCommand}</dd> 
<dt>SetupRender, BeginRender, etc. </dt> <dd>Correspond
-     * to component render phases and annotations</dd> 
<dt>InvokePostRenderCleanupOnResources </dt> <dd>Makes sure
-     * {...@link 
org.apache.tapestry5.internal.InternalComponentResources#postRenderCleanup()} 
is invoked after a component
-     * finishes rendering</dd> <dt>Secure</dt> <dd>Checks for the {...@link 
org.apache.tapestry5.annotations.Secure}
-     * annotation</dd> <dt>ContentType</dt> <dd>Checks for {...@link 
org.apache.tapestry5.annotations.ContentType}
-     * annotation</dd>  <dt>GenerateAccessors</dt> <dd>Generates accessor 
methods if {...@link
-     * org.apache.tapestry5.annotations.Property} annotation is present </dd> 
<dt>Cached</dt> <dd>Checks for the {...@link
-     * org.apache.tapestry5.annotations.Cached} annotation</dd><dt>Log</dt> 
<dd>Checks for the {...@link
-     * org.apache.tapestry5.annotations.Log} annotation</dd></dl>
+     * for meta data and adds it to the component model</dd> 
<dt>ApplicationState </dt> <dd>Converts fields that reference
+     * application state objects <dt>UnclaimedField </dt> <dd>Identifies 
unclaimed fields and resets them to null/0/false
+     * at the end of the request</dd> <dt>RenderCommand </dt> <dd>Ensures all 
components also implement {...@link
+     * org.apache.tapestry5.runtime.RenderCommand}</dd> <dt>SetupRender, 
BeginRender, etc. </dt> <dd>Correspond to
+     * component render phases and annotations</dd> 
<dt>InvokePostRenderCleanupOnResources </dt> <dd>Makes sure {...@link
+     * 
org.apache.tapestry5.internal.InternalComponentResources#postRenderCleanup()} 
is invoked after a component finishes
+     * rendering</dd> <dt>Secure</dt> <dd>Checks for the {...@link 
org.apache.tapestry5.annotations.Secure} annotation</dd>
+     * <dt>ContentType</dt> <dd>Checks for {...@link 
org.apache.tapestry5.annotations.ContentType} annotation</dd>
+     * <dt>GenerateAccessors</dt> <dd>Generates accessor methods if {...@link 
org.apache.tapestry5.annotations.Property}
+     * annotation is present </dd> <dt>Cached</dt> <dd>Checks for the 
{...@link org.apache.tapestry5.annotations.Cached}
+     * annotation</dd><dt>Log</dt> <dd>Checks for the {...@link 
org.apache.tapestry5.annotations.Log} annotation</dd></dl>
      */
     public static void contributeComponentClassTransformWorker(
             OrderedConfiguration<ComponentClassTransformWorker> configuration,
@@ -408,8 +407,8 @@
 
     /**
      * <dl> <dt>Annotation</dt> <dd>Checks for {...@link 
org.apache.tapestry5.beaneditor.DataType} annotation</dd>
-     * <dt>Default  (ordered last)</dt> <dd>{...@link 
org.apache.tapestry5.internal.services.DefaultDataTypeAnalyzer}
-     * service ({...@link 
#contributeDefaultDataTypeAnalyzer(org.apache.tapestry5.ioc.MappedConfiguration)}
 })</dd> </dl>
+     * <dt>Default  (ordered last)</dt> <dd>{...@link 
org.apache.tapestry5.internal.services.DefaultDataTypeAnalyzer} service
+     * ({...@link 
#contributeDefaultDataTypeAnalyzer(org.apache.tapestry5.ioc.MappedConfiguration)}
 })</dd> </dl>
      */
     public static void 
contributeDataTypeAnalyzer(OrderedConfiguration<DataTypeAnalyzer> configuration,
                                                   
@InjectService("DefaultDataTypeAnalyzer")
@@ -481,8 +480,8 @@
     }
 
     /**
-     * Contributes the basic set of validators: <ul> <li>required</li> 
<li>minlength</li> <li>maxlength</li>
-     * <li>min</li> <li>max</li> <li>regexp</li> </ul>
+     * Contributes the basic set of validators: <ul> <li>required</li> 
<li>minlength</li> <li>maxlength</li> <li>min</li>
+     * <li>max</li> <li>regexp</li> </ul>
      */
     public static void 
contributeFieldValidatorSource(MappedConfiguration<String, Validator> 
configuration)
     {
@@ -499,9 +498,9 @@
      * Contributes the base set of injection providers: <dl> <dt>Default</dt> 
<dd>based on {...@link
      * MasterObjectProvider}</dd> <dt>Block</dt> <dd>injects fields of type 
Block</dd> <dt>ComponentResources</dt>
      * <dd>give component access to its resources</dd> 
<dt>CommonResources</dt> <dd>access to properties of resources
-     * (log, messages, etc.)</dd> <dt>Asset</dt> <dd>injection of assets 
(triggered via {...@link Path} annotation), with
-     * the path relative to the component class</dd> <dt>Service</dt> 
<dd>ordered last, for use when Inject is present
-     * and nothing else works, matches field type against Tapestry IoC 
services</dd> </dl>
+     * (log, messages, etc.)</dd> <dt>Asset</dt> <dd>injection of assets 
(triggered via {...@link Path} annotation), with the
+     * path relative to the component class</dd> <dt>Service</dt> <dd>ordered 
last, for use when Inject is present and
+     * nothing else works, matches field type against Tapestry IoC 
services</dd> </dl>
      */
     public static void 
contributeInjectionProvider(OrderedConfiguration<InjectionProvider> 
configuration,
 
@@ -534,8 +533,8 @@
     /**
      * Contributes two object providers: <dl> <dt>Alias</dt> <dd> Searches by 
type among {...@linkplain AliasContribution
      * contributions} to the {...@link Alias} service</dd> <dt>Asset<dt> <dd> 
Checks for the {...@link Path} annotation, and
-     * injects an {...@link Asset}</dd> <dt>Service</dt> <dd>Injects based on 
the {...@link Service} annotation, if
-     * present</dd> </dl>
+     * injects an {...@link Asset}</dd> <dt>Service</dt> <dd>Injects based on 
the {...@link Service} annotation, if present</dd>
+     * </dl>
      */
     public static void 
contributeMasterObjectProvider(OrderedConfiguration<ObjectProvider> 
configuration,
 
@@ -576,12 +575,19 @@
      */
     public void 
contributeHttpServletRequestHandler(OrderedConfiguration<HttpServletRequestFilter>
 configuration,
 
+                                                    
@Symbol(SymbolConstants.GZIP_COMPRESSION_ENABLED)
+                                                    boolean 
gzipCompressionEnabled,
+
+                                                    @Autobuild GZipFilter 
gzipFilter,
+
                                                     
@InjectService("IgnoredPathsFilter")
                                                     HttpServletRequestFilter 
ignoredPathsFilter)
     {
         configuration.add("IgnoredPaths", ignoredPathsFilter);
 
-        configuration.addInstance("GZIP", GZipFilter.class, 
"after:IgnoredPaths");
+        configuration.add("GZIP",
+                          gzipCompressionEnabled ? gzipFilter : null,
+                          "after:IgnoredPaths");
 
         HttpServletRequestFilter storeIntoGlobals = new 
HttpServletRequestFilter()
         {
@@ -601,10 +607,10 @@
     /**
      * Continues a number of filters into the RequestHandler service: <dl> 
<dt>StaticFiles</dt> <dd>Checks to see if the
      * request is for an actual file, if so, returns true to let the servlet 
container process the request</dd>
-     * <dt>CheckForUpdates</dt> <dd>Periodically fires events that checks to 
see if the file system sources for any
-     * cached data has changed (see {...@link 
org.apache.tapestry5.internal.services.CheckForUpdatesFilter}).
-     * <dt>ErrorFilter</dt> <dd>Catches request errors and lets the {...@link 
org.apache.tapestry5.services.RequestExceptionHandler}
-     * handle them</dd>  <dt>StoreIntoGlobals</dt> <dd>Stores the request and 
response into the {...@link
+     * <dt>CheckForUpdates</dt> <dd>Periodically fires events that checks to 
see if the file system sources for any cached
+     * data has changed (see {...@link 
org.apache.tapestry5.internal.services.CheckForUpdatesFilter}). 
<dt>ErrorFilter</dt>
+     * <dd>Catches request errors and lets the {...@link 
org.apache.tapestry5.services.RequestExceptionHandler} handle
+     * them</dd>  <dt>StoreIntoGlobals</dt> <dd>Stores the request and 
response into the {...@link
      * org.apache.tapestry5.services.RequestGlobals} service (this is repeated 
at the end of the pipeline, in case any
      * filter substitutes the request or response).  </dl>
      */
@@ -661,8 +667,8 @@
     }
 
     /**
-     * Contributes the basic set of named translators: <ul>  <li>string</li>  
<li>byte</li> <li>integer</li>
-     * <li>long</li> <li>float</li> <li>double</li> <li>short</li> </ul>
+     * Contributes the basic set of named translators: <ul>  <li>string</li>  
<li>byte</li> <li>integer</li> <li>long</li>
+     * <li>float</li> <li>double</li> <li>short</li> </ul>
      */
     public static void contributeTranslatorSource(Configuration<Translator> 
configuration)
     {
@@ -679,14 +685,13 @@
     /**
      * Adds coercions: <ul> <li>String to {...@link 
org.apache.tapestry5.SelectModel} <li>String to {...@link
      * org.apache.tapestry5.corelib.data.InsertPosition} <li>Map to {...@link 
org.apache.tapestry5.SelectModel}
-     * <li>Collection to {...@link GridDataSource} <li>null to {...@link 
org.apache.tapestry5.grid.GridDataSource} <li>String
-     * to {...@link org.apache.tapestry5.corelib.data.GridPagerPosition} 
<li>List to {...@link
-     * org.apache.tapestry5.SelectModel} <li>{...@link 
org.apache.tapestry5.runtime.ComponentResourcesAware} (typically, a
-     * component) to {...@link org.apache.tapestry5.ComponentResources} 
<li>String to {...@link
-     * org.apache.tapestry5.corelib.data.BlankOption} <li> {...@link 
org.apache.tapestry5.ComponentResources} to {...@link
-     * org.apache.tapestry5.PropertyOverrides} <li>String to {...@link 
org.apache.tapestry5.Renderable} <li>{...@link
-     * org.apache.tapestry5.Renderable} to {...@link 
org.apache.tapestry5.Block} <li>String to {...@link
-     * java.text.DateFormat}</ul>
+     * <li>Collection to {...@link GridDataSource} <li>null to {...@link 
org.apache.tapestry5.grid.GridDataSource} <li>String to
+     * {...@link org.apache.tapestry5.corelib.data.GridPagerPosition} <li>List 
to {...@link org.apache.tapestry5.SelectModel}
+     * <li>{...@link org.apache.tapestry5.runtime.ComponentResourcesAware} 
(typically, a component) to {...@link
+     * org.apache.tapestry5.ComponentResources} <li>String to {...@link 
org.apache.tapestry5.corelib.data.BlankOption} <li>
+     * {...@link org.apache.tapestry5.ComponentResources} to {...@link 
org.apache.tapestry5.PropertyOverrides} <li>String to
+     * {...@link org.apache.tapestry5.Renderable} <li>{...@link 
org.apache.tapestry5.Renderable} to {...@link
+     * org.apache.tapestry5.Block} <li>String to {...@link 
java.text.DateFormat}</ul>
      */
     public static void contributeTypeCoercer(Configuration<CoercionTuple> 
configuration)
     {
@@ -931,8 +936,7 @@
     }
 
     /**
-     * Builds a proxy to the current {...@link 
org.apache.tapestry5.RenderSupport} inside this thread's {...@link
-     * Environment}.
+     * Builds a proxy to the current {...@link 
org.apache.tapestry5.RenderSupport} inside this thread's {...@link Environment}.
      */
     public RenderSupport buildRenderSupport()
     {
@@ -970,8 +974,8 @@
 
     /**
      * A chain of command for providing values for {...@link Inject}-ed fields 
in component classes. The service's
-     * configuration can be extended to allow for different automatic 
injections (based on some combination of field
-     * type and field name).
+     * configuration can be extended to allow for different automatic 
injections (based on some combination of field type
+     * and field name).
      */
 
     public InjectionProvider buildInjectionProvider(List<InjectionProvider> 
configuration)
@@ -1087,7 +1091,7 @@
     /**
      * The component event result processor used for normal component requests.
      */
-    @Marker({Primary.class, Traditional.class})
+    @Marker({ Primary.class, Traditional.class })
     public ComponentEventResultProcessor buildComponentEventResultProcessor(
             Map<Class, ComponentEventResultProcessor> configuration)
     {
@@ -1330,14 +1334,14 @@
     }
 
     /**
-     * Contributes handlers for the following types: <dl> <dt>Object</dt> 
<dd>Failure case, added to provide a more
-     * useful exception message</dd> <dt>{...@link Link}</dt> <dd>Sends a 
redirect to the link (which is typically a page
-     * render link)</dd> <dt>String</dt> <dd>Sends a page render redirect</dd> 
<dt>Class</dt> <dd>Interpreted as the
-     * class name of a page, sends a page render render redirect (this is more 
refactoring safe than the page name)</dd>
-     * <dt>{...@link Component}</dt> <dd>A page's root component (though a 
non-root component will work, but will generate
-     * a warning). A direct to the containing page is sent.</dd> <dt>{...@link 
org.apache.tapestry5.StreamResponse}</dt>
-     * <dd>The stream response is sent as the actual reply.</dd> <dt>URL</dt> 
<dd>Sends a redirect to a (presumably)
-     * external URL</dd> </dl>
+     * Contributes handlers for the following types: <dl> <dt>Object</dt> 
<dd>Failure case, added to provide a more useful
+     * exception message</dd> <dt>{...@link Link}</dt> <dd>Sends a redirect to 
the link (which is typically a page render
+     * link)</dd> <dt>String</dt> <dd>Sends a page render redirect</dd> 
<dt>Class</dt> <dd>Interpreted as the class name
+     * of a page, sends a page render render redirect (this is more 
refactoring safe than the page name)</dd> <dt>{...@link
+     * Component}</dt> <dd>A page's root component (though a non-root 
component will work, but will generate a warning). A
+     * direct to the containing page is sent.</dd> <dt>{...@link 
org.apache.tapestry5.StreamResponse}</dt> <dd>The stream
+     * response is sent as the actual reply.</dd> <dt>URL</dt> <dd>Sends a 
redirect to a (presumably) external URL</dd>
+     * </dl>
      */
     public void contributeComponentEventResultProcessor(
             @Traditional @ComponentInstanceProcessor
@@ -1376,12 +1380,12 @@
      * exception message</dd> <dt>{...@link RenderCommand}</dt> <dd>Typically, 
a {...@link org.apache.tapestry5.Block}</dd>
      * <dt>{...@link org.apache.tapestry5.annotations.Component}</dt> 
<dd>Renders the component and its body (unless its a
      * page, in which case a redirect JSON response is sent)</dd> 
<dt>{...@link org.apache.tapestry5.json.JSONObject} or
-     * {...@link org.apache.tapestry5.json.JSONArray}</dt> <dd>The JSONObject 
is returned as a text/javascript
-     * response</dd> <dt>{...@link org.apache.tapestry5.StreamResponse}</dt> 
<dd>The stream response is sent as the actual
-     * response</dd> <dt>String</dt> <dd>Interprets the value as a logical 
page name and sends a client response to
-     * redirect to that page</dd> <dt>{...@link 
org.apache.tapestry5.Link}</dt> <dd>Sends a JSON response to redirect to
-     * the link</dd> <dt>{...@link Class}</dt> <dd>Treats the class as a page 
class and sends a redirect for a page render
-     * for that page</dd> </dl>
+     * {...@link org.apache.tapestry5.json.JSONArray}</dt> <dd>The JSONObject 
is returned as a text/javascript response</dd>
+     * <dt>{...@link org.apache.tapestry5.StreamResponse}</dt> <dd>The stream 
response is sent as the actual response</dd>
+     * <dt>String</dt> <dd>Interprets the value as a logical page name and 
sends a client response to redirect to that
+     * page</dd> <dt>{...@link org.apache.tapestry5.Link}</dt> <dd>Sends a 
JSON response to redirect to the link</dd>
+     * <dt>{...@link Class}</dt> <dd>Treats the class as a page class and 
sends a redirect for a page render for that
+     * page</dd> </dl>
      */
 
     public static void contributeAjaxComponentEventResultProcessor(
@@ -1399,11 +1403,11 @@
 
     /**
      * The MasterDispatcher is a chain-of-command of individual Dispatchers, 
each handling (like a servlet) a particular
-     * kind of incoming request. <dl> <dt>RootPath</dt> <dd>Renders the start 
page for the "/" request</dd>
-     * <dt>Asset</dt> <dd>Provides access to classpath assets</dd> 
<dt>PageRender</dt> <dd>Identifies the {...@link
-     * org.apache.tapestry5.services.PageRenderRequestParameters} and forwards 
onto {...@link
-     * PageRenderRequestHandler}</dd> <dt>ComponentEvent</dt> <dd>Identifies 
the {...@link ComponentEventRequestParameters}
-     * and forwards onto the {...@link ComponentEventRequestHandler}</dd> </dl>
+     * kind of incoming request. <dl> <dt>RootPath</dt> <dd>Renders the start 
page for the "/" request</dd> <dt>Asset</dt>
+     * <dd>Provides access to classpath assets</dd> <dt>PageRender</dt> 
<dd>Identifies the {...@link
+     * org.apache.tapestry5.services.PageRenderRequestParameters} and forwards 
onto {...@link PageRenderRequestHandler}</dd>
+     * <dt>ComponentEvent</dt> <dd>Identifies the {...@link 
ComponentEventRequestParameters} and forwards onto the {...@link
+     * ComponentEventRequestHandler}</dd> </dl>
      */
     public static void 
contributeMasterDispatcher(OrderedConfiguration<Dispatcher> configuration)
     {
@@ -1467,14 +1471,14 @@
 
 
     /**
-     * Adds page render filters, each of which provides an {...@link 
org.apache.tapestry5.annotations.Environmental}
-     * service. Filters often provide {...@link 
org.apache.tapestry5.annotations.Environmental} services needed by
-     * components as they render. <dl> <dt>DocumentLinker</dt> <dd>Provides 
{...@link org.apache.tapestry5.internal.services.DocumentLinker}
-     * <dt>RenderSupport</dt>  <dd>Provides {...@link 
org.apache.tapestry5.RenderSupport}</dd>
-     * <dt>ClientBehaviorSupport</dt> <dd>Provides {...@link 
org.apache.tapestry5.internal.services.ClientBehaviorSupport}</dd>
-     * <dt>Heartbeat</dt> <dd>Provides {...@link 
org.apache.tapestry5.services.Heartbeat}</dd>
-     * <dt>DefaultValidationDecorator</dt> <dd>Provides {...@link 
org.apache.tapestry5.ValidationDecorator} (as an instance
-     * of {...@link 
org.apache.tapestry5.internal.DefaultValidationDecorator})</dd> </dl>
+     * Adds page render filters, each of which provides an {...@link 
org.apache.tapestry5.annotations.Environmental} service.
+     * Filters often provide {...@link 
org.apache.tapestry5.annotations.Environmental} services needed by components 
as they
+     * render. <dl> <dt>DocumentLinker</dt> <dd>Provides {...@link 
org.apache.tapestry5.internal.services.DocumentLinker}
+     * <dt>RenderSupport</dt>  <dd>Provides {...@link 
org.apache.tapestry5.RenderSupport}</dd> <dt>ClientBehaviorSupport</dt>
+     * <dd>Provides {...@link 
org.apache.tapestry5.internal.services.ClientBehaviorSupport}</dd> 
<dt>Heartbeat</dt>
+     * <dd>Provides {...@link org.apache.tapestry5.services.Heartbeat}</dd> 
<dt>DefaultValidationDecorator</dt> <dd>Provides
+     * {...@link org.apache.tapestry5.ValidationDecorator} (as an instance of 
{...@link org.apache.tapestry5.internal.DefaultValidationDecorator})</dd>
+     * </dl>
      */
     public void 
contributeMarkupRenderer(OrderedConfiguration<MarkupRendererFilter> 
configuration,
 
@@ -1735,9 +1739,9 @@
     }
 
     /**
-     * Contributes several strategies: <dl> <dt>session <dd>Values are stored 
in the {...@link Session} <dt>flash
-     * <dd>Values are stored in the {...@link Session}, until the next request 
(for the page) <dt>client <dd>Values are
-     * encoded into URLs (or hidden form fields) </dl>
+     * Contributes several strategies: <dl> <dt>session <dd>Values are stored 
in the {...@link Session} <dt>flash <dd>Values
+     * are stored in the {...@link Session}, until the next request (for the 
page) <dt>client <dd>Values are encoded into
+     * URLs (or hidden form fields) </dl>
      */
     public void contributePersistentFieldManager(MappedConfiguration<String, 
PersistentFieldStrategy> configuration,
 
@@ -1804,9 +1808,9 @@
 
 
     /**
-     * Configures the extensions that will require a digest to be downloaded 
via the asset dispatcher. Most resources
-     * are "safe", they don't require a digest. For unsafe resources, the 
digest is incorporated into the URL to ensure
-     * that the client side isn't just "fishing".
+     * Configures the extensions that will require a digest to be downloaded 
via the asset dispatcher. Most resources are
+     * "safe", they don't require a digest. For unsafe resources, the digest 
is incorporated into the URL to ensure that
+     * the client side isn't just "fishing".
      * <p/>
      * The extensions must be all lower case.
      * <p/>
@@ -1921,6 +1925,7 @@
 
         configuration.add(SymbolConstants.APPLICATION_VERSION, 
Long.toHexString(System.currentTimeMillis()));
         configuration.add(SymbolConstants.OMIT_GENERATOR_META, "false");
+        configuration.add(SymbolConstants.GZIP_COMPRESSION_ENABLED, "true");
     }
 
 
@@ -1983,10 +1988,10 @@
 
     /**
      * Contributes filters: <dl> <dt>Ajax</dt> <dd>Determines if the request 
is Ajax oriented, and redirects to an
-     * alternative handler if so</dd> <dt>ImmediateRender</dt> <dd>When 
{...@linkplain
-     * SymbolConstants#SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS immediate action 
response rendering} is enabled, generates
-     * the markup response (instead of a page redirect response, which is the 
normal behavior) </dd> <dt>Secure</dt>
-     * <dd>Sends a redirect if an non-secure request accesses a secure 
page</dd></dl>
+     * alternative handler if so</dd> <dt>ImmediateRender</dt> <dd>When 
{...@linkplain SymbolConstants#SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS
+     * immediate action response rendering} is enabled, generates the markup 
response (instead of a page redirect
+     * response, which is the normal behavior) </dd> <dt>Secure</dt> <dd>Sends 
a redirect if an non-secure request
+     * accesses a secure page</dd></dl>
      */
     public void 
contributeComponentEventRequestHandler(OrderedConfiguration<ComponentEventRequestFilter>
 configuration,
                                                        final 
RequestSecurityManager requestSecurityManager,
@@ -2108,8 +2113,8 @@
     }
 
     /**
-     * Identifies String, Number and Boolean as immutable objects, a catch-all 
handler for Object (that understands
-     * {...@link 
org.apache.tapestry5.annotations.ImmutableSessionPersistedObject}, and handlers 
for {...@link
+     * Identifies String, Number and Boolean as immutable objects, a catch-all 
handler for Object (that understands {...@link
+     * org.apache.tapestry5.annotations.ImmutableSessionPersistedObject}, and 
handlers for {...@link
      * org.apache.tapestry5.OptimizedSessionPersistedObject} and {...@link 
org.apache.tapestry5.OptimizedApplicationStateObject}.
      *
      * @since 5.1.0.0

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/services/AppModule.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/services/AppModule.java?rev=733894&r1=733893&r2=733894&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/services/AppModule.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/services/AppModule.java
 Mon Jan 12 12:40:08 2009
@@ -1,4 +1,4 @@
-// Copyright 2008 The Apache Software Foundation
+// Copyright 2008, 2009 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -14,13 +14,20 @@
 
 package org.apache.tapestry5.integration.app3.services;
 
+import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.ioc.Configuration;
+import org.apache.tapestry5.ioc.MappedConfiguration;
 import org.apache.tapestry5.services.BeanBlockContribution;
 
 public class AppModule
 {
-    public void 
contributeBeanBlockOverrideSource(Configuration<BeanBlockContribution> 
configuration)
+    public static void 
contributeBeanBlockOverrideSource(Configuration<BeanBlockContribution> 
configuration)
     {
         configuration.add(new BeanBlockContribution("boolean", 
"PropertyDisplayBlockOverrides", "boolean", false));
     }
+
+    public static void 
contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
+    {
+        configuration.add(SymbolConstants.GZIP_COMPRESSION_ENABLED, "false");
+    }
 }


Reply via email to