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/06/27 23:21:05 UTC

svn commit: r956226 [20/34] - in /websites/production/tapestry/content: ./ 2010/10/11/ 2010/10/31/ 2010/11/18/ 2010/11/19/ 2010/12/16/ 2010/12/17/ 2011/01/10/ 2011/03/29/ 2011/06/13/ 2011/06/24/ 2011/06/29/ 2011/07/29/ 2011/08/16/ 2011/08/27/ 2011/10/3...

Modified: websites/production/tapestry/content/integration-testing.html
==============================================================================
--- websites/production/tapestry/content/integration-testing.html (original)
+++ websites/production/tapestry/content/integration-testing.html Sat Jun 27 21:21:02 2015
@@ -27,16 +27,6 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
-    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' type='text/css' />
-  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
-  <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -55,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">Integration Testing</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">Integration Testing</h1></div></div>
 <div class="clearer"></div>
 </div>
 
@@ -68,34 +58,8 @@
 
 <div id="content">
 <div id="ConfluenceContent"><h1 id="IntegrationTesting-IntegrationTestingwithSelenium">Integration Testing with Selenium</h1><div class="navmenu" style="float:right; background:#eee; margin:3px; padding:3px">
-<h3>Related Articles</h3>
-<ul class="content-by-label"><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="unit-testing-pages-or-components.html">Unit testing pages or components</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="integration-testing.html">Integration Testing</a>
-                    
-                
-                            </div>
-        </li></ul>
-</div><p>The Tapestry Test Utilities is a small library to make it easier to build integration test suites around <a shape="rect" class="external-link" href="http://www.openqa.org/selenium/" >Selenium</a> version 2.14.0.</p><p>The strategy is to start, in process, a Selenimum Server (which, in turn, starts and manages a web browser), a Jetty instance (for the web browser to talk to), and a Selenium client (which talks to the server).</p><p>The client is able to request URLs, fill in form data, click links, and make assertions about output and behavior.</p><h1 id="IntegrationTesting-Usage">Usage</h1><p>The core part of this library is a base class for you to extend your tests classes : <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/test/SeleniumTestCase.html">SeleniumTestCase</a>.</p><p>This class is responsible for starting an instance of Jetty to server your web application, as well as a copy of Selenium Server. It also i
 mplements the <a shape="rect" class="external-link" href="http://release.openqa.org/selenium-remote-control/0.9.0/doc/java/" >Selenium</a> interface.</p>    <div class="aui-message warning shadowed information-macro">
-                            <span class="aui-icon icon-warning">Icon</span>
-                <div class="message-content">
-                            <p>Before Tapestry 5.2, your class should extend <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/test/AbstractIntegrationTestSuite.html">AbstractIntegrationTestSuite</a></p>
-                    </div>
-    </div>
-<p>Here's an example from one of the Tapestry modules:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Your Integration Test Class : SinglePersistenceUnitIntegrationTest.java</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[package org.apache.tapestry5.jpa.integration.app2;
+<div class="error"><span class="error">Error formatting macro: contentbylabel: com.atlassian.confluence.api.service.exceptions.BadRequestException: Could not parse cql : null</span> </div></div><p>The Tapestry Test Utilities is a small library to make it easier to build integration test suites around <a shape="rect" class="external-link" href="http://www.openqa.org/selenium/" >Selenium</a> version 2.14.0.</p><p>The strategy is to start, in process, a Selenimum Server (which, in turn, starts and manages a web browser), a Jetty instance (for the web browser to talk to), and a Selenium client (which talks to the server).</p><p>The client is able to request URLs, fill in form data, click links, and make assertions about output and behavior.</p><h1 id="IntegrationTesting-Usage">Usage</h1><p>The core part of this library is a base class for you to extend your tests classes : <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/test/Se
 leniumTestCase.html">SeleniumTestCase</a>.</p><p>This class is responsible for starting an instance of Jetty to server your web application, as well as a copy of Selenium Server. It also implements the <a shape="rect" class="external-link" href="http://release.openqa.org/selenium-remote-control/0.9.0/doc/java/" >Selenium</a> interface.</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>Before Tapestry 5.2, your class should extend <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/test/AbstractIntegrationTestSuite.html">AbstractIntegrationTestSuite</a></p></div></div><p>Here's an example from one of the Tapestry modules:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><
 b>Your Integration Test Class : SinglePersistenceUnitIntegrationTest.java</b></div><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[package org.apache.tapestry5.jpa.integration.app2;
 
 import org.apache.tapestry5.test.SeleniumTestCase;
 import org.testng.annotations.Test;
@@ -115,7 +79,7 @@ public class SinglePersistenceUnitIntegr
 }
 ]]></script>
 </div></div><p>With the SeleniumTestCase class, you can use basic Selenium methods (such as open() and type()) and methods added by the SeleniumTestCase base class (clickAndWait() and assertFieldValue()).</p><p>In addition, the SeleniumTestCase base class extends the normal exception reporting provided by Selenium; when a failure occurs inside Selenium server, a more detailed message, including the current page's HTML source, is reported to System.err.</p><h1 id="IntegrationTesting-Configuration">Configuration</h1><p>All the configuration of your Integration Tests should be in your testng.xml file. Tapestry provides some parameters, in order to have the right environment for your tests.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Parameter</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="
 1" rowspan="1" class="confluenceTd"><p>tapestry.web-app-folder</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>src/main/webapp</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The path to a web app</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>tapestry.servlet-container</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>jetty7</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>the server container to use for the integration tests (jetty7 or tomcat6)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>tapestry.context-path</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The context path</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>tapestry.port</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>9090</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The web server port</p></td></tr><tr
 ><td colspan="1" rowspan="1" class="confluenceTd"><p>tapestry.ssl-port</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>8443</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The web server ssl port</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>tapestry.browser-start-command</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>*firefox</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The browser command to pass to Selenium</p></td></tr></tbody></table></div><p>Here's an example :</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>testng.xml</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;suite name=&quot;Selenium Tests Suite&quot; annotations=&quot;1.5&quot;&gt;
