|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.cocoon.util.AbstractLogEnabled org.apache.cocoon.xml.AbstractXMLProducer org.apache.cocoon.xml.AbstractXMLPipe org.apache.cocoon.transformation.AbstractTransformer org.apache.cocoon.transformation.AbstractSAXTransformer org.apache.cocoon.transformation.VariableRewriterTransformer
Rewrites URIs in links to a value determined by an InputModule. The URI scheme identifies the InputModule to use, and the rest of the URI is used as the attribute name.
XMLFileModule
, configured to
read values from an XML file:
<site> <faq> <how_to_boil_eggs href="faq/eggs.html"/> </faq> </site>mapped to the prefix 'site:', then <link href="site:/site/faq/how_to_boil_eggs/@href"> would be replaced with <link href="faq/eggs.html">
InputModules are configured twice; first statically in
cocoon.xconf
, and then dynamically at runtime, with dynamic
configuration (if any) taking precedence. VariableRewriterTransformer allows
you to pass a dynamic configuration to used InputModules as follows.
First, a template Configuration is specified in the static <map:components> block of the sitemap:
<map:transformer name="linkrewriter" src="org.apache.cocoon.transformation.VariableRewriterTransformer"> <input-module name="site" src="cocoon://samples/link/linkmap" reloadable="true"/> <input-module name="mapper"> <input-module name="site" src="{src}" reloadable="true"/> <prefix>/site/</prefix> <suffix>/@href</suffix> </input-module> </map:transformer>Here, we have established dynamic configuration templates for two modules, 'site' (an
XMLFileModule
and 'mapper' (A SimpleMappingMetaModule
. All
other InputModules will use their static configs. Note that the dynamic
config syntax different to the static config syntax (attributes instead of
elements). Note also that, when configuring a Meta InputModule like
'mapper', we need to also configure the 'inner' module (here, 'site') with a
nested <input-module>.
There is one further twist; to have really dynamic configuration, we need information available only when the transformer actually runs. This is why the above config was called a "template" Configuration; it needs to be 'instantiated' and provided extra info, namely:
<map:match pattern="**welcome"> <map:generate src="index.xml"/> <map:transform type="linkrewriter" src="cocoon:/{1}linkmap"/> <map:serialize type="xml"/> </map:match>Which would cause the 'mapper' XMLFileModule to be configured with a different XML file, depending on the request.
Similarly, we could use a dynamic prefix:
<prefix>{prefix}</prefix>in the template config, and:
<map:parameter name="prefix" value="/site/"/>in the map:transform
The following map:parameter's are recognised:
Note that currently, only links in the default ("") namespace are converted.
Field Summary |
Fields inherited from class org.apache.cocoon.transformation.AbstractSAXTransformer |
context, defaultNamespaceURI, EMPTY_ATTRIBUTES, ignoreEmptyCharacters, ignoreEventsCount, ignoreHooksCount, ignoreWhitespaces, manager, namespaceURI, objectModel, parameters, recorderStack, removeOurNamespacePrefixes, 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 | |
VariableRewriterTransformer()
Constructor. |
Method Summary | |
void |
characters(char[] p0,
int p1,
int p2)
Process the SAX event. |
void |
configure(Configuration conf)
Configure this component from the map:transformer block. |
void |
dispose()
|
void |
initialize()
Initiate resources prior to this component becoming active. |
void |
recycle()
Recycle this component for use in another map:transform. |
void |
setup(org.apache.cocoon.environment.SourceResolver resolver,
Map objectModel,
String src,
Parameters parameters)
Setup this component to handle a map:transform instance. |
void |
startTransformingElement(String uri,
String name,
String raw,
Attributes attr)
Start processing elements of our namespace. |
Methods inherited from class org.apache.cocoon.transformation.AbstractSAXTransformer |
addRecorder, comment, endCDATA, endDocument, endDTD, endElement, 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, startElement, startEntity, startParametersRecording, startPrefixMapping, startRecording, startSAXRecording, startSerializedXMLRecording, startTextRecording |
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.apache.cocoon.xml.XMLProducer |
setConsumer |
Constructor Detail |
public VariableRewriterTransformer()
Method Detail |
public void configure(Configuration conf) throws ConfigurationException
configure
in interface Configurable
ConfigurationException
public void initialize() throws Exception
initialize
in interface Initializable
Exception
public void setup(org.apache.cocoon.environment.SourceResolver resolver, Map objectModel, String src, Parameters parameters) throws org.apache.cocoon.ProcessingException, SAXException, IOException
setup
in interface org.apache.cocoon.sitemap.SitemapModelComponent
org.apache.cocoon.ProcessingException
SAXException
IOException
public void startTransformingElement(String uri, String name, String raw, Attributes attr) throws org.apache.cocoon.ProcessingException, IOException, SAXException
uri
- The namespace of the element.name
- The local name of the element.raw
- The qualified name of the element.attr
- The attributes of the element.
org.apache.cocoon.ProcessingException
IOException
SAXException
public void characters(char[] p0, int p1, int p2) throws SAXException
characters
in interface ContentHandler
SAXException
public void recycle()
recycle
in interface Recyclable
public void dispose()
dispose
in interface Disposable
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |