org.apache.cocoon.transformation
Class EncodeURLTransformer

java.lang.Object
  extended byorg.apache.cocoon.util.AbstractLogEnabled
      extended byorg.apache.cocoon.xml.AbstractXMLProducer
          extended byorg.apache.cocoon.xml.AbstractXMLPipe
              extended byorg.apache.cocoon.transformation.AbstractTransformer
                  extended byorg.apache.cocoon.transformation.EncodeURLTransformer
All Implemented Interfaces:
org.apache.cocoon.caching.CacheableProcessingComponent, Configurable, ContentHandler, LexicalHandler, Poolable, Recyclable, org.apache.cocoon.sitemap.SitemapModelComponent, org.apache.cocoon.transformation.Transformer, XMLConsumer, org.apache.cocoon.xml.XMLConsumer, org.apache.cocoon.xml.XMLPipe, org.apache.cocoon.xml.XMLProducer

public class EncodeURLTransformer
extends org.apache.cocoon.transformation.AbstractTransformer
implements Configurable, org.apache.cocoon.caching.CacheableProcessingComponent

The encodeURL transformer emits encoded URLs.

This transformer applies encodeURL method to URLs. You may want to use this transform to avoid doing the manually encodeURL() calls.

Usually this transformer is appended as last transformer before the serialization process. In this case it is possible to encode URLs introduced in the generator, and xslt transformer phase.

You can specify which attributes hold URL values in order to restrict URL rewriting to specific attributes only.

Usage in a sitemap:


   <map:composition>
   ...
     <map:transformers>
     ...
       <map:transformer type="encodeURL"
         src="org.apache.cocoon.optional.transformation.EncodeURLTransformer">
         <exclude-name>img/@src|a/@href=.&asterik;adserver</exclude-name>
         <include-name>.&asterik;/@href|.&asterik;/@src|.&asterik;/@action</include-name>
       </map:transformer>
   ...
   <map:pipelines>
     <map:pipeline>
       ...
       <map:transform type="encodeURL"/>
       ...
 

Version:
$Id: EncodeURLTransformer.html 1304280 2012-03-23 11:18:01Z ilgrosso $

Nested Class Summary
static class EncodeURLTransformer.ElementAttributeMatching
          A helper class for matching element names, and attribute names.
 
Field Summary
static String EXCLUDE_NAME
          Configuration name for specifying excluding patterns, ie exclude-name.
static String EXCLUDE_NAME_DEFAULT
          Configuration default exclude pattern, ie img/@src
static String INCLUDE_NAME
          Configuration name for specifying including patterns, ie include-name.
static String INCLUDE_NAME_DEFAULT
          Configuration default exclude pattern, ie .*\/@href|.*\/@action|frame/@src
 
Fields inherited from class org.apache.cocoon.xml.AbstractXMLProducer
contentHandler, EMPTY_CONTENT_HANDLER, lexicalHandler, xmlConsumer
 
Fields inherited from interface org.apache.cocoon.transformation.Transformer
ROLE
 
Constructor Summary
EncodeURLTransformer()
           
 
Method Summary
protected  void checkForEncoding(org.apache.cocoon.environment.Request request)
          check if encoding of URLs is neccessary.
 void configure(Configuration configuration)
          BEGIN SitemapComponent methods
protected  String encodeURL(String url)
          Do the URL rewriting.
 Serializable getKey()
          Generate the unique key.
 SourceValidity getValidity()
          Generate the validity object.
 void recycle()
          Recycle resources of this transformer
 void setup(org.apache.cocoon.environment.SourceResolver resolver, Map objectModel, String source, Parameters parameters)
          Setup the transformer.
 void startElement(String uri, String name, String raw, Attributes attributes)
          Start parsing an element
 
Methods inherited from class org.apache.cocoon.xml.AbstractXMLPipe
characters, comment, endCDATA, endDocument, endDTD, endElement, endEntity, endPrefixMapping, ignorableWhitespace, processingInstruction, setDocumentLocator, skippedEntity, startCDATA, startDocument, startDTD, startEntity, startPrefixMapping
 
