You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by bu...@apache.org on 2015/07/19 23:21:30 UTC

svn commit: r958985 [26/29] - in /websites/production/tapestry/content: ./ 2009/09/13/ 2009/10/27/ 2009/11/25/ 2010/07/18/ 2010/07/24/ 2010/10/11/ 2010/10/31/ 2010/11/18/ 2010/12/16/ 2010/12/17/ 2011/01/18/ 2011/03/23/ 2011/03/29/ 2011/03/30/ 2011/03/3...

Modified: websites/production/tapestry/content/tapestry-ioc-configuration.html
==============================================================================
--- websites/production/tapestry/content/tapestry-ioc-configuration.html (original)
+++ websites/production/tapestry/content/tapestry-ioc-configuration.html Sun Jul 19 21:21:27 2015
@@ -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 type="text/javascript">
+  SyntaxHighlighter.defaults['toolbar'] = false;
+  SyntaxHighlighter.all();
+  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -57,15 +67,7 @@
   </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="tapestry-ioc-decorators.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="tapestry-ioc-decorators.html">Tapestry IoC Decorators</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="case-insensitivity.html">Case Insensitivity</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" href="case-insensitivity.html"><img align="mi
 ddle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></div>
+<div id="ConfluenceContent">
 
 <h1 id="TapestryIoCConfiguration-TapestryIoCConfiguration">Tapestry IoC Configuration</h1>
 
@@ -78,14 +80,14 @@ table.ScrollbarTable td.ScrollbarNextIco
 
 <p>Modules configure a service by <em>contributing</em> to service configurations. This seems esoteric, but is quite handy, and is best explained by an example.</p>
 
-<p>Let's say you've written a bunch of different services, each of which does something specific for a particular type of file (identified by the file's extension), and each implements the same interface, which we'll call FileServicer. And now let's say you need a central service that selects the one of your FileServicer implementations based on a given file extension.  You start by providing a <a shape="rect" href="defining-tapestry-ioc-services.html#DefiningTapestryIOCServices-serviceBuilderMethod">service builder method</a>:</p>
+<p>Let's say you've written a bunch of different services, each of which does something specific for a particular type of file (identified by the file's extension), and each implements the same interface, which we'll call FileServicer. And now let's say you need a central service that selects the one of your FileServicer implementations based on a given file extension.  You start by providing a <a shape="rect" href="defining-tapestry-ioc-services.html">service builder method</a>:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   public static FileServiceDispatcher buildFileServicerDispatcher(Map&lt;String,FileServicer&gt; contributions)
   {
     return new FileServiceDispatcherImpl(contributions);
-  } ]]></script>
+  } </pre>
 </div></div>
 
 <p>In order to provide a value for the contribution parameter, Tapestry will <em>collect</em> contributions from service contribution methods. It will ensure that the keys and values match the generic types shown (String for the key, FileServicer for the value). The map will be assembled and passed into the service builder method, and from there, into the FileServiceDispatcherImpl constructor.</p>
@@ -93,37 +95,37 @@ table.ScrollbarTable td.ScrollbarNextIco
 <p>So where do the values come from? Your service contributor methods, methods whose names start with "contribute":</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   public static void contributeFileServicerDispatcher(MappedConfiguration&lt;String,FileServicer&gt; configuration)
   {
-    configuration.add(&quot;txt&quot;, new TextFileServicer());
-    configuration.add(&quot;pdf&quot;, new PDFFileServicer());
-  }  ]]></script>
+    configuration.add("txt", new TextFileServicer());
+    configuration.add("pdf", new PDFFileServicer());
+  }  </pre>
 </div></div>
 
 <p>Or, instead of instantiating those services ourselves, we could <a shape="rect" href="injection-in-detail.html">inject</a> them:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   public static void contributeFileServicerDispatcher(MappedConfiguration&lt;String,FileServicer&gt; configuration,
   
-    @InjectService(&quot;TextFileServicer&quot;) FileServicer textFileServicer,
-    @InjectService(&quot;PDFFileServicer&quot;) FileServicer pdfFileServicer)
+    @InjectService("TextFileServicer") FileServicer textFileServicer,
+    @InjectService("PDFFileServicer") FileServicer pdfFileServicer)
   {
-    configuration.add(&quot;txt&quot;, textFileServicer);
-    configuration.add(&quot;pdf&quot;, pdfFileServicer);
-  }  ]]></script>
+    configuration.add("txt", textFileServicer);
+    configuration.add("pdf", pdfFileServicer);
+  }  </pre>
 </div></div>
 
 <p>The <strong>extensibility</strong> comes from the fact that multiple modules may all contribute to the same service configuration:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   public static void contributeFileServicerDispatcher(MappedConfiguration&lt;String,FileServicer&gt; configuration)
   {
-    configuration.add(&quot;doc&quot;, new WordFileServicer());
-    configuration.add(&quot;ppt&quot;, new PowerPointFileServicer());
-  }  ]]></script>
+    configuration.add("doc", new WordFileServicer());
+    configuration.add("ppt", new PowerPointFileServicer());
+  }  </pre>
 </div></div>
 
 <p>Now the FileServicerDispatcher builder method gets a Map with at least four entries in it.</p>
@@ -146,34 +148,34 @@ table.ScrollbarTable td.ScrollbarNextIco
 <ul><li>There is no longer a linkage between the contribution method name and the service id, which is much more refactoring safe: if you change the service interface name, or the ID of the service, your method will still be invoked when using @Contribute.</li></ul>
 
 
-<ul><li>It makes it much easier for an <a shape="rect" href="#TapestryIoCConfiguration-overrides">override</a> of the service to get the configuration intended for the original service.</li></ul>
+<ul><li>It makes it much easier for an <a shape="rect" href="tapestry-ioc-configuration.html">override</a> of the service to get the configuration intended for the original service.</li></ul>
 
 
 <p>The following example is an annotation-based alternative for the contribution method above.</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 @Contribute(FileServiceDispatcher.class)
 public static void arbitraryMethodName(MappedConfiguration&lt;String,FileServicer&gt; configuration)
 {
-    configuration.add(&quot;doc&quot;, new WordFileServicer());
-    configuration.add(&quot;ppt&quot;, new PowerPointFileServicer());
+    configuration.add("doc", new WordFileServicer());
+    configuration.add("ppt", new PowerPointFileServicer());
 }  
