Modified: websites/production/tapestry/content/specific-errors-faq.html
==============================================================================
--- websites/production/tapestry/content/specific-errors-faq.html (original)
+++ websites/production/tapestry/content/specific-errors-faq.html Wed Sep 20 
12:29:16 2017
@@ -27,6 +27,16 @@
       </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>
+      SyntaxHighlighter.defaults['toolbar'] = false;
+      SyntaxHighlighter.all();
+    </script>
   
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -67,7 +77,50 @@
       </div>
 
       <div id="content">
-                <div 
id="ConfluenceContent"><p><plain-text-body>{scrollbar}</plain-text-body></p><parameter
 ac:name="style">float:right</parameter><parameter ac:name="title">Related 
Articles</parameter><parameter 
ac:name="class">aui-label</parameter><rich-text-body><parameter 
ac:name="showLabels">false</parameter><parameter 
ac:name="showSpace">false</parameter><parameter ac:name="title">Related 
Articles</parameter><parameter ac:name="cql">label = "errors" and space = 
currentSpace()</parameter></rich-text-body><h3 
id="SpecificErrorsFAQ-WhydoIgettheexception&quot;Noserviceimplementstheinterfaceorg.apache.tapestry5.internal.InternalComponentResources&quot;whentryingtousetheBeanEditFormcomponent?">Why
 do I get the exception "No service implements the interface 
org.apache.tapestry5.internal.InternalComponentResources" when trying to use 
the BeanEditForm component?</h3><p>This can occur when you choose the wrong 
package for your data object, the object edited by the BeanEditForm component
 . If you place it in the same package as your pages, Tapestry will treat it 
like a page, and perform a number of transformation on it, including adding a 
new constructor.</p><p>Only component classes should go in the 
Tapestry-controlled packages (<code>pages</code>, <code>components</code>, 
<code>mixins</code> and <code>base</code> under your application's root 
package). By convention, simple data objects should go in a <code>data</code> 
package, and Hibernate entities should go in an <code>entities</code> 
package.</p><rich-text-body><p>This is likely a bit different in 5.3 than in 
5.2 (because 5.3 builds a very different constructor into the component) and 
needs to be tested in 5.3 to see what exact exception will 
occur.</p></rich-text-body><h3 
id="SpecificErrorsFAQ-Igetanerrorabout&quot;Pagedidnotgenerateanymarkupwhenrendered.&quot;butIhaveatemplate,whathappened?">I
 get an error about "Page did not generate any markup when rendered." but I 
have a template, what happened?</h3><p>Th
 e most common error here is that the case of the page class did not match the 
case of the template. For example, you might name your class ViewOrders, but 
name the template vieworders.tml. The correct name for the template is 
ViewOrders.tml, matching the case of the Java class name.</p><p>Worse, you may 
find that your application works during development (under Windows, which is 
case insensitive) but does not work when deployed on a Linux or Unix server, 
which may be case sensitive.</p><p>The other cause of this may be that your 
template files simply are not being packaged up correctly with the rest of your 
application. When in doubt, use the Java <code>jar</code> command to see 
exactly whats inside your WAR file. Your page templates should either be in the 
root folder of the WAR, or package with the corresponding .class file.</p><h3 
id="SpecificErrorsFAQ-MyapplicationfailswiththeerrorPermGen,howdoIfixthis?">My 
application fails with the error <strong>PermGen</strong>, how do I fix 
 this?</h3><p>PermGen refers to the part of the Java memory space devoted to 
permanent objects, which are mostly loaded classes. When developing under 
Tapestry, many more classes and class loaders are created than normal; this is 
part of live class reloading. Because of this, you will want to increase the 
amount of memory Java devotes to this.</p><p>The solution is to add 
<code>-XX:MaxPermSize=512m</code> to your command line. You may also want to 
increase the regular amount of heap space with <code>-Xmx600M</code>. Of 
course, you may need to adjust the amount of memory in each category to match 
your actual application, but these are good starting values.</p><p>Java Virtual 
Machine arguments can be specified inside an Eclipse launch 
configuration:</p><p><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-thumbnail" 
src="specific-errors-faq.data/eclipse-permgen.png"></span></p><h3 
id="SpecificErrorsFAQ-WhydoIsometimesgetajava.lang.NoSuchMeth
 odErrorexceptionafterreloadingmypage?">Why do I sometimes get a 
<code>java.lang.NoSuchMethodError</code> exception after reloading my 
page?</h3><p>Tapestry's live class reloading is not perfect.&#160;<span 
style="line-height: 1.4285715;">It tends to use a lot of Java ClassLoaders on 
top of the normal ClassLoaders used by the Java Virtual Machine and the servlet 
container. When you change non-component classes and interfaces that are 
referenced by components and pages, such as to add or change a method, only the 
component classes are reloaded. The non-component classes are frozen as they 
were when they were </span><em style="line-height: 1.4285715;">first</em><span 
style="line-height: 1.4285715;"> loaded.</span></p><p>Unfortunately, this is 
one of the areas where you must restart your application entirely in order to 
force the new versions of the non-component classes to be loaded into 
memory.</p><h3 
id="SpecificErrorsFAQ-Whydomylogscontain&quot;java.lang.RuntimeException:Formsrequir
 
ethattherequestmethodbePOSTandthatthet:formdataqueryparameterhavevalues&quot;?">Why
 do my logs contain "java.lang.RuntimeException: Forms require that the request 
