Author: buildbot
Date: Mon Dec 15 14:20:11 2014
New Revision: 932838

Log:
Production update by buildbot for tapestry

Added:
    websites/production/tapestry/content/parameter-type-coercion.html
    websites/production/tapestry/content/type-coercion.data/
    websites/production/tapestry/content/type-coercion.data/type-coercer.png   
(with props)
Modified:
    websites/production/tapestry/content/cache/main.pageCache
    websites/production/tapestry/content/component-parameters.html
    websites/production/tapestry/content/redirects.html
    websites/production/tapestry/content/type-coercion.html
    websites/production/tapestry/content/typecoercer-service.html

Modified: websites/production/tapestry/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/tapestry/content/component-parameters.html
==============================================================================
--- websites/production/tapestry/content/component-parameters.html (original)
+++ websites/production/tapestry/content/component-parameters.html Mon Dec 15 
14:20:11 2014
@@ -66,7 +66,8 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><div class="navmenu" style="float:right; 
background:#eee; margin:3px; padding:3px">
+<div id="ConfluenceContent"><div class="navmenu" style="float:right; 
background:white; margin:3px; padding:3px">
+<div class="panel" style="border-width: 1px;"><div class="panelContent">
 <h3>Related Articles</h3>
 <ul class="content-by-label"><li>
             <div>
@@ -150,19 +151,22 @@
                 
                             </div>
         </li></ul>
-</div><h1 id="ComponentParameters-ComponentParameters">Component 
Parameters</h1><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1418617260252 {padding: 0px;}
-div.rbtoc1418617260252 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1418617260252 li {margin-left: 0px;padding-left: 0px;}
+</div></div>
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1418617260252">
+<p><strong>Contents</strong></p>
+<style type="text/css">/*<![CDATA[*/
+div.rbtoc1418653179986 {padding: 0px;}
+div.rbtoc1418653179986 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1418653179986 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style><div class="toc-macro rbtoc1418653179986">
 <ul class="toc-indentation"><li>Related Articles</li></ul>
-<ul><li><a shape="rect" 
href="#ComponentParameters-ComponentParameters">Component 
Parameters</a></li><li><a shape="rect" 
href="#ComponentParameters-ParameterBindings">Parameter Bindings</a></li><li><a 
shape="rect" href="#ComponentParameters-BindingExpressions">Binding 
Expressions</a>
+<ul><li><a shape="rect" 
href="#ComponentParameters-ParameterBindings">Parameter Bindings</a></li><li><a 
shape="rect" href="#ComponentParameters-BindingExpressions">Binding 
Expressions</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#ComponentParameters-RenderVariables:Bindings">Render Variables: 
Bindings</a></li><li><a shape="rect" 
href="#ComponentParameters-Property:Bindings">Property: Bindings</a></li><li><a 
shape="rect" href="#ComponentParameters-Validate:Bindings">Validate: 
Bindings</a></li><li><a shape="rect" 
href="#ComponentParameters-Translate:Bindings">Translate: 
Bindings</a></li><li><a shape="rect" 
href="#ComponentParameters-Asset:Bindings">Asset: Bindings</a></li><li><a 
shape="rect" href="#ComponentParameters-Context:Bindings">Context: 
Bindings</a></li></ul>
 </li><li><a shape="rect" 
href="#ComponentParameters-@Parameterannotation">@Parameter annotation</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#ComponentParameters-RequiredParameters">Required 
Parameters</a></li><li><a shape="rect" 
href="#ComponentParameters-OptionalParameters">Optional 
Parameters</a></li><li><a shape="rect" 
href="#ComponentParameters-ParameterBindingDefaults">Parameter Binding 
Defaults</a></li><li><a shape="rect" 
href="#ComponentParameters-ParameterCaching">Parameter Caching</a></li></ul>
 </li><li><a shape="rect" 
href="#ComponentParameters-Don'tusethe${...}syntax!">Don't use the ${...} 
syntax!</a></li><li><a shape="rect" 
href="#ComponentParameters-InformalParameters">Informal 
Parameters</a></li><li><a shape="rect" 
href="#ComponentParameters-ParametersAreBi-Directional">Parameters Are 
Bi-Directional</a></li><li><a shape="rect" 
href="#ComponentParameters-InheritedParameterBindings">Inherited Parameter 
Bindings</a></li><li><a shape="rect" 
href="#ComponentParameters-ComputedParameterBindingDefaults">Computed Parameter 
Binding Defaults</a></li><li><a shape="rect" 
href="#ComponentParameters-UnboundParameters">Unbound Parameters</a></li><li><a 
shape="rect" href="#ComponentParameters-ParameterTypeCoercion">Parameter Type 
Coercion</a></li><li><a shape="rect" 
href="#ComponentParameters-ParameterNames">Parameter Names</a></li><li><a 
shape="rect" href="#ComponentParameters-DeterminingifBound">Determining if 
Bound</a></li><li><a shape="rect" href="#ComponentParameters-PublishingP
 arameters">Publishing Parameters</a></li></ul>
-</div><p><strong>Component parameters</strong> are the primary means for a 
component instance and its container to communicate with each other. Parameters 
are used to <em>configure</em> component instances.</p><p>In the following 
example, <code>page</code> is a parameter of the <code>pagelink</code> 
component. The page parameter tells the pagelink component which page to go to 
when the user clicks on the rendered hyperlink:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p><strong>Component parameters</strong> are the primary means for 
a component instance and its container to communicate with each other. 
Parameters are used to <em>configure</em> component instances.</p><p>In the 
following example, <code>page</code> is a parameter of the 
<code>pagelink</code> component. The page parameter tells the pagelink 
component which page to go to when the user clicks on the rendered 
hyperlink:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;html 
xmlns:t=&quot;http://tapestry.apache.org/schema/tapestry_5_3.xsd&quot;&gt;
     &lt;t:pagelink page=&quot;Index&quot;&gt;Go Home&lt;/t:pagelink&gt;
 &lt;/html&gt;
@@ -226,7 +230,7 @@ public class Count
     &lt;/p&gt;
 &lt;/html&gt;
 ]]></script>
-</div></div><p>The end attribute is used to <em>bind</em> the end parameter of 
the Count component. Here, it is being bound to the string value "3", which is 
automatically <a shape="rect" href="type-coercion.html">coerced</a> by Tapestry 
into the int value, 3.</p><p>Any number of parameters may be bound this 
way.</p><p>Component parameters may also be bound using the @<a shape="rect" 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Component.html";>Component</a>
 annotation inside the component class. (Where conflicts occur, the parameters 
bound using the Component annotation will take precedence over parameter 
bindings in the template.)</p><p><span class="confluence-anchor-link" 
id="ComponentParameters-binding-expressions"></span></p><h1 
id="ComponentParameters-BindingExpressions">Binding Expressions</h1><p>The 
value inside the template, "3" in the previous example, is a <em>binding 
expression</em>.</p><p>By placing a prefix in f
 ront of the value, you can change how Tapestry interprets the remainder of the 
expression (the part after the colon):</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><strong>Prefix</strong></p></th><th colspan="1" 
rowspan="1" 
class="confluenceTh"><p><strong>Description</strong></p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>asset:</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The relative path to an asset file (which 
must exist)</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>block:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The id of a block within the 
template</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>component:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The id of another component within the same 
template</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>context:</p></td><t
 d colspan="1" rowspan="1" class="confluenceTd"><p>Context asset: path from 
