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

java.lang.Object
  extended byorg.apache.cocoon.util.AbstractLogEnabled
      extended byorg.apache.cocoon.components.modules.input.AbstractInputModule
          extended byorg.apache.cocoon.components.modules.input.LocateResource
All Implemented Interfaces:
Configurable, Disposable, org.apache.cocoon.components.modules.input.InputModule, Serviceable, ThreadSafe

public class LocateResource
extends org.apache.cocoon.components.modules.input.AbstractInputModule
implements Serviceable, ThreadSafe

Locate a resource in a resource tree. Any attribute name is interpreted as a URI with the last part being the resource name unless it ends with a slash. The URI is checked if the resource exists and the URI is returned. If the resource does not exist, the URI is shortened until the resource name is found and the new URI is returned. If no resource with the given name exists, null is returned.

A use case is to locate the closest menu file or when moving a site from a filesystem path == URL system from a httpd to Cocoon and provide similar functions to .htaccess files.

Example: for context:/some/path/to/a/file.xml the following URIs are tested: context:/some/path/to/a/file.xml, context:/some/path/to/file.xml, context:/some/path/file.xml, context:/some/file.xml, and context:/file.xml. For the attribute name context:/some/path/foo/ tests context:/some/path/foo/, context:/some/path/, context:/some/, and context:/ are tested.

The getAttribute() method will return the URI for the first match while getAttributeValues() will return an array of all existing paths. getAttributeNames() will return an Iterator to an empty collection.

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

Field Summary
protected static Collection col
           
protected  ServiceManager manager
           
 
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
LocateResource()
           
 
Method Summary
protected  int calculateMinLen(String name)
          Calculate the minimal length of the URL, that is the position of the first ":" if a protocol is provided or otherwise 0.
protected  String extractFilename(String urlstring)
          if the url does not end with a "/", keep the last part in order to add it later again after traversing up
 Object getAttribute(String name, Configuration modeConf, Map objectModel)
           
 Iterator getAttributeNames(Configuration modeConf, Map objectModel)
           
 Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
           
protected  String locateResource(String urlstring, String filename, int minLen)
          Locate a resource with the given URL consisting of urlstring + filename.
 void service(ServiceManager manager)
           
protected  String shortenURI(String urlstring, int minLen)
          Remove one path element from the URL unless minimum length has been reached.
 
Methods inherited from class org.apache.cocoon.components.modules.input.AbstractInputModule
configure, dispose
 
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
 

Field Detail

col

protected static final Collection col

manager

protected ServiceManager manager
Constructor Detail

LocateResource

public LocateResource()
Method Detail

calculateMinLen

protected int calculateMinLen(String name)
Calculate the minimal length of the URL, that is the position of the first ":" if a protocol is provided or otherwise 0.

Parameters:
name -
Returns:
minimal length

shortenURI

protected String shortenURI(String urlstring,
                            int minLen)
Remove one path element from the URL unless minimum length has been reached.

Parameters:
urlstring -
minLen -
Returns:
shortened URI

extractFilename

protected String extractFilename(String urlstring)
if the url does not end with a "/", keep the last part in order to add it later again after traversing up


locateResource

protected String locateResource(String urlstring,
                                String filename,
                                int minLen)
Locate a resource with the given URL consisting of urlstring + filename. The filename is appended each time the path is shortened. Returns the first existing occurance.

Parameters:
urlstring -
filename -
minLen -
Returns:
urlstring if resource was found, null otherwise

service

public void service(ServiceManager manager)
             throws ServiceException
Specified by:
service in interface Serviceable
Throws:
ServiceException

getAttribute

public Object getAttribute(String name,
                           Configuration modeConf,
                           Map objectModel)
                    throws ConfigurationException
Specified by:
getAttribute in interface org.apache.cocoon.components.modules.input.InputModule
Throws:
ConfigurationException

getAttributeNames

public Iterator getAttributeNames(Configuration modeConf,
                                  Map objectModel)
                           throws ConfigurationException
Specified by:
getAttributeNames in interface org.apache.cocoon.components.modules.input.InputModule
Throws:
ConfigurationException

getAttributeValues

public Object[] getAttributeValues(String name,
                                   Configuration modeConf,
                                   Map objectModel)
                            throws ConfigurationException
Specified by:
getAttributeValues in interface org.apache.cocoon.components.modules.input.InputModule
Throws:
ConfigurationException


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