method be POST and that the t:formdata query parameter have 
values"?</h3><p>This is caused by someone (or something) submitting the URL of 
your form using an HTTP GET instead of POST. Tapestry forms must always use 
POST actions.</p><p>Some known scenarios that cause this error:</p><ul><li>Bots 
crawling your site</li><li>Web browser auto-complete functions trying to be 
helpful</li><li>Users with browser developer tools manually modifying the form 
from a POST to a GET to see what will happen.</li><li>Users getting a 
validation error on a form, then re-submitting the form by clicking in the URL 
address field and hitting Enter.</li><li>In Tapestry versions before 5.4, 
(rarely) the use of property names for form fields where the property name 
matches a JavaScript property (see <a  class="external-link" 
href="https://issues.apac
 he.org/jira/browse/TAP5-2066">TAP5-2066</a>).</li></ul><p>In every known 
scenario except the last, these errors are harmless and you probably want to 
redirect the user to the page the form is on &#8211; and avoid logging an 
error. That's not too hard to do. Just add code like the following to your 
module class (usually AppModule.java):</p><parameter 
ac:name="language">java</parameter><parameter ac:name="title">AppModule.java 
(partial)</parameter><plain-text-body>    /**
+                <div id="ConfluenceContent"><div class="aui-label" 
style="float:right" title="Related Articles">
+
+
+
+
+
+
+
+
+<h3>Related Articles</h3>
+
+<ul class="content-by-label"><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small 
aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="error-page-recipe.html">Error Page Recipe</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small 
aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="specific-errors-faq.html">Specific Errors 
FAQ</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small 
aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  
href="overriding-exception-reporting.html">Overriding Exception Reporting</a>
+                
+                        
+                    </div>
+    </li></ul>
+</div>
+
+
+<h3 
id="SpecificErrorsFAQ-WhydoIgettheexception&quot;Noserviceimplementstheinterfaceorg.apache.tapestry5.internal.InternalComponentResources&quot;whentryingtousetheBeanEditFormcomponent?">Why
 do I get the exception "No service implements the interface 
org.apache.tapestry5.internal.InternalComponentResources" when trying to use 
the BeanEditForm component?</h3><p>This can occur when you choose the wrong 
package for your data object, the object edited by the BeanEditForm component. 
If you place it in the same package as your pages, Tapestry will treat it like 
a page, and perform a number of transformation on it, including adding a new 
constructor.</p><p>Only component classes should go in the Tapestry-controlled 
packages (<code>pages</code>, <code>components</code>, <code>mixins</code> and 
<code>base</code> under your application's root package). By convention, simple 
data objects should go in a <code>data</code> package, and Hibernate entities 
should go in an <code>entities</code> pac
 kage.</p><div class="confluence-information-macro 
confluence-information-macro-note"><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>This is likely a bit different in 
5.3 than in 5.2 (because 5.3 builds a very different constructor into the 
component) and needs to be tested in 5.3 to see what exact exception will 
occur.</p></div></div><h3 
id="SpecificErrorsFAQ-Igetanerrorabout&quot;Pagedidnotgenerateanymarkupwhenrendered.&quot;butIhaveatemplate,whathappened?">I
 get an error about "Page did not generate any markup when rendered." but I 
have a template, what happened?</h3><p>The most common error here is that the 
case of the page class did not match the case of the template. For example, you 
might name your class ViewOrders, but name the template vieworders.tml. The 
correct name for the template is ViewOrders.tml, matching the case of the Java 
class name.</p><p>Worse, you may find tha
 t your application works during development (under Windows, which is case 
insensitive) but does not work when deployed on a Linux or Unix server, which 
may be case sensitive.</p><p>The other cause of this may be that your template 
files simply are not being packaged up correctly with the rest of your 
application. When in doubt, use the Java <code>jar</code> command to see 
exactly whats inside your WAR file. Your page templates should either be in the 
root folder of the WAR, or package with the corresponding .class file.</p><h3 
id="SpecificErrorsFAQ-MyapplicationfailswiththeerrorPermGen,howdoIfixthis?">My 
application fails with the error <strong>PermGen</strong>, how do I fix 
this?</h3><p>PermGen refers to the part of the Java memory space devoted to 
permanent objects, which are mostly loaded classes. When developing under 
Tapestry, many more classes and class loaders are created than normal; this is 
part of live class reloading. Because of this, you will want to increase the 
amount 
 of memory Java devotes to this.</p><p>The solution is to add 
<code>-XX:MaxPermSize=512m</code> to your command line. You may also want to 
increase the regular amount of heap space with <code>-Xmx600M</code>. Of 
course, you may need to adjust the amount of memory in each category to match 
your actual application, but these are good starting values.</p><p>Java Virtual 
Machine arguments can be specified inside an Eclipse launch 
configuration:</p><p><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-thumbnail" 
src="specific-errors-faq.data/eclipse-permgen.png"></span></p><h3 
id="SpecificErrorsFAQ-WhydoIsometimesgetajava.lang.NoSuchMethodErrorexceptionafterreloadingmypage?">Why
 do I sometimes get a <code>java.lang.NoSuchMethodError</code> exception after 
reloading my page?</h3><p>Tapestry's live class reloading is not 
perfect.&#160;<span style="line-height: 1.4285715;">It tends to use a lot of 
Java ClassLoaders on top of the normal ClassLoader
 s used by the Java Virtual Machine and the servlet container. When you change 
non-component classes and interfaces that are referenced by components and 
pages, such as to add or change a method, only the component classes are 
reloaded. The non-component classes are frozen as they were when they were 
</span><em style="line-height: 1.4285715;">first</em><span style="line-height: 
1.4285715;"> loaded.</span></p><p>Unfortunately, this is one of the areas where 
you must restart your application entirely in order to force the new versions 
of the non-component classes to be loaded into memory.</p><h3 
id="SpecificErrorsFAQ-Whydomylogscontain&quot;java.lang.RuntimeException:FormsrequirethattherequestmethodbePOSTandthatthet:formdataqueryparameterhavevalues&quot;?">Why
 do my logs contain "java.lang.RuntimeException: Forms require that the request 
method be POST and that the t:formdata query parameter have 
values"?</h3><p>This is caused by someone (or something) submitting the URL of 
your form u
 sing an HTTP GET instead of POST. Tapestry forms must always use POST 
actions.</p><p>Some known scenarios that cause this error:</p><ul><li>Bots 
crawling your site</li><li>Web browser auto-complete functions trying to be 
helpful</li><li>Users with browser developer tools manually modifying the form 
from a POST to a GET to see what will happen.</li><li>Users getting a 
validation error on a form, then re-submitting the form by clicking in the URL 
address field and hitting Enter.</li><li>In Tapestry versions before 5.4, 
(rarely) the use of property names for form fields where the property name 
matches a JavaScript property (see <a  class="external-link" 
href="https://issues.apache.org/jira/browse/TAP5-2066";>TAP5-2066</a>).</li></ul><p>In
 every known scenario except the last, these errors are harmless and you 
probably want to redirect the user to the page the form is on &#8211; and avoid 
logging an error. That's not too hard to do. Just add code like the following 
to your module class (
 usually AppModule.java):</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">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">    /**
      * Redirect the user to the intended page when browsing through
      * tapestry forms through browser history or over-eager autocomplete
      */
@@ -92,7 +145,8 @@
                 response.sendRedirect(uri);
             }
         };
-    }</plain-text-body><p><em>Thanks to <a  class="external-link" 
href="http://mail-archives.apache.org/mod_mbox/tapestry-users/201110.mbox/%[email protected]%3E";>Lenny
 Primak</a> for the above code. A slightly less fragile approach is <a  
class="external-link" 
href="https://mail-archives.apache.org/mod_mbox/tapestry-users/201509.mbox/%3ccae26fnjevncyv52kms-kpsewwnaln9pg6lg60xzkxuhs0ut...@mail.gmail.com%3E";>described
 here</a>. When <a  class="external-link" 
href="https://issues.apache.org/jira/browse/TAP5-1733";>TAP5-1733</a> is fixed a 
much less fragile solution may be 
possible.</em></p><p>&#160;<plain-text-body>{scrollbar}</plain-text-body></p></div>
+    }</pre>
+</div></div><p><em>Thanks to <a  class="external-link" 
href="http://mail-archives.apache.org/mod_mbox/tapestry-users/201110.mbox/%[email protected]%3E";>Lenny
 Primak</a> for the above code. A slightly less fragile approach is <a  