context root</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>literal:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>A literal string</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>nullfieldstrategy:</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Used to locate a pre-defined <a 
shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/NullFieldStrategy.html";>NullFieldStrategy</a></p></td></tr><tr><td
 colspan="1" rowspan="1" class="confluenceTd"><p>message:</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Retrieves a string from the 
component's <a shape="rect" 
href="#ComponentParameters-localization.html">message 
catalog</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>prop:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>A <a shape="rect" href="prop
 erty-expressions.html">property expression</a> to read or 
update</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>symbol:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Used to read one of your <a shape="rect" 
href="symbols.html">symbols</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>translate:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The name of a configured 
translator</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>validate:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>A <em>validator specification</em> used to create some 
number of field validators</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>var:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Allows a render variable of the component to be read or 
updated</p></td></tr></tbody></table></div><p>Most of these binding prefixes 
allow parameters to be bound to read-only values; for inst
 ance a parameter bound to "message:some-key" will see the message for 
"some-key" from its container's message catalog in the field. If the component 
tries to update the parameter (by setting the value of the field), a runtime 
exception will be thrown to indicate that the value is read-only.</p><p>Only 
prop: and var: binding prefixes are updateable (but you must <em>not</em> use 
the ${..} syntax here; see the <a shape="rect" 
href="#ComponentParameters-dontUseSyntax">warning below</a>).</p><p>Each 
parameter has a default prefix, defined by the component, that is used when the 
prefix is not provided. The most common are "literal:" and "prop:".</p><p>A 
<em>special prefix</em>, "inherit:", is used to support <a shape="rect" 
href="#ComponentParameters-InheritedParameterBindings">Inherited Parameter 
Bindings</a>.</p><h3 id="ComponentParameters-RenderVariables:Bindings">Render 
Variables: Bindings</h3><p>Components can have any number of <em>render 
variables</em>. Render variables are named 
 values with no specific type (they are ultimately stored in a Map). Render 
variables are useful for holding simple values, such as loop indices, that need 
to be passed from one component to another.</p><p>For example, the following 
template code:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+</div></div><p>The end attribute is used to <em>bind</em> the end parameter of 
the Count component. Here, it is being bound to the string value "3", which is 
automatically <a shape="rect" href="parameter-type-coercion.html">coerced</a> 
by Tapestry into the int value, 3.</p><p>Any number of parameters may be bound 
this way.</p><p>Component parameters may also be bound using the @<a 
shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Component.html";>Component</a>
 annotation inside the component class. (Where conflicts occur, the parameters 
bound using the Component annotation will take precedence over parameter 
bindings in the template.)</p><p><span class="confluence-anchor-link" 
id="ComponentParameters-binding-expressions"></span></p><h1 
id="ComponentParameters-BindingExpressions">Binding Expressions</h1><p>The 
value inside the template, "3" in the previous example, is a <em>binding 
expression</em>.</p><p>By placing a p
 refix in front of the value, you can change how Tapestry interprets the 
remainder of the expression (the part after the colon):</p><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p><strong>Prefix</strong></p></th><th 
colspan="1" rowspan="1" 
class="confluenceTh"><p><strong>Description</strong></p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>asset:</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The relative path to an asset file (which 
must exist)</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>block:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The id of a block within the 
template</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>component:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The id of another component within the same 
template</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>context:<
 /p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Context asset: 
path from context root</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>literal:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>A literal string</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>nullfieldstrategy:</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Used to locate a pre-defined <a 
shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/NullFieldStrategy.html";>NullFieldStrategy</a></p></td></tr><tr><td
 colspan="1" rowspan="1" class="confluenceTd"><p>message:</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Retrieves a string from the 
component's <a shape="rect" 
href="#ComponentParameters-localization.html">message 
catalog</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>prop:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>A <a shape="rect" 
 href="property-expressions.html">property expression</a> to read or 
update</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>symbol:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Used to read one of your <a shape="rect" 
href="symbols.html">symbols</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>translate:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The name of a configured 
translator</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>validate:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>A <em>validator specification</em> used to create some 
number of field validators</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>var:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Allows a render variable of the component to be read or 
updated</p></td></tr></tbody></table></div><p>Most of these binding prefixes 
allow parameters to be bound to read-only values
 ; for instance a parameter bound to "message:some-key" will see the message 
for "some-key" from its container's message catalog in the field. If the 
component tries to update the parameter (by setting the value of the field), a 
runtime exception will be thrown to indicate that the value is 
read-only.</p><p>Only prop: and var: binding prefixes are updateable (but you 
must <em>not</em> use the ${..} syntax here; see the <a shape="rect" 
href="#ComponentParameters-dontUseSyntax">warning below</a>).</p><p>Each 
parameter has a default prefix, defined by the component, that is used when the 
prefix is not provided. The most common are "literal:" and "prop:".</p><p>A 
<em>special prefix</em>, "inherit:", is used to support <a shape="rect" 
href="#ComponentParameters-InheritedParameterBindings">Inherited Parameter 
Bindings</a>.</p><h3 id="ComponentParameters-RenderVariables:Bindings">Render 
Variables: Bindings</h3><p>Components can have any number of <em>render 
variables</em>. Render variables 
 are named values with no specific type (they are ultimately stored in a Map). 
Render variables are useful for holding simple values, such as loop indices, 
that need to be passed from one component to another.</p><p>For example, the 
following template code:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;ul&gt;
     &lt;li t:type=&quot;loop&quot; source=&quot;1..10&quot; 
value=&quot;index&quot;&gt;${index}&lt;/li&gt;
 &lt;/ul&gt;
@@ -361,7 +365,7 @@ public class Title {
     return String.format(&quot;Maximum field length is %d.&quot;, maxLength);
   }
 ]]></script>
-</div></div><p>This form is more like using the "literal:" binding prefix, 
except that the literal value is computed by the defaultMessage() 
method.</p><p>Obviously, this is a lot more work than simply specifying a 
default value as part of the @Parameter annotation. In the few real cases where 
this is approach is used, the default binding method will usually deduce a 
proper binding, typically in terms of the component's id. For example, the 
TextField component will deduce a value parameter that binds to a property of 
its container with the same name.</p><p>A default binding method will 
<em>only</em> be invoked if the @Parameter annotation does not provide a 
default value.</p><h1 id="ComponentParameters-UnboundParameters">Unbound 
Parameters</h1><p>If a parameter is not bound (and is optional), then the value 
may be read or <em>updated</em> at any time.</p><p>Updates to unbound 
parameters cause no side effects. In the first example, the value parameter of 
the Count component is not bo
 und, and this is perfectly valid.</p><p>Note: updates to such fields are 
temporary; when the component <em>finishes rendering</em>, the field will 
revert to its default value.</p><p><strong>TODO: This seems contradictory. What 
does it mean to update an unbound component parameter when the component is not 
rendering?</strong></p><h1 
id="ComponentParameters-ParameterTypeCoercion">Parameter Type 
Coercion</h1><p>Tapestry includes a mechanism for <a shape="rect" 
href="type-coercion.html">coercing types automatically</a>. Most often, this is 
used to convert literal strings into appropriate values, but in many cases, 
more complex conversions will occur.</p><h1 
id="ComponentParameters-ParameterNames">Parameter Names</h1><p>By default, 
Tapestry converts from the field name to the parameter name, by stripping off 
leading "$" and "_" characters.</p><p>This can be overridden using the name() 
attribute of the @Parameter annotation.</p><h1 
id="ComponentParameters-DeterminingifBound">Determining i
 f Bound</h1><p>In rare cases, you may want to take different behaviors based 
