org.apache.lenya.cms.cocoon.transformation
Class LinkRewritingTransformer

java.lang.Object
  extended by org.apache.avalon.framework.logger.AbstractLogEnabled
      extended by org.apache.cocoon.xml.AbstractXMLProducer
          extended by org.apache.cocoon.xml.AbstractXMLPipe
              extended by org.apache.cocoon.transformation.AbstractTransformer
                  extended by org.apache.cocoon.transformation.AbstractSAXTransformer
                      extended by org.apache.lenya.cms.cocoon.transformation.LinkRewritingTransformer
All Implemented Interfaces:
org.apache.avalon.excalibur.pool.Poolable, org.apache.avalon.excalibur.pool.Recyclable, org.apache.avalon.framework.activity.Disposable, org.apache.avalon.framework.component.Component, org.apache.avalon.framework.configuration.Configurable, org.apache.avalon.framework.logger.LogEnabled, org.apache.avalon.framework.service.Serviceable, org.apache.cocoon.sitemap.SitemapModelComponent, org.apache.cocoon.transformation.Transformer, org.apache.cocoon.xml.XMLPipe, org.apache.cocoon.xml.XMLProducer, org.apache.excalibur.xml.sax.XMLConsumer, org.xml.sax.ContentHandler, org.xml.sax.ext.LexicalHandler

public class LinkRewritingTransformer
extends org.apache.cocoon.transformation.AbstractSAXTransformer

Link rewriting transformer.

This transformer is applied to an XHMTL document. It processes <xhtml:a href="..."> attributes of the following form:

{context-prefix}/{publication-id}/{area}{document-url}

These links are rewritten using the following rules:

$Id: LinkRewritingTransformer.java,v 1.7 2004/03/16 11:12:16 gregor


Field Summary
static java.lang.String ATTRIBUTE_HREF
          The local name of the HTML <a> href attribute.
 
Fields inherited from class org.apache.cocoon.transformation.AbstractSAXTransformer
context, defaultNamespaceURI, EMPTY_ATTRIBUTES, emptyAttributes, ignoreEmptyCharacters, ignoreEventsCount, ignoreHooksCount, ignoreWhitespaces, manager, namespaceURI, objectModel, parameters, recorderStack, request, resolver, response, source, stack
 
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
LinkRewritingTransformer()
           
 
Method Summary
 void dispose()
           
 void endElement(java.lang.String uri, java.lang.String name, java.lang.String qname)
          (non-Javadoc)
protected  Document getCurrentDocument()
          Returns the currently processed document.
protected  boolean isIgnoreAElement()
           
protected  boolean lookingAtAElement(java.lang.String name)
           
protected  boolean lookingAtLinkElement(java.lang.String name)
          Check if we are looking at a link element
 void recycle()
          (non-Javadoc)
protected  void rewriteLink(org.xml.sax.helpers.AttributesImpl newAttrs, Document targetDocument, java.lang.String anchor, java.lang.String queryString)
          Rewrites a link.
protected  void setHrefAttribute(org.xml.sax.helpers.AttributesImpl attr, java.lang.String value)
          Sets the value of the href attribute.
protected  void setIgnoreAElement(boolean ignoreAElement)
           
 void setup(org.apache.cocoon.environment.SourceResolver resolver, java.util.Map objectModel, java.lang.String source, org.apache.avalon.framework.parameters.Parameters parameters)
           
 void startElement(java.lang.String uri, java.lang.String name, java.lang.String qname, org.xml.sax.Attributes attrs)
          (non-Javadoc)
 
Methods inherited from class org.apache.cocoon.transformation.AbstractSAXTransformer
addRecorder, characters, comment, configure, endCDATA, endDocument, endDTD, endEntity, endParametersRecording, endParametersRecording, endPrefixMapping, endRecording, endSAXRecording, endSerializedXMLRecording, endTextRecording, endTransformingElement, findPrefixMapping, getMutableAttributes, ignorableWhitespace, processingInstruction, removeRecorder, sendEndElementEvent, sendEndElementEventNS, sendEndPrefixMapping, sendEvents, sendParametersEvents, sendStartElementEvent, sendStartElementEvent, sendStartElementEventNS, sendStartElementEventNS, sendStartPrefixMapping, sendTextEvent, service, setDocumentLocator, setupTransforming, skippedEntity, startCDATA, startDocument, startDTD, startEntity, startParametersRecording, startPrefixMapping, startRecording, startSAXRecording, startSerializedXMLRecording, startTextRecording, startTransformingElement
 
