com.opensymphony.module.sitemesh.mapper
Class AgentDecoratorMapper
java.lang.Object
com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper
com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper
- All Implemented Interfaces:
- DecoratorMapper
public class AgentDecoratorMapper - extends AbstractDecoratorMapper
The AgentDecoratorMapper can determine the user-agent (i.e. web-browser)
requesting a page, and map to a suitable Decorator.
This can be useful for supplying different versions of the same content
for different browsers (e.g. vanilla HTML for Lynx, complex tables and frames
for Netscape, extra stuff for IE5, etc).
This can also be used to enhance search-engine ratings by using a 'bait and
switch' system - this involves showing a search-engine friendly of the content
to spiders only.
When AgentDecoratorMapper is in the chain, it will request the appropriate Decorator
from its parent. It will then add an extention to the filename of the Decorator, and
if that file exists it shall be used as the Decorator instead. For example, if the
Decorator path is /blah.jsp and the detected user-agent is ie,
the path /blah-ie.jsp shall be used.
The agent mappings are configured by passing properties with match. as a prefix.
For example: 'match.MSIE'=ie , 'match.Lynx'=plain .
- Version:
- $Revision: 1.3 $
- Author:
- Joe Walnes
- See Also:
DecoratorMapper
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
map
private Map map
AgentDecoratorMapper
public AgentDecoratorMapper()
init
public void init(Config config,
Properties properties,
DecoratorMapper parent)
throws InstantiationException
- Description copied from class:
AbstractDecoratorMapper
- Set parent.
- Specified by:
init in interface DecoratorMapper- Overrides:
init in class AbstractDecoratorMapper
- Parameters:
config - Config supplied by Servlet or Filter.properties - Any initialization properties (specific to implementation).
- Throws:
InstantiationException - should be thrown if the implementation
cannot be initialized properly.
getDecorator
public Decorator getDecorator(HttpServletRequest request,
Page page)
- Description copied from class:
AbstractDecoratorMapper
- Delegate to parent.
- Specified by:
getDecorator in interface DecoratorMapper- Overrides:
getDecorator in class AbstractDecoratorMapper
getExt
private String getExt(String userAgent)
- Get extention for user-agent.
modifyPath
private static String modifyPath(String path,
String ext)
- Change /abc/def.jsp into /abc/def-XYZ.jsp
initMap
private void initMap(Properties props)
- Initialize user-agent mappings.
|