on whether a parameter is bound or not. This can be accomplished by querying 
the component's resources, which can be <a shape="rect" 
href="injection.html">injected</a> into the component using the @<a 
shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Inject.html";>Inject</a>
 annotation:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+</div></div><p>This form is more like using the "literal:" binding prefix, 
except that the literal value is computed by the defaultMessage() 
method.</p><p>Obviously, this is a lot more work than simply specifying a 
default value as part of the @Parameter annotation. In the few real cases where 
this is approach is used, the default binding method will usually deduce a 
proper binding, typically in terms of the component's id. For example, the 
TextField component will deduce a value parameter that binds to a property of 
its container with the same name.</p><p>A default binding method will 
<em>only</em> be invoked if the @Parameter annotation does not provide a 
default value.</p><h1 id="ComponentParameters-UnboundParameters">Unbound 
Parameters</h1><p>If a parameter is not bound (and is optional), then the value 
may be read or <em>updated</em> at any time.</p><p>Updates to unbound 
parameters cause no side effects. In the first example, the value parameter of 
the Count component is not bo
 und, and this is perfectly valid.</p><p>Note: updates to such fields are 
temporary; when the component <em>finishes rendering</em>, the field will 
revert to its default value.</p><h1 
id="ComponentParameters-ParameterTypeCoercion">Parameter Type 
Coercion</h1><p>Main Article: <a shape="rect" 
href="parameter-type-coercion.html">Parameter Type Coercion</a></p><p>Tapestry 
includes a mechanism for <span class="confluence-link">coercing types 
automatically</span>. Most often, this is used to convert literal strings into 
appropriate values, but in many cases, more complex conversions will occur. 
This mechanism is used for component parameters, such as when an outer 
component passes a literal string to an inner component that is expecting an 
integer.</p><p>You can easily <a shape="rect" 
href="type-coercion.html">contribute new coercions</a> for your own 
purposes.</p><h1 id="ComponentParameters-ParameterNames">Parameter 
Names</h1><p>By default, Tapestry converts from the field name to the par
 ameter name, by stripping off leading "$" and "_" characters.</p><p>This can 
be overridden using the name() attribute of the @Parameter annotation.</p><h1 
id="ComponentParameters-DeterminingifBound">Determining if Bound</h1><p>In rare 
cases, you may want to take different behaviors based on whether a parameter is 
bound or not. This can be accomplished by querying the component's resources, 
which can be <a shape="rect" href="injection.html">injected</a> into the 
component using the @<a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Inject.html";>Inject</a>
 annotation:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[public class MyComponent
 {
   @Parameter

Added: websites/production/tapestry/content/parameter-type-coercion.html
==============================================================================
--- websites/production/tapestry/content/parameter-type-coercion.html (added)
+++ websites/production/tapestry/content/parameter-type-coercion.html Mon Dec 
15 14:20:11 2014
@@ -0,0 +1,170 @@
+<!DOCTYPE html>
+       
+       <!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+<html>
+<head>
+  <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+  <meta http-equiv="x-ua-compatible" content="IE=9">
+  <title>
+    Parameter Type Coercion -- Apache Tapestry
+  </title>
+  <link type="text/css" rel="stylesheet" href="/resources/space.css">
+
+    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' 
type='text/css' />
+  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' 
type='text/css' />
+  <script src='/resources/highlighter/scripts/shCore.js' 
type='text/javascript'></script>
+  <script src='/resources/highlighter/scripts/shBrushJava.js' 
type='text/javascript'></script>
+  <script src='/resources/highlighter/scripts/shBrushXml.js' 
type='text/javascript'></script>
+  <script src='/resources/highlighter/scripts/shBrushPlain.js' 
type='text/javascript'></script>
+  <script type="text/javascript">
+  SyntaxHighlighter.defaults['toolbar'] = false;
+  SyntaxHighlighter.all();
+  </script>
+
+  <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
+
+</head>
+<body>
+  <div class="wrapper bs">
+
+<div id="navigation"><div class="nav">
+<ul class="alternate"><li><a shape="rect" 
href="index.html">Home</a></li><li><a shape="rect" 
href="getting-started.html">Getting Started</a></li><li><a shape="rect" 
href="documentation.html">Documentation</a></li><li><a shape="rect" 
href="download.html">Download</a></li><li><a shape="rect" 
href="about.html">About</a></li><li><a shape="rect" 
href="community.html">Community</a></li><li><a shape="rect" 
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a 
shape="rect" class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
 shape="rect" class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul>
+</div></div>
+
+<div id="top">
+<div id="smallbanner"><div class="searchbox" style="float:right;margin: .3em 
1em .1em 1em"><span style="color: #999; font-size: 90%">Tapestry docs, issues, 
wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
+  <input type="text" name="q">
+  <input type="submit" value="Search">
+</form>
+
+</div><div class="emblem" style="float:left"><p><a shape="rect" 
href="index.html"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Parameter Type Coercion</h1></div></div>
+<div class="clearer"></div>
+</div>
+
+<div class="clearer"></div>
+
+  <div id="breadcrumbs">
+        <a href="index.html">Apache Tapestry</a>&nbsp;&gt;&nbsp;<a 
href="documentation.html">Documentation</a>&nbsp;&gt;&nbsp;<a 
href="user-guide.html">User Guide</a>&nbsp;&gt;&nbsp;<a 
href="parameter-type-coercion.html">Parameter Type Coercion</a>
+    <a class="edit" title="Edit this page (requires approval -- just ask on 
the mailing list)" 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=22872139";>edit</a>
+  </div>
+
+<div id="content">
+<div id="ConfluenceContent"><p><strong style="text-align: justify;">Type 
Coercion</strong><span style="color: rgb(0,0,0);">&#160;is the conversion of 
one type of object to a new object of a different type with similar content. 
Tapestry frequently must coerce objects from one type to another. A common 
example is the coercion of a string into an integer or a 
double.</span></p><p>See&#160;<a shape="rect" href="type-coercion.html">Type 
Coercer Service</a> for the list of build-in coercions.</p><h2 
id="ParameterTypeCoercion-ParameterTypeCoercions">Parameter Type 
Coercions</h2><div class="navmenu" style="float:right; background:white; 
margin:3px; padding:3px">
+<div class="navmenu" style="float:right; background:#eee; margin:3px; 
padding:3px"></div>
+<h3>Related Articles</h3>
+<ul class="content-by-label"><li>
+            <div>
+                    <span class="icon icon-page" title="Page">Page:</span>     
       </div>
+
+            <div class="details">
+                            <a shape="rect" 
href="supporting-informal-parameters.html">Supporting Informal Parameters</a>
+                    
+                
+                            </div>
+        </li><li>
+            <div>
+                    <span class="icon icon-page" title="Page">Page:</span>     
       </div>
+
+            <div class="details">
+                            <a shape="rect" 
href="enum-parameter-recipe.html">Enum Parameter Recipe</a>
+                    
+                
+                            </div>
+        </li><li>
+            <div>
+                    <span class="icon icon-page" title="Page">Page:</span>     
       </div>
+
+            <div class="details">
+                            <a shape="rect" 
href="default-parameter.html">Default Parameter</a>
+                    
+                
+                            </div>
+        </li><li>
+            <div>
+                    <span class="icon icon-page" title="Page">Page:</span>     
       </div>
+
+            <div class="details">
+                            <a shape="rect" 
href="parameter-type-coercion.html">Parameter Type Coercion</a>
+                    
+                
+                            </div>
+        </li><li>
+            <div>
+                    <span class="icon icon-page" title="Page">Page:</span>     
       </div>
+
+            <div class="details">
+                            <a shape="rect" href="type-coercion.html">Type 
Coercion</a>
+                    
+                
+                            </div>
+        </li><li>
+            <div>
+                    <span class="icon icon-page" title="Page">Page:</span>     
       </div>
+
+            <div class="details">
+                            <a shape="rect" 
href="component-parameters.html">Component Parameters</a>
+                    
+                
+                            </div>
+        </li></ul>
+</div><p>Tapestry automatically handles type coercions for <a shape="rect" 
href="component-parameters.html">component parameters</a>.</p><p>Type coercions 
occur when a value passed into a parameter (as bound in a template or in an 
annotation) does not match the type of the parameter.</p><p>For example, 
consider the Count component:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[public class Count
+{
+    @Parameter
+    private int start = 1;
+
+    @Parameter(required = true)
+    private int end;
+
+    @Parameter
+    private int value;
+    
+    . . .
+]]></script>
+</div></div><p>Here, the type of all three parameters is 
<code>int</code>.</p><p>However, it is likely that the component will be used 
as so:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[  Merry Christmas: &lt;t:count 
end=&quot;3&quot;&gt; Ho! &lt;/t:count&gt;
+]]></script>
+</div></div><p>A bare whole number is interpreted by the prop binding prefix 
as a <code>long</code>. So this is the <em>long</em> value 3.</p><p>Tapestry 
will automatically coerce the bound value, a <code>long</code>, to the 
parameter's type, <code>int</code>. This may be a lossy coercion (if the 
<code>long</code> represents a number larger than can be stored in an 
<code>int</code>).</p><h2 
id="ParameterTypeCoercion-TypeCoercerService">TypeCoercer Service</h2><p>Main 
Article: <a shape="rect" href="type-coercion.html">Type Coercion</a></p><p>The 
TypeCoercer service is responsible for this type coercion. This service is part 
of the <a shape="rect" href="ioc.html">tapestry-ioc</a> module. The service is 
quite extensible, allowing for new types and coercions to be added easily. The 
TapestryModule contributes a few additional coercions into the TypeCoercer 
service.</p></div>
+</div>
+
+<div class="clearer"></div>
+<div id="footer">
+<div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache feather 
logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.<br clear="none">
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
+</div>
+               <div id="comments_thread"></div>
+               <script type="text/javascript" 
src="https://comments.apache.org/show_comments.lua?site=tapestry&amp;page=http://tapestry.apache.org/parameter-type-coercion.html";
 async="true">