-]]></script>
+</pre>
 </div></div>
 
 <p>If you have several implementations of a service interface, you have to disambiguate the services. For this purpose the marker annotations should be placed on the contributor method.</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 @Contribute(FileServiceDispatcher.class)
 @Red @Blue
 public static void arbitraryMethodName(MappedConfiguration&lt;String,FileServicer&gt; configuration)
 {
-    configuration.add(&quot;doc&quot;, new WordFileServicer());
-    configuration.add(&quot;ppt&quot;, new PowerPointFileServicer());
+    configuration.add("doc", new WordFileServicer());
+    configuration.add("ppt", new PowerPointFileServicer());
 }
-]]></script>
+</pre>
 </div></div>
 
 <p>In this example, the method will only be invoked when constructing a service configuration where the service itself has both the Red and Blue marker annotations.  Tapestry knows which annotations are marker annotations, and which marker annotations apply to the service, via the @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Marker.html">Marker</a> annotation on the service implementation.</p>
@@ -183,15 +185,15 @@ public static void arbitraryMethodName(M
 <p>Note that it <em>is</em> possible for the same contribution method to be invoked to contribute to the configuration of multiple different services.</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   @Contribute(FileServiceDispatcher.class)
   @Local
   public static void arbitraryMethodName(MappedConfiguration&lt;String,FileServicer&gt; configuration)
   {
-    configuration.add(&quot;doc&quot;, new WordFileServicer());
-    configuration.add(&quot;ppt&quot;, new PowerPointFileServicer());
+    configuration.add("doc", new WordFileServicer());
+    configuration.add("ppt", new PowerPointFileServicer());
   }  
-]]></script>
+</pre>
 </div></div>
 
 <h1 id="TapestryIoCConfiguration-ConfigurationTypes">Configuration Types</h1>
@@ -210,7 +212,7 @@ public static void arbitraryMethodName(M
 <p>For example, here's a kind of Startup service that needs some Runnable objects. It doesn't care what order the Runnable objects are executed in.</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   public static Runnable buildStartup(final Collection&lt;Runnable&gt; configuration)
   {
     return new Runnable()
@@ -221,7 +223,7 @@ public static void arbitraryMethodName(M
           contribution.run();
       }
     };
-  }  ]]></script>
+  }  </pre>
 </div></div>
 
 <p>Here we don't even need a separate class for the implementation, we use an inner class for the implementation. The point is, the configuration is provided to the builder method, which passes it along to the implementation of the service.</p>
@@ -229,12 +231,12 @@ public static void arbitraryMethodName(M
 <p>On the contribution side, a service contribution method sees a <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/Configuration.html">Configuration</a> object:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   public static void contributeStartup(Configuration&lt;Runnable&gt; configuration)
   {
     configuration.add(new JMSStartup());
     configuration.add(new FileSystemStartup());
-  }    ]]></script>
+  }    </pre>
 </div></div>
 
 <p>The Configuration interface defines just a single method: <code>add()</code>. This is very intentional: the only thing you can do is add new items. If we passed in a Collection, you might be tempted to check it for values, or remove them ... but that flies in the face of the fact that the order of execution of these service contribution methods is entirely unknown.</p>
@@ -253,7 +255,7 @@ public static void arbitraryMethodName(M
 <p>So, if we changed our Startup service to require a specific order for startup:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   public static Runnable buildStartup(final List&lt;Runnable&gt; configuration)
   {
     return new Runnable()
@@ -264,7 +266,7 @@ public static void arbitraryMethodName(M
           contribution.run();
       }
     };
-  }  ]]></script>
+  }  </pre>
 </div></div>
 
 <p>Notice that the service builder method is shielded from the details of how the items are ordered. It doesn't have to know about IDs and pre- and post-requisites. By using a parameter type of List, we've triggered Tapestry to collect all the ordering information.</p>
@@ -272,12 +274,12 @@ public static void arbitraryMethodName(M
 <p>For our service contribution methods, we must provide a parameter of type <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/OrderedConfiguration.html">OrderedConfiguration</a>:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   public static void contributeStartup(OrderedConfiguration&lt;Runnable&gt; configuration)
   {
-    configuration.add(&quot;JMS&quot;, new JMSStartup());
-    configuration.add(&quot;FileSystem&quot;, new FileSystemStartup(), &quot;after:CacheSetup&quot;);
-  }    ]]></script>
+    configuration.add("JMS", new JMSStartup());
+    configuration.add("FileSystem", new FileSystemStartup(), "after:CacheSetup");
+  }    </pre>
 </div></div>
 
 <p>Often, you don't care about ordering; the first form of the add method is used then. The ordering algorithm will find a spot for the object (here the JMSStartup instance) based on the constraints of other contributed objects.</p>
@@ -303,7 +305,7 @@ public static void arbitraryMethodName(M
 
 <p>Neither the key nor the value may be null.</p>
 
-<p>For mapped configurations where the key type is String, a <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/util/CaseInsensitiveMap.html">CaseInsensitiveMap</a> will be automatically used (and passed to the service builder method), to help ensure that <a shape="rect" href="#TapestryIoCConfiguration-case.html">case insensitivity</a> is automatic and pervasive.</p>
+<p>For mapped configurations where the key type is String, a <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/util/CaseInsensitiveMap.html">CaseInsensitiveMap</a> will be automatically used (and passed to the service builder method), to help ensure that <a shape="rect" href="tapestry-ioc-configuration.html">case insensitivity</a> is automatic and pervasive.</p>
 
 <h1 id="TapestryIoCConfiguration-InjectingClasses">Injecting Classes</h1>
 
@@ -335,16 +337,7 @@ public static void arbitraryMethodName(M
 <p>This allows you to fine tune configuration values that are contributed from modules that you are using, rather than just those that you write yourself. It is powerful and a bit dangerous.</p>
 
 <p>In Tapestry 5.0, services that wanted to support this kind of override behavior had to implement it on an ad-hoc basis, such as ApplicationDefaults overriding FactoryDefaults. In many cases, that is still useful.</p>
-
-<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="tapestry-ioc-decorators.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="tapestry-ioc-decorators.html">Tapestry IoC Decorators</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="case-insensitivity.html">Case Insensitivity</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" href="case-insensitivity.html"><img align="mi
 ddle" 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>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/tapestry-ioc-decorators.html
==============================================================================
--- websites/production/tapestry/content/tapestry-ioc-decorators.html (original)
+++ websites/production/tapestry/content/tapestry-ioc-decorators.html Sun Jul 19 21:21:27 2015
@@ -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 type="text/javascript">
+  SyntaxHighlighter.defaults['toolbar'] = false;
+  SyntaxHighlighter.all();
+  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -57,15 +67,7 @@
   </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-advisors.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-advisors.html">Service Advisors</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="tapestry-ioc-configuration.html">Tapestry IoC Configuration</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" href="tapestry-ioc-configuration.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 id="ConfluenceContent">
 
 <h1 id="TapestryIoCDecorators-TapestryIoCDecorators">Tapestry IoC Decorators</h1>
 
@@ -95,7 +97,7 @@ table.ScrollbarTable td.ScrollbarNextIco
 <h1 id="TapestryIoCDecorators-ServiceDecorationMethods">Service Decoration Methods</h1>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 package org.example.myapp.services;
 
 import org.apache.tapestry5.ioc.services.LoggingDecorator;
@@ -115,7 +117,7 @@ public class MyAppModule
   {
     return decorator.build(serviceInterface, delegate, serviceId, logger);
   }
-}]]></script>
+}</pre>
 </div></div>
 
 <p>The method decorateIndexer() is a service decorator method because it starts with the word "decorate". In this simple case, only the myapp.Indexer service will be decorated, even if there are other services in this module or others ... this is because of the name match ("decorateIndexer" and "buildIndexer"), but we'll shortly see how annotations can be used to target many services for decoration.</p>