Methods inherited from class org.apache.cocoon.xml.AbstractXMLProducer
setConsumer, setContentHandler, setLexicalHandler
 
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
 
Methods inherited from interface org.apache.cocoon.xml.XMLProducer
setConsumer
 

Field Detail

ATTRIBUTE_HREF

public static final java.lang.String ATTRIBUTE_HREF
The local name of the HTML <a> href attribute.

See Also:
Constant Field Values
Constructor Detail

LinkRewritingTransformer

public LinkRewritingTransformer()
Method Detail

setup

public void setup(org.apache.cocoon.environment.SourceResolver resolver,
                  java.util.Map objectModel,
                  java.lang.String source,
                  org.apache.avalon.framework.parameters.Parameters parameters)
           throws org.apache.cocoon.ProcessingException,
                  org.xml.sax.SAXException,
                  java.io.IOException
Specified by:
setup in interface org.apache.cocoon.sitemap.SitemapModelComponent
Overrides:
setup in class org.apache.cocoon.transformation.AbstractSAXTransformer
Throws:
org.apache.cocoon.ProcessingException
org.xml.sax.SAXException
java.io.IOException
See Also:
SitemapModelComponent.setup(org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)

getCurrentDocument

protected Document getCurrentDocument()
Returns the currently processed document.

Returns:
A document.

startElement

public void startElement(java.lang.String uri,
                         java.lang.String name,
                         java.lang.String qname,
                         org.xml.sax.Attributes attrs)
                  throws org.xml.sax.SAXException
(non-Javadoc)

Specified by:
startElement in interface org.xml.sax.ContentHandler
Overrides:
startElement in class org.apache.cocoon.transformation.AbstractSAXTransformer
Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)

rewriteLink

protected void rewriteLink(org.xml.sax.helpers.AttributesImpl newAttrs,
                           Document targetDocument,
                           java.lang.String anchor,
                           java.lang.String queryString)
                    throws AccessControlException,
                           PublicationException
Rewrites a link.

Parameters:
newAttrs - The new attributes.
targetDocument - The target document.
anchor - The anchor (the string after the # character in the URL).
queryString - The query string without question mark.
Throws:
AccessControlException - when something went wrong.
PublicationException - when something went wrong.

setHrefAttribute

protected void setHrefAttribute(org.xml.sax.helpers.AttributesImpl attr,
                                java.lang.String value)
Sets the value of the href attribute.

Parameters:
attr - The attributes.
value - The value.
Throws:
java.lang.IllegalArgumentException - if the href attribute is not contained in this attributes.

endElement

public void endElement(java.lang.String uri,
                       java.lang.String name,
                       java.lang.String qname)
                throws org.xml.sax.SAXException
(non-Javadoc)

Specified by:
endElement in interface org.xml.sax.ContentHandler
Overrides:
endElement in class org.apache.cocoon.transformation.AbstractSAXTransformer
Throws:
org.xml.sax.SAXException
See Also:
ContentHandler.endElement(java.lang.String, java.lang.String, java.lang.String)

lookingAtLinkElement

protected boolean lookingAtLinkElement(java.lang.String name)
Check if we are looking at a link element

Parameters:
name - name of the element
Returns:
true if we are looking at a link element

lookingAtAElement

protected boolean lookingAtAElement(java.lang.String name)

dispose

public void dispose()
Specified by:
dispose in interface org.apache.avalon.framework.activity.Disposable
Overrides:
dispose in class org.apache.cocoon.transformation.AbstractSAXTransformer
See Also:
Disposable.dispose()

recycle

public void recycle()
(non-Javadoc)

Specified by:
recycle in interface org.apache.avalon.excalibur.pool.Recyclable
Overrides:
recycle in class org.apache.cocoon.transformation.AbstractSAXTransformer
See Also:
Recyclable.recycle()

isIgnoreAElement

protected boolean isIgnoreAElement()
Returns:
Returns the ignoreAElement.

setIgnoreAElement

protected void setIgnoreAElement(boolean ignoreAElement)
Parameters:
ignoreAElement - The ignoreAElement to set.


Copyright © 1999-2005 Apache Software Foundation. All Rights Reserved.