Methods inherited from class org.apache.cocoon.xml.AbstractXMLProducer
setConsumer, setContentHandler, setLexicalHandler
 
Methods inherited from class org.apache.cocoon.util.AbstractLogEnabled
getLogger, setLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.xml.sax.ContentHandler
characters, endDocument, endElement, endPrefixMapping, ignorableWhitespace, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startPrefixMapping
 
Methods inherited from interface org.xml.sax.ext.LexicalHandler
comment, endCDATA, endDTD, endEntity, startCDATA, startDTD, startEntity
 
Methods inherited from interface org.apache.cocoon.xml.XMLProducer
setConsumer
 

Field Detail

EXCLUDE_NAME

public static final String EXCLUDE_NAME
Configuration name for specifying excluding patterns, ie exclude-name.

See Also:
Constant Field Values

INCLUDE_NAME

public static final String INCLUDE_NAME
Configuration name for specifying including patterns, ie include-name.

See Also:
Constant Field Values

EXCLUDE_NAME_DEFAULT

public static final String EXCLUDE_NAME_DEFAULT
Configuration default exclude pattern, ie img/@src

See Also:
Constant Field Values

INCLUDE_NAME_DEFAULT

public static final String INCLUDE_NAME_DEFAULT
Configuration default exclude pattern, ie .*\/@href|.*\/@action|frame/@src

See Also:
Constant Field Values
Constructor Detail

EncodeURLTransformer

public EncodeURLTransformer()
Method Detail

checkForEncoding

protected void checkForEncoding(org.apache.cocoon.environment.Request request)
check if encoding of URLs is neccessary. This is true if session object exists, and session-id was provided from URL, or session is new. The result is stored in some instance variables


setup

public void setup(org.apache.cocoon.environment.SourceResolver resolver,
                  Map objectModel,
                  String source,
                  Parameters parameters)
           throws org.apache.cocoon.ProcessingException,
                  SAXException,
                  IOException
Setup the transformer.

Setup include, and exclude patterns from the parameters

Specified by:
setup in interface org.apache.cocoon.sitemap.SitemapModelComponent
Parameters:
resolver - source resolver
objectModel - sitemap objects
parameters - request parameters
Throws:
org.apache.cocoon.ProcessingException
SAXException
IOException

configure

public void configure(Configuration configuration)
               throws ConfigurationException
BEGIN SitemapComponent methods

Specified by:
configure in interface Configurable
Parameters:
configuration - Description of Parameter
Throws:
ConfigurationException - Description of Exception

recycle

public void recycle()
Recycle resources of this transformer

Specified by:
recycle in interface Recyclable

getKey

public Serializable getKey()
Generate the unique key. This key must be unique inside the space of this component.

Specified by:
getKey in interface org.apache.cocoon.caching.CacheableProcessingComponent
Returns:
The generated key hashes the src

getValidity

public SourceValidity getValidity()
Generate the validity object.

Specified by:
getValidity in interface org.apache.cocoon.caching.CacheableProcessingComponent
Returns:
The generated validity object or null if the component is currently not cacheable.

startElement

public void startElement(String uri,
                         String name,
                         String raw,
                         Attributes attributes)
                  throws SAXException
Start parsing an element

Specified by:
startElement in interface ContentHandler
Parameters:
uri - of the element
name - of the element
raw - name of the element
attributes - list
Throws:
SAXException - Description of Exception

encodeURL

protected String encodeURL(String url)
Do the URL rewriting.

Check if url contains already the sessionid, some servlet-engines just appends the session-id without checking if the sessionid is already present.

Parameters:
url - the URL probably without sessionid.
Returns:
String the original url inclusive the sessionid


Copyright 1999-2008 The Apache Software Foundation. All Rights Reserved.