@@ -133,17 +135,17 @@ public class MyAppModule
 <p>Alternately, when targetting services whose type is known at compile time, you may provide a parameter whose type matches the service interface. For example, decorateIndexer() will always be applied to the Indexer service, whose type (Indexer) is known. We could therefore rewrite decorateIndexer() as:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   public static Indexer decorateIndexer(Indexer delegate, Logger logger, LoggingDecorator decorator)
   {
-    return decorator.build(Indexer.class, delegate, &quot;Indexer&quot;, logger);
-  }]]></script>
+    return decorator.build(Indexer.class, delegate, "Indexer", logger);
+  }</pre>
 </div></div>
 
 <p>Of course, nothing stops you from combining building with decorating inside the service builder method:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 package org.example.myapp.services;
 
 import org.apache.tapestry5.ioc.services.LoggingDecorator;
@@ -155,7 +157,7 @@ public class MyAppModule
   {
     return decorator.build(Indexer.class, logger, new IndexerImpl());
   }
-}]]></script>
+}</pre>
 </div></div>
 
 <p>But as we'll see next, it's possible to have a single decorator method work on many different services by using annotations.</p>
@@ -173,14 +175,14 @@ public class MyAppModule
 <p>For example, to target all the services in your module:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
-  @Match(&quot;*&quot;)
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
+  @Match("*")
   public static &lt;T&gt; T decorateLogging(Class&lt;T&gt; serviceInterface, T delegate,
     String serviceId, Logger logger,
     LoggingDecorator decorator)
   {
     return decorator.build(serviceInterface, delegate, serviceId, logger);
-  }   ]]></script>
+  }   </pre>
 </div></div>
 
 <p>You can use multiple patterns with @Match, in which case, the decorator will be applied to a service that matches <em>any</em> of the patterns. For instance, if you only wanted logging for your data access and business logic services, you might end up with <code>@Match("Data*", "*Logic")</code> (based, of course, on how you name your services).</p>
@@ -202,15 +204,15 @@ public class MyAppModule
 <p>For example, you almost always want logging decorators to come first, so:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
-  @Match(&quot;*&quot;)
-  @Order(&quot;before:*&quot;)
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
+  @Match("*")
+  @Order("before:*")
   public static &lt;T&gt; T decorateLogging(Class&lt;T&gt; serviceInterface, T delegate,
     String serviceId, Logger logger,
     LoggingDecorator decorator)
   {
     return decorator.build(serviceInterface, delegate, serviceId, logger);
-  }   ]]></script>
+  }   </pre>
 </div></div>
 
 <p>"before:*" indicates that this decorator should come before any decorator in <em>any</em> module.</p>
@@ -231,16 +233,16 @@ public class MyAppModule
 <p>Starting from version 5.2, Tapestry supports annotation-driven decorator methods. If the <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Decorate.html">@Decorate</a> annotation is present, the decorator method can be arbitrary named, as shown in the following example.</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   @Decorate
-  @Match(&quot;*DAO&quot;)
+  @Match("*DAO")
   public static &lt;T&gt; T byServiceId(Class&lt;T&gt; serviceInterface, T delegate,
     String serviceId, Logger logger,
     LoggingDecorator decorator)
   {
     return decorator.build(serviceInterface, delegate, serviceId, logger);
   }
-]]></script>
+</pre>
 </div></div>
 
 <p>The decorator above is applied to any service whose id matches the "*DAO" pattern.</p>
@@ -248,7 +250,7 @@ public class MyAppModule
 <p>Alternatively, marker annotations can be placed on the decorate method to match a specific service.</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   @Decorate
   @Blue
   public static &lt;T&gt; T byMarkerAnnotation(Class&lt;T&gt; serviceInterface, T delegate,
@@ -257,7 +259,7 @@ public class MyAppModule
   {
     return decorator.build(serviceInterface, delegate, serviceId, logger);
   }
-]]></script>
+</pre>
 </div></div>
 
 <p>The decorator above is applied to any service that is marked by the @Blue annotation.</p>
@@ -265,21 +267,21 @@ public class MyAppModule
 <p>By default, <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Decorate.html">@Decorate</a> annotation applies the decorator to any service matched by the <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Match.html">@Match</a> or marker annotations. You can limit the matching to a single service interface, as shown in the following example.</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   @Decorate(serviceInterface=MyService.class)
-  @Match(&quot;*DAO&quot;)
+  @Match("*DAO")
   public static &lt;T&gt; T byServiceId(Class&lt;T&gt; serviceInterface, T delegate,
     String serviceId, Logger logger,
     LoggingDecorator decorator)
   {
     return decorator.build(serviceInterface, delegate, serviceId, logger);
-  }]]></script>
+  }</pre>
 </div></div>
 
 <p>In the example above, the decorator is applied to any implementation of MyService interfaces whose id matches the "*DAO" pattern.</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   @Decorate(serviceInterface=MyService.class)
   @Blue
   public static &lt;T&gt; T byMarkerAnnotation(Class&lt;T&gt; serviceInterface, T delegate,
@@ -288,7 +290,7 @@ public class MyAppModule
   {
     return decorator.build(serviceInterface, delegate, serviceId, logger);
   }
-]]></script>
+</pre>
 </div></div>
 
 <p>The decorator above is applied to any implementation of the MyService interface that is marked by the @Blue annotation.</p>
