haul 2002/12/04 01:51:09
Modified: src/documentation/xdocs/userdocs/concepts Tag:
cocoon_2_0_3_branch modules.xml
Log:
remove obsolete note
Revision Changes Path
No revision
No revision
1.1.2.5 +159 -131
xml-cocoon2/src/documentation/xdocs/userdocs/concepts/modules.xml
Index: modules.xml
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/documentation/xdocs/userdocs/concepts/modules.xml,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -r1.1.2.4 -r1.1.2.5
--- modules.xml 18 Sep 2002 16:28:10 -0000 1.1.2.4
+++ modules.xml 4 Dec 2002 09:51:09 -0000 1.1.2.5
@@ -12,73 +12,73 @@
<body>
- <s1 title="Introduction">
- <p>
- Many sitemap components serve a purpose regardless how the input is
- obtained. Still, to provide a wide range of components to quickly get
- you up to speed, variants for different inputs exist. Modules allow to
- create generic components and plug-in input or output later.
- </p>
- <p>
- This document will explain how modules work and how to make use of
- them. If you plan on writing your own modules, it is highly recommended
- to read <fork
- href="http://jakarta.apache.org/avalon/developing/index.html">
- Developing With Apache Avalon</fork>. It is a very good description
- of the underlying rationale and principles.
- </p>
- </s1>
- <s1 title="Types of Modules">
- <p>
- Currently, three different types of modules exist: Input modules
- provide means to enumerate parameters and to retrieve them, output
- modules allow storing of data and exhibit transaction like semantics,
- database modules encapsulate different mechanisms for auto increment
- columns of various database management systems. Please refer to the
- javadoc documentation of these interfaces.
- </p>
- <p>
- Input modules are modelled after request parameters. The main
- difference is, that every method takes two additional arguments, the
- request object and a configuration object. The configuration object is
- used to allow arbitrarily complex instructions for the input module.
- Apart from that, input modules are more or less a drop-in replacement.
- </p>
- <p>
- Output modules are again very similar to using request
- attributes. Basically, they provide a method to set an attribute to a
- value. Again, a request and a configuration object is the only change
- to request attributes. A fundamental difference is, however, that
- output modules should exhibit transactional behaviour. Thus setting an
- attributes implicitly starts a transaction that must be ended by
- calling rollback or commit. Only if the transaction is completed by
- calling commit, the values set should be visible. This is needed
- e.g. by the database actions.
- </p>
- <p>
- Database modules, actually named AutoIncrementModule, contains
- configuration information how to retrieve a value for an auto increment
- column. It is possible to obtain the value before inserting a row,
- while inserting as part of the SQL or after successful insert. If the
- value is obtained before inserting, it can be generated
- externally. Currently, supported database management systems include
- HSQL, Informix, MySQL, and querying the database for the current max
- value.
- </p>
- </s1>
- <s1 title="Using modules">
- <p>
- Using any of these modules requires a two step setup process. Step one
- has already been done for your for all modules that come with Apache
- Cocoon. Exception to this rule are the auto increment modules: only the
- HSQL module is already setup.
- </p>
- <s2 title="Step 1: Making a new module know to Apache Cocoon">
- <p>
- Like other core components of Apache Cocoon, modules are declared in
- <code>cocoon.xconf</code>. There are already too many to list here.
- </p>
- <source>
+ <s1 title="Introduction">
+ <p>
+ Many sitemap components serve a purpose regardless how the input is
+ obtained. Still, to provide a wide range of components to quickly get
+ you up to speed, variants for different inputs exist. Modules allow to
+ create generic components and plug-in input or output later.
+ </p>
+ <p>
+ This document will explain how modules work and how to make use of
+ them. If you plan on writing your own modules, it is highly recommended
+ to read <fork
+ href="http://jakarta.apache.org/avalon/developing/index.html">
+ Developing With Apache Avalon</fork>. It is a very good description
+ of the underlying rationale and principles.
+ </p>
+ </s1>
+ <s1 title="Types of Modules">
+ <p>
+ Currently, three different types of modules exist: Input modules
+ provide means to enumerate parameters and to retrieve them, output
+ modules allow storing of data and exhibit transaction like semantics,
+ database modules encapsulate different mechanisms for auto increment
+ columns of various database management systems. Please refer to the
+ javadoc documentation of these interfaces.
+ </p>
+ <p>
+ Input modules are modelled after request parameters. The main
+ difference is, that every method takes two additional arguments, the
+ request object and a configuration object. The configuration object is
+ used to allow arbitrarily complex instructions for the input module.
+ Apart from that, input modules are more or less a drop-in replacement.
+ </p>
+ <p>
+ Output modules are again very similar to using request
+ attributes. Basically, they provide a method to set an attribute to a
+ value. Again, a request and a configuration object is the only change
+ to request attributes. A fundamental difference is, however, that
+ output modules should exhibit transactional behaviour. Thus setting an
+ attributes implicitly starts a transaction that must be ended by
+ calling rollback or commit. Only if the transaction is completed by
+ calling commit, the values set should be visible. This is needed
+ e.g. by the database actions.
+ </p>
+ <p>
+ Database modules, actually named AutoIncrementModule, contains
+ configuration information how to retrieve a value for an auto increment
+ column. It is possible to obtain the value before inserting a row,
+ while inserting as part of the SQL or after successful insert. If the
+ value is obtained before inserting, it can be generated
+ externally. Currently, supported database management systems include
+ HSQL, Informix, MySQL, and querying the database for the current max
+ value.
+ </p>
+ </s1>
+ <s1 title="Using modules">
+ <p>
+ Using any of these modules requires a two step setup process. Step one
+ has already been done for your for all modules that come with Apache
+ Cocoon. Exception to this rule are the auto increment modules: only the
+ HSQL module is already setup.
+ </p>
+ <s2 title="Step 1: Making a new module know to Apache Cocoon">
+ <p>
+ Like other core components of Apache Cocoon, modules are declared in
+ <code>cocoon.xconf</code>. There are already too many to list here.
+ </p>
+ <source>
<![CDATA[
<input-modules>
<component-instance name="request"
@@ -97,11 +97,11 @@
class="org.apache.cocoon.components.modules.input.DateInputModule"/>
<component-instance name="defaults"
class="org.apache.cocoon.components.modules.input.DefaultsMetaModule">
- <input-module name="request"/>
- <values>
- <skin>defaultSkin</skin>
- <base-url>http://localhost:8080/cocoon</base-url>
- </values>
+ <input-module name="request"/>
+ <values>
+ <skin>defaultSkin</skin>
+ <base-url>http://localhost:8080/cocoon</base-url>
+ </values>
</component-instance>
</input-modules>
@@ -125,62 +125,90 @@
-->
</autoincrement-modules>
]]>
- </source>
- <p>
- The above snippet declares a number of modules. After this, the
- modules are accessible through the given name. Thus, when an
- <code>input-module</code> is expected, it is sufficient to give the
- name of a module, like <code>header</code>.
- </p>
- <p>
- For the auto increment modules only one is declared as the name
- <code>"auto"</code> has special meaning to the modular database
- actions. If more than one is needed at the same time, the
- configuration of the database actions needs to explicitly specify
- which one to use.
- </p>
- </s2>
- <s2 title="Step 2: Use it">
- <p>
- Two alternatives for using modules exist:
- </p>
- <s3 title="Step 2a: Use it as sitemap variable">
- <p>
- Input modules can be used in a sitemap almost like a sitemap
- variable. If the variable name contains a colon (":"), the
- preceeding string is used as the name of the module to use and
the
- trailing string is passed to the module. The expression is
replaced
- with the string value returned from the module.
- </p>
- <source>
+ </source>
+ <p>
+ The above snippet declares a number of modules. After this, the
+ modules are accessible through the given name. Thus, when an
+ <code>input-module</code> is expected, it is sufficient to give the
+ name of a module, like <code>header</code>.
+ </p>
+ <p>
+ For the auto increment modules only one is declared as the name
+ <code>"auto"</code> has special meaning to the modular database
+ actions. If more than one is needed at the same time, the
+ configuration of the database actions needs to explicitly specify
+ which one to use.
+ </p>
+ </s2>
+ <s2 title="Step 2: Use it">
+ <p>
+ The following alternatives for using modules exist:
+ </p>
+ <s3 title="Step 2a: Use it as sitemap variable">
+ <p>
+ Input modules can be used in a sitemap almost like a sitemap
+ variable. If the variable name contains a colon (":"), the
+ preceeding string is used as the name of the module to use and the
+ trailing string is passed to the module. The expression is replaced
+ with the string value returned from the module.
+ </p>
+ <source>
<![CDATA[
<map:transform src="resources/stylesheets/{../skin}.xsl"/>
]]>
- </source>
- <p>
- The above example uses the variable <code>skin</code> declared
- e.g. by an action for the stylesheet to apply to the page. The
- example below uses an input module instead. The way this
module was
- declared above allows to override the skin with a request
parameter
- named "skin".
- </p>
- <note>
- The above sitemap syntax is only available with the 2.1-dev
version
- of Apache Cocoon.
- </note>
- <source>
+ </source>
+ <p>
+ The above example uses the variable <code>skin</code> declared
+ e.g. by an action for the stylesheet to apply to the page. The
+ example below uses an input module instead. The way this module was
+ declared above allows to override the skin with a request parameter
+ named "skin".
+ </p>
+ <source>
<![CDATA[
<map:transform src="resources/stylesheets/{default:skin}.xsl"/>
]]>
- </source>
- </s3>
- <s3 title="Step 2b: Have sitemap components use a module">
- <p>
- This depends on the component that is to be used. As an
example the
- <code>CachingWildcardMatcher</code> requires to set the
- <code>input-module</code> on declaration.
- </p>
- <source>
+ </source>
+ </s3>
+ <s3 title="Step 2b: Use it on an XSP">
+ <p>
+ The input logicsheet allows easy use of InputModules from an
+ XSP. Currently, it provides tags for getting one value, an
+ array of values, and an Iterator for a Collection of
+ parameter names.
+ </p>
+ <source>
+<![CDATA[
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<xsp:page language="java"
+ xmlns:xsp="http://apache.org/xsp"
+ xmlns:input="http://apache.org/cocoon/xsp/input/1.0">
+
+<page>
+
+ <title>Testing InputModules</title>
+
+ <p>
+ Parameter name=<input:get-parameter module="request-param"
+ as="string" name="module" default="John Doe"/>;
+ </p>
+ <p>
+ Parameter cars=<input:get-parameter-values module="request-param"
+ as="xml" name="car"/>;
+ </p>
+ </page>
+</xsp:page>
+]]>
+ </source>
+ </s3>
+ <s3 title="Step 2c: Have sitemap components use a module">
+ <p>
+ This depends on the component that is to be used. As an example the
+ <code>CachingWildcardMatcher</code> requires to set the
+ <code>input-module</code> on declaration.
+ </p>
+ <source>
<![CDATA[
<map:matchers default="wildcard">
<map:matcher name="cached-uri"
@@ -189,15 +217,15 @@
</map:matcher>
</map:matchers>
]]>
- </source>
- <p>
- By replacing the input module name with any of the other
declared
- input modules, this matcher can be used to match e.g. on
session
- attributes, request headers or even dates!
- </p>
- </s3>
- </s2>
- </s1>
+ </source>
+ <p>
+ By replacing the input module name with any of the other declared
+ input modules, this matcher can be used to match e.g. on session
+ attributes, request headers or even dates!
+ </p>
+ </s3>
+ </s2>
+ </s1>
</body>
</document>
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]