+<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;suite name=&quot;Selenium Tests Suite&quot; annotations=&quot;1.5&quot;&gt;
   &lt;test name=&quot;Integration Tests&quot; enabled=&quot;true&quot;&gt;
     &lt;parameter name=&quot;tapestry.browser-start-command&quot; value=&quot;*googlechrome&quot; /&gt;
     &lt;parameter name=&quot;tapestry.port&quot; value=&quot;9091&quot; /&gt;

Modified: websites/production/tapestry/content/integration-with-existing-applications.html
==============================================================================
--- websites/production/tapestry/content/integration-with-existing-applications.html (original)
+++ websites/production/tapestry/content/integration-with-existing-applications.html Sat Jun 27 21:21:02 2015
@@ -27,16 +27,6 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
-    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' type='text/css' />
-  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
-  <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -55,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">Integration with existing applications</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">Integration with existing applications</h1></div></div>
 <div class="clearer"></div>
 </div>
 
@@ -76,7 +66,7 @@ table.ScrollbarTable td.ScrollbarNextNam
 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="security-faq.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="security-faq.html">Security FAQ</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="request-processing-faq.html">Request Processing FAQ</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" h
 ref="request-processing-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="Integrationwithexistingapplications-Integrationwithexistingapplications">Integration with existing applications</h2><p>You may have an existing JSP (or Struts, Spring MVC, etc.) application that you want to migrate to Tapestry. It's quite common to do this in stages, moving some functionality into Tapestry and leaving other parts, initially, in the other system. <a shape="rect" href="request-processing-faq.html">You may need to prevent Tapestry from handling certain requests</a>.</p><h3 id="Integrationwithexistingapplications-HowdoImakeaformonaJSPsubmitintoTapestry?">How do I make a form on a JSP submit into Tapestry?</h3><p>Tapestry's Form component does a lot of work while an HTML form is rendering to store all the information needed to handle the form submission in a later request; this is a
 ll very specific to Tapestry and the particular construction of your pages and forms; it can't be reproduced from a JSP.</p><p>Fortunately, that isn't necessary: you can have a standard HTML Form submit to a Tapestry page, you just don't get to use all of Tapestry's built in conversion and validation logic.</p><p>All you need to know is how Tapestry converts page class names to page names (that appear in the URL). It's basically a matter of stripping off the <em>root-package</em>.<code>pages</code> prefix from the fully qualified class name. So, for example, if you are building a login screen as a JSP, you might want to have a Tapestry page to receive the user name and password. Let's assume the Tapestry page class is <code>com.example.myapp.pages.LoginForm</code>; the page name will be <code>loginform (although, since&#160;</code><span style="line-height: 1.4285715;">Tapestry is case insensitive, LoginForm would work just as well)</span><span style="line-height: 1.4285715;">, and t
 he URL will be </span><code style="line-height: 1.4285715;">/loginform</code><span style="line-height: 1.4285715;">.</span></p><p>&#160;</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" type="syntaxhighlighter"><![CDATA[&lt;form method=&quot;post&quot; action=&quot;/loginform&quot;&gt;
+<script class="brush: java; gutter: true; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;form method=&quot;post&quot; action=&quot;/loginform&quot;&gt;
 
   &lt;input type=&quot;text&quot; value=&quot;userName&quot;/&gt;
   &lt;br/&gt;
@@ -87,7 +77,7 @@ table.ScrollbarTable td.ScrollbarNextIco
 &lt;/form&gt;
 ]]></script>
 </div></div><p>On the Tapestry side, we can expect that the LoginForm page will be activated; this means that its activate event handler will be invoked. We can leverage this, and Tapestry's RequestParameter annotation:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" type="syntaxhighlighter"><![CDATA[public class LoginForm
+<script class="brush: java; gutter: true; theme: Default" type="syntaxhighlighter"><![CDATA[public class LoginForm
 {
   void onActivate(@RequestParameter(&quot;userName&quot;) String userName, @RequestParameter(&quot;password&quot;) String password)
   {
@@ -96,7 +86,7 @@ table.ScrollbarTable td.ScrollbarNextIco
 }
 ]]></script>
 </div></div><p>The RequestParameter annotation extracts the named query parameter from the request, coerces its type from String to the parameter type (here, also String) and passes it into the method.</p><h3 id="Integrationwithexistingapplications-HowdoIshareinformationbetweenaJSPapplicationandtheTapestryapplication?">How do I share information between a JSP application and the Tapestry application?</h3><p>From the servlet container's point of view, there's no difference between a servlet, a JSP, and an entire Tapestry application. They all share the same ServletContext, and (once created), the same HttpSession.</p><p>On the Tapestry side, it is very easy to read and write session attributes:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" type="syntaxhighlighter"><![CDATA[public class ShowSearchResults
+<script class="brush: java; gutter: true; theme: Default" type="syntaxhighlighter"><![CDATA[public class ShowSearchResults
 {
   @SessionAttribute
   private SearchResults searchResults;

Modified: websites/production/tapestry/content/introduction.html
==============================================================================
--- websites/production/tapestry/content/introduction.html (original)
+++ websites/production/tapestry/content/introduction.html Sat Jun 27 21:21:02 2015
@@ -27,16 +27,6 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
-    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' type='text/css' />
-  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
-  <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -55,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">Introduction</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">Introduction</h1></div></div>
 <div class="clearer"></div>
 </div>
 
@@ -68,54 +58,7 @@
 
 <div id="content">
 <div id="ConfluenceContent"><div class="navmenu" style="float:right; background:#eee; margin:3px; padding:3px">
-<h3>Related Articles</h3>
-<ul class="content-by-label"><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="tapestry-for-jsf-users.html">Tapestry for JSF Users</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="introduction.html">Introduction</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="tapestry-tutorial.html">Tapestry Tutorial</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="getting-started.html">Getting Started</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="principles.html">Principles</a>
-                    
-                
-                            </div>
-        </li></ul>
-</div><h2 id="Introduction-WhatisApacheTapestry?">What is Apache Tapestry?</h2><p>Apache Tapestry is an open-source framework for creating dynamic, robust, highly scalable web applications in Java. Tapestry complements and builds upon the standard Java Servlet API, and so it works in any servlet container or application server.</p><p>Tapestry divides a web application into a set of pages, each constructed from components. This provides a consistent structure, allowing the Tapestry framework to assume responsibility for key concerns such as URL construction and dispatch, persistent state storage on the client or on the server, user input validation, localization/internationalization, and exception reporting. Developing Tapestry applications involves creating HTML templates using plain HTML, and adding a small java class for each. In Tapestry, you create your application in terms of objects, and the methods and properties of those objects &#8211; and specifically not in terms of URLs 
 and query parameters. Tapestry brings true object oriented development to Java web applications.</p><p>Tapestry is specifically designed to make creating new components very easy, as this is a routine approach when building applications.</p><p>Tapestry is architected to scale from tiny, single-page applications all the way up to massive applications consisting of hundreds of individual pages, developed by large, diverse teams. Tapestry easily integrates with any kind of backend, including JEE, Spring and Hibernate.</p><p>It's more than what you can do with Tapestry ... it's also how you do it! Tapestry is a vastly productive environment. Java developers love it because they can make Java code changes and see them immediately ... no redeploy, no restart! And it's blazingly fast to boot (even when files have changed). Designers love it because Tapestry templates are so close to ordinary HTML, without all the cruft and confusion seen in <a shape="rect" href="tapestry-for-jsf-users.html
 ">JavaServer Pages</a>. Managers love it because it makes it easy for large teams to work together productively, and because they know important features (including localization) are baked right in. Once you work in Tapestry there's no going back!</p><p>Tapestry is released under the Apache Software License 2.0.</p><h2 id="Introduction-ThirdPartyLibraries,TutorialsandResources">Third Party Libraries, Tutorials and Resources</h2><p>A number of third party libraries, tutorials and resources are listed on the <a shape="rect" href="modules.html">Modules</a> page.</p><h2 id="Introduction-AboutReleasesandSnapshots">About Releases and Snapshots</h2><p>Most users will want to use the latest stable release of Tapestry, and for that your best bet for new projects is to use the Quickstart Maven archetype to create your initial Tapestry project, as described on the <a shape="rect" href="getting-started.html">Getting Started</a> page. The Quickstart archetype generates a full, working project di
 rectory. For upgrading existing projects, just use the Maven dependency listed on the <a shape="rect" href="download.html">Download</a> page.</p><p>You can also pull down Tapestry modules in the form of binary and source JARs from the <a shape="rect" class="external-link" href="http://search.maven.org/#browse" title="1738327132" >Maven Central repository</a>.</p><p>Tapestry itself is built using Gradle, which makes it really easy to download the source and build it yourself, either the whole project, or just one single module.</p><p>The use of Maven and Gradle has let us move with great speed, providing preview releases and snapshots.</p><p>Snapshots are intermediate versions of releases, with "-SNAPSHOT" at the end of the version number. Maven notices that -SNAPSHOT suffix and handles the dependency specially. It knows that snapshot releases can change frequently, so it will keep checking (at least once a day, maybe more often) to see if there's an updated version of the snapshot.<
 /p><p>A nightly build process on Tapestry's continuous integration server creates new snapshots every night.</p><p>Snapshots don't go in the Maven central repository (that's reserved for full releases). Instead, they go into the Tapestry snapshots repository at <a shape="rect" class="external-link" href="https://repository.apache.org/content/groups/snapshots/org/apache/tapestry/">https://repository.apache.org/content/groups/snapshots/org/apache/tapestry/</a>.</p><p>To access the snapshot repository, just add <code>-DremoteRepositories=<span class="nolink">http://repository.apache.org/snapshots/</span></code> to the command line when running Maven.</p><p>Documentation on this site sometimes refers to the latest snapshot ... that is, it is often ahead of the last official release, with version-specific differences clearly marked. In some cases, it is written as if the snapshot release is stable. For example, if documentation refers to version 5.4.x and that hasn't been released yet, y
 ou can try 5.4.x-SNAPSHOT.</p></div>
+<div class="error"><span class="error">Error formatting macro: contentbylabel: com.atlassian.confluence.api.service.exceptions.BadRequestException: Could not parse cql : null</span> </div></div><h2 id="Introduction-WhatisApacheTapestry?">What is Apache Tapestry?</h2><p>Apache Tapestry is an open-source framework for creating dynamic, robust, highly scalable web applications in Java. Tapestry complements and builds upon the standard Java Servlet API, and so it works in any servlet container or application server.</p><p>Tapestry divides a web application into a set of pages, each constructed from components. This provides a consistent structure, allowing the Tapestry framework to assume responsibility for key concerns such as URL construction and dispatch, persistent state storage on the client or on the server, user input validation, localization/internationalization, and exception reporting. Developing Tapestry applications involves creating HTML templates using plain HTML, and addi
 ng a small java class for each. In Tapestry, you create your application in terms of objects, and the methods and properties of those objects &#8211; and specifically not in terms of URLs and query parameters. Tapestry brings true object oriented development to Java web applications.</p><p>Tapestry is specifically designed to make creating new components very easy, as this is a routine approach when building applications.</p><p>Tapestry is architected to scale from tiny, single-page applications all the way up to massive applications consisting of hundreds of individual pages, developed by large, diverse teams. Tapestry easily integrates with any kind of backend, including JEE, Spring and Hibernate.</p><p>It's more than what you can do with Tapestry ... it's also how you do it! Tapestry is a vastly productive environment. Java developers love it because they can make Java code changes and see them immediately ... no redeploy, no restart! And it's blazingly fast to boot (even when fi
 les have changed). Designers love it because Tapestry templates are so close to ordinary HTML, without all the cruft and confusion seen in <a shape="rect" href="tapestry-for-jsf-users.html">JavaServer Pages</a>. Managers love it because it makes it easy for large teams to work together productively, and because they know important features (including localization) are baked right in. Once you work in Tapestry there's no going back!</p><p>Tapestry is released under the Apache Software License 2.0.</p><h2 id="Introduction-ThirdPartyLibraries,TutorialsandResources">Third Party Libraries, Tutorials and Resources</h2><p>A number of third party libraries, tutorials and resources are listed on the <a shape="rect" href="modules.html">Modules</a> page.</p><h2 id="Introduction-AboutReleasesandSnapshots">About Releases and Snapshots</h2><p>Most users will want to use the latest stable release of Tapestry, and for that your best bet for new projects is to use the Quickstart Maven archetype to c
 reate your initial Tapestry project, as described on the <a shape="rect" href="getting-started.html">Getting Started</a> page. The Quickstart archetype generates a full, working project directory. For upgrading existing projects, just use the Maven dependency listed on the <a shape="rect" href="download.html">Download</a> page.</p><p>You can also pull down Tapestry modules in the form of binary and source JARs from the <a shape="rect" class="external-link" href="http://search.maven.org/#browse" title="1738327132" >Maven Central repository</a>.</p><p>Tapestry itself is built using Gradle, which makes it really easy to download the source and build it yourself, either the whole project, or just one single module.</p><p>The use of Maven and Gradle has let us move with great speed, providing preview releases and snapshots.</p><p>Snapshots are intermediate versions of releases, with "-SNAPSHOT" at the end of the version number. Maven notices that -SNAPSHOT suffix and handles the dependen
 cy specially. It knows that snapshot releases can change frequently, so it will keep checking (at least once a day, maybe more often) to see if there's an updated version of the snapshot.</p><p>A nightly build process on Tapestry's continuous integration server creates new snapshots every night.</p><p>Snapshots don't go in the Maven central repository (that's reserved for full releases). Instead, they go into the Tapestry snapshots repository at <a shape="rect" class="external-link" href="https://repository.apache.org/content/groups/snapshots/org/apache/tapestry/">https://repository.apache.org/content/groups/snapshots/org/apache/tapestry/</a>.</p><p>To access the snapshot repository, just add <code>-DremoteRepositories=<span class="nolink">http://repository.apache.org/snapshots/</span></code> to the command line when running Maven.</p><p>Documentation on this site sometimes refers to the latest snapshot ... that is, it is often ahead of the last official release, with version-specif
 ic differences clearly marked. In some cases, it is written as if the snapshot release is stable. For example, if documentation refers to version 5.4.x and that hasn't been released yet, you can try 5.4.x-SNAPSHOT.</p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/ioc-advice.html
==============================================================================
--- websites/production/tapestry/content/ioc-advice.html (original)
+++ websites/production/tapestry/content/ioc-advice.html Sat Jun 27 21:21:02 2015
@@ -45,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC - advice</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC - advice</h1></div></div>
 <div class="clearer"></div>
 </div>
 

Modified: websites/production/tapestry/content/ioc-autoload.html
==============================================================================
--- websites/production/tapestry/content/ioc-autoload.html (original)
+++ websites/production/tapestry/content/ioc-autoload.html Sat Jun 27 21:21:02 2015
@@ -45,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC - autoload</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC - autoload</h1></div></div>
 <div class="clearer"></div>
 </div>
 

Modified: websites/production/tapestry/content/ioc-case.html
==============================================================================
--- websites/production/tapestry/content/ioc-case.html (original)
+++ websites/production/tapestry/content/ioc-case.html Sat Jun 27 21:21:02 2015
@@ -45,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC - case</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC - case</h1></div></div>
 <div class="clearer"></div>
 </div>
 

Modified: websites/production/tapestry/content/ioc-coerce.html
==============================================================================
--- websites/production/tapestry/content/ioc-coerce.html (original)
+++ websites/production/tapestry/content/ioc-coerce.html Sat Jun 27 21:21:02 2015
@@ -45,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC - coerce</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC - coerce</h1></div></div>
 <div class="clearer"></div>
 </div>
 

Modified: websites/production/tapestry/content/ioc-command.html
==============================================================================
--- websites/production/tapestry/content/ioc-command.html (original)
+++ websites/production/tapestry/content/ioc-command.html Sat Jun 27 21:21:02 2015
@@ -45,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC - command</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC - command</h1></div></div>
 <div class="clearer"></div>
 </div>
 

Modified: websites/production/tapestry/content/ioc-configuration.html
==============================================================================
--- websites/production/tapestry/content/ioc-configuration.html (original)
+++ websites/production/tapestry/content/ioc-configuration.html Sat Jun 27 21:21:02 2015
@@ -45,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC - configuration</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC - configuration</h1></div></div>
 <div class="clearer"></div>
 </div>
 

Modified: websites/production/tapestry/content/ioc-cookbook-basic-services-and-injection.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-basic-services-and-injection.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-basic-services-and-injection.html Sat Jun 27 21:21:02 2015
@@ -27,16 +27,6 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
-    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' type='text/css' />
-  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
-  <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -55,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC Cookbook - Basic Services and Injection</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC Cookbook - Basic Services and Injection</h1></div></div>
 <div class="clearer"></div>
 </div>
 
@@ -98,7 +88,7 @@ table.ScrollbarTable td.ScrollbarNextIco
 <p>The PropertyAccess service is defined inside TapestryIOCModule's bind() method:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
   public static void bind(ServiceBinder binder)
   {
     . . .
@@ -111,7 +101,7 @@ table.ScrollbarTable td.ScrollbarNextIco
 <p>This example includes <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/ExceptionAnalyzer.html">ExceptionAnalyzer</a>, because it has a dependency on PropertyAccess:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
 public class ExceptionAnalyzerImpl implements ExceptionAnalyzer
 {
     private final PropertyAccess propertyAccess;
@@ -145,7 +135,7 @@ public class ExceptionAnalyzerImpl imple
 <p>Tapestry defines two such services, in the <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/TapestryModule.html">TapestryModule</a>.</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
   @Marker(ClasspathProvider.class)
   public AssetFactory buildClasspathAssetFactory(ResourceCache resourceCache,
 
@@ -174,7 +164,7 @@ public class ExceptionAnalyzerImpl imple
 <p>Here's an example. Again, we've jumped the gun with this <em>service contributor method</em> (we'll get into the why and how of these later), but you can see how Tapestry is figuring out which service to inject based on the presence of those annotations:</p>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
   public void contributeAssetSource(MappedConfiguration&lt;String, AssetFactory&gt; configuration,
       @ContextProvider
       AssetFactory contextAssetFactory,

Modified: websites/production/tapestry/content/ioc-cookbook-basics.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-basics.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-basics.html Sat Jun 27 21:21:02 2015
@@ -45,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC cookbook - basics</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC cookbook - basics</h1></div></div>
 <div class="clearer"></div>
 </div>
 

Modified: websites/production/tapestry/content/ioc-cookbook-override.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-override.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-override.html Sat Jun 27 21:21:02 2015
@@ -45,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC cookbook - override</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC cookbook - override</h1></div></div>
 <div class="clearer"></div>
 </div>
 

Modified: websites/production/tapestry/content/ioc-cookbook-overriding-ioc-services.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-overriding-ioc-services.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-overriding-ioc-services.html Sat Jun 27 21:21:02 2015
@@ -27,16 +27,6 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
-    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' type='text/css' />
-  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
-  <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -55,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC Cookbook - Overriding IoC Services</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC Cookbook - Overriding IoC Services</h1></div></div>
 <div class="clearer"></div>
 </div>
 
@@ -76,14 +66,14 @@ table.ScrollbarTable td.ScrollbarNextNam
 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="ioc-cookbook-basic-services-and-injection.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="ioc-cookbook-basic-services-and-injection.html">IoC Cookbook - Basic Services and Injection</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="ioc-cookbook.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-cookbook.html">IoC cookbook</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="ioc-cookbook-patterns.html">IoC Cookbook - Patterns</a></td><td colspan="1" rowspan=
 "1" class="ScrollbarNextIcon"><a shape="rect" href="ioc-cookbook-patterns.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></div><h1 id="IoCCookbook-OverridingIoCServices-OverridingTapestryIoCServices">Overriding Tapestry IoC Services</h1><p>Tapestry is designed to be easy to customize, and the IoC container is the key to that customizability.</p><p>One of Tapestry's most important activities is resolving injected objects; that is, when Tapestry is building an object or service and sees a constructor parameter or a field, it must decide what value to plug in. Most of the time, the injected object is a service defined elsewhere within the Tapestry IoC container.</p><p>However, there are cases where you might want to override how Tapestry operates in some specific way.</p><p>The strategy used to determine what object gets injected is <a shape="rect" href="injection-in-detail.html">defi
 ned inside Tapestry IoC itself</a>; thus we can take advantage of several features of the Tapestry IoC container in order to take control over specific injections.</p><h2 id="IoCCookbook-OverridingIoCServices-ContributingaServiceOverride">Contributing a Service Override</h2><p>In most cases, services are injected by matching just the type; there is no @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html">InjectService</a> annotation, just a method or constructor parameter whose type matches the service's interface.</p><p>In this case, it is very easy to supply your own alternate implementation of a service, by <em>contributing</em><em> a Service Override</em> in your module class (usually AppModule.java), like this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div class=
 "codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[  @Contribute(ServiceOverride.class)
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[  @Contribute(ServiceOverride.class)
   public static void setupApplicationServiceOverrides(MappedConfiguration&lt;Class,Object&gt; configuration)
   {
     configuration.addInstance(SomeServiceType.class, SomeServiceTypeOverrideImpl.class);
   }
 ]]></script>
 </div></div><p>The name of the method is not important, as long as the @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Contribute.html">Contribute</a> annotation is present on the method.</p><p>In this example, we are using <code>addInstance()</code> which will instantiate the indicated class and handle dependency resolution. (Be careful with this, because in some cases, resolving dependencies of the override class can require checking against the ServiceOverrides service, and you'll get a runtime exception about ServiceOverrides requiring itself!).</p><p>Sometimes you'll want to define the override as a service of its own. This is useful if you want to inject a Logger specific to the service, or if the overriding implementation needs a <a shape="rect" href="tapestry-ioc-configuration.html">service configuration</a>:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeade
 r pdl" style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[  public static void bind(ServiceBinder binder)
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[  public static void bind(ServiceBinder binder)
   {
     binder.bind(SomeServiceType.class, SomeServiceTypeOverrideImpl.class).withId(&quot;SomeServiceTypeOverride&quot;);
   }
@@ -95,7 +85,7 @@ table.ScrollbarTable td.ScrollbarNextIco
   }
 ]]></script>
 </div></div><p>Here we're defining a service using the module's <code>bind()</code> method.</p><p>Every service in the IoC container must have a unique id, that's why we used the <code>withId()</code> method; if we we hadn't, the default service id would have been "SomeServiceType" which is a likely conflict with the very service we're trying to override.</p><p>We can inject our overriding implementation of SomeServiceType using the special @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Local.html">Local</a> annotation, which indicates that a service within the same module only should be injected (that is, services of the indicated type in other modules are ignored). Without @Local, there would be a problem because the override parameter would need to be resolved using the MasterObjectProvider and, ultimately, the ServiceOverride service; this would cause Tapestry to throw an exception indicating that ServiceO
 verride depends on itself. We defuse that situation by using @Local, which prevents the MasterObjectProvider service from being used to resolve the override parameter.</p><h2 id="IoCCookbook-OverridingIoCServices-DecoratingServices">Decorating Services</h2><p>Another option is to <a shape="rect" href="tapestry-ioc-decorators.html">decorate</a> the existing service. Perhaps you want to extend some of the behavior of the service but keep the rest.</p><p>Alternately, this approach is useful to override a service that is matched using marker annotations.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[  public SomeServiceType decorateSomeServiceType(final SomeServiceType delegate)
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[  public SomeServiceType decorateSomeServiceType(final SomeServiceType delegate)
   {
     return new SomeServiceType() { . . . };
   }

Modified: websites/production/tapestry/content/ioc-cookbook-patterns.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-patterns.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-patterns.html Sat Jun 27 21:21:02 2015
@@ -27,16 +27,6 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
-    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' type='text/css' />
-  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
-  <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -55,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC Cookbook - Patterns</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC Cookbook - Patterns</h1></div></div>
 <div class="clearer"></div>
 </div>
 
@@ -76,52 +66,14 @@ table.ScrollbarTable td.ScrollbarNextNam
 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="ioc-cookbook-overriding-ioc-services.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="ioc-cookbook-overriding-ioc-services.html">IoC Cookbook - Overriding IoC Services</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="ioc-cookbook.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-cookbook.html">IoC cookbook</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="ioc-cookbook-service-configurations.html">IoC cookbook - Service Configurations</a></td><td colspan
 ="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" href="ioc-cookbook-service-configurations.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></div><h1 id="IoCCookbook-Patterns-UsingPatterns">Using Patterns</h1><div class="navmenu" style="float:right; background:#eee; margin:3px; padding:3px">
-<h3>Related Articles</h3>
-<ul class="content-by-label"><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="chainbuilder-service.html">ChainBuilder Service</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="strategybuilder-service.html">StrategyBuilder Service</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="pipelinebuilder-service.html">PipelineBuilder Service</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="ioc-cookbook-patterns.html">IoC Cookbook - Patterns</a>
-                    
-                
-                            </div>
-        </li></ul>
-</div><p>Tapestry IoC has support for implementing several of the <a shape="rect" class="external-link" href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)" >Gang Of Four Design Patterns</a>. In fact, the IoC container itself is a pumped up version of the Factory pattern.</p><p>The basis for these patterns is often the use of <em>service builder methods</em>, where a <a shape="rect" href="ioc-cookbook-service-configurations.html">configuration</a> for the service is combined with a factory to produce the service implementation on the fly.</p><p><span class="confluence-anchor-link" id="IoCCookbook-Patterns-chainofcommand"></span></p><h1 id="IoCCookbook-Patterns-ChainofCommandPattern">Chain of Command Pattern</h1><p>Main Article: <a shape="rect" href="chainbuilder-service.html">Chain of Command</a></p><p>Let's look at another example, again from the Tapestry code base. The <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apach
 e/tapestry5/services/InjectionProvider.html">InjectProvider</a> interface is used to process the @Inject annotation on the fields of a Tapestry page or component. Many different instances are combined together to form a <em>chain of command</em>.</p><p>The interface has only a single method (this is far from uncommon):</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[public interface InjectionProvider
+<div class="error"><span class="error">Error formatting macro: contentbylabel: com.atlassian.confluence.api.service.exceptions.BadRequestException: Could not parse cql : null</span> </div></div><p>Tapestry IoC has support for implementing several of the <a shape="rect" class="external-link" href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)" >Gang Of Four Design Patterns</a>. In fact, the IoC container itself is a pumped up version of the Factory pattern.</p><p>The basis for these patterns is often the use of <em>service builder methods</em>, where a <a shape="rect" href="ioc-cookbook-service-configurations.html">configuration</a> for the service is combined with a factory to produce the service implementation on the fly.</p><p><span class="confluence-anchor-link" id="IoCCookbook-Patterns-chainofcommand"></span></p><h1 id="IoCCookbook-Patterns-ChainofCommandPattern">Chain of Command Pattern</h1><p>Main Article: <a shape="rect" href="chainbuilder-service.html">Chain
  of Command</a></p><p>Let's look at another example, again from the Tapestry code base. The <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/InjectionProvider.html">InjectProvider</a> interface is used to process the @Inject annotation on the fields of a Tapestry page or component. Many different instances are combined together to form a <em>chain of command</em>.</p><p>The interface has only a single method (this is far from uncommon):</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 interface InjectionProvider
 {
   boolean provideInjection(String fieldName, Class fieldType, ObjectLocator locator,
       ClassTransformation transformation, MutableComponentModel componentModel);
 }]]></script>
 </div></div><p>The return type indicates whether the provider was able to do something. For example, the AssetInjectionProvider checks to see if there's an @Path annotation on the field, and if so, converts the path to an asset, works with the ClassTransformation object to implement injection, and returns true to indicate success. Returning true terminates the chain early, and that true value is ultimately returned to the caller.</p><p>In other cases, it returns false and the chain of command continues down to the next provider. If no provider is capable of handling the injection, then the value false is ultimately returned.</p><p>The InjectionProvider service is built up via contributions. These are the contributions from the TapestryModule:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[public static void contributeInjectionProvider(
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[public static void contributeInjectionProvider(
     OrderedConfiguration&lt;InjectionProvider&gt; configuration,
     MasterObjectProvider masterObjectProvider,
     ObjectLocator locator,
@@ -140,12 +92,12 @@ table.ScrollbarTable td.ScrollbarNextIco
   configuration.add(&quot;Service&quot;, new ServiceInjectionProvider(locator), &quot;after:*&quot;);
 }]]></script>
 </div></div><p>And, of course, other contributions could be made in other modules ... if you wanted to add in your own form of injection.</p><p>The configuration is converted into a service via a service builder method:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[  public InjectionProvider build(List&lt;InjectionProvider&gt; configuration, ChainBuilder chainBuilder)
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[  public InjectionProvider build(List&lt;InjectionProvider&gt; configuration, ChainBuilder chainBuilder)
   {
     return chainBuilder.build(InjectionProvider.class, configuration);
   }]]></script>
 </div></div><p>Now, let's see how this is used. The InjectWorker class looks for fields with the InjectAnnotation, and uses the chain of command to inject the appropriate value. However, to InjectWorker, there is no chain ... just a <em>single</em> object that implements the InjectionProvider interface.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[public class InjectWorker implements ComponentClassTransformWorker
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[public class InjectWorker implements ComponentClassTransformWorker
 {
   private final ObjectLocator locator;
 

Modified: websites/production/tapestry/content/ioc-cookbook-service-configurations.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-service-configurations.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-service-configurations.html Sat Jun 27 21:21:02 2015
@@ -27,16 +27,6 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
-    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' type='text/css' />
-  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
-  <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -55,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC cookbook - Service Configurations</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC cookbook - Service Configurations</h1></div></div>
 <div class="clearer"></div>
 </div>
 
@@ -100,7 +90,7 @@ table.ScrollbarTable td.ScrollbarNextIco
 <p>The Tapestry module makes a contribution into the service configuration:</p>
 
 <div class="code panel pdl" style="border-style: solid;border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
   public static void contributeResourceDigestGenerator(Configuration&lt;String&gt; configuration)
   {
     configuration.add(&quot;class&quot;);
@@ -117,7 +107,7 @@ table.ScrollbarTable td.ScrollbarNextIco
 <p>Say your application stored a file on the classpath needed by your application; for illustrative purposes, perhaps it is a PGP private key. You don't want any client to able to download a .pgp file, no matter how unlikely that would be. Thus:</p>
 
 <div class="code panel pdl" style="border-style: solid;border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
 public class MyAppModule
 {
  public static void contributeResourceDigestGenerator(Configuration&lt;String&gt; configuration)
@@ -134,7 +124,7 @@ public class MyAppModule
 <p>A service receives the configuration as an injected parameter ... not of type Configuration (that's used for <em>making</em> contributions), but instead is of type Collection:</p>
 
 <div class="code panel pdl" style="border-style: solid;border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
 public class ResourceDigestGeneratorImpl implements ResourceDigestGenerator
 {
   private final Set&lt;String&gt; digestExtensions;
@@ -161,7 +151,7 @@ public class ResourceDigestGeneratorImpl
 <p>Alternately, if the Request can't be handled, the Dispatcher returns false.</p>
 
 <div class="code panel pdl" style="border-style: solid;border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
 public void contributeMasterDispatcher(OrderedConfiguration&lt;Dispatcher&gt; configuration, . . .)
 {
   // Looks for the root path and renders the start page
@@ -197,7 +187,7 @@ public void contributeMasterDispatcher(O
 <p>The MasterDispatcher service configuration defines a <a shape="rect" href="chainbuilder-service.html">Chain of Command</a> and we can provide the implementation using virtually no code:</p>
 
 <div class="code panel pdl" style="border-style: solid;border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
   public static Dispatcher buildMasterDispatcher(List&lt;Dispatcher&gt; configuration, ChainBuilder chainBuilder)
   {
     return chainBuilder.build(Dispatcher.class, configuration);
@@ -215,7 +205,7 @@ public void contributeMasterDispatcher(O
 <p>The first step is to contribute values.</p>
 
 <div class="code panel pdl" style="border-style: solid;border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
   public static void contributeFactoryDefaults(MappedConfiguration&lt;String, String&gt; configuration)
   {
     configuration.add(SymbolConstants.FILE_CHECK_INTERVAL, &quot;1000&quot;); // 1 second

Modified: websites/production/tapestry/content/ioc-cookbook.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook.html (original)
+++ websites/production/tapestry/content/ioc-cookbook.html Sat Jun 27 21:21:02 2015
@@ -27,16 +27,6 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
-    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' type='text/css' />
-  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
-  <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -55,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC cookbook</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC cookbook</h1></div></div>
 <div class="clearer"></div>
 </div>
 
@@ -76,45 +66,7 @@ table.ScrollbarTable td.ScrollbarNextNam
 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="using-select-with-a-list.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="using-select-with-a-list.html">Using Select With a List</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" width="33%"><sup><a shape="rect" href="cookbook.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="cookbook.html">Cookbook</a></td><td colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a shape="rect" href="performance-and-clustering.html">Performance and Clustering</a></td><td colspan="1" rowspan="1" class="ScrollbarNextIcon"><a shape="rect" href="perfo
 rmance-and-clustering.html"><img align="middle" border="0" src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif" width="16" height="16"></a></td></tr></table></div><h1 id="IoCcookbook-TapestryIoCCookbook">Tapestry IoC Cookbook</h1><div class="navmenu" style="float:right; background:#eee; margin:3px; padding:3px">
-<h3>Related Articles</h3>
-<ul class="content-by-label"><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="ioc.html">IoC</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="tapestry-inversion-of-control-faq.html">Tapestry Inversion of Control FAQ</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="tapestry-ioc-overview.html">Tapestry IoC Overview</a>
-                    
-                
-                            </div>
-        </li><li>
-            <div>
-                    <span class="icon icon-page" title="Page">Page:</span>            </div>
-
-            <div class="details">
-                            <a shape="rect" href="ioc-cookbook.html">IoC cookbook</a>
-                    
-                
-                            </div>
-        </li></ul>
-</div><p>Tapestry Inversion of Control (IoC), though designed specifically for the needs of the Tapestry web framework, may also be employed as a stand-alone IoC container, separate from the rest of Tapestry.</p><p>Tapestry IoC is a sophisticated tool that takes some experience to use properly.</p><p>The IOC documentation in the User Guide is factually correct, but it is designed more as a reference, rather than giving the big picture. In this Cookbook, we'll show a bit more about how to use Tapestry IoC, using real examples from the Tapestry code base (both the tapestry-ioc and tapestry-core modules).</p><p>A word of caution: several of the examples have been taken from Tapestry's <em>internal</em> code base. Tapestry internals are private, subject to change at any time, so be aware that if you go peeking at the internal source code, it may have changed since the corresponding documentation was written.</p><p><strong>Contents:</strong></p><ul><li><a shape="rect" href="ioc-cookbook-
 basic-services-and-injection.html">Basic Services and Injection</a></li><li><a shape="rect" href="ioc-cookbook-overriding-ioc-services.html">Overriding Tapestry IoC Services</a></li><li><a shape="rect" href="ioc-cookbook-patterns.html">Using Patterns</a></li><li><a shape="rect" href="ioc-cookbook-service-configurations.html">Service Configurations</a></li></ul></div>
+<div class="error"><span class="error">Error formatting macro: contentbylabel: com.atlassian.confluence.api.service.exceptions.BadRequestException: Could not parse cql : null</span> </div></div><p>Tapestry Inversion of Control (IoC), though designed specifically for the needs of the Tapestry web framework, may also be employed as a stand-alone IoC container, separate from the rest of Tapestry.</p><p>Tapestry IoC is a sophisticated tool that takes some experience to use properly.</p><p>The IOC documentation in the User Guide is factually correct, but it is designed more as a reference, rather than giving the big picture. In this Cookbook, we'll show a bit more about how to use Tapestry IoC, using real examples from the Tapestry code base (both the tapestry-ioc and tapestry-core modules).</p><p>A word of caution: several of the examples have been taken from Tapestry's <em>internal</em> code base. Tapestry internals are private, subject to change at any time, so be aware that if you go
  peeking at the internal source code, it may have changed since the corresponding documentation was written.</p><p><strong>Contents:</strong></p><ul><li><a shape="rect" href="ioc-cookbook-basic-services-and-injection.html">Basic Services and Injection</a></li><li><a shape="rect" href="ioc-cookbook-overriding-ioc-services.html">Overriding Tapestry IoC Services</a></li><li><a shape="rect" href="ioc-cookbook-patterns.html">Using Patterns</a></li><li><a shape="rect" href="ioc-cookbook-service-configurations.html">Service Configurations</a></li></ul></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/ioc-decorator.html
==============================================================================
--- websites/production/tapestry/content/ioc-decorator.html (original)
+++ websites/production/tapestry/content/ioc-decorator.html Sat Jun 27 21:21:02 2015
@@ -45,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC - decorator</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC - decorator</h1></div></div>
 <div class="clearer"></div>
 </div>
 

Modified: websites/production/tapestry/content/ioc-injection.html
==============================================================================
--- websites/production/tapestry/content/ioc-injection.html (original)
+++ websites/production/tapestry/content/ioc-injection.html Sat Jun 27 21:21:02 2015
@@ -45,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC - injection</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC - injection</h1></div></div>
 <div class="clearer"></div>
 </div>
 

Modified: websites/production/tapestry/content/ioc-logging.html
==============================================================================
--- websites/production/tapestry/content/ioc-logging.html (original)
+++ websites/production/tapestry/content/ioc-logging.html Sat Jun 27 21:21:02 2015
@@ -45,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC - logging</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC - logging</h1></div></div>
 <div class="clearer"></div>
 </div>
 

Modified: websites/production/tapestry/content/ioc-module.html
==============================================================================
--- websites/production/tapestry/content/ioc-module.html (original)
+++ websites/production/tapestry/content/ioc-module.html Sat Jun 27 21:21:02 2015
@@ -45,7 +45,7 @@
   <input type="submit" value="Search">
 </form>
 
-</div><div class="emblem" style="float:left"><p><a shape="rect" href="index.html"><img class="confluence-embedded-image confluence-external-resource" src="http://tapestry.apache.org/images/tapestry_small.png" data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></a></p></div><div class="title" style="float:left; margin: 0 0 0 3em"><h1 id="SmallBanner-PageTitle">IoC - module</h1></div></div>
+</div><div class="emblem" style="float:left"><p><a shape="rect" 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">IoC - module</h1></div></div>
 <div class="clearer"></div>
 </div>