@@ -316,7 +318,7 @@ public class MyAppModule
 <p>By way of an example, we'll show an implementation of the LoggingDecorator service:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 public class LoggingDecoratorImpl implements LoggingDecorator
 {
     private final AspectDecorator aspectDecorator;
@@ -368,10 +370,10 @@ public class LoggingDecoratorImpl implem
         };
 
         return aspectDecorator.build(serviceInterface, delegate, advice,
-                                      String.format(&quot;&lt;Logging interceptor for %s(%s)&gt;&quot;, serviceId,
+                                      String.format("&lt;Logging interceptor for %s(%s)&gt;", serviceId,
                                                     serviceInterface.getName()));
     }
-}]]></script>
+}</pre>
 </div></div>
 
 <p><em>The actual code has been refactored slightly since this documentation was written.</em></p>
@@ -383,16 +385,7 @@ public class LoggingDecoratorImpl implem
 <p>For checked exceptions, we use isFail() and getThrown().</p>
 
 <p>The AspectDecorator service can also be used in more complicated ways: it is possible to only advise some of the methods and not others, or use different advice for different methods. Check the JavaDoc for more details.</p>
-
-<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-advisors.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-advisors.html">Service Advisors</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="tapestry-ioc-configuration.html">Tapestry IoC Configuration</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" href="tapestry-ioc-configuration.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>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/tapestry-ioc-modules.html
==============================================================================
--- websites/production/tapestry/content/tapestry-ioc-modules.html (original)
+++ websites/production/tapestry/content/tapestry-ioc-modules.html Sun Jul 19 21:21:27 2015
@@ -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 type="text/javascript">
+  SyntaxHighlighter.defaults['toolbar'] = false;
+  SyntaxHighlighter.all();
+  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -57,15 +67,7 @@
   </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="tapestry-ioc-overview.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="tapestry-ioc-overview.html">Tapestry IoC Overview</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="defining-tapestry-ioc-services.html">Defining Tapestry IOC Services</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" href="defining-tapestry-ioc
 -services.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 id="ConfluenceContent">
 
 <h1 id="TapestryIoCModules-TapestryIoCModules">Tapestry IoC Modules</h1>
 
@@ -87,7 +89,7 @@ table.ScrollbarTable td.ScrollbarNextIco
 <p>Service builder methods are public methods. They are often static. Here's a trivial example:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 package org.example.myapp.services;
 
 public class MyAppModule
@@ -96,7 +98,7 @@ public class MyAppModule
   {
     return new IndexerImpl();
   }
-}]]></script>
+}</pre>
 </div></div>
 
 <p>Any public method (static or instance) whose name starts with "build" is a service builder method, implicitly defining a service within the module.</p>
@@ -111,7 +113,7 @@ public class MyAppModule
 
 <p>Service ids must be unique; if another module contributes a service with the id "Indexer" (or any case variation thereof) a runtime exception will occur when the Registry is created.</p>
 
-<p>We could extend this example by adding additional service builder methods, or by showing how to inject dependencies. See <a shape="rect" href="defining-tapestry-ioc-services.html#DefiningTapestryIOCServices-Injecting_Dependencies">the service documentation</a> for more details.</p>
+<p>We could extend this example by adding additional service builder methods, or by showing how to inject dependencies. See <a shape="rect" href="defining-tapestry-ioc-services.html">the service documentation</a> for more details.</p>
 
 <h1 id="TapestryIoCModules-AutobuildingServices">Autobuilding Services</h1>
 
@@ -120,7 +122,7 @@ public class MyAppModule
 <p>An alternate, and usually preferred, way to define a service is via a module's bind() method. The previous example can be rewritten as:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 package org.example.myapp.services;
 
 import org.apache.tapestry5.ioc.ServiceBinder;
@@ -131,7 +133,7 @@ public class MyAppModule
   {
      binder.bind(Indexer.class, IndexerImpl.class);
   }
-}]]></script>
+}</pre>
 </div></div>
 
 <p>For more details, see see <a shape="rect" href="defining-tapestry-ioc-services.html">Defining Tapestry IOC Services</a>. In most cases, autobuilding is the <em>preferred</em> approach.</p>
@@ -145,12 +147,12 @@ public class MyAppModule
 
 <h1 id="TapestryIoCModules-Cacheing_ServicesCachingServices"><span class="confluence-anchor-link" id="TapestryIoCModules-Cacheing_Services"></span>Caching Services</h1>
 
-<p>You will occasionally find yourself in the position of injecting the same services into your service builder or service decorator methods repeatedly (this occurs much less often since the introduction of service autobuilding). This can result in quite a bit of redundant typing. Less code is better code, so as an alternative, you may define a <em>constructor</em> for your module that accepts annotated parameters (as with <a shape="rect" href="defining-tapestry-ioc-services.html#DefiningTapestryIOCServices-Injecting_Dependencies">service builder injection</a>).</p>
+<p>You will occasionally find yourself in the position of injecting the same services into your service builder or service decorator methods repeatedly (this occurs much less often since the introduction of service autobuilding). This can result in quite a bit of redundant typing. Less code is better code, so as an alternative, you may define a <em>constructor</em> for your module that accepts annotated parameters (as with <a shape="rect" href="defining-tapestry-ioc-services.html">service builder injection</a>).</p>
 
 <p>This gives you a chance to store common services in instance variables for later use inside service builder methods.</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 
 public class MyModule
 {   
@@ -171,7 +173,7 @@ public class MyModule
       
     return indexer;
   }
-}]]></script>
+}</pre>
 </div></div>
 
 <p>Notice that we've switched from <em>static</em> methods to <em>instance</em> methods. Since the builder methods are not static, the MyModule class will be instantiated so that the methods may be invoked. The constructor receives two common dependencies, which are stored into instance fields that may later be used inside service builder methods such as buildIndexer().</p>
@@ -194,7 +196,7 @@ Note that the fields are final: this is
 
 <p>Module classes are designed to be very, very simple to implement.</p>
 