+               </script>
+               <noscript>
+               <iframe width="100%" height="500" 
src="https://comments.apache.org/iframe.lua?site=tapestry&amp;page=http://tapestry.apache.org/parameter-type-coercion.html";></iframe>
+               </noscript>
+  </div>
+</body>
+</html>

Modified: websites/production/tapestry/content/redirects.html
==============================================================================
--- websites/production/tapestry/content/redirects.html (original)
+++ websites/production/tapestry/content/redirects.html Mon Dec 15 14:20:11 2014
@@ -56,7 +56,7 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><p>These pages only exist to prevent broken links 
after a page has been renamed. Each page merely redirects to another 
page.</p><p></p><ul class="childpages-macro"><li><a shape="rect" 
href="ajax-javascript.html">Ajax &amp; JavaScript</a></li><li><a shape="rect" 
href="ajax-components.html">Ajax Components</a></li><li><a shape="rect" 
href="first.html">First</a></li><li><a shape="rect" 
href="forms.html">Forms</a></li><li><a shape="rect" 
href="forms-and-form-components.html">Forms and Form Components</a></li><li><a 
shape="rect" href="hilo.html">HiLo</a></li><li><a shape="rect" 
href="indexv1.html">IndexV1</a></li><li><a shape="rect" 
href="input-validation.html">Input Validation</a></li><li><a shape="rect" 
href="ioc-advice.html">IoC - advice</a></li><li><a shape="rect" 
href="ioc-autoload.html">IoC - autoload</a></li><li><a shape="rect" 
href="ioc-case.html">IoC - case</a></li><li><a shape="rect" 
href="ioc-coerce.html">IoC - coerce</a></li><li><a shape="rect" hre
 f="ioc-command.html">IoC - command</a></li><li><a shape="rect" 
href="ioc-configuration.html">IoC - configuration</a></li><li><a shape="rect" 
href="ioc-cookbook-basics.html">IoC cookbook - basics</a></li><li><a 
shape="rect" href="ioc-cookbook-override.html">IoC cookbook - 
override</a></li><li><a shape="rect" href="ioc-decorator.html">IoC - 
decorator</a></li><li><a shape="rect" href="ioc-injection.html">IoC - 
injection</a></li><li><a shape="rect" href="ioc-logging.html">IoC - 
logging</a></li><li><a shape="rect" href="ioc-module.html">IoC - 
module</a></li><li><a shape="rect" href="ioc-order.html">IoC - 
order</a></li><li><a shape="rect" href="ioc-overview.html">IoC - 
overview</a></li><li><a shape="rect" href="ioc-parallel.html">IoC - 
parallel</a></li><li><a shape="rect" href="ioc-pipeline.html">IoC - 
pipeline</a></li><li><a shape="rect" href="ioc-provider.html">IoC - 
provider</a></li><li><a shape="rect" href="ioc-run.html">IoC - 
run</a></li><li><a shape="rect" href="ioc-serialization.ht
 ml">IoC - serialization</a></li><li><a shape="rect" href="ioc-shadow.html">IoC 
- shadow</a></li><li><a shape="rect" href="ioc-startup.html">IoC - 
startup</a></li><li><a shape="rect" href="ioc-strategy.html">IoC - 
strategy</a></li><li><a shape="rect" href="ioc-symbols.html">IoC - 
symbols</a></li><li><a shape="rect" 
href="javascript.html">JavaScript</a></li><li><a shape="rect" 
href="loading-the-project-into-eclipse.html">Loading the Project Into 
Eclipse</a></li><li><a shape="rect" href="page-and-component-classes.html">Page 
And Component Classes</a></li><li><a shape="rect" 
href="persistent-state.html">Persistent State</a></li><li><a shape="rect" 
href="release-notes-for-532.html">Release Notes for 5.3.2</a></li><li><a 
shape="rect" href="reload.html">Reload</a></li><li><a shape="rect" 
href="specific-errors.html">Specific Errors</a></li><li><a shape="rect" 
href="spring.html">Spring</a></li><li><a shape="rect" 
href="statistics.html">Statistics</a></li><li><a shape="rect" href="tapestry-in
 version-of-control-container.html">Tapestry Inversion of Control 