class="external-link" 
href="https://mail-archives.apache.org/mod_mbox/tapestry-users/201509.mbox/%3ccae26fnjevncyv52kms-kpsewwnaln9pg6lg60xzkxuhs0ut...@mail.gmail.com%3E";>described
 here</a>. When <a  class="external-link" 
href="https://issues.apache.org/jira/browse/TAP5-1733";>TAP5-1733</a> is fixed a 
much less fragile solution may be possible.</em></p><p>&#160;</p></div>
       </div>
 
       <div class="clearer"></div>

Modified: websites/production/tapestry/content/starting-the-ioc-registry.html
==============================================================================
--- websites/production/tapestry/content/starting-the-ioc-registry.html 
(original)
+++ websites/production/tapestry/content/starting-the-ioc-registry.html Wed Sep 
20 12:29:16 2017
@@ -27,6 +27,14 @@
       </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>
+      SyntaxHighlighter.defaults['toolbar'] = false;
+      SyntaxHighlighter.all();
+    </script>
   
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -67,19 +75,23 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>Primarily, you will use the IoC 
Registry as part of a Tapestry application. In those situations, the <a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/TapestryFilter.html";>TapestryFilter</a>
 will be responsible for starting and stopping the registry.</p><p>However, you 
may want to do some integration testing using the Registry from within a test 
case, or you may even use Tapestry IoC separately from Tapestry.</p><h1 
id="StartingtheIoCRegistry-BuildingtheRegistry">Building the 
Registry</h1><p>The class <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/RegistryBuilder.html";>RegistryBuilder</a>
 is used to create a Registry.</p><parameter 
ac:name="">java</parameter><plain-text-body>RegistryBuilder builder = new 
RegistryBuilder();
+                <div id="ConfluenceContent"><p>Primarily, you will use the IoC 
Registry as part of a Tapestry application. In those situations, the <a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/TapestryFilter.html";>TapestryFilter</a>
 will be responsible for starting and stopping the registry.</p><p>However, you 
may want to do some integration testing using the Registry from within a test 
case, or you may even use Tapestry IoC separately from Tapestry.</p><h1 
id="StartingtheIoCRegistry-BuildingtheRegistry">Building the 
Registry</h1><p>The class <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/RegistryBuilder.html";>RegistryBuilder</a>
 is used to create a Registry.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">RegistryBuilder builder = new RegistryBuilder();
 
 builder.add(AppModule.class, UtilModule.class);
 
 Registry registry = builder.build();
 
-registry.performRegistryStartup();</plain-text-body><p>You may invoke add() as 
many times as you wish, or pass as many module classes as you wish.</p><p>Using 
this approach, you will form a Registry containing the built-in services from 
the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/TapestryIoCModule.html";>Tapestry
 IoC module</a>, plus the modules you explicitly list.</p><p>The call to 
performRegistryStartup() is necessary to ensure that any services marked with 
the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/EagerLoad.html";>EagerLoad</a>
 annotation are, in fact, loaded.</p>
+registry.performRegistryStartup();</pre>
+</div></div><p>You may invoke add() as many times as you wish, or pass as many 
module classes as you wish.</p><p>Using this approach, you will form a Registry 
containing the built-in services from the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/TapestryIoCModule.html";>Tapestry
 IoC module</a>, plus the modules you explicitly list.</p><p>The call to 
performRegistryStartup() is necessary to ensure that any services marked with 
the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/EagerLoad.html";>EagerLoad</a>
 annotation are, in fact, loaded.</p>
 
 <div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">Added in 
5.2</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
 </div></div>
 <div class="error"><span class="error">Unknown macro: {div}</span> 
-<p>&#160;</p></div><p>As of version 5.2 the class <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/RegistryBuilder.html";>RegistryBuilder</a>
 has convenience methods to build and start a Registry. The static method <a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/RegistryBuilder.html#buildAndStartupRegistry(java.lang.Class...)">RegistryBuilder.buildAndStartupRegistry(Class...)</a>
 constructs a registry, adds a number of modules to the registry and performs 
registry startup. The returned registry is ready to use.</p><parameter 
ac:name="">java</parameter><plain-text-body>Registry registry = 
RegistryBuilder.buildAndStartupRegistry(AppModule.class, UtilModule.class);
-</plain-text-body><h1 
id="StartingtheIoCRegistry-BuildingtheDefaultRegistry">Building the Default 
Registry</h1><p>The default registry is available by invoking the static method 
<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/IOCUtilities.html#buildDefaultRegistry";>IOCUtilities.buildDefaultRegistry()</a>.
 This method builds a Registry using <a  
href="autoloading-modules.html">autoloading logic</a>, where modules to load 
are identified via a JAR Manifest entry.</p><p>In addition, the JVM system 
property <code>tapestry.modules</code> (if specified) is a list of additional 
module classes to load. This is often used in development, where tests may be 
executed against the local classes, not JARs, and so there is no manifest to 
read.</p><h1 id="StartingtheIoCRegistry-ShuttingdowntheRegistry">Shutting down 
the Registry</h1><p>The method <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/Reg
 istry.html#shutdown">Registry.shutdown()</a> will shutdown the Registry. This 
immediately invalidates all service proxies. Some services may have chosen to 
register for shutdown notification (for example, to do cleanup work such as 
closing a database connection).</p><p>Once the Registry is shutdown, it may not 
be used again: it will not be possible to access services within the Registry, 
or invoke methods on services previously acquired. All you can do is release 
the Registry to the garbage collector.</p><p>&#160;</p><p></p></div>
+<p>&#160;</p></div><p>As of version 5.2 the class <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/RegistryBuilder.html";>RegistryBuilder</a>
 has convenience methods to build and start a Registry. The static method <a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/RegistryBuilder.html#buildAndStartupRegistry(java.lang.Class...)">RegistryBuilder.buildAndStartupRegistry(Class...)</a>
 constructs a registry, adds a number of modules to the registry and performs 
registry startup. The returned registry is ready to use.</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">Registry registry = 
RegistryBuilder.buildAndStartupRegistry(AppModule.class, UtilModule.class);
+</pre>
+</div></div><h1 
id="StartingtheIoCRegistry-BuildingtheDefaultRegistry">Building the Default 
Registry</h1><p>The default registry is available by invoking the static method 
<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/IOCUtilities.html#buildDefaultRegistry";>IOCUtilities.buildDefaultRegistry()</a>.
 This method builds a Registry using <a  