-<p>Again, keep the methods very simple. Use <a shape="rect" href="defining-tapestry-ioc-services.html#DefiningTapestryIOCServices-Injecting_Dependencies">parameter injection</a> to gain access to the dependencies you need.</p>
+<p>Again, keep the methods very simple. Use <a shape="rect" href="defining-tapestry-ioc-services.html">parameter injection</a> to gain access to the dependencies you need.</p>
 
 <p>Be careful about inheritance. Tapestry will see all <em>public</em> methods, even those inherited from base classes. Tapestry <em>only</em> sees public methods.</p>
 
@@ -209,17 +211,17 @@ Note that the fields are final: this is
 <p>Often, all services in a module should share a marker, this can be specified with a @Marker annotation on the module class. For example, the TapestryIOCModule:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 @Marker(Builtin.class)
 public final class TapestryIOCModule
 {
-  . . .]]></script>
+  . . .</pre>
 </div></div>
 
 <p>This references a particular annotation class, Builtin:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 @Target(
 { PARAMETER, FIELD })
 @Retention(RUNTIME)
@@ -227,7 +229,7 @@ public final class TapestryIOCModule
 public @interface Builtin
 {
 
-}]]></script>
+}</pre>
 </div></div>
 
 <p>The annotation can be applied to method and constructor parameters, for use within the IoC container. It can also be applied to fields, though this is specific to the Tapestry web framework.</p>
@@ -241,7 +243,7 @@ public @interface Builtin
 <p>Using this style, the previous example of a module class may be rewritten:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 public class MyModule
 {
   @Inject
@@ -258,18 +260,9 @@ public class MyModule
 
     return indexer;
   }
-}]]></script>
+}</pre>
 </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="tapestry-ioc-overview.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="tapestry-ioc-overview.html">Tapestry IoC Overview</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="defining-tapestry-ioc-services.html">Defining Tapestry IOC Services</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" href="defining-tapestry-ioc
 -services.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>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/tapestry-ioc-overview.html
==============================================================================
--- websites/production/tapestry/content/tapestry-ioc-overview.html (original)
+++ websites/production/tapestry/content/tapestry-ioc-overview.html Sun Jul 19 21:21:27 2015
@@ -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 type="text/javascript">
+  SyntaxHighlighter.defaults['toolbar'] = false;
+  SyntaxHighlighter.all();
+  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -57,15 +67,7 @@
   </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="ScrollbarPrevName" width="33%">&#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="tapestry-ioc-modules.html">Tapestry IoC Modules</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" href="tapestry-ioc-modules.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 id="ConfluenceContent">
 
 <h1 id="TapestryIoCOverview-TapestryIoCOverview">Tapestry IoC Overview</h1>
 
@@ -105,7 +107,7 @@ table.ScrollbarTable td.ScrollbarNextIco
 
 <p>So the IoC container is the "town" and in the world of the IoC container, everything has a name, a place, and a relationship to everything else in the container. Tapestry calls this world "The Registry".</p>
 
-<p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" src="tapestry-ioc-overview.data/ioc-overview.png" data-image-src="/confluence/download/attachments/23338486/ioc-overview.png?version=1&amp;modificationDate=1290980234000&amp;api=v2" data-unresolved-comment-count="0" data-linked-resource-id="24346936" data-linked-resource-version="1" data-linked-resource-type="attachment" data-linked-resource-default-alias="ioc-overview.png" data-base-url="https://cwiki.apache.org/confluence" data-linked-resource-content-type="image/png" data-linked-resource-container-id="23338486" data-linked-resource-container-version="23"></span></p>
+<p><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" src="tapestry-ioc-overview.data/ioc-overview.png"></span></p>
 
 <p>Here we're seeing a few services from the built-in Tapestry IoC module, and a few of the services from the Tapestry web framework module. In fact, there are over 100 services, all interrelated, in the Registry ... and that's before you add your own to the mix. The IoC Registry treats all the services uniformly, regardless of whether they are part of Tapestry, or part of your application, or part of an add-on library.</p>
 
@@ -155,7 +157,7 @@ table.ScrollbarTable td.ScrollbarNextIco
 <p>This code is for a metric that periodically counts the number of rows in a key database table. Other implementations of MetricProducer will be responsible for measuring CPU utilization, available disk space, number of requests per second, and so forth.</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 public class TableMetricProducer implements MetricProducer
 {
   . . . 
@@ -163,11 +165,11 @@ public class TableMetricProducer impleme
   public void execute() 
   {
     int rowCount = . . .;
-    Metric metric = new Metric(&quot;app/clients&quot;, System.currentTimeMillis(), rowCount);
+    Metric metric = new Metric("app/clients", System.currentTimeMillis(), rowCount);
     new QueueWriter().sendMetric(metric);
   }
 }
-]]></script>
+</pre>
 </div></div>
 
 <p>We've omitted some of the details (this code will need a database URL or a connection pool to operate), so as to focus on the one method and it's relationship to the QueueWriter class.</p>
@@ -175,7 +177,7 @@ public class TableMetricProducer impleme
 <p>Obviously, this code has a problem ... we're creating a new QueueWriter for each metric we write into the queue, and the QueueWriter presumably is going to open the JMS queue fresh each time, an expensive operation. Thus:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 public class TableMetricProducer implements MetricProducer
 {
   . . . 
@@ -185,9 +187,9 @@ public class TableMetricProducer impleme
   public void execute() 
   {
     int rowCount = . . .;
-    Metric metric = new Metric(&quot;app/clients&quot;, System.currentTimeMillis(), rowCount);
+    Metric metric = new Metric("app/clients", System.currentTimeMillis(), rowCount);
     queueWriter.sendMetric(metric);
-  }]]></script>
+  }</pre>
 </div></div>
 
 <p>That's better. It's not perfect ... a proper system might know when the application was being shutdown and would shut down the JMS Connection inside the QueueWriter as well.</p>
@@ -195,14 +197,14 @@ public class TableMetricProducer impleme
 <p>Here's a more immediate problem: JMS connections are really meant to be shared, and we'll have lots of little classes collecting different metrics. So we need to make the QueueWriter shareable:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
