org.apache.cocoon.components.modules.input
Class ContextPathModule

java.lang.Object
  extended by org.apache.avalon.framework.logger.AbstractLogEnabled
      extended by org.apache.cocoon.components.modules.input.AbstractInputModule
          extended by org.apache.cocoon.components.modules.input.ContextPathModule
All Implemented Interfaces:
Disposable, Component, Configurable, LogEnabled, Serviceable, ThreadSafe, InputModule

public class ContextPathModule
extends AbstractInputModule
implements Serviceable, ThreadSafe

ContextPathModule provides a real filesystem path for a virtual context-relative path. If this mapping cannot be performed (e.g. Cocoon is running in a .war file), null will be returned. Compared to the RealPathModule this module is able to provide the "real" absolute path even if the application is mounted outside the webapp tree of Cocoon.

Note: the primary use for this is to support external code that wants a filesystem path. For example, The FOP 0.20.x serializer doesn't like relative image paths, and doesn't understand Cocoon URLs (context:, cocoon: etc). So we pass the *2fo.xsl stylesheet a real filesystem path to where we keep our images:

A absolute path argument like {contextpath:/resources} will be resolved from the root context path (ie. COCOON_HOME/build/webapp) whereas a relative path attribute like {contextpath:./resources} will be resolved from the location of the sitemap that uses it. If that sitemap is mounted outside the usual COCOON_HOME/build/webapp the path resolved with this modules points to the correct location.

 <map:transform src="skins/{forrest:skin}/xslt/fo/document2fo.xsl">
    <map:parameter name="basedir" value="{contextpath:resources}/"/>
 </map:transform>
 
And then prepend this to all image paths:
  ...
  <xsl:param name="basedir" select="''"/>
  ...
  <xsl:template match="img">
      <xsl:variable name="imgpath" select="concat($basedir, @src)"/>
      <fo:external-graphic src="{$imgpath}" ...
      ...
  </xsl:template>
  

Version:
$Id: ContextPathModule.html 1304258 2012-03-23 10:09:27Z ilgrosso $
Author:
Giacomo Pati

Field Summary
 
Fields inherited from class org.apache.cocoon.components.modules.input.AbstractInputModule
settings
 
Fields inherited from interface org.apache.cocoon.components.modules.input.InputModule
ROLE
 
Constructor Summary
ContextPathModule()
           
 
Method Summary
 void dispose()
          (non-Javadoc)
 Object getAttribute(String name, Configuration modeConf, Map objectModel)
          Standard access to an attribute's value.
 Iterator getAttributeNames(Configuration modeConf, Map objectModel)
          Returns an Iterator of String objects containing the names of the attributes available.
 Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
          Returns an array of String objects containing all of the values the given attribute has, or null if the attribute does not exist.
 void service(ServiceManager manager)
          (non-Javadoc) * @see Serviceable#service(ServiceManager)
 
Methods inherited from class org.apache.cocoon.components.modules.input.AbstractInputModule
configure
 
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
 

Constructor Detail

ContextPathModule

public ContextPathModule()
Method Detail

service

public void service(ServiceManager manager)
             throws ServiceException
(non-Javadoc) * @see Serviceable#service(ServiceManager)

Specified by:
service in interface Serviceable
Throws:
ServiceException

dispose

public void dispose()
(non-Javadoc)

Specified by:
dispose in interface Disposable
Overrides:
dispose in class AbstractInputModule
See Also:
Disposable.dispose()

getAttribute

public Object getAttribute(String name,
                           Configuration modeConf,
                           Map objectModel)
                    throws ConfigurationException
Description copied from interface: InputModule
Standard access to an attribute's value. If more than one value exists, the first is returned. If the value does not exist, null is returned. To get all values, use InputModule.getAttributeValues(String, Configuration, Map) or InputModule.getAttributeNames(Configuration, Map) and InputModule.getAttribute(String, Configuration, Map) to get them one by one.

Specified by:
getAttribute in interface InputModule
Overrides:
getAttribute in class AbstractInputModule
Parameters:
name - a String that specifies what the caller thinks would identify an attribute. This is mainly a fallback if no modeConf is present.
modeConf - column's mode configuration from resource description. This argument is optional.
Throws:
ConfigurationException

getAttributeNames

public Iterator getAttributeNames(Configuration modeConf,
                                  Map objectModel)
                           throws ConfigurationException
Description copied from interface: InputModule
Returns an Iterator of String objects containing the names of the attributes available. If no attributes are available, the method returns an empty Iterator.

Specified by:
getAttributeNames in interface InputModule
Overrides:
getAttributeNames in class AbstractInputModule
Parameters:
modeConf - column's mode configuration from resource description. This argument is optional.
Throws:
ConfigurationException

getAttributeValues

public Object[] getAttributeValues(String name,
                                   Configuration modeConf,
                                   Map objectModel)
                            throws ConfigurationException
Description copied from interface: InputModule
Returns an array of String objects containing all of the values the given attribute has, or null if the attribute does not exist. As an alternative, InputModule.getAttributeNames(Configuration, Map) together with InputModule.getAttribute(String, Configuration, Map) can be used to get the values one by one.

Specified by:
getAttributeValues in interface InputModule
Overrides:
getAttributeValues in class AbstractInputModule
Parameters:
name - a String that specifies what the caller thinks would identify an attributes. This is mainly a fallback if no modeConf is present.
modeConf - column's mode configuration from resource description. This argument is optional.
Throws:
ConfigurationException


Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.