href="autoloading-modules.html">autoloading logic</a>, where modules to load 
are identified via a JAR Manifest entry.</p><p>In addition, the JVM system 
property <code>tapestry.modules</code> (if specified) is a list of additional 
module classes to load. This is often used in development, where tests may be 
executed against the local classes, not JARs, and so there is no manifest to 
read.</p><h1 id="StartingtheIoCRegistry-ShuttingdowntheRegistry">Shutting down 
the Registry</h1><p>The method <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/Registry.
 html#shutdown">Registry.shutdown()</a> will shutdown the Registry. This 
immediately invalidates all service proxies. Some services may have chosen to 
register for shutdown notification (for example, to do cleanup work such as 
closing a database connection).</p><p>Once the Registry is shutdown, it may not 
be used again: it will not be possible to access services within the Registry, 
or invoke methods on services previously acquired. All you can do is release 
the Registry to the garbage collector.</p><p>&#160;</p><p></p></div>
       </div>
 
       <div class="clearer"></div>

Modified: websites/production/tapestry/content/strategybuilder-service.html
==============================================================================
--- websites/production/tapestry/content/strategybuilder-service.html (original)
+++ websites/production/tapestry/content/strategybuilder-service.html Wed Sep 
20 12:29:16 2017
@@ -27,6 +27,14 @@
       </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>
+      SyntaxHighlighter.defaults['toolbar'] = false;
+      SyntaxHighlighter.all();
+    </script>
   
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -36,26 +44,13 @@
 
   <div class="wrapper bs">
 
-        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div>
-
-</div>
+        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  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  href="index.html"><span 
class="confluence-embedded-file-wrapper"><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";></span></a></p></div>
-
-
-<div class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">StrategyBuilder Service</h1></div>
-
-</div>
+            <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  
href="index.html"><span class="confluence-embedded-file-wrapper"><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";></span></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">StrategyBuilder Service</h1></div></div>
       <div class="clearer"></div>
       </div>
 