-  private final QueueWriter queueWriter = QueueWriter.getInstance();]]></script>
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
+  private final QueueWriter queueWriter = QueueWriter.getInstance();</pre>
 </div></div>
 
 <p>... and inside class QueueWriter:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 public class QueueWriter
 {
   private static QueueWriter instance;
@@ -221,13 +223,13 @@ public class QueueWriter
     return instance;
   }
 }
-]]></script>
+</pre>
 </div></div>
 
 <p>Much better! Now all the metric producers running inside all the threads can share a single QueueWriter. Oh wait ...</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
   public synchronized static getInstance()
   {
     if (instance == null)
@@ -236,7 +238,7 @@ public class QueueWriter
     }
     return instance;
   }
-]]></script>
+</pre>
 </div></div>
 
 <p>Is that necessary? Yes. Will the code work without it? Yes &#8211; <strong>99.9% of the time</strong>. In fact, this is a very common error in systems that manually code a lot of these construction patterns: forgetting to properly synchronize access. These things often work in development and testing, but fail (with infuriating infrequency) in production, as it takes two or more threads running simultaneously to reveal the coding error.</p>
@@ -250,7 +252,7 @@ public class QueueWriter
 <p>We'll need to change TableMetricProducer to take the QueueWriter as a constructor parameter.</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 public class TableMetricProducer implements MetricProducer
 {
   private final QueueWriter queueWriter;
@@ -277,12 +279,12 @@ public class TableMetricProducer impleme
   public void execute() 
   {
     int rowCount = . . .;
-    Metric metric = new Metric(&quot;app/clients&quot;, System.currentTimeMillis(), rowCount);
+    Metric metric = new Metric("app/clients", System.currentTimeMillis(), rowCount);
 
    queueWriter.sendMetric(metric);
   }
 }
-]]></script>
+</pre>
 </div></div>
 
 <p>This still isn't ideal, as we still have an explicit linkage between TableMetricProducer and QueueWriterImpl.</p>
@@ -294,7 +296,7 @@ public class TableMetricProducer impleme
 <p>For comparison, lets see what the Tapestry IoC implementation would look like:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
 public class MonitorModule
 {
   public static void bind(ServiceBinder binder)
@@ -308,7 +310,7 @@ public class MonitorModule
     configuration.add(new TableMetricProducer(queueWriter, . . .))
   }
 }
-]]></script>
+</pre>
 </div></div>
 
 <p>Again, we've omitted a few details related to the database the TableMetricProducer will point at (in fact, Tapestry IoC provides a lot of support for configuration of this type as well, which is yet another concern).</p>
@@ -353,16 +355,7 @@ public class MonitorModule
 <p>The point is, the life cycle of objects turns out to be far more complicated than it looks at first glance. We've come to accept that our own applications lack the ability to police their objects as they are no longer needed (they literally lack the ability to determine <em>when</em> an object is no longer needed) and the garbage collector, a kind of higher authority, takes over that job very effectively. The end result? Less code and fewer bugs. And a careful study shows that the Java memory allocator and garbage collector (the two are quite intimately tied together) is actually <strong>more</strong> efficient than malloc() and free().</p>
 
 <p>So we've come to accept that the <em>death concern</em> is better handled outside of our own code. The use of Inversion of Control is simply the flip side of that: the <em>life cycle and construction concerns</em> are also better handled by an outside authority as well: the IoC container. These concerns govern when a service is <em>realized</em> and how its dependencies and configuration are injected. As with the garbage collector, ceding these chores to the container results in less code and fewer bugs, and lets you concentrate on the things that should matter to you: your business logic, your application &#8211; and not a whole bunch of boilerplate plumbing!</p>
-
-<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="ScrollbarPrevName" width="33%">&#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="tapestry-ioc-modules.html">Tapestry IoC Modules</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" href="tapestry-ioc-modules.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>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/tapestry-tutorial.html
==============================================================================
--- websites/production/tapestry/content/tapestry-tutorial.html (original)
+++ websites/production/tapestry/content/tapestry-tutorial.html Sun Jul 19 21:21:27 2015
@@ -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 type="text/javascript">
+  SyntaxHighlighter.defaults['toolbar'] = false;
+  SyntaxHighlighter.all();
+  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 

Modified: websites/production/tapestry/content/templating-and-markup-faq.html
==============================================================================
--- websites/production/tapestry/content/templating-and-markup-faq.html (original)
+++ websites/production/tapestry/content/templating-and-markup-faq.html Sun Jul 19 21:21:27 2015
@@ -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 type="text/javascript">
+  SyntaxHighlighter.defaults['toolbar'] = false;
+  SyntaxHighlighter.all();
+  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -57,67 +67,51 @@
   </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="general-questions.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="general-questions.html">General Questions</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.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="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="page-and-component-classes-faq.html">Page And Component Classes FAQ</a></td><td colspan="1" rowspan="1" class="Scrol
 lbarNextIcon"><a shape="rect" href="page-and-component-classes-faq.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><h2 id="TemplatingandMarkupFAQ-TemplatingandMarkup">Templating and Markup</h2><p>Main Article: <a shape="rect" href="component-templates.html">Component Templates</a></p><h3 id="TemplatingandMarkupFAQ-WhydoIgetaSAXParseExceptionwhenIuseanHTMLentity,suchas&amp;nbsp;inmytemplate?">Why do I get a SAXParseException when I use an HTML entity, such as <code>&amp;nbsp;</code> in my template?</h3><p>Tapestry uses a standard SAX parser to read your templates. This means that your templates must be <em>well formed</em>: open and close tags must balance, attribute values must be quoted, and entities must be declared. The easiest way to accomplish this is to add a DOCTYPE to your the top of your template:</p><div class="code panel pdl" style="border-width: 1px;"><div class="c
 odeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;