Container</a></li><li><a shape="rect" href="test.html">Test</a></li><li><a 
shape="rect" href="tutorial.html">Tutorial</a></li><li><a shape="rect" 
href="upgrade.html">Upgrade</a></li><li><a shape="rect" 
href="upload.html">Upload</a></li><li><a shape="rect" 
href="userguide.html">Userguide</a></li></ul></div>
+<div id="ConfluenceContent"><p>These pages only exist to prevent broken links 
after a page has been renamed. Each page merely redirects to another 
page.</p><p></p><ul class="childpages-macro"><li><a shape="rect" 
href="ajax-javascript.html">Ajax &amp; JavaScript</a></li><li><a shape="rect" 
href="ajax-components.html">Ajax Components</a></li><li><a shape="rect" 
href="first.html">First</a></li><li><a shape="rect" 
href="forms.html">Forms</a></li><li><a shape="rect" 
href="forms-and-form-components.html">Forms and Form Components</a></li><li><a 
shape="rect" href="hilo.html">HiLo</a></li><li><a shape="rect" 
href="indexv1.html">IndexV1</a></li><li><a shape="rect" 
href="input-validation.html">Input Validation</a></li><li><a shape="rect" 
href="ioc-advice.html">IoC - advice</a></li><li><a shape="rect" 
href="ioc-autoload.html">IoC - autoload</a></li><li><a shape="rect" 
href="ioc-case.html">IoC - case</a></li><li><a shape="rect" 
href="ioc-coerce.html">IoC - coerce</a></li><li><a shape="rect" hre
 f="ioc-command.html">IoC - command</a></li><li><a shape="rect" 
href="ioc-configuration.html">IoC - configuration</a></li><li><a shape="rect" 
href="ioc-cookbook-basics.html">IoC cookbook - basics</a></li><li><a 
shape="rect" href="ioc-cookbook-override.html">IoC cookbook - 
override</a></li><li><a shape="rect" href="ioc-decorator.html">IoC - 
decorator</a></li><li><a shape="rect" href="ioc-injection.html">IoC - 
injection</a></li><li><a shape="rect" href="ioc-logging.html">IoC - 
logging</a></li><li><a shape="rect" href="ioc-module.html">IoC - 
module</a></li><li><a shape="rect" href="ioc-order.html">IoC - 
order</a></li><li><a shape="rect" href="ioc-overview.html">IoC - 
overview</a></li><li><a shape="rect" href="ioc-parallel.html">IoC - 
parallel</a></li><li><a shape="rect" href="ioc-pipeline.html">IoC - 
pipeline</a></li><li><a shape="rect" href="ioc-provider.html">IoC - 
provider</a></li><li><a shape="rect" href="ioc-run.html">IoC - 
run</a></li><li><a shape="rect" href="ioc-serialization.ht
 ml">IoC - serialization</a></li><li><a shape="rect" href="ioc-shadow.html">IoC 
- shadow</a></li><li><a shape="rect" href="ioc-startup.html">IoC - 
startup</a></li><li><a shape="rect" href="ioc-strategy.html">IoC - 
strategy</a></li><li><a shape="rect" href="ioc-symbols.html">IoC - 
symbols</a></li><li><a shape="rect" 
href="javascript.html">JavaScript</a></li><li><a shape="rect" 
href="loading-the-project-into-eclipse.html">Loading the Project Into 
Eclipse</a></li><li><a shape="rect" href="page-and-component-classes.html">Page 
And Component Classes</a></li><li><a shape="rect" 
href="persistent-state.html">Persistent State</a></li><li><a shape="rect" 
href="release-notes-for-532.html">Release Notes for 5.3.2</a></li><li><a 
shape="rect" href="reload.html">Reload</a></li><li><a shape="rect" 
href="specific-errors.html">Specific Errors</a></li><li><a shape="rect" 
href="spring.html">Spring</a></li><li><a shape="rect" 
href="statistics.html">Statistics</a></li><li><a shape="rect" href="tapestry-in
 version-of-control-container.html">Tapestry Inversion of Control 
Container</a></li><li><a shape="rect" href="test.html">Test</a></li><li><a 
shape="rect" href="tutorial.html">Tutorial</a></li><li><a shape="rect" 
href="typecoercer-service.html">TypeCoercer Service</a></li><li><a shape="rect" 
href="upgrade.html">Upgrade</a></li><li><a shape="rect" 
href="upload.html">Upload</a></li><li><a shape="rect" 
href="userguide.html">Userguide</a></li></ul></div>
 </div>
 
 <div class="clearer"></div>

Added: websites/production/tapestry/content/type-coercion.data/type-coercer.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/production/tapestry/content/type-coercion.data/type-coercer.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Modified: websites/production/tapestry/content/type-coercion.html
==============================================================================
--- websites/production/tapestry/content/type-coercion.html (original)
+++ websites/production/tapestry/content/type-coercion.html Mon Dec 15 14:20:11 
2014
@@ -61,47 +61,28 @@
 <div class="clearer"></div>
 
   <div id="breadcrumbs">
-        <a href="index.html">Apache Tapestry</a>&nbsp;&gt;&nbsp;<a 
href="documentation.html">Documentation</a>&nbsp;&gt;&nbsp;<a 
href="user-guide.html">User Guide</a>&nbsp;&gt;&nbsp;<a 
href="type-coercion.html">Type Coercion</a>
-    <a class="edit" title="Edit this page (requires approval -- just ask on 
the mailing list)" 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=22872139";>edit</a>
+        <a href="index.html">Apache Tapestry</a>&nbsp;&gt;&nbsp;<a 
href="documentation.html">Documentation</a>&nbsp;&gt;&nbsp;<a 
href="user-guide.html">User Guide</a>&nbsp;&gt;&nbsp;<a 
href="ioc.html">IoC</a>&nbsp;&gt;&nbsp;<a href="type-coercion.html">Type 
Coercion</a>
+    <a class="edit" title="Edit this page (requires approval -- just ask on 
the mailing list)" 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23338478";>edit</a>
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><p><strong style="text-align: justify;">Type 
Coercion</strong><span style="color: rgb(0,0,0);">&#160;is the conversion of 
one type of object to a new object of a different type with similar content. 
Tapestry frequently must coerce objects from one type to another. A common 
example is the coercion of a string into an integer or a 
double.</span></p><p>See&#160;<a shape="rect" 
href="typecoercer-service.html">Type Coercer Service</a> for the list of 
build-in coercions.</p><h2 id="TypeCoercion-ParameterTypeCoercions">Parameter 
Type Coercions</h2><div class="navmenu" style="float:right; background:white; 
margin:3px; padding:3px">
-<div class="navmenu" style="float:right; background:#eee; margin:3px; 
padding:3px"></div>
+<div id="ConfluenceContent"><style type="text/css">/*<![CDATA[*/
+table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 
3px;margin: 0px;background-color: #f0f0f0}
+table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 
16px;border: none;}
+table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
+table.ScrollbarTable td.ScrollbarParent {text-align: center;border: none;}
+table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
+table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 
16px;border: none;}
+
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="service-serialization.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" href="service-serialization.html">Service 
Serialization</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="ioc.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="ioc.html">IoC</a></td><td 
colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a 
shape="rect" href="starting-the-ioc-registry.html">Starting the IoC 
Registry</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a 
shape="rect" href="starting-the-ioc-registry.html"
 ><img align="middle" border="0" 
 >src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; 
 >width="16" height="16"></a></td></tr></table></div><div class="navmenu" 
 >style="float:right; background:white; margin:3px; padding:3px">
+<div class="navmenu" style="float:right; background:#eee; margin:3px; 
padding:3px"></div> 
 <h3>Related Articles</h3>
 <ul class="content-by-label"><li>
             <div>
                     <span class="icon icon-page" title="Page">Page:</span>     
       </div>
 
             <div class="details">
