home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- Copyright 1999-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
- <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.0//EN" "../../dtd/document-v10.dtd">
-
- <document>
- <header>
- <title>ExtendedResourceExistsAction in Cocoon</title>
- <version>0.9</version>
- <type>Technical document</type>
- <authors>
- <person name="Bernhard Huber" email="huber.at.apache.org"/>
- </authors>
- <abstract>This document describes the ExtendedResourceExistsAction of Cocoon.</abstract>
- </header>
- <body>
- <s1 title="ExtendedResourceExistsAction">
- <table>
- <tr>
- <td>NAME</td><td>extended-resource-exists</td>
- </tr>
- <tr>
- <td>WHAT</td><td>The <code>ExtendedResourceExistsAction</code> component is used
- to detect existance of a resource.
- </td>
- </tr>
- <tr>
- <td>TYPE</td><td>Action, Sitemap Component</td>
- </tr>
- <tr>
- <!-- choose Core, the block name, or Scratchpad
- depending on where ExtendedResourceExistsAction sources live
- -->
- <td>BLOCK</td><td>Block-Mail/Scratchpad</td>
- </tr>
- <tr>
- <td>CLASS</td><td>org.apache.cocoon.acting.ExtendedResourceExistsAction</td>
- </tr>
- <!-- uncomment folling tr iff ExtendedResourceExistsAction is deprecated -->
- <!--tr>
- <td>DEPRECATED</td><td>Cocoon 2.0, 2.1</td>
- </tr-->
- <tr>
- <td>SINCE</td><td>Cocoon 2.1</td>
- </tr>
- <tr>
- <td>CACHEABLE</td><td>not applicable</td>
- </tr>
- </table>
- </s1>
- <s1 title="Description">
- <p>
- The <code>ExtendedResourceExistsAction</code> checks the existance of a resource.
- If the resource exists a sitemap parameter to <code>true</code>,
- otherwise to <code>false</code>.
- </p>
- </s1>
- <s1 title="Usage">
- <p>
- The <code>ExtendedResourceExistsAction</code> is used to control the sitemap
- processing depending on the existance of a resource.
- </p>
- <p>
- A use case of <code>ExtendedResourceExistsAction</code> is serving default
- pages, in case of non-existance of a page.
- </p>
- <p>
- The snippet below uses <code>ExtendedResourceExistsAction</code>
- serving the document <code>docs/index.html</code> if the
- requested document does not exist.
- </p>
- <source><![CDATA[
- <map:match pattern="*.html">
- <map:act type="extended-resource-exists"
- src="docs/{1}.html"
- <map:select type="parameter">
- <map:parameter name="parameter-selector-test" value="{resource-exists}"/>
- <map:when test="true">
- <!-- resource exists, access the matched URI via {../1} -->
- <map:generate src="docs/{../1}.xml"/>
- </map:when>
- <map:otherwise>
- <!-- resource does not exist, serve default page -->
- <map:generate src="docs/index.xml"/>
- </map:otherwise>
- </map:select>
- >
- ...
- </map:act>
- </map:match>
- ]]></source>
-
- <s2 title="Sitemap pipeline examples">
- <p>
- The snippet below presents the basic usage of <code>ExtendedResourceExistsAction</code>.
- Note that <code>ExtendedResourceExistsAction</code> creates an
- objectMap having exactly on entry named <code>resource-exists</code>. This entry
- may have value <code>true</code>, or <code>false</code>.
- </p>
- <p>
- Thus accessing the wildcard result use <code>{../1}</code>, instead of the
- simple <code>{1}</code>.
- </p>
- <source><![CDATA[
- <map:match pattern="*.html">
- <map:action type="extended-resource-exists"
- src="docs/{1}.xml">
- ...
- </map:action>
- </map:match>
- ]]></source>
- </s2>
-
- <s2 title="Sitemap component configuration example">
- <p>
- The snippet below confiures the <code>ExtendedResourceExistsAction</code>
- component in the sitemap's components section.
- </p>
- <source><![CDATA[
- <map:actions...
- <map:action name="extended-resource-exists"
- src="org.apache.cocoon.acting.ExtendedResourceExistsAction"
- logger="sitemap.action.resource-exists"
- />
- ...
- </map:actions>
- ...
- ]]></source>
- </s2>
- <s2 title="Configuration">
- <p>
- The <code>ExtendedResourceExistsAction</code> has no configurational options.
- </p>
- </s2>
- <s2 title="Setup">
- <p>
- Setting up the <code>ExtendedResourceExistsAction</code> needs
- only specifying the resource by setting the <code>src</code> attribute
- of the <code><map:act></code> element. This way
- <code>ExtendedResourceExistsAction</code> knows what resource to test
- for existance.
- </p>
- <p>
- The <code>ExtendedResourceExistsAction</code> accepts optionally a the
- sitemap parameter <code>url</code>, overriding the value presented
- by the <code>src</code> attribute.
- </p>
- </s2>
- <s2 title="Effect on Object Model and Sitemap Parameters">
- <p>
- The <code>ExtendedResourceExistsAction</code> creates alway an
- objectMap table, and always sets an <code>resource-exists</code>
- entry in this table.
- </p>
- </s2>
- </s1>
- <s1 title="Bugs/Caveats">
- <p>
- The entry name <code>resource-exists</code> of the objectMap table entry
- is fixed, it is not configurable.
- </p>
- <p>
- The <code>ExtendedResourceExistsAction</code> checks the existance of a resource
- by resolving the name of the resource, and trying to get an <code>InputStream</code>
- of this resource, accessing remote resources may take some time before
- it is obvious that the resource is, or is not available.
- </p>
- </s1>
- <s1 title="History">
- <p>
- 01-05-02: initial creation
- </p>
- </s1>
- <s1 title="See also">
- <p>
- Cocoon has already an <code>ResourceExistsAction</code>. This action
- creates an objectMap, only in case of resource existance.
- </p>
- </s1>
- </body>
- </document>
-
-