-   &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
-]]></script>
+<div id="ConfluenceContent"><h2 id="TemplatingandMarkupFAQ-TemplatingandMarkup">Templating and Markup</h2><p>Main Article: <a shape="rect" href="component-templates.html">Component Templates</a></p><h3 id="TemplatingandMarkupFAQ-WhydoIgetaSAXParseExceptionwhenIuseanHTMLentity,suchas&amp;nbsp;inmytemplate?">Why do I get a SAXParseException when I use an HTML entity, such as <code>&amp;nbsp;</code> in my template?</h3><p>Tapestry uses a standard SAX parser to read your templates. This means that your templates must be <em>well formed</em>: open and close tags must balance, attribute values must be quoted, and entities must be declared. The easiest way to accomplish this is to add a DOCTYPE to your the top of your template:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
+</pre>
 </div></div><p>Part of the DOCTYPE is the declaration of entities such as <code>&amp;nbsp;</code>.</p><p>Alternately, you can simply use the numeric version: <code>&amp;#160</code>; This is the exact same character and will render identically in the browser.</p><p>Starting in release 5.3, Tapestry introduces an XHTML doctype when no doctype is present; this means that common HTML entities will work correctly.</p><h3 id="TemplatingandMarkupFAQ-Whydosomeimagesinmypageshowupasbrokenlinks?">Why do some images in my page show up as broken links?</h3><p>You have to be careful when using relative URLs inside page templates; the base URL may not always be what you expect. For example, inside your <code>ViewUser.tml</code> file, you may have:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[  &lt;img class=&quot;icon&quot; src=&quot;icons/admin.png&quot;/&gt;${user.name} has Administrative access
-]]></script>
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">  &lt;img class="icon" src="icons/admin.png"/&gt;${user.name} has Administrative access
+</pre>
 </div></div><p>This makes sense; ViewUser.tml is in the web context, as is the icons folder. The default URL for this page will be /viewuser (assuming that ViewUser class is in the &#160;<em>root-package</em>.pages package).</p><p>However, the ViewUser page might use a page activation context to identify which user is to be displayed:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[public class ViewUser
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">public class ViewUser
 
   @Property
   @PageActivationContext
   private User user;
 
   . . .
-]]></script>
+</pre>
 </div></div><p>With a page activation context, the URL for the page will incorporate the ID of the User object, something like <code>/viewuser/37371</code>. This is why the relative URL to the <code>admin.png</code> image is broken: the base path is relative to the page's URL, not to the page template. (In fact, the page template may not even be in the web context, it may be stored on the classpath, as component templates are.)</p><p>One solution would be to predict what the page URL will be, and adjust the path for that:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[  &lt;img class=&quot;icon&quot; src=&quot;../icons/admin.png&quot;/&gt;${user.name} has Administrative access
-]]></script>
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">  &lt;img class="icon" src="../icons/admin.png"/&gt;${user.name} has Administrative access
+</pre>
 </div></div><p>But this has its own problems; the page activation context may vary in length at different times, or the template in question may be a component used across many different pages, making it difficult to predict what the correct relative URL would be.</p><p>The <em>best</em> solution for this situation, one that will be sure to work in all pages and all components, is to make use of the <code>context:</code> binding prefix:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[  &lt;img class=&quot;icon&quot; src=&quot;${context:icons/admin.png}&quot;/&gt;${user.name} has Administrative access
-]]></script>
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">  &lt;img class="icon" src="${context:icons/admin.png}"/&gt;${user.name} has Administrative access
+</pre>
 </div></div><p>The src attribute of the &lt;img&gt; tag will now be bound to a dynamically computed value: the location of the image file relative to the web application context. This is especially important for components that may be used on different pages.</p><h3 id="TemplatingandMarkupFAQ-What'sthedifferencebetweenidandt:id?">What's the difference between <code>id</code> and <code>t:id</code>?</h3><p>You might occasionally see something like the following in a template:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;t:zone id=&quot;status&quot; t:id=&quot;statusZone&quot;&gt;
-]]></script>
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">&lt;t:zone id="status" t:id="statusZone"&gt;
+</pre>
 </div></div><p>Why two ids? Why are they different?</p><p>The <code>t:id</code> attribute is the Tapestry component id. This id is unique within its immediate container. This is the id you might use to inject the component into your page class:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[  @InjectComponent
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">  @InjectComponent
   private Zone statusZone;
-]]></script>
+</pre>
 </div></div><p>The other id is the client id, a unique id for the rendered element within the client-side DOM. JavaScript that needs to access the element uses this id. For example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: text; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[  $(&#39;status&#39;).hide();
-]]></script>
+<pre class="brush: text; gutter: false; theme: Default" style="font-size:12px;">  $('status').hide();
+</pre>
 </div></div><p>In many components, the <code>id</code> attribute is an informal parameter; a value from the template that is blindly echoed into the output document. In other cases, the component itself has an <code>id</code> attribute. Often, in the latter case, the Tapestry component id is the <em>default</em> value for the client id.</p><h3 id="TemplatingandMarkupFAQ-WhydomyimagesandstylesheetsendupwithaweirdURLslike/assets/meta/zeea17aee26bc0cae/layout/layout.css?">Why do my images and stylesheets end up with a weird URLs like <code>/assets/meta/zeea17aee26bc0cae/layout/layout.css</code>?</h3><p>Tapestry doesn't rely on the servlet container to serve up your static assets (images, stylesheets, flash movies, etc.). Instead, Tapestry processes the requests itself, streaming assets to the browser.</p><p>Asset content will be GZIP compressed (if the client supports compression, and the content is compressible). In addition, Tapestry will set a far-future expires header on the conten
 t. This means that the browser will not ask for the file again, greatly reducing network traffic.</p><p>The weird hex string is a&#160;<em>fingerprint</em>; it is a hash code computed from the actual content of the asset. If the asset ever changes, it will have a new fingerprint, and so will be a new path and a new (immutable) resource. This approach, combined with a far-future expires header also provided by Tapestry, ensures that clients aggressively cache assets as they navigate your site, or even between visits.</p><p><span style="color: rgb(83,145,38);font-size: 16.0px;line-height: 1.5625;">How do I add a CSS class to a Tapestry component?</span></p><p>As they say, "just do it". The majority of Tapestry components support <em>informal parameters</em>, meaning that any extra attributes in the element (in the template) will be rendered out as additional attributes. So, you can apply a CSS class or style quite easily:</p><div class="code panel pdl" style="border-width: 1px;"><div 
 class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[  &lt;t:textfield t:id=&quot;username&quot; class=&quot;big-green&quot;/&gt;
-]]></script>
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">  &lt;t:textfield t:id="username" class="big-green"/&gt;
+</pre>
 </div></div><p>You can even use template expansions inside the attribute value:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[  &lt;t:textfield t:id=&quot;username&quot; class=&quot;${usernameClass}&quot;/&gt;
-]]></script>
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">  &lt;t:textfield t:id="username" class="${usernameClass}"/&gt;
+</pre>
 </div></div><p>and</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[  public String getUsernameClass() 
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">  public String getUsernameClass() 
   {
-    return isUrgent() ? &quot;urgent&quot; : null;
+    return isUrgent() ? "urgent" : null;
   }
-]]></script>
-</div></div><p>When an informal parameter is bound to null, then the attribute is not written out at all.</p><p>You can verify which components support informal parameters by checking the component reference, or looking for the @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/SupportsInformalParameters.html">SupportsInformalParameters</a> annotation in the components' source file.</p><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="general-questions.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="general-questions.html">General Questions</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="frequently-asked-questions.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="frequently-asked-questions.html">Frequently Asked Questions</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="page-and-component-classes-faq.html">Page And Component Classes FAQ</a></td><td colspan="1" rowspan="1" class="Scrol
 lbarNextIcon"><a shape="rect" href="page-and-component-classes-faq.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><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p></p><p><table class="Footnotes" style="width: 100%; border:none;" cellspacing="0" cellpadding="0" summary="This table contains one or more notes for references made elsewhere on the page."><caption class="accessibility">Footnotes</caption><thead class="accessibility"><tr class="accessibility"><th colspan="1" rowspan="1" class="accessibility" id="footnote-th1">Reference</th><th colspan="1" rowspan="1" class="accessibility" id="footnote-th2">Notes</th></tr></thead><tbody></tbody></table></p><p></p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p></div>