-                            <a shape="rect" 
href="typecoercer-service.html">TypeCoercer Service</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>     
       </div>
-
-            <div class="details">
-                            <a shape="rect" 
href="supporting-informal-parameters.html">Supporting Informal Parameters</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>     
       </div>
-
-            <div class="details">
-                            <a shape="rect" 
href="enum-parameter-recipe.html">Enum Parameter Recipe</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>     
       </div>
-
-            <div class="details">
-                            <a shape="rect" 
href="component-parameters.html">Component Parameters</a>
+                            <a shape="rect" 
href="parameter-type-coercion.html">Parameter Type Coercion</a>
                     
                 
                             </div>
@@ -114,34 +95,94 @@
                     
                 
                             </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>     
       </div>
-
-            <div class="details">
-                            <a shape="rect" 
href="default-parameter.html">Default Parameter</a>
-                    
-                
-                            </div>
         </li></ul>
-</div><p>Tapestry automatically handles type coercions for <a shape="rect" 
href="component-parameters.html">component parameters</a>.</p><p>Type coercions 
occur when a value passed into a parameter (as bound in a template or in an 
annotation) does not match the type of the parameter.</p><p>For example, 
consider the Count component:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[public class Count
-{
-    @Parameter
-    private int start = 1;
-
-    @Parameter(required = true)
-    private int end;
-
-    @Parameter
-    private int value;
-    
-    . . .
+</div><p><strong>Type Coercion</strong> is the conversion of one type of 
object to a new object of a different type with similar content. Tapestry 
frequently must coerce objects from one type to another. A common example is 
the coercion of a string into an integer or a double.</p><p>Although type 
coercions happen more inside tapestry-core (including <a shape="rect" 
href="parameter-type-coercion.html">coercions of <span 
class="confluence-link">component parameters</span></a><span 
class="confluence-link">&#160;</span>), they may also happen inside 
tapestry-ioc, such as when injecting a value, rather than a service, into a 
builder method.</p><p>Like everything else in Tapestry, type coercions are 
extensible. At the root is the <a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/TypeCoercer.html";>TypeCoercer</a>
 service. Its configuration consists of a number of <a shape="rect" 
class="external-link" href="http://tapest
 
ry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/CoercionTuple.html">CoercionTuples</a>.
 Each tuple defines how to coerce from one type to another. The initial set of 
coercions is focused primarily on coercions between different numeric 
types:</p><p><img class="confluence-embedded-image" 
src="type-coercion.data/type-coercer.png" 
data-image-src="/confluence/download/attachments/23338478/type-coercer.png?version=1&amp;modificationDate=1290973716000&amp;api=v2"></p><h2
 id="TypeCoercion-DefaultTypeCoercions">Default Type Coercions</h2><p>There are 
a few special coercions related to <code>null</code> there; <code>Object</code> 
--&gt; <code>List</code> wraps a lone object as a singleton list, we then need 
<code>null</code> --&gt; <code>List</code> to ensure that <code>null</code> 
stays <code>null</code> (rather than a singleton list whose lone element is a 
<code>null</code>).</p><p>Tapestry can <em>interpolate</em> necessary 
coercions. For example, say it is necessary to co
 erce a <code>StringBuffer</code> to an <code>Integer</code>; the TypeCoercer 
service will chain together a series of 
coercions:</p><ul><li><code>Object</code> --&gt; 
<code>String</code></li><li><code>String</code> --&gt; 
<code>Long</code></li><li><code>Long</code> --&gt; 
<code>Integer</code></li></ul><h2 id="TypeCoercion-Coercingfromnull">Coercing 
from null</h2><p>Coercing from <code>null</code> is special; it is not a 
spanning search as with the other types. Either there is a specific coercion 
from <code>null</code> to the desired type, or no coercion takes places (and 
the coerced value is <code>null</code>).</p><p>The only built-in 
<code>null</code> coercion is from <code>null</code> to <code>boolean</code> 
(which is always false).</p><h2 id="TypeCoercion-ListofCoercions">List of 
Coercions</h2><p>As of Tapestry versions 5.1 and 5.2, the following coercions 
are available:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[Double --&gt; Float
+Float --&gt; Double
+Long --&gt; Boolean
+Long --&gt; Byte
+Long --&gt; Double
+Long --&gt; Integer
+Long --&gt; Short
+Number --&gt; Long
+Object --&gt; Object[]
+Object --&gt; String
+Object --&gt; java.util.List
+Object[] --&gt; java.util.List
+String --&gt; Boolean
+String --&gt; Double
+String --&gt; Long
+String --&gt; java.io.File
+String --&gt; java.math.BigDecimal
+String --&gt; java.math.BigInteger
+String --&gt; java.text.DateFormat
+String --&gt; java.util.regex.Pattern
+String --&gt; org.apache.tapestry5.Renderable
+String --&gt; org.apache.tapestry5.SelectModel
+String --&gt; org.apache.tapestry5.corelib.ClientValidation
+String --&gt; org.apache.tapestry5.corelib.LoopFormState
+String --&gt; org.apache.tapestry5.corelib.SubmitMode
+String --&gt; org.apache.tapestry5.corelib.data.BlankOption
+String --&gt; org.apache.tapestry5.corelib.data.GridPagerPosition
+String --&gt; org.apache.tapestry5.corelib.data.InsertPosition
+String --&gt; org.apache.tapestry5.ioc.Resource
+String --&gt; org.apache.tapestry5.ioc.util.TimeInterval
+boolean[] --&gt; java.util.List
+byte[] --&gt; java.util.List
+char[] --&gt; java.util.List
+double[] --&gt; java.util.List
+float[] --&gt; java.util.List
+int[] --&gt; java.util.List
+java.math.BigDecimal --&gt; Double
+java.util.Collection --&gt; Boolean
+java.util.Collection --&gt; Object[]
+java.util.Collection --&gt; org.apache.tapestry5.grid.GridDataSource
+java.util.Date --&gt; java.util.Calendar
+java.util.List --&gt; org.apache.tapestry5.SelectModel
+java.util.Map --&gt; org.apache.tapestry5.SelectModel
+long[] --&gt; java.util.List
+null --&gt; Boolean
+null --&gt; org.apache.tapestry5.grid.GridDataSource
+org.apache.tapestry5.ComponentResources --&gt; 
org.apache.tapestry5.PropertyOverrides
+org.apache.tapestry5.PrimaryKeyEncoder --&gt; org.apache.tapestry5.ValueEncoder
+org.apache.tapestry5.Renderable --&gt; org.apache.tapestry5.Block
+org.apache.tapestry5.Renderable --&gt; 
org.apache.tapestry5.runtime.RenderCommand
+org.apache.tapestry5.ioc.util.TimeInterval --&gt; Long
+org.apache.tapestry5.runtime.ComponentResourcesAware --&gt; 
org.apache.tapestry5.ComponentResources
+short[] --&gt; java.util.List
 ]]></script>
-</div></div><p>Here, the type of all three parameters is 
<code>int</code>.</p><p>However, it is likely that the component will be used 
as so:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[  Merry Christmas: &lt;t:count 
end=&quot;3&quot;&gt; Ho! &lt;/t:count&gt;
+</div></div><h2 id="TypeCoercion-ContributingNewCoercions">Contributing New 
Coercions</h2><p>TypeCoercer is extensible; you may add new coercions as 
desired. For example, let's say you have a <code>Money</code> type that 
represents an amount of some currency, and you want to be able to convert from 
<code>BigDecimal</code> to <code>Money</code>. Further, let's assume that 
<code>Money</code> has a constructor that accepts a <code>BigDecimal</code> as 
its parameter. We'll use a little Tapestry IOC configuration jujitsu to inform 
the TypeCoercer about this coercion.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div 
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[public static void 
contributeTypeCoercer(Configuration&lt;CoercionTuple&gt; configuration)
+{
+    Coercion&lt;BigDecimal, Money&gt; coercion = new Coercion&lt;BigDecimal, 
Money&gt;()
+    {
+        public Money coerce(BigDecimal input)
+        {
+           return new Money(input);
+        }
+    };
+ 
+    configuration.add(new CoercionTuple&lt;BigDecimal, 
Money&gt;(BigDecimal.class, Money.class, coercion));     
+}]]></script>
+</div></div><p>Further, since TypeCoercer knows how to convert 
<code>Double</code> to <code>BigDecimal</code>, or even <code>Integer</code> 
(to <code>Long</code> to <code>Double</code>) to <code>BigDecimal</code>, all 
of those coercions would work as well.</p><p>When creating a coercion from 
<code>null</code>, use <code>Void.class</code> as the source type. For example, 
the built-in coercion from <code>null</code> to <code>Boolean</code> is 
implemented as:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>AppModule.java (partial)</b></div><div class="codeContent panelContent 
pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[    configuration.add(new 
CoercionTuple(void.class, Boolean.class,
+        new Coercion&lt;Void, Boolean&gt;()
+    {
+        public Boolean coerce(Void input)
+        {
+            return false;
+        }
+    }));
 ]]></script>
-</div></div><p>A bare whole number is interpreted by the prop binding prefix 
as a <code>long</code>. So this is the <em>long</em> value 3.</p><p>Tapestry 
will automatically coerce the bound value, a <code>long</code>, to the 
parameter's type, <code>int</code>. This may be a lossy coercion (if the 
<code>long</code> represents a number larger than can be stored in an 
<code>int</code>).</p><h2 id="TypeCoercion-TypeCoercerService">TypeCoercer 
Service</h2><p>Main Article: <a shape="rect" 
href="typecoercer-service.html">TypeCoercer Service</a></p><p>The TypeCoercer 
service is responsible for this type coercion. This service is part of the <a 
shape="rect" href="ioc.html">tapestry-ioc</a> module. The service is quite 
extensible, allowing for new types and coercions to be added easily. The 
TapestryModule contributes a few additional coercions into the TypeCoercer 
service.</p></div>
+</div></div><style type="text/css">/*<![CDATA[*/
+table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 
3px;margin: 0px;background-color: #f0f0f0}
+table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 
16px;border: none;}
+table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
+table.ScrollbarTable td.ScrollbarParent {text-align: center;border: none;}
+table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
+table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 
16px;border: none;}
+
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="service-serialization.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" href="service-serialization.html">Service 
Serialization</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="ioc.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="ioc.html">IoC</a></td><td 
colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a 
shape="rect" href="starting-the-ioc-registry.html">Starting the IoC 
Registry</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a 
shape="rect" href="starting-the-ioc-registry.html"
 ><img align="middle" border="0" 
 >src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; 
 >width="16" height="16"></a></td></tr></table></div></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/typecoercer-service.html
