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

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.AbstractLinkTransformer
                          extended by org.apache.lenya.cms.cocoon.transformation.UuidToUrlTransformer
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 UuidToUrlTransformer
extends AbstractLinkTransformer
implements org.apache.avalon.framework.activity.Disposable

UUID to URL transformer.

This transformer is applied to an XHMTL document. It processes all links following the LinkResolver syntax which are configured using <transform/> elements (see below).

These links are resolved using the following rules:

You can add the query parameter uuid2url.extension to lenya-document: URLs to set a specific link extension.

The resulting URLs are absolute web application URLs (without the servlet context path).

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


Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.lenya.cms.cocoon.transformation.AbstractLinkTransformer
AbstractLinkTransformer.AttributeConfiguration
 
Field Summary
protected static java.lang.String BROKEN_ATTRIB
           
protected static java.lang.String BROKEN_VALUE
           
protected static java.lang.String EXTENSION_PARAM
           
 
Fields inherited from class org.apache.lenya.cms.cocoon.transformation.AbstractLinkTransformer
ignoreLinkElement, indent
 
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
UuidToUrlTransformer()
           
 
Method Summary
 void dispose()
           
protected  Link getAbsoluteLink(org.apache.lenya.cms.publication.URLInformation info, java.lang.String linkUri)
          The link is constructed from the linkUri string.
protected  java.lang.String getExtension(org.apache.lenya.cms.publication.Document targetDocument, java.lang.String requiredExtension)
          Get the extension of a document.
protected  LinkRewriter getLinkRewriter()
           
protected  void handleLink(java.lang.String linkUrl, AbstractLinkTransformer.AttributeConfiguration config, org.xml.sax.helpers.AttributesImpl newAttrs)
          Handle a link in the source SAX stream.
protected  void markBrokenLink(org.xml.sax.helpers.AttributesImpl newAttrs, java.lang.String attrName, java.lang.String brokenUrl)
          Marks a <a/> element as broken and removes href attribute.
 void recycle()
           
protected  void rewriteLink(org.xml.sax.helpers.AttributesImpl newAttrs, java.lang.String attributeName, org.apache.lenya.cms.publication.Document targetDocument, java.lang.String anchor, java.lang.String queryString, java.lang.String extension)
          Rewrites a link.
protected  void setAttribute(org.xml.sax.helpers.AttributesImpl attr, java.lang.String name, java.lang.String value)
          Sets the value of the href attribute.
 void setup(org.apache.cocoon.environment.SourceResolver _resolver, java.util.Map _objectModel, java.lang.String _source, org.apache.avalon.framework.parameters.Parameters _parameters)
           
 
Methods inherited from class org.apache.lenya.cms.cocoon.transformation.AbstractLinkTransformer
configure, endElement, existsMatchingConfiguration, getCacheKey, getMatchingConfigurations, startElement
 
Methods inherited from class org.apache.cocoon.transformation.AbstractSAXTransformer
addRecorder, characters, comment, 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

BROKEN_ATTRIB

protected static final java.lang.String BROKEN_ATTRIB
See Also:
Constant Field Values

BROKEN_VALUE

protected static final java.lang.String BROKEN_VALUE
See Also:
Constant Field Values

EXTENSION_PARAM

protected static final java.lang.String EXTENSION_PARAM
See Also:
Constant Field Values
Constructor Detail

UuidToUrlTransformer

public UuidToUrlTransformer()
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)

handleLink

protected void handleLink(java.lang.String linkUrl,
                          AbstractLinkTransformer.AttributeConfiguration config,
                          org.xml.sax.helpers.AttributesImpl newAttrs)
                   throws java.lang.Exception
Description copied from class: AbstractLinkTransformer
Handle a link in the source SAX stream.

Overrides:
handleLink in class AbstractLinkTransformer
Parameters:
linkUrl - The link URL.
config - The attribute configuration which matched the link.
newAttrs - The new attributes which will be added to the result element.
Throws:
java.lang.Exception - if an error occurs.

getAbsoluteLink

protected Link getAbsoluteLink(org.apache.lenya.cms.publication.URLInformation info,
                               java.lang.String linkUri)
                        throws java.net.MalformedURLException
The link is constructed from the linkUri string. If it lacks the area or publication ID information, these are obtained from the current URL information.

Parameters:
info - The current URL information.
linkUri - The link URI to use.
Returns:
A link.
Throws:
java.net.MalformedURLException - if the linkUri parameter is malformed.

getExtension

protected java.lang.String getExtension(org.apache.lenya.cms.publication.Document targetDocument,
                                        java.lang.String requiredExtension)
Get the extension of a document. Caution: resolving the extension is expensive!

Parameters:
targetDocument - The document.
requiredExtension - The required extension.
Returns:
The required extension or, if it is null, the document's default extension.

markBrokenLink

protected void markBrokenLink(org.xml.sax.helpers.AttributesImpl newAttrs,
                              java.lang.String attrName,
                              java.lang.String brokenUrl)
                       throws org.apache.lenya.ac.AccessControlException
Marks a <a/> element as broken and removes href attribute.

Parameters:
newAttrs - The new attributes.
attrName - The attribute name.
brokenUrl - The broken link URI.
Throws:
org.apache.lenya.ac.AccessControlException - when something went wrong.

rewriteLink

protected void rewriteLink(org.xml.sax.helpers.AttributesImpl newAttrs,
                           java.lang.String attributeName,
                           org.apache.lenya.cms.publication.Document targetDocument,
                           java.lang.String anchor,
                           java.lang.String queryString,
                           java.lang.String extension)
                    throws org.apache.lenya.ac.AccessControlException
Rewrites a link.

Parameters:
newAttrs - The new attributes.
attributeName - The name of the attribute to rewrite.
targetDocument - The target document.
anchor - The anchor (the string after the # character in the URL).
queryString - The query string without question mark.
extension - The extension to use.
Throws:
org.apache.lenya.ac.AccessControlException - when something went wrong.

setAttribute

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

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

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()
Specified by:
recycle in interface org.apache.avalon.excalibur.pool.Recyclable
Overrides:
recycle in class org.apache.cocoon.transformation.AbstractSAXTransformer
See Also:
Recyclable.recycle()

getLinkRewriter

protected LinkRewriter getLinkRewriter()
Specified by:
getLinkRewriter in class AbstractLinkTransformer
Returns:
The link rewriter used by this transformer.


Copyright $ Apache Software Foundation. All Rights Reserved.