+</pre>
+</div></div><p>When an informal parameter is bound to null, then the attribute is not written out at all.</p><p>You can verify which components support informal parameters by checking the component reference, or looking for the @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/SupportsInformalParameters.html">SupportsInformalParameters</a> annotation in the components' source file.</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p></p><p><table class="Footnotes" style="width: 100%; border:none;" cellspacing="0" cellpadding="0" summary="This table contains one or more notes for references made elsewhere on the page."><caption class="accessibility">Footnotes</caption><thead class="accessibility"><tr class="accessibility"><th colspan="1" rowspan="1" class="accessibility" id="footnote-th1">Reference</th><th colspan="1" rowspan="1" class="accessibility" id="footnote-th2">Notes</th></t
 r></thead><tbody></tbody></table></p><p></p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/test-page-2.html
==============================================================================
--- websites/production/tapestry/content/test-page-2.html (original)
+++ websites/production/tapestry/content/test-page-2.html Sun Jul 19 21:21:27 2015
@@ -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 type="text/javascript">
+  SyntaxHighlighter.defaults['toolbar'] = false;
+  SyntaxHighlighter.all();
+  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -58,7 +68,16 @@
 
 <div id="content">
 <div id="ConfluenceContent"><p>
-</p><div class="toc-macro client-side-toc-macro" data-headerelements="H1,H2,H3,H4,H5,H6,H7"></div>
+<style type="text/css">/*<![CDATA[*/
+div.rbtoc1437340833548 {padding: 0px;}
+div.rbtoc1437340833548 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1437340833548 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1437340833548">
+<ul class="toc-indentation"><li><a shape="rect" href="#TestPage2-Generalquestions">General questions</a>
+<ul class="toc-indentation"><li><a shape="rect" href="#TestPage2-HowdoIgetstartedwithTapestry?">How do I get started with Tapestry?</a></li><li><a shape="rect" href="#TestPage2-WhydoesTapestryusePrototype?WhynotinsertfavoriteJavaScriptlibraryhere?">Why does Tapestry use Prototype? Why not insert favorite JavaScript library here?</a></li><li><a shape="rect" href="#TestPage2-WhydoesTapestryhaveitsownInversionofControlContainer?WhynotSpringorGuice?">Why does Tapestry have its own Inversion of Control Container? Why not Spring or Guice?</a></li><li><a shape="rect" href="#TestPage2-HowdoIupgradefromTapestry4toTapestry5?">How do I upgrade from Tapestry 4 to Tapestry 5?</a></li><li><a shape="rect" href="#TestPage2-WhyaretherebothRequestandHttpServletRequest?">Why are there both Request and HttpServletRequest?</a></li></ul>
+</li></ul>
+</div>
 
 <h2 id="TestPage2-Generalquestions">General questions</h2>
 

Modified: websites/production/tapestry/content/test-page.html
==============================================================================
--- websites/production/tapestry/content/test-page.html (original)
+++ websites/production/tapestry/content/test-page.html Sun Jul 19 21:21:27 2015
@@ -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 type="text/javascript">
+  SyntaxHighlighter.defaults['toolbar'] = false;
+  SyntaxHighlighter.all();
+  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -91,30 +101,13 @@ cursor:pointer;
 }
 </style><script type="text/javascript" src="/confluence/download/resources/org.randombits.confluence.composition:composition-setup/js/transitions.js">//<![CDATA[
 // ]]></script><script type="text/javascript" src="/confluence/download/resources/org.randombits.confluence.composition:composition-setup/js/deck.js">//<![CDATA[
-// ]]></script><link rel="stylesheet" type="text/css" href="/confluence/styles/main-action.css?pluginCompleteKey=org.randombits.confluence.composition:composition-setup&amp;stylesheetName=deck&amp;spaceKey=TAPESTRY"><style type="text/css">
-.deck .tabBar {
-padding-right: 2px;
-}
-
-.deck .tabBar .tab {
-padding-left: 2px;
-}
-
-.deck .tabBar .tab a {
-border: 1px solid #ccc;
-}
-
-.deck .tabBar #current a {
-border: 1px solid #ccc;
-border-bottom: solid white;
-}
-</style><script type="text/javascript">//<![CDATA[
+// ]]></script><link rel="stylesheet" type="text/css" href="/confluence/styles/main-action.css?pluginCompleteKey=org.randombits.confluence.composition:composition-setup&amp;stylesheetName=deck&amp;spaceKey=TAPESTRY"><script type="text/javascript">//<![CDATA[
 Deck.memoryDuration = 0;
 Deck.memoryPrefix = "contentId:24189280";
 Deck.memoryPath = "/confluence/";
 // ]]></script>
 
-<div class="deck" id="deck:myDeck" tablocation="top" loopcards="false"><div class="cards tabbed">
+<div class="deck" id="deck:myDeck" tablocation="top" style="display: none" loopcards="false"><div class="cards tabbed">
 <div class="card" label="Tapestry 5.4+" labelrendered="Tapestry 5.4+">
 <p>Starting with Tapestry 5.4, you can easily choose whether the foundation JavaScript framework is jQuery or Prototype.</p>
 </div>