==============================================================================
--- websites/production/tapestry/content/typecoercer-service.html (original)
+++ websites/production/tapestry/content/typecoercer-service.html Mon Dec 15 
14:20:11 2014
@@ -26,16 +26,6 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
-    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' 
type='text/css' />
-  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' 
type='text/css' />
-  <script src='/resources/highlighter/scripts/shCore.js' 
type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushJava.js' 
type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushXml.js' 
type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' 
type='text/javascript'></script>
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -61,179 +51,12 @@
 <div class="clearer"></div>
 
   <div id="breadcrumbs">
-        <a href="index.html">Apache Tapestry</a>&nbsp;&gt;&nbsp;<a 
href="documentation.html">Documentation</a>&nbsp;&gt;&nbsp;<a 
href="user-guide.html">User Guide</a>&nbsp;&gt;&nbsp;<a 
href="ioc.html">IoC</a>&nbsp;&gt;&nbsp;<a 
href="typecoercer-service.html">TypeCoercer Service</a>
-    <a class="edit" title="Edit this page (requires approval -- just ask on 
the mailing list)" 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23338478";>edit</a>
+        <a href="index.html">Apache Tapestry</a>&nbsp;&gt;&nbsp;<a 
href="index.html">Index</a>&nbsp;&gt;&nbsp;<a 
href="redirects.html">Redirects</a>&nbsp;&gt;&nbsp;<a 
href="typecoercer-service.html">TypeCoercer Service</a>
+    <a class="edit" title="Edit this page (requires approval -- just ask on 
the mailing list)" 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=50234427";>edit</a>
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><style type="text/css">/*<![CDATA[*/
-table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 
3px;margin: 0px;background-color: #f0f0f0}
-table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 
16px;border: none;}
-table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
-table.ScrollbarTable td.ScrollbarParent {text-align: center;border: none;}
-table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
-table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 
16px;border: none;}
-
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="service-serialization.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" href="service-serialization.html">Service 
Serialization</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="ioc.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="ioc.html">IoC</a></td><td 
colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a 
shape="rect" href="starting-the-ioc-registry.html">Starting the IoC 
Registry</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a 
shape="rect" href="starting-the-ioc-registry.html"
 ><img align="middle" border="0" 
 >src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; 
 >width="16" height="16"></a></td></tr></table></div>
-
-<h1 id="TypeCoercerService-TypeCoercion">Type Coercion</h1>
-
-<div class="navmenu" style="float:right; background:white; margin:3px; 
padding:3px">
-<div class="navmenu" style="float:right; background:#eee; margin:3px; 
padding:3px"></div> 
-<h3>Related Articles</h3>
-<ul class="content-by-label"><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>     
       </div>
-
-            <div class="details">
-                            <a shape="rect" 
href="typecoercer-service.html">TypeCoercer Service</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>     
       </div>
-
-            <div class="details">
-                            <a shape="rect" href="type-coercion.html">Type 
Coercion</a>
-                    
-                
-                            </div>
-        </li></ul>
-</div>
-
-<p><strong>Type Coercion</strong> is the conversion of one type of object to a 
new object of a different type with similar content. Tapestry frequently must 
coerce objects from one type to another.  A common example is the coercion of a 
string into an integer or a double.</p>
-
-<p>Although type coercions happen more inside tapestry-core (including 
coercions of <a shape="rect" href="component-parameters.html">component 
parameters</a>), they may also happen inside tapestry-ioc, such as when 
injecting a value, rather than a service, into a builder method.</p>
-
-<p>Like everything else in Tapestry, type coercions are extensible. At the 
root is the <a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/TypeCoercer.html";>TypeCoercer</a>
 service. Its configuration consists of a number of <a shape="rect" 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/CoercionTuple.html";>CoercionTuples</a>.
 Each tuple defines how to coerce from one type to another. The initial set of 
