Class AgentDecoratorMapper
- java.lang.Object
-
- com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper
-
- com.opensymphony.module.sitemesh.mapper.AgentDecoratorMapper
-
- All Implemented Interfaces:
DecoratorMapper
public final 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 isie
, 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.2 $
- Author:
- Joe Walnes
- See Also:
DecoratorMapper
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map
map
-
Fields inherited from class com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper
config, parent
-
-
Constructor Summary
Constructors Constructor Description AgentDecoratorMapper()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Decorator
getDecorator(javax.servlet.http.HttpServletRequest request, Page page)
Delegate to parent.private java.lang.String
getExt(java.lang.String userAgent)
Get extention for user-agent.void
init(Config config, java.util.Properties properties, DecoratorMapper parent)
Set parent.private void
initMap(java.util.Properties props)
Initialize user-agent mappings.private static java.lang.String
modifyPath(java.lang.String path, java.lang.String ext)
Change /abc/def.jsp into /abc/def-XYZ.jsp-
Methods inherited from class com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper
getNamedDecorator
-
-
-
-
Method Detail
-
init
public void init(Config config, java.util.Properties properties, DecoratorMapper parent) throws java.lang.InstantiationException
Description copied from class:AbstractDecoratorMapper
Set parent.- Specified by:
init
in interfaceDecoratorMapper
- Overrides:
init
in classAbstractDecoratorMapper
- Parameters:
config
- Config supplied by Servlet or Filter.properties
- Any initialization properties (specific to implementation).- Throws:
java.lang.InstantiationException
- should be thrown if the implementation cannot be initialized properly.
-
getDecorator
public Decorator getDecorator(javax.servlet.http.HttpServletRequest request, Page page)
Description copied from class:AbstractDecoratorMapper
Delegate to parent.- Specified by:
getDecorator
in interfaceDecoratorMapper
- Overrides:
getDecorator
in classAbstractDecoratorMapper
-
getExt
private java.lang.String getExt(java.lang.String userAgent)
Get extention for user-agent.
-
modifyPath
private static java.lang.String modifyPath(java.lang.String path, java.lang.String ext)
Change /abc/def.jsp into /abc/def-XYZ.jsp
-
initMap
private void initMap(java.util.Properties props)
Initialize user-agent mappings.
-
-