org.apache.cocoon.acting
Class HttpCacheAction

java.lang.Object
  extended by org.apache.avalon.framework.logger.AbstractLogEnabled
      extended by org.apache.cocoon.acting.AbstractAction
          extended by org.apache.cocoon.acting.AbstractConfigurableAction
              extended by org.apache.cocoon.acting.HttpCacheAction
All Implemented Interfaces:
Component, Configurable, LogEnabled, ThreadSafe, Action

public class HttpCacheAction
extends AbstractConfigurableAction
implements ThreadSafe

This action adds the Last-Modified, Expires and Cache-Control HTTP headers to the response.

This action will add the Last-Modified header to the response with the time in which the request was executed, and an Expires header at a specified time difference. Additionally, it will provide an extra Cache-Control indicating the maximum age of the request as a delta between the expiration and last modification dates.

This is useful (for example) when Cocoon is proxyied by a Web Server such as Apache HTTPD running mod_cache, to indicate for each request how long the output should be cached for.

To configure the difference between Last-Modified and Expires this Action can be configured specifying days, hours, minutes, and seconds in this way:

 <map:action>s
   <map:action name="xyz" src="org.apache.cocoon.acting.HttpCacheAction>"
     <days>1</day>s
     <hours>2</hour>s
     <minutes>3</minute>s
     <seconds>4</second>s
   </map:actio>n
 </map:action>s
 

Using this example configuration, the Expires header will specify a date one day, two hours, three minutes and four seconds after the time of the request (which will be in Last-Modified).

Note that if any of the parameters mentioned above is zero or less than zero this action will modify the behaviour of the resulting Cache-Control header to emit the keyword no-cache.

This action will also return the three headers it added as sitemap parameters called last-modified, expires and cache-control (all lowercase).

Version:
CVS $Id: HttpCacheAction.html 1304258 2012-03-23 10:09:27Z ilgrosso $
Author:
Pier Fumagalli

Field Summary
 
Fields inherited from class org.apache.cocoon.acting.AbstractConfigurableAction
settings
 
Fields inherited from class org.apache.cocoon.acting.AbstractAction
EMPTY_MAP
 
Fields inherited from interface org.apache.cocoon.acting.Action
ROLE
 
Constructor Summary
HttpCacheAction()
           
 
Method Summary
 Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters parameters)
          Controls the processing against some values of the Dictionary objectModel and returns a Map object with values used in subsequent sitemap substitution patterns.
 void configure(Configuration configuration)
          Configures the Action.
 
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HttpCacheAction

public HttpCacheAction()
Method Detail

configure

public void configure(Configuration configuration)
               throws ConfigurationException
Description copied from class: AbstractConfigurableAction
Configures the Action. Takes the children from the Configuration and stores them them as key (configuration name) and value (configuration value) in settings.
This automates parsing of flat string-only configurations. For nested configurations, override this function in your action.

Specified by:
configure in interface Configurable
Overrides:
configure in class AbstractConfigurableAction
Throws:
ConfigurationException

act

public Map act(Redirector redirector,
               SourceResolver resolver,
               Map objectModel,
               String source,
               Parameters parameters)
        throws Exception
Description copied from interface: Action
Controls the processing against some values of the Dictionary objectModel and returns a Map object with values used in subsequent sitemap substitution patterns. NOTE: This interface is designed so that implentations can be ThreadSafe. When an action is ThreadSafe, only one instance serves all requests : this reduces memory usage and avoids pooling.

Specified by:
act in interface Action
resolver - The SourceResolver in charge
objectModel - The Map with object of the calling environment which can be used to select values this controller may need (ie Request, Response).
source - A source String to the Action
parameters - The Parameters for this invocation
Returns:
Map The returned Map object with sitemap substitution values which can be used in subsequent elements attributes like src= using a xpath like expression: src="mydir/{myval}/foo" If the return value is null the processing inside the element of the sitemap will be skipped.
Throws:
Exception - Indicates something is totally wrong


Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.