coercions is focused primarily on coercions between different numeric types:</p>
-
-<p><img class="confluence-embedded-image" 
src="typecoercer-service.data/type-coercer.png" 
data-image-src="/confluence/download/attachments/23338478/type-coercer.png?version=1&amp;modificationDate=1290973716000&amp;api=v2"></p>
-
-<h2 id="TypeCoercerService-DefaultTypeCoercions">Default Type Coercions</h2>
-
-<p>There are a few special coercions related to <code>null</code> there; 
<code>Object</code> --&gt; <code>List</code> wraps a lone object as a singleton 
list, we then need <code>null</code> --&gt; <code>List</code> to ensure that 
<code>null</code> stays <code>null</code> (rather than a singleton list whose 
lone element is a <code>null</code>).</p>
-
-<p>Tapestry can <em>interpolate</em> necessary coercions. For example, say it 
is necessary to coerce a <code>StringBuffer</code> to an <code>Integer</code>; 
the TypeCoercer service will chain together a series of coercions:</p>
-
-<ul><li><code>Object</code> --&gt; 
<code>String</code></li><li><code>String</code> --&gt; 
<code>Long</code></li><li><code>Long</code> --&gt; 
<code>Integer</code></li></ul>
-
-
-<h2 id="TypeCoercerService-Coercingfromnull">Coercing from null</h2>
-
-<p>Coercing from <code>null</code> is special; it is not a spanning search as 
with the other types. Either there is a specific coercion from 
<code>null</code> to the desired type, or no coercion takes places (and the 
coerced value is <code>null</code>).</p>
-
-<p>The only built-in <code>null</code> coercion is from <code>null</code> to 
<code>boolean</code> (which is always false).</p>
-
-<h2 id="TypeCoercerService-ListofCoercions">List of Coercions</h2>
-
-<p>As of Tapestry versions 5.1 and 5.2, the following coercions are 
available:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-Double --&gt; Float
-Float --&gt; Double
-Long --&gt; Boolean
-Long --&gt; Byte
-Long --&gt; Double
-Long --&gt; Integer
-Long --&gt; Short
-Number --&gt; Long
-Object --&gt; Object[]
-Object --&gt; String
-Object --&gt; java.util.List
-Object[] --&gt; java.util.List
-String --&gt; Boolean
-String --&gt; Double
-String --&gt; Long
-String --&gt; java.io.File
-String --&gt; java.math.BigDecimal
-String --&gt; java.math.BigInteger
-String --&gt; java.text.DateFormat
-String --&gt; java.util.regex.Pattern
-String --&gt; org.apache.tapestry5.Renderable
-String --&gt; org.apache.tapestry5.SelectModel
-String --&gt; org.apache.tapestry5.corelib.ClientValidation
-String --&gt; org.apache.tapestry5.corelib.LoopFormState
-String --&gt; org.apache.tapestry5.corelib.SubmitMode
-String --&gt; org.apache.tapestry5.corelib.data.BlankOption
-String --&gt; org.apache.tapestry5.corelib.data.GridPagerPosition
-String --&gt; org.apache.tapestry5.corelib.data.InsertPosition
-String --&gt; org.apache.tapestry5.ioc.Resource
-String --&gt; org.apache.tapestry5.ioc.util.TimeInterval
-boolean[] --&gt; java.util.List
-byte[] --&gt; java.util.List
-char[] --&gt; java.util.List
-double[] --&gt; java.util.List
-float[] --&gt; java.util.List
-int[] --&gt; java.util.List
-java.math.BigDecimal --&gt; Double
-java.util.Collection --&gt; Boolean
-java.util.Collection --&gt; Object[]
-java.util.Collection --&gt; org.apache.tapestry5.grid.GridDataSource
-java.util.Date --&gt; java.util.Calendar
-java.util.List --&gt; org.apache.tapestry5.SelectModel
-java.util.Map --&gt; org.apache.tapestry5.SelectModel
-long[] --&gt; java.util.List
-null --&gt; Boolean
-null --&gt; org.apache.tapestry5.grid.GridDataSource
-org.apache.tapestry5.ComponentResources --&gt; 
org.apache.tapestry5.PropertyOverrides
-org.apache.tapestry5.PrimaryKeyEncoder --&gt; org.apache.tapestry5.ValueEncoder
-org.apache.tapestry5.Renderable --&gt; org.apache.tapestry5.Block
-org.apache.tapestry5.Renderable --&gt; 
org.apache.tapestry5.runtime.RenderCommand
-org.apache.tapestry5.ioc.util.TimeInterval --&gt; Long
-org.apache.tapestry5.runtime.ComponentResourcesAware --&gt; 
org.apache.tapestry5.ComponentResources
-short[] --&gt; java.util.List
-]]></script>
-</div></div>
-
-
-<h2 id="TypeCoercerService-ContributingNewCoercions">Contributing New 
Coercions</h2>
-
-<p>TypeCoercer is extensible; you may add new coercions as desired. For 
example, let's say you have a <code>Money</code> type that represents an amount 
of some currency, and you want to be able to convert from 
<code>BigDecimal</code> to <code>Money</code>. Further, let's assume that 
<code>Money</code> has a constructor that accepts a <code>BigDecimal</code> as 
its parameter. We'll use a little Tapestry IOC configuration jujitsu to inform 
the TypeCoercer about this coercion.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-public static void contributeTypeCoercer(Configuration&lt;CoercionTuple&gt; 
configuration)
-{
-    Coercion&lt;BigDecimal, Money&gt; coercion = new Coercion&lt;BigDecimal, 
Money&gt;()
-    {
-        public Money coerce(BigDecimal input)
-        {
-           return new Money(input);
-        }
-    };
- 
-    configuration.add(new CoercionTuple&lt;BigDecimal, 
Money&gt;(BigDecimal.class, Money.class, coercion));     
-}]]></script>
-</div></div>
-
-<p>Further, since TypeCoercer knows how to convert <code>Double</code> to 
<code>BigDecimal</code>, or even <code>Integer</code> (to <code>Long</code> to 
<code>Double</code>) to <code>BigDecimal</code>, all of those coercions would 
work as well.</p>
-
-<p>When creating a coercion from <code>null</code>, use 
<code>Void.class</code> as the source type. For example, the built-in coercion 
from <code>null</code> to <code>Boolean</code> is implemented as:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-    configuration.add(new CoercionTuple(void.class, Boolean.class,
-        new Coercion&lt;Void, Boolean&gt;()
-    {
-        public Boolean coerce(Void input)
-        {
-            return false;
-        }
-    }));
-]]></script>
-</div></div>
-
-<style type="text/css">/*<![CDATA[*/
-table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 
3px;margin: 0px;background-color: #f0f0f0}
-table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 
16px;border: none;}
-table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}
-table.ScrollbarTable td.ScrollbarParent {text-align: center;border: none;}
-table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
-table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 
16px;border: none;}
-
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="service-serialization.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" href="service-serialization.html">Service 
Serialization</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="ioc.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" href="ioc.html">IoC</a></td><td 
colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a 
shape="rect" href="starting-the-ioc-registry.html">Starting the IoC 
Registry</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a 
shape="rect" href="starting-the-ioc-registry.html"
 ><img align="middle" border="0" 
 >src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; 
 >width="16" height="16"></a></td></tr></table></div></div>
+<div id="ConfluenceContent"><p>This page has moved to <a shape="rect" 
href="type-coercion.html">Type Coercion</a></p></div>
 </div>
 
 <div class="clearer"></div>


Reply via email to