@@ -67,17 +62,45 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>The <strong>StrategyBuilder 
Service</strong> provides a convenient way to create an implementation of the 
<a  class="external-link" href="https://en.wikipedia.org/wiki/Strategy_pattern"; 
rel="nofollow">Strategy</a> design pattern.</p><parameter 
ac:name="style">float:right</parameter><parameter ac:name="title">Related 
Articles</parameter><parameter 
ac:name="class">aui-label</parameter><rich-text-body><parameter 
ac:name="showLabels">false</parameter><parameter 
ac:name="showSpace">false</parameter><parameter ac:name="title">Related 
Articles</parameter><parameter ac:name="cql">label = "service-builders" and 
space = currentSpace()</parameter></rich-text-body><p>Another of the Gang Of 
Four patterns, the strategy pattern as implemented in Tapestry IoC is a kind of 
late binding.</p><p>The idea is that <em>adapters</em> for objects are accessed 
based on the <em>actual type</em> of an object. These adapters supply 
additional functionality. The ada
 pters are located using a StrategyRegistry (<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/util/StrategyRegistry.html";>API</a>).</p><p>The
 lookup of adapters is based on an inheritance search; thus providing an 
adapter for type java.util.Map will match any object that implements the Map 
interface. The inheritance search works its way up the class hierarchy looking 
for a matching registration. If nothing is found, then all the interfaces 
directly or indirectly implemented by the selector class are checked. 
java.lang.Object is always the final match.</p><p>A runtime exception is thrown 
if no match can be found.</p><p>As a special case, the value null is searched 
for as if it were an instance of the class void.</p><p>The StrategyBuilder 
service (<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/StrategyBuilder.html";>API</a>)
 creates a service implementation around a strategy 
 registry.</p><parameter ac:name="">java</parameter><plain-text-body>public 
interface StrategyBuilder
+                <div id="ConfluenceContent"><p>The <strong>StrategyBuilder 
Service</strong> provides a convenient way to create an implementation of the 
<a  class="external-link" href="https://en.wikipedia.org/wiki/Strategy_pattern"; 
rel="nofollow">Strategy</a> design pattern.</p><div class="aui-label" 
style="float:right" title="Related Articles"><h3>Related Articles</h3><ul 
class="content-by-label"><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="shadowbuilder-service.html">ShadowBuilder Service</a> 
+  </div> </li><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="strategybuilder-service.html">StrategyBuilder Service</a> 
+  </div> </li><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="pipelinebuilder-service.html">PipelineBuilder Service</a> 
+  </div> </li><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="chainbuilder-service.html">ChainBuilder Service</a> 
+  </div> </li></ul></div><p>Another of the Gang Of Four patterns, the strategy 
pattern as implemented in Tapestry IoC is a kind of late binding.</p><p>The 
idea is that <em>adapters</em> for objects are accessed based on the <em>actual 
type</em> of an object. These adapters supply additional functionality. The 
adapters are located using a StrategyRegistry (<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/util/StrategyRegistry.html";>API</a>).</p><p>The
 lookup of adapters is based on an inheritance search; thus providing an 
adapter for type java.util.Map will match any object that implements the Map 
interface. The inheritance search works its way up the class hierarchy looking 
for a matching registration. If nothing is found, then all the interfaces 
directly or indirectly implemented by the selector class are checked. 
java.lang.Object is always the final match.</p><p>A runtime exception is thrown 
if no match can be found.</p><p>As a sp
 ecial case, the value null is searched for as if it were an instance of the 
class void.</p><p>The StrategyBuilder service (<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/StrategyBuilder.html";>API</a>)
 creates a service implementation around a strategy registry.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">public interface StrategyBuilder
 {
     &lt;S&gt; S build(StrategyRegistry&lt;S&gt; registry);
-}</plain-text-body><p>For a given interface (and matching StrategyRegistry), a 
service implementation is created. The service interface is determined from the 
strategy registry.</p><p>The first parameter of each method is the 
<em>selector</em>. Its type is used to locate an adapter.</p><p>The 
corresponding method of the adapter is then invoked, passing all 
parameters.</p><p>Every method of the service interface should take at least 
one parameter. Generally, such interfaces have only one or two methods.</p><h1 
id="StrategyBuilderService-Example">Example</h1><p>You will usually have a 
service configuration for defining the adapter registry.</p><p>You convert the 
configuration into a StrategyRegistry, and use that to build the final 
service:</p><parameter ac:name="">java</parameter><plain-text-body>  public 
static MyStrategyService build(Map&lt;Class, MyStrategyService&gt; 
configuration,
+}</pre>
+</div></div><p>For a given interface (and matching StrategyRegistry), a 
service implementation is created. The service interface is determined from the 
strategy registry.</p><p>The first parameter of each method is the 
<em>selector</em>. Its type is used to locate an adapter.</p><p>The 
corresponding method of the adapter is then invoked, passing all 
parameters.</p><p>Every method of the service interface should take at least 
one parameter. Generally, such interfaces have only one or two methods.</p><h1 
id="StrategyBuilderService-Example">Example</h1><p>You will usually have a 
service configuration for defining the adapter registry.</p><p>You convert the 
configuration into a StrategyRegistry, and use that to build the final 
service:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  public static MyStrategyService build(Map&lt;Class, 
MyStrategyService&gt; configuration,
     @InjectService("StrategyBuilder")
     StrategyBuilder builder)
   {
      StategyRegistry&lt;MyStrategyService&gt; registry = 
StrategyRegistry.newInstance(MyStrategyService.class, configuration);
   
      return builder.build(registry);
-  }</plain-text-body><p>&#160;</p><p></p></div>
+  }</pre>
+</div></div><p>&#160;</p><p></p></div>
       </div>
 
       <div class="clearer"></div>

Modified: 
websites/production/tapestry/content/supporting-informal-parameters.html
==============================================================================
--- websites/production/tapestry/content/supporting-informal-parameters.html 
(original)
+++ websites/production/tapestry/content/supporting-informal-parameters.html 
Wed Sep 20 12:29:16 2017
@@ -27,6 +27,14 @@
       </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>
+      SyntaxHighlighter.defaults['toolbar'] = false;
+      SyntaxHighlighter.all();
+    </script>
   
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -36,26 +44,13 @@
 
   <div class="wrapper bs">
 
-        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div>
-
-</div>
+        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  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  href="index.html"><span 
class="confluence-embedded-file-wrapper"><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";></span></a></p></div>
-
-
-<div class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Supporting Informal Parameters</h1></div>
-
-</div>
+            <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  
href="index.html"><span class="confluence-embedded-file-wrapper"><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";></span></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Supporting Informal Parameters</h1></div></div>
       <div class="clearer"></div>
       </div>
 
@@ -67,7 +62,32 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>&#160;<parameter 
ac:name="hidden">true</parameter><parameter 
ac:name="atlassian-macro-output-type">INLINE</parameter><rich-text-body><p>How 
to make your custom component accept and pass on all unknown parameters to the 
underlying HTML element</p></rich-text-body><strong>Informal 
parameters</strong> are any additional parameters beyond the parameters 
explicitly defined for a component using the <a  class="external-link" 
href="http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/annotations/Parameter.html";>Parameter</a>
 annotation.</p><parameter ac:name="style">float:right</parameter><parameter 
ac:name="title">Related Articles</parameter><parameter 
ac:name="class">aui-label</parameter><rich-text-body><parameter 
ac:name="showLabels">false</parameter><parameter 
ac:name="showSpace">false</parameter><parameter ac:name="title">Related 
Articles</parameter><parameter ac:name="cql">label = "parameters" and space = 
currentSpace()</par
 ameter></rich-text-body><p>Any component that closely emulates a particular 
HTML element <em>should</em> support informal parameters. You'll find that many 
of the built-in Tapestry components, such as Form, Label and TextField, do 
exactly that.</p><p>To support informal parameters, a component class should 
use either the @<a  class="external-link" 
href="http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/annotations/SupportsInformalParameters.html";>SupportsInformalParameters</a>
 annotation or the RenderInformals mixin. Otherwise, providing informal 
parameters to a component will do nothing: any additional parameters will be 
ignored.</p><h3 
id="SupportingInformalParameters-Approach1:@SupportsInformalParameters">Approach
 1: @SupportsInformalParameters</h3><p>In the example below we create an Img 
component, a custom replacement for the &lt;img&gt; tag. Its src parameter will 
be an asset. We'll use the @SupportsInformalParameters annotation to tell 
Tapestry that the compon
 ent should support informal parameters.</p><parameter 
ac:name="">java</parameter><plain-text-body>@SupportsInformalParameters
+                <div id="ConfluenceContent"><p>&#160;<strong>Informal 
parameters</strong> are any additional parameters beyond the parameters 
explicitly defined for a component using the <a  class="external-link" 
href="http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/annotations/Parameter.html";>Parameter</a>
 annotation.</p><div class="aui-label" style="float:right" title="Related 
Articles"><h3>Related Articles</h3><ul class="content-by-label"><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="enum-parameter-recipe.html">Enum Parameter Recipe</a> 
+  </div> </li><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="supporting-informal-parameters.html">Supporting Informal 
Parameters</a> 
+  </div> </li><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="default-parameter.html">Default Parameter</a> 
+  </div> </li><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="component-parameters.html">Component Parameters</a> 
+  </div> </li></ul></div><p>Any component that closely emulates a particular 
HTML element <em>should</em> support informal parameters. You'll find that many 
of the built-in Tapestry components, such as Form, Label and TextField, do 
exactly that.</p><p>To support informal parameters, a component class should 
use either the @<a  class="external-link" 
href="http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/annotations/SupportsInformalParameters.html";>SupportsInformalParameters</a>
 annotation or the RenderInformals mixin. Otherwise, providing informal 
parameters to a component will do nothing: any additional parameters will be 
ignored.</p><h3 
id="SupportingInformalParameters-Approach1:@SupportsInformalParameters">Approach
 1: @SupportsInformalParameters</h3><p>In the example below we create an Img 
component, a custom replacement for the &lt;img&gt; tag. Its src parameter will 
be an asset. We'll use the @SupportsInformalParameters annotation to tell 
Tapestry that the compo
 nent should support informal parameters.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">@SupportsInformalParameters
 public class Img
 {
     @Parameter(required=true, allowNull=false, 
defaultPrefix=BindingConstants.ASSET)
@@ -84,7 +104,9 @@ public class Img
          return false;
     }
 }
-</plain-text-body><p>The call to renderInformalParameters() is what converts 
and outputs the informal parameters. It should occur <em>after</em> your code 
has rendered attributes into the element (earlier written attributes will 
<em>not</em> be overwritten by later written attributes).</p><p>Returning false 
from beginRender() ensures that the body of the component is not rendered, 
which makes sense for an &lt;img&gt; tag, which has no body.</p><h3 
id="SupportingInformalParameters-Approach2:RenderInformals">Approach 2: 
RenderInformals</h3><p>Another, equivalent, approach is to use the <a  
class="external-link" 
href="http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/corelib/mixins/RenderInformals.html";>RenderInformals</a>
 mixin:</p><parameter ac:name="">java</parameter><plain-text-body>public class 
Img
+</pre>
+</div></div><p>The call to renderInformalParameters() is what converts and 
outputs the informal parameters. It should occur <em>after</em> your code has 
rendered attributes into the element (earlier written attributes will 
<em>not</em> be overwritten by later written attributes).</p><p>Returning false 
from beginRender() ensures that the body of the component is not rendered, 
which makes sense for an &lt;img&gt; tag, which has no body.</p><h3 
id="SupportingInformalParameters-Approach2:RenderInformals">Approach 2: 
RenderInformals</h3><p>Another, equivalent, approach is to use the <a  
class="external-link" 
href="http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/corelib/mixins/RenderInformals.html";>RenderInformals</a>
 mixin:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">public class Img
 {
     @Parameter(required=true, allowNull=false, 
defaultPrefix=BindingConstants.ASSET)
     private Asset src;
@@ -103,7 +125,8 @@ public class Img
         return false;
     }
 }
-</plain-text-body><p>This variation splits the rendering of the tag in two 
pieces, so that the RenderInformals mixin can operate (after beginRender() and 
before beforeRenderBody()).</p></div>
+</pre>
+</div></div><p>This variation splits the rendering of the tag in two pieces, 
so that the RenderInformals mixin can operate (after beginRender() and before 
beforeRenderBody()).</p></div>
       </div>
 
       <div class="clearer"></div>

Modified: websites/production/tapestry/content/switching-cases.html
==============================================================================
--- websites/production/tapestry/content/switching-cases.html (original)
+++ websites/production/tapestry/content/switching-cases.html Wed Sep 20 
12:29:16 2017
@@ -27,6 +27,16 @@
       </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>
+      SyntaxHighlighter.defaults['toolbar'] = false;
+      SyntaxHighlighter.all();
+    </script>
   
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -67,10 +77,10 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>&#160;</p><parameter 
ac:name="hidden">true</parameter><parameter 
ac:name="atlassian-macro-output-type">BLOCK</parameter><rich-text-body><p>Performing
 the equivalent of a "switch" statement in your component template using blocks 
and a delegate</p></rich-text-body><h1 
id="SwitchingCases-SwitchingCases">Switching Cases</h1><p>With Tapestry's 
<code>If</code> component you can only test one condition at a time. In order 
to distinguish multiple cases, you'd have to write complex nested if/else 
constructs in your page template and have a checker method for each test inside 
your page class.<plain-text-body>{float:right|background=#eee|padding=0 1em}
-    *JumpStart Demo:*
-    [If, Not, Negate, Switch, Else, 
Unless|http://jumpstart.doublenegative.com.au/jumpstart/examples/lang/ifnotnegateswitchelseunless]
-{float}</plain-text-body>In cases where you have to distinguish multiple 
cases, the <code>Delegate</code> component comes in. It delegates rendering to 
some other component, for example a <code>Block</code>. For each case you have, 
you basically wrap the content inside a <code>Block</code> that doesn't get 
rendered by default. You then place a Delegate component on your page and point 
it to a method inside your page class that will decide which of your Blocks 
should be rendered.</p><p>Imagine for example a use case, where you want to 
distinguish between 4 cases and you have an int property called 
<code>whichCase</code> that should be tested against. Your page template would 
look as follows:</p><parameter ac:name="language">xml</parameter><parameter 
ac:name="title">SwitchMe.tml</parameter><plain-text-body>&lt;html 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"&gt;
+                <div id="ConfluenceContent"><p>&#160;</p><h1 
id="SwitchingCases-SwitchingCases">Switching Cases</h1><p>With Tapestry's 
<code>If</code> component you can only test one condition at a time. In order 
to distinguish multiple cases, you'd have to write complex nested if/else 
constructs in your page template and have a checker method for each test inside 
your page class.</p><div class="navmenu" style="float:right; background:#eee; 
margin:3px; padding:0 1em">
+<p>    <strong>JumpStart Demo:</strong><br clear="none">
+    <a  class="external-link" 
href="http://jumpstart.doublenegative.com.au/jumpstart/examples/lang/ifnotnegateswitchelseunless";
 rel="nofollow">If, Not, Negate, Switch, Else, Unless</a></p></div>In cases 
where you have to distinguish multiple cases, the <code>Delegate</code> 
component comes in. It delegates rendering to some other component, for example 
a <code>Block</code>. For each case you have, you basically wrap the content 
inside a <code>Block</code> that doesn't get rendered by default. You then 
place a Delegate component on your page and point it to a method inside your 
page class that will decide which of your Blocks should be rendered.<p>Imagine 
for example a use case, where you want to distinguish between 4 cases and you 
have an int property called <code>whichCase</code> that should be tested 
against. Your page template would look as follows:</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;">
 <b>SwitchMe.tml</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;html 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"&gt;
     &lt;body&gt;
         &lt;h1&gt;Switch&lt;/h1&gt;
 
@@ -93,7 +103,9 @@
         &lt;/t:block&gt;
     &lt;/body&gt;
 &lt;/html&gt;
-</plain-text-body><p>You can see, that the <code>Delegate</code> component's 
<code>to</code> parameter is bound to the case property of your page class. In 
your page class you therefore have a <code>getCase()</code> method that is 
responsible for telling the <code>Delegate</code> component which component 
should be rendered. For that we are injecting references to the <code>Block}}s 
defined in your page template into the page class and return the according 
{{Block</code> in the <code>getCase()</code> method.</p><parameter 
ac:name="language">java</parameter><parameter 
ac:name="title">SwitchMe.java</parameter><plain-text-body>public class SwitchMe
+</pre>
+</div></div><p>You can see, that the <code>Delegate</code> component's 
<code>to</code> parameter is bound to the case property of your page class. In 
your page class you therefore have a <code>getCase()</code> method that is 
responsible for telling the <code>Delegate</code> component which component 
should be rendered. For that we are injecting references to the <code>Block}}s 
defined in your page template into the page class and return the according 
{{Block</code> in the <code>getCase()</code> method.</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>SwitchMe.java</b></div><div 
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">public class SwitchMe
 {
     @Persist
     private int whichCase;
@@ -118,7 +130,8 @@
         }
     }
 }
-</plain-text-body><p>Happy switching!</p></div>
+</pre>
+</div></div><p>Happy switching!</p></div>
       </div>
 
       <div class="clearer"></div>

Modified: websites/production/tapestry/content/symbols.html
==============================================================================
--- websites/production/tapestry/content/symbols.html (original)
+++ websites/production/tapestry/content/symbols.html Wed Sep 20 12:29:16 2017
@@ -27,6 +27,14 @@
       </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>
+      SyntaxHighlighter.defaults['toolbar'] = false;
+      SyntaxHighlighter.all();
+    </script>
   
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -36,26 +44,13 @@
 
   <div class="wrapper bs">
 
-        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div>
-
-</div>
+        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  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  href="index.html"><span 
class="confluence-embedded-file-wrapper"><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";></span></a></p></div>
-
-
-<div class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Symbols</h1></div>
-
-</div>
+            <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  
href="index.html"><span class="confluence-embedded-file-wrapper"><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";></span></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Symbols</h1></div></div>
       <div class="clearer"></div>
       </div>
 
@@ -67,24 +62,69 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p><strong>Symbols</strong> are 
named configuration settings for Tapestry IOC-based services. Tapestry provides 
mechanisms for easy access to symbols from within such services.</p><parameter 
ac:name="style">float:right</parameter><parameter ac:name="title">Related 
Articles</parameter><parameter 
ac:name="class">aui-label</parameter><rich-text-body><parameter 
ac:name="showLabels">false</parameter><parameter 
ac:name="showSpace">false</parameter><parameter ac:name="title">Related 
Articles</parameter><parameter ac:name="cql">label = "configuration" and space 
= currentSpace()</parameter></rich-text-body><h2 
id="Symbols-Syntax">Syntax</h2><p>The syntax of symbols is based on Ant 
expressions. That is, the name is surrounded by ${ and } 
characters:</p><plain-text-body>${some.symbol.name}
-</plain-text-body><p>The value on the inside is the <em>symbol name</em>. By 
convention, the symbol name is segmented with periods (for example, 
"tapestry.production-mode").</p><h2 id="Symbols-Built-inSymbols">Built-in 
Symbols</h2><p>The <a  href="configuration.html">Configuration</a> page lists 
the symbol names used by Tapestry's built-in services.</p><h2 
id="Symbols-UsingSymbolsinyourServices">Using Symbols in your 
Services</h2><p>Symbols are used inside the @<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Value.html";>Value</a>
 and @<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html";>InjectService</a>
 annotations.</p><p>For example:</p><parameter 
ac:name="">java</parameter><plain-text-body>  public static MyService build(
+                <div id="ConfluenceContent"><p><strong>Symbols</strong> are 
named configuration settings for Tapestry IOC-based services. Tapestry provides 
mechanisms for easy access to symbols from within such services.</p><div 
class="aui-label" style="float:right" title="Related Articles"><h3>Related 
Articles</h3><ul class="content-by-label"><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="application-module-class-cheat-sheet.html">Application Module 
Class Cheat Sheet</a> 
+  </div> </li><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="ioc-cookbook-service-configurations.html">IoC cookbook - Service 
Configurations</a> 
+  </div> </li><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="symbols.html">Symbols</a> 
+  </div> </li><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="tapestry-ioc-configuration.html">Tapestry IoC Configuration</a> 
+  </div> </li><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="response-compression.html">Response Compression</a> 
+  </div> </li><li> 
+  <div> 
+   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
+  </div> 
+  <div class="details"> 
+   <a  href="configuration.html">Configuration</a> 
+  </div> </li></ul></div><h2 id="Symbols-Syntax">Syntax</h2><p>The syntax of 
symbols is based on Ant expressions. That is, the name is surrounded by ${ and 
} characters:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">${some.symbol.name}
+</pre>
+</div></div><p>The value on the inside is the <em>symbol name</em>. By 
convention, the symbol name is segmented with periods (for example, 
"tapestry.production-mode").</p><h2 id="Symbols-Built-inSymbols">Built-in 
Symbols</h2><p>The <a  href="configuration.html">Configuration</a> page lists 
the symbol names used by Tapestry's built-in services.</p><h2 
id="Symbols-UsingSymbolsinyourServices">Using Symbols in your 
Services</h2><p>Symbols are used inside the @<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Value.html";>Value</a>
 and @<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html";>InjectService</a>
 annotations.</p><p>For example:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  public static MyService build(
       @InjectService("${some-service-id}") Collaborator collab)
   {
     return . . . ;
-  }</plain-text-body><p>Here, the symbol name, <code>some-service-id</code> is 
a service id, such as <code>WackyCollaborator</code>.</p><p>Although not shown 
here, it is possible to use multiple symbols inside the string, or mix literal 
text with symbols.</p><h2 id="Symbols-InjectingValuesfromSymbols">Injecting 
Values from Symbols</h2><p>You may also inject symbol values. For example, if 
you are interested in whether the application is in production mode or 
developer mode:</p><parameter 
ac:name="">java</parameter><plain-text-body>public class MyService implements 
MyServiceInterface
+  }</pre>
+</div></div><p>Here, the symbol name, <code>some-service-id</code> is a 
service id, such as <code>WackyCollaborator</code>.</p><p>Although not shown 
here, it is possible to use multiple symbols inside the string, or mix literal 
text with symbols.</p><h2 id="Symbols-InjectingValuesfromSymbols">Injecting 
Values from Symbols</h2><p>You may also inject symbol values. For example, if 
you are interested in whether the application is in production mode or 
developer mode:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">public class MyService implements MyServiceInterface
 {
   public MyService(@Value("${tapestry.production-mode}") boolean 
productionMode, ...)
   {
     if (productionMode) {
       . . .
-</plain-text-body><p>Here Tapestry has <a  
href="type-coercion.html">coerced</a> the "tapestry.production-mode" symbol to 
a boolean to be injected.</p><p>As an alternative, the @Symbol annotation, may 
be used:</p><parameter ac:name="">java</parameter><plain-text-body>public class 
MyService implements MyServiceInterface
+</pre>
+</div></div><p>Here Tapestry has <a  href="type-coercion.html">coerced</a> the 
"tapestry.production-mode" symbol to a boolean to be injected.</p><p>As an 
alternative, the @Symbol annotation, may be used:</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">public class MyService implements MyServiceInterface
 {
   public MyService(@Symbol(SymbolConstants.PRODUCTION_MODE) boolean 
productionMode, ...)
   {
     if (productionMode) {
       . . .
-</plain-text-body><p>This is very useful when a constant value is defined for 
the symbol; it means that the compiler can catch a typo, rather than detecting 
it a runtime.</p><p><strong>Note:</strong> When injecting a symbol as a 
<em>string</em> into a service, you must use the @Inject annotation as well as 
@Value or @Symbol; otherwise Tapestry will inject the service's service 
id.</p><h2 id="Symbols-SymbolsinComponentClassesandTemplates">Symbols in 
Component Classes and Templates</h2><p>It's easy to use a symbol in a component 
class:</p><plain-text-body>  @Inject
+</pre>
+</div></div><p>This is very useful when a constant value is defined for the 
symbol; it means that the compiler can catch a typo, rather than detecting it a 
runtime.</p><p><strong>Note:</strong> When injecting a symbol as a 
<em>string</em> into a service, you must use the @Inject annotation as well as 
@Value or @Symbol; otherwise Tapestry will inject the service's service 
id.</p><h2 id="Symbols-SymbolsinComponentClassesandTemplates">Symbols in 
Component Classes and Templates</h2><p>It's easy to use a symbol in a component 
class:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  @Inject
   @Symbol(SymbolConstants.PRODUCTION_MODE)
   private boolean productionMode;
   . . .
@@ -92,21 +132,30 @@
     if (productionMode) {
         . . .
     }
-  }</plain-text-body><p>You can even use them directly in a component 
template, using the "symbol" binding prefix:</p><plain-text-body>&lt;t:if 
test="!symbol:tapestry.production-mode"&gt;
+  }</pre>
+</div></div><p>You can even use them directly in a component template, using 
the "symbol" binding prefix:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">&lt;t:if test="!symbol:tapestry.production-mode"&gt;
   &lt;p&gt;WARNING: We're running in development mode (slower, and less 
secure)&lt;/p&gt;
-&lt;/t:if&gt;</plain-text-body><h2 id="Symbols-SymbolResolution">Symbol 
Resolution</h2><p>Symbols are resolved by the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/SymbolSource.html";>SymbolSource</a>
 service. The SymbolSource service checks against an ordered list of <a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/SymbolProvider.html";>SymbolProvider</a>
 objects.</p><p>You may employ additional symbol providers by contributing to 
the SymbolSource service configuration, which is an ordered list of 
SymbolProviders.</p><p>By default, there are three providers:</p><h3 
id="Symbols-SystemPropertiesProvider">SystemProperties Provider</h3><p>The 
first provider allows JVM System Properties to provide symbol values. This 
allows the use of the <strong>java</strong> command's <strong>-D</strong> 
option to provide runtime overrides. This is most often used when testing code,
  rather than in production. SystemProperties is always checked first.</p><h3 
id="Symbols-ApplicationDefaultsProvider">ApplicationDefaults 
Provider</h3><p>Values not found as System Properties are searched for in the 
ApplicationDefaults. This service, ApplicationDefaults, may be configured using 
a mapped configuration to provide values.</p><p>From the previous 
example:</p><parameter ac:name="">java</parameter><plain-text-body>  public 
void contributeApplicationDefaults(MappedConfiguration&lt;String, String&gt; 
configuration)
+&lt;/t:if&gt;</pre>
+</div></div><h2 id="Symbols-SymbolResolution">Symbol Resolution</h2><p>Symbols 
are resolved by the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/SymbolSource.html";>SymbolSource</a>
 service. The SymbolSource service checks against an ordered list of <a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/SymbolProvider.html";>SymbolProvider</a>
 objects.</p><p>You may employ additional symbol providers by contributing to 
the SymbolSource service configuration, which is an ordered list of 
SymbolProviders.</p><p>By default, there are three providers:</p><h3 
id="Symbols-SystemPropertiesProvider">SystemProperties Provider</h3><p>The 
first provider allows JVM System Properties to provide symbol values. This 
allows the use of the <strong>java</strong> command's <strong>-D</strong> 
option to provide runtime overrides. This is most often used when testing code, 
rather than in pro
 duction. SystemProperties is always checked first.</p><h3 
id="Symbols-ApplicationDefaultsProvider">ApplicationDefaults 
Provider</h3><p>Values not found as System Properties are searched for in the 
ApplicationDefaults. This service, ApplicationDefaults, may be configured using 
a mapped configuration to provide values.</p><p>From the previous 
example:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  public void 
contributeApplicationDefaults(MappedConfiguration&lt;String, String&gt; 
configuration)
   {
     configuration.add("some-service-id", "WackyCollaborator");
-  }</plain-text-body><h3 id="Symbols-FactoryDefaultsProvider">FactoryDefaults 
Provider</h3><p>This is the same as ApplicationDefaults, but checked only if a 
value is not satisfied by SystemProperties or 
ApplicationDefaults.</p><p>Libraries will typically set reasonable defaults as 
contributions to the FactoryDefaults service configuration. Individual 
applications may hard code overrides of those defaults using 
ApplicationDefaults. Individual developers may override even those defaults by 
setting JVM System Properties.</p><p>FactoryDefaults is always checked last 
when resolving symbol names to symbol values.</p><h2 
id="Symbols-RecursiveSymbols">Recursive Symbols</h2><p>It is possible and valid 
to define one symbol in terms of one or more other symbols.</p><parameter 
ac:name="">java</parameter><plain-text-body>  public void 
contributeFactoryDefaults(MappedConfiguration&lt;String, String&gt; 
configuration)
+  }</pre>
+</div></div><h3 id="Symbols-FactoryDefaultsProvider">FactoryDefaults 
Provider</h3><p>This is the same as ApplicationDefaults, but checked only if a 
value is not satisfied by SystemProperties or 
ApplicationDefaults.</p><p>Libraries will typically set reasonable defaults as 
contributions to the FactoryDefaults service configuration. Individual 
applications may hard code overrides of those defaults using 
ApplicationDefaults. Individual developers may override even those defaults by 
setting JVM System Properties.</p><p>FactoryDefaults is always checked last 
when resolving symbol names to symbol values.</p><h2 
id="Symbols-RecursiveSymbols">Recursive Symbols</h2><p>It is possible and valid 
to define one symbol in terms of one or more other symbols.</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  public void 
contributeFactoryDefaults(MappedConfiguration&lt;String, String&gt; 
configuration)
   {
       configuration.add("report.url", 
"http://${report.host}:${report.port}/${report.path}";);
       configuration.add("report.host", "www.myreportsite.com");
       configuration.add("report.port", "80");
       configuration.add("report.path", "/report.cgi");
-  }</plain-text-body><p>The ordinary default for <code>report.url</code> will 
be <code><a  class="external-link" 
href="http://www.myreportsite.com:80/report.cgi"; 
rel="nofollow">http://www.myreportsite.com:80/report.cgi</a></code>.</p><p>However,
 this can be changed by making an overriding contribution to the 
ApplicationDefaults service configuration.</p><p>Tapestry checks that no symbol 
is directly or indirectly dependent on itself. For example, the following 
contribution is illegal:</p><parameter 
ac:name="">java</parameter><plain-text-body>  public void 
contributeApplicationDefaults(MappedConfiguration&lt;String, String&gt; 
configuration)
+  }</pre>
+</div></div><p>The ordinary default for <code>report.url</code> will be 
<code><a  class="external-link" 
href="http://www.myreportsite.com:80/report.cgi"; 
rel="nofollow">http://www.myreportsite.com:80/report.cgi</a></code>.</p><p>However,
 this can be changed by making an overriding contribution to the 
ApplicationDefaults service configuration.</p><p>Tapestry checks that no symbol 
is directly or indirectly dependent on itself. For example, the following 
contribution is illegal:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  public void 
contributeApplicationDefaults(MappedConfiguration&lt;String, String&gt; 
configuration)
   {
       configuration.add("report.path", "${report.url}/report.cgi");
-  }</plain-text-body><p>When the <code>report.url</code> is referenced, an 
exception will be thrown with the message: <em>Symbol 'report.path' is defined 
in terms of itself (report.path --&gt; report.url --&gt; 
report.path)</em>.</p><p>&#160;</p><p></p></div>
+  }</pre>
+</div></div><p>When the <code>report.url</code> is referenced, an exception 
will be thrown with the message: <em>Symbol 'report.path' is defined in terms 
of itself (report.path --&gt; report.url --&gt; 
report.path)</em>.</p><p>&#160;</p><p></p></div>
       </div>
 
       <div class="clearer"></div>


Reply via email to