Modified: websites/production/tapestry/content/getting-started.html
==============================================================================
--- websites/production/tapestry/content/getting-started.html (original)
+++ websites/production/tapestry/content/getting-started.html Sat Aug  8 
17:20:04 2015
@@ -176,13 +176,7 @@ package: com.example.newapp
 [INFO] Parameter: version, Value: 1.0-SNAPSHOT
 [INFO] Parameter: groupId, Value: com.example
 [INFO] Parameter: artifactId, Value: newapp
-[WARNING] Don't override file 
/Users/hlship/workspaces/tapestry/tapestry-doc-examples/newapp/src/test/java
-[WARNING] Don't override file 
/Users/hlship/workspaces/tapestry/tapestry-doc-examples/newapp/src/main/webapp
-[WARNING] Don't override file 
/Users/hlship/workspaces/tapestry/tapestry-doc-examples/newapp/src/main/resources/com/example/newapp
-[WARNING] Don't override file 
/Users/hlship/workspaces/tapestry/tapestry-doc-examples/newapp/src/test/resources
-[WARNING] Don't override file 
/Users/hlship/workspaces/tapestry/tapestry-doc-examples/newapp/src/test/conf
-[WARNING] Don't override file 
/Users/hlship/workspaces/tapestry/tapestry-doc-examples/newapp/src/site
-[INFO] project created from Archetype in dir: 
/Users/hlship/workspaces/tapestry/tapestry-doc-examples/newapp
+[INFO] project created from Archetype in dir: 
/users/joeuser/workspace/tapestry/tapestry-doc-examples/newapp
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESS
 [INFO] ------------------------------------------------------------------------

Modified: 
websites/production/tapestry/content/implementing-the-hi-lo-guessing-game.html
==============================================================================
--- 
websites/production/tapestry/content/implementing-the-hi-lo-guessing-game.html 
(original)
+++ 
websites/production/tapestry/content/implementing-the-hi-lo-guessing-game.html 
Sat Aug  8 17:20:04 2015
@@ -32,7 +32,6 @@
   <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();
@@ -295,7 +294,7 @@ public class GameOver
   
 &lt;/html&gt;
 </pre>
-</div></div><p>The result, when you guess correctly, should be 
this:</p><p><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image" 
src="implementing-the-hi-lo-guessing-game.data/gameover.png"></span></p><p>That 
wraps up the basics of Tapestry; we've demonstrated the basics of linking pages 
together and passing information from page to page in code as well as 
incorporating data inside URLs.</p><p>There's still more room to refactor this 
toy application; for example, making it possible to start a new game from the 
GameOver page (and doing it in a way that doesn't duplicate code). In addition, 
later we'll see other ways of sharing information between pages that are less 
cumbersome than the setup-and-persist approach shown here.</p><p>Next up: let's 
find out how Tapestry handles HTML forms and user input.</p><p>Next: <a 
shape="rect" href="using-beaneditform-to-create-user-forms.html">Using 
BeanEditForm To Create User Forms</a></p><p>&#160;</p></div>
+</div></div><p>The result, when you guess correctly, should be 
this:</p><p><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image" 
src="implementing-the-hi-lo-guessing-game.data/gameover.png"></span></p><p>That 
wraps up the basics of Tapestry; we've demonstrated the basics of linking pages 
together and passing information from page to page in code as well as 
incorporating data inside URLs.</p><p>There's still more room to refactor this 
toy application; for example, making it possible to start a new game from the 
GameOver page (and doing it in a way that doesn't duplicate code). In addition, 
later we'll see other ways of sharing information between pages that are less 
cumbersome than the setup-and-persist approach shown here.</p><p>Next up: let's 
find out how Tapestry handles HTML forms and user input.</p><p>Next: <a 
shape="rect" href="using-beaneditform-to-create-user-forms.html">Using 
BeanEditForm To Create User Forms</a></p><p></p><p>&#160;</p><p>&#16
 0;</p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/injection-in-detail.html
==============================================================================
--- websites/production/tapestry/content/injection-in-detail.html (original)
+++ websites/production/tapestry/content/injection-in-detail.html Sat Aug  8 
17:20:04 2015
@@ -31,8 +31,6 @@
   <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();
@@ -122,7 +120,7 @@
 </div></div>
 <div style="border-right: 20px solid #D8E4F1;border-left: 20px solid #D8E4F1;">
 <p>ComponentResourceSelector is new as of release 5.3. It encapsulates a 
locale plus additional application-specific data used for skinning and/or 
themeing.</p>
-</div><h2 id="InjectioninDetail-AssetInjectionProvider">Asset 
InjectionProvider</h2><p>Triggered by the @Path annotation: the Path value has 
symbols expanded, and is then converted to an Asset.</p><h2 
id="InjectioninDetail-ServiceInjectionProvider">Service 
InjectionProvider</h2><p>Equivalent to the Service Lookup phase in an IoC layer 
injection.</p><h1 
id="InjectioninDetail-@InjectServiceinComponents">@InjectService in 
Components</h1><p>You may use the @<a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html";>InjectService</a>
 annotation on component fields.</p><p>&#160;</p></div>
+</div><h2 id="InjectioninDetail-AssetInjectionProvider">Asset 
InjectionProvider</h2><p>Triggered by the @Path annotation: the Path value has 
symbols expanded, and is then converted to an Asset.</p><h2 
id="InjectioninDetail-ServiceInjectionProvider">Service 
InjectionProvider</h2><p>Equivalent to the Service Lookup phase in an IoC layer 
injection.</p><h1 
id="InjectioninDetail-@InjectServiceinComponents">@InjectService in 
Components</h1><p>You may use the @<a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html";>InjectService</a>
 annotation on component fields.</p><p></p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/object-providers.html
==============================================================================
--- websites/production/tapestry/content/object-providers.html (original)
+++ websites/production/tapestry/content/object-providers.html Sat Aug  8 
17:20:04 2015
@@ -31,8 +31,6 @@
   <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();
@@ -82,7 +80,7 @@
   {
     configuration.add("MyObject", new MyObjectProvider());
   }</pre>
-</div></div><p>This establishes a name for the object provider (useful if the 
exact order of execution of the provider, relative to other providers, is 
relevant).</p><p>Of course, this is a simplified example. In a real scenario, 
the provider is most likely a service with its own dependencies.</p></div>
+</div></div><p>This establishes a name for the object provider (useful if the 
exact order of execution of the provider, relative to other providers, is 
relevant).</p><p>Of course, this is a simplified example. In a real scenario, 
the provider is most likely a service with its own 
dependencies.</p><p>&#160;</p><p></p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/ordering-by-constraints.html
==============================================================================
--- websites/production/tapestry/content/ordering-by-constraints.html (original)
+++ websites/production/tapestry/content/ordering-by-constraints.html Sat Aug  
8 17:20:04 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"/>
 
@@ -62,44 +52,12 @@
 <div class="clearer"></div>
 
   <div id="breadcrumbs">
-        <a href="index.html">Apache Tapestry</a>&nbsp;&gt;&nbsp;<a 
href="documentation.html">Documentation</a>&nbsp;&gt;&nbsp;<a 
href="user-guide.html">User Guide</a>&nbsp;&gt;&nbsp;<a 
href="ioc.html">IoC</a>&nbsp;&gt;&nbsp;<a 
href="ordering-by-constraints.html">Ordering by Constraints</a>
+        <a href="index.html">Apache Tapestry</a>&nbsp;&gt;&nbsp;<a 
href="documentation.html">Documentation</a>&nbsp;&gt;&nbsp;<a 
href="user-guide.html">User Guide</a>&nbsp;&gt;&nbsp;<a 
href="ioc.html">IOC</a>&nbsp;&gt;&nbsp;<a 
href="ordering-by-constraints.html">Ordering by Constraints</a>
     <a class="edit" title="Edit this page (requires approval -- just ask on 
the mailing list)" 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23338485";>edit</a>
   </div>
 
 <div id="content">
-<div id="ConfluenceContent">
-
-<h1 id="OrderingbyConstraints-OrderingbyConstraints">Ordering by 
Constraints</h1>
-
-<p>Tapestry IoC has two specific areas where it must put some form of 
contribution into a specific order:</p>
-
-<ul><li><a shape="rect" href="tapestry-ioc-configuration.html">Ordered 
Configurations</a>, where different modules may contribute into a service's 
configuration</li><li><a shape="rect" 
href="tapestry-ioc-decorators.html">Service Decorators</a> which must be 
applied to services from a number of modules.<br clear="none">
-In both these cases, objects (either contributions to a configuration, or 
decorators) are assigning qualified IDs, simple IDs qualified with the 
containing/contributing module's ID.</li></ul>
-
-
-<p>Because the contributions can come from different modules, and there isn't 
a specific order in which the service contribution methods are invoked, there 
is no natural ordering of the contributed objects.</p>
-
-<p>To resolve this, <em>constraints</em> are applied to each contribution. 
These constraints control what other objects must come before a contribution or 
after it.</p>
-
-<p>The constraints are specified using the @<a shape="rect" 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Order.html";>Order</a>
 annotation (for service decorator methods), or as variable arguments at the 
end of the add() method for ordered configurations.</p>
-
-<p>Often a single contribution will have more than one constraint.</p>
-
-<h1 id="OrderingbyConstraints-ConstraintTypes">Constraint Types</h1>
-
-<p>Each constraint string begins with a prefix, <code>before:</code> or 
<code>after:</code>, used to identify the type of constraint.</p>
-
-<p>The remainder of the constraint string is a comma-separated list of 
<em>patterns</em>. The contributed object will be ordered before or after the 
contributions identified by the patterns.</p>
-
-<p><span class="confluence-anchor-link" 
id="OrderingbyConstraints-Match_Patterns"></span></p>
-<h1 id="OrderingbyConstraints-ConstraintMatchPatterns">Constraint Match 
Patterns</h1>
-
-<p>A constraint match pattern is used to select one or more objects by their 
ID.</p>
-
-<p>Match patterns support a very simple kind of wildcard matching. A 
<code>*</code> (asterisk character) may appear at the start and/or end of the 
pattern, and it will match zero or more characters there. Thus you can have 
patterns such as <code>Data*</code> or <code>*Logic</code> or even 
<code>*User*</code>.</p>
-
-<p>Matching is <a shape="rect" href="case-insensitivity.html">case 
insensitive</a>.</p>
-</div>
+<div id="ConfluenceContent"><p>Tapestry IoC has two specific areas where it 
must put some form of contribution into a specific order:</p><ul><li><a 
shape="rect" href="tapestry-ioc-configuration.html">Ordered Configurations</a>, 
where different modules may contribute into a service's 
configuration</li><li><a shape="rect" 
href="tapestry-ioc-decorators.html">Service Decorators</a> which must be 
applied to services from a number of modules.<br clear="none"> In both these 
cases, objects (either contributions to a configuration, or decorators) are 
assigning qualified IDs, simple IDs qualified with the containing/contributing 
module's ID.</li></ul><p>Because the contributions can come from different 
modules, and there isn't a specific order in which the service contribution 
methods are invoked, there is no natural ordering of the contributed 
objects.</p><p>To resolve this, <em>constraints</em> are applied to each 
contribution. These constraints control what other objects must come before a
  contribution or after it.</p><p>The constraints are specified using the @<a 
shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Order.html";>Order</a>
 annotation (for service decorator methods), or as variable arguments at the 
end of the add() method for ordered configurations.</p><p>Often a single 
contribution will have more than one constraint.</p><h1 
id="OrderingbyConstraints-ConstraintTypes">Constraint Types</h1><p>Each 
constraint string begins with a prefix, <code>before:</code> or 
<code>after:</code>, used to identify the type of constraint.</p><p>The 
remainder of the constraint string is a comma-separated list of 
<em>patterns</em>. The contributed object will be ordered before or after the 
contributions identified by the patterns.</p><p><span 
class="confluence-anchor-link" 
id="OrderingbyConstraints-Match_Patterns"></span></p><h1 
id="OrderingbyConstraints-ConstraintMatchPatterns">Constraint Match Patterns</h1
 ><p>A constraint match pattern is used to select one or more objects by their 
 >ID.</p><p>Match patterns support a very simple kind of wildcard matching. A 
 ><code>*</code> (asterisk character) may appear at the start and/or end of the 
 >pattern, and it will match zero or more characters there. Thus you can have 
 >patterns such as <code>Data*</code> or <code>*Logic</code> or even 
 ><code>*User*</code>.</p><p>Matching is <a shape="rect" 
 >href="case-insensitivity.html">case 
 >insensitive</a>.</p><p>&#160;</p><p></p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/pipelinebuilder-service.html
==============================================================================
--- websites/production/tapestry/content/pipelinebuilder-service.html (original)
+++ websites/production/tapestry/content/pipelinebuilder-service.html Sat Aug  
8 17:20:04 2015
@@ -31,8 +31,6 @@
   <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();
@@ -162,7 +160,7 @@ public interface StringTransformFilter
         configuration,
         terminator);
     }    </pre>
-</div></div><p>Here, we create the terminator for the pipeline as an inner 
class instance, and feed that into the builder. The result is a new service 
that encapsulates the entire pipeline. When there are no filters, this is just 
the terminator.</p></div>
+</div></div><p>Here, we create the terminator for the pipeline as an inner 
class instance, and feed that into the builder. The result is a new service 
that encapsulates the entire pipeline. When there are no filters, this is just 
the terminator.</p><p>&#160;</p><p></p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/service-advisors.html
==============================================================================
--- websites/production/tapestry/content/service-advisors.html (original)
+++ websites/production/tapestry/content/service-advisors.html Sat Aug  8 
17:20:04 2015
@@ -31,8 +31,6 @@
   <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();
@@ -62,28 +60,13 @@
 <div class="clearer"></div>
 
   <div id="breadcrumbs">
-        <a href="index.html">Apache Tapestry</a>&nbsp;&gt;&nbsp;<a 
href="documentation.html">Documentation</a>&nbsp;&gt;&nbsp;<a 
href="user-guide.html">User Guide</a>&nbsp;&gt;&nbsp;<a 
href="ioc.html">IoC</a>&nbsp;&gt;&nbsp;<a href="service-advisors.html">Service 
Advisors</a>
+        <a href="index.html">Apache Tapestry</a>&nbsp;&gt;&nbsp;<a 
href="documentation.html">Documentation</a>&nbsp;&gt;&nbsp;<a 
href="user-guide.html">User Guide</a>&nbsp;&gt;&nbsp;<a 
href="ioc.html">IOC</a>&nbsp;&gt;&nbsp;<a href="service-advisors.html">Service 
Advisors</a>
     <a class="edit" title="Edit this page (requires approval -- just ask on 
the mailing list)" 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23338475";>edit</a>
   </div>
 
 <div id="content">
-<div id="ConfluenceContent">
-
-<h1 id="ServiceAdvisors-ServiceAdvisors">Service Advisors</h1>
-
-<p>Service advice represents a powerful meta-programming facility available to 
services. In fact, it is a kind of limited Aspect Oriented Programming.</p>
-
-<p>Service advice allows you to intercept method invocations on your services; 
you have the ability to see what methods get invoked, what the parameters are. 
You can let the normal code do it work, and then inspect or even adjust the 
return value, or any thrown exceptions. And you can do this all in normal Java 
code.</p>
-
-<p>A common example of method-level service advice is to log method entry and 
exit, complete with parameter values, return values, and thrown exceptions. 
Other approaches include security checks, transaction management, and other 
broadly spanning concerns.</p>
-
-<p>Let's start with a (contrived) example. Let's say you have an existing set 
of services that have methods that sometimes return null, and you want them to 
return an empty string instead because you are getting some 
NullPointerExceptions elsewhere in your application.</p>
-
-<p>You could track down the implementation of each service and fix the logic 
that provides a return value ... or you could advise the methods:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
-  @Match("*")
+<div id="ConfluenceContent"><h1 id="ServiceAdvisors-ServiceAdvisors">Service 
Advisors</h1><p>Service advice represents a powerful meta-programming facility 
available to services. In fact, it is a kind of limited Aspect Oriented 
Programming.</p><p>Service advice allows you to intercept method invocations on 
your services; you have the ability to see what methods get invoked, what the 
parameters are. You can let the normal code do it work, and then inspect or 
even adjust the return value, or any thrown exceptions. And you can do this all 
in normal Java code.</p><p>A common example of method-level service advice is 
to log method entry and exit, complete with parameter values, return values, 
and thrown exceptions. Other approaches include security checks, transaction 
management, and other broadly spanning concerns.</p><p>Let's start with a 
(contrived) example. Let's say you have an existing set of services that have 
methods that sometimes return null, and you want them to return an empt
 y string instead because you are getting some NullPointerExceptions elsewhere 
in your application.</p><p>You could track down the implementation of each 
service and fix the logic that provides a return value ... or you could advise 
the methods:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  @Match("*")
   public static void adviseNonNull(MethodAdviceReceiver receiver)
   {
     MethodAdvice advice = new MethodAdvice()
@@ -100,31 +83,8 @@
     receiver.adviseAllMethods(advice);
   };
 </pre>
-</div></div>
-
-<p>This is a method that is placed in a module class. Note the terminology: 
<em>advise</em> is the verb ("to advise a method") and <em>advice</em> is the 
noun ("with this advice"). The <a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/MethodAdviceReceiver.html";>MethodAdviceReceiver</a>
 is a wrapper around the service being advised: you can add advice to some or 
all methods of the service, and also obtain the interface of the service. It is 
automatically passed into service advisor methods.</p>
-
-<p>See <a shape="rect" href="injection-in-detail.html">Injection in Detail</a> 
for what can be injected into a service advisor method.</p>
-
-<p>Service advisor methods must have a parameter of type 
MethodAdviceReceiver.</p>
-
-<p>A service will often be advised multiple times; any method may have any 
number of advice objects applied to it. Some methods may not get any advice. 
All of this is acceptable.</p>
-
-<p>Service advisor methods are always void methods (this is different from <a 
shape="rect" href="tapestry-ioc-decorators.html">service decorator 
methods</a>).</p>
-
-<p>The @<a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Match.html";>Match</a>("*")
 annotation indicates that this advice applies to all services (both your own, 
and those defined by Tapestry). You will want to narrow down which services are 
actually targeted in most cases.</p>
-
-<p>Note that some services, especially those built into Tapestry IoC, are 
marked as <a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/PreventServiceDecoration.html";>not
 subject to decoration</a>, this applies to service advice as well as service 
decoration.</p>
-
-<p>The <a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/MethodAdvice.html";>MethodAdvice</a>
 interface is very simple; it receives an <a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/Invocation.html";>Invocation</a>
 representing a method call. Invocation has methods for inspecting the type and 
value of the parameters, and for overriding the values of the parameters.</p>
-
-<p>The call to <code>proceed()</code> allows the invocation to continue; that 
is, the original method is invoked. If the method has been advised multiple 
times, the call to proceed() may chain into the next MethodAdvice object. In 
any case, after invoking <code>proceed()</code>, you may inspect and override 
the result (the return value).</p>
-
-<p>Advice is pretty efficient, but it is still better to apply it only to 
methods that make sense. We can improve the service advisor method in our 
example to only advise methods that return String:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
-  @Match("*")
+</div></div><p>This is a method that is placed in a module class. Note the 
terminology: <em>advise</em> is the verb ("to advise a method") and 
<em>advice</em> is the noun ("with this advice"). The <a shape="rect" 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/MethodAdviceReceiver.html";>MethodAdviceReceiver</a>
 is a wrapper around the service being advised: you can add advice to some or 
all methods of the service, and also obtain the interface of the service. It is 
automatically passed into service advisor methods.</p><p>See <a shape="rect" 
href="injection-in-detail.html">Injection in Detail</a> for what can be 
injected into a service advisor method.</p><p>Service advisor methods must have 
a parameter of type MethodAdviceReceiver.</p><p>A service will often be advised 
multiple times; any method may have any number of advice objects applied to it. 
Some methods may not get any advice. All of this is acceptable.</p><p>Service 
advisor meth
 ods are always void methods (this is different from <a shape="rect" 
href="tapestry-ioc-decorators.html">service decorator methods</a>).</p><p>The 
@<a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Match.html";>Match</a>("*")
 annotation indicates that this advice applies to all services (both your own, 
and those defined by Tapestry). You will want to narrow down which services are 
actually targeted in most cases.</p><p>Note that some services, especially 
those built into Tapestry IoC, are marked as <a shape="rect" 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/PreventServiceDecoration.html";>not
 subject to decoration</a>, this applies to service advice as well as service 
decoration.</p><p>The <a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/MethodAdvice.html";>MethodAdvice</a>
 interface is ve
 ry simple; it receives an <a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/Invocation.html";>Invocation</a>
 representing a method call. Invocation has methods for inspecting the type and 
value of the parameters, and for overriding the values of the 
parameters.</p><p>The call to <code>proceed()</code> allows the invocation to 
continue; that is, the original method is invoked. If the method has been 
advised multiple times, the call to proceed() may chain into the next 
MethodAdvice object. In any case, after invoking <code>proceed()</code>, you 
may inspect and override the result (the return value).</p><p>Advice is pretty 
efficient, but it is still better to apply it only to methods that make sense. 
We can improve the service advisor method in our example to only advise methods 
that return String:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  @Match("*")
   public static void adviseNonNull(MethodAdviceReceiver receiver)
   {
     MethodAdvice advice = new MethodAdvice()
@@ -145,113 +105,51 @@
     }
   };
 </pre>
-</div></div>
-
-<h1 id="ServiceAdvisors-Built-inAdvice">Built-in Advice</h1>
-
-<p>Tapestry includes two built-in advisor services.</p>
-
-<h2 id="ServiceAdvisors-LoggingAdvice">Logging Advice</h2>
-
-<p>Logging advice is built into Tapestry. You can apply logging advice to your 
services very easily:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
-  @Match("*")
+</div></div><h1 id="ServiceAdvisors-Built-inAdvice">Built-in 
Advice</h1><p>Tapestry includes two built-in advisor services.</p><h2 
id="ServiceAdvisors-LoggingAdvice">Logging Advice</h2><p>Logging advice is 
built into Tapestry. You can apply logging advice to your services very 
easily:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  @Match("*")
   public static void adviseLogging(LoggingAdvisor loggingAdvisor, Logger 
logger, MethodAdviceReceiver receiver)
   {
     loggingAdvisor.addLoggingAdvice(logger, receiver);
   }
 </pre>
-</div></div>
-
-<p><a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/LoggingAdvisor.html";>LoggingAdvisor</a>
 is a built-in Tapestry IoC service. This demonstrates how services can be 
injected into service advisor methods. The Logger parameter is the logger for 
the service being advised.</p>
-
-<h2 id="ServiceAdvisors-LazyAdvice">Lazy Advice</h2>
+</div></div><p><a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/LoggingAdvisor.html";>LoggingAdvisor</a>
 is a built-in Tapestry IoC service. This demonstrates how services can be 
injected into service advisor methods. The Logger parameter is the logger for 
the service being advised.</p><h2 id="ServiceAdvisors-LazyAdvice">Lazy 
Advice</h2><p><a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/LazyAdvisor.html";>LazyAdvisor</a>
 makes method invocations lazy: methods that return an interface (rather than a 
value) will not execute immediately; instead, the method invocation is 
postponed until a method of the return value is invoked.</p><h1 
id="ServiceAdvisors-MatchingAndOrdering">Matching And Ordering</h1><p>Each 
service advice method gets a unique id, obtained by stripping the "advise" 
prefix from the method name. Advice ids must be unique across all
  modules.</p><p>If the @Match annotation is omitted, the advice will match 
against a service with the same id.</p><p>In many cases, the order in which the 
advice is given is very important; for example, you may want logging first, 
then transaction management, then security checks. The @<a shape="rect" 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Order.html";>Order</a>
 annotation allows you to explicitly set the order.</p><h1 
id="ServiceAdvisors-Annotationdrivenadvisors">Annotation driven advisors</h1><p>
 
-<p><a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/LazyAdvisor.html";>LazyAdvisor</a>
 makes method invocations lazy: methods that return an interface (rather than a 
value) will not execute immediately; instead, the method invocation is 
postponed until a method of the return value is invoked.</p>
-
-<h1 id="ServiceAdvisors-MatchingAndOrdering">Matching And Ordering</h1>
-
-<p>Each service advice method gets a unique id, obtained by stripping the 
"advise" prefix from the method name. Advice ids must be unique across all 
modules.</p>
-
-<p>If the @Match annotation is omitted, the advice will match against a 
service with the same id.</p>
-
-<p>In many cases, the order in which the advice is given is very important; 
for example, you may want logging first, then transaction management, then 
security checks. The @<a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Order.html";>Order</a>
 annotation allows you to explicitly set the order.</p>
-
-<h1 id="ServiceAdvisors-Annotationdrivenadvisors">Annotation driven 
advisors</h1>
-
-
-
-<div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">Added in 
5.2</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
+</p><div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">Added in 
5.2</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
 </div></div>
 <div style="border-right: 20px solid #D8E4F1;border-left: 20px solid #D8E4F1;">
-</div>
-
-<p>Starting from version 5.2, Tapestry supports annotation-driven advise 
methods. If the <a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Advise.html";>@Advise</a>
 annotation is present, the advise 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">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
-  @Advise
+<p>&#160;</p></div>Starting from version 5.2, Tapestry supports 
annotation-driven advise methods. If the <a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Advise.html";>@Advise</a>
 annotation is present, the advise method can be arbitrary named, as shown in 
the following example.<div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  @Advise
   @Match("*DAO")
   public static void byServiceId(MethodAdviceReceiver receiver)
   {
     ...
   }
 </pre>
-</div></div>
-
-<p>The advice above is applied to any service whose id matches the "*DAO" 
pattern.</p>
-
-<p>Alternatively, marker annotations can be placed on the advise method to 
match a specific service.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
-  @Advise
+</div></div><p>The advice above is applied to any service whose id matches the 
"*DAO" pattern.</p><p>Alternatively, marker annotations can be placed on the 
advise method to match a specific service.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  @Advise
   @Blue
   public static void byMarkerAnnotation(MethodAdviceReceiver receiver)
   {
     ...
   }
 </pre>
-</div></div>
-
-<p>The advice above is applied to any service that is marked by the @Blue 
annotation.</p>
-
-<p>By default, <a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Advise.html";>@Advise</a>
 annotation applies the advice 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">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
-  @Advise(serviceInterface=MyService.class)
+</div></div><p>The advice above is applied to any service that is marked by 
the @Blue annotation.</p><p>By default, <a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Advise.html";>@Advise</a>
 annotation applies the advice 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">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  @Advise(serviceInterface=MyService.class)
   @Match("*DAO")
   public static void byMatchAnnotation(MethodAdviceReceiver receiver)
   {
     ...
   }
 </pre>
-</div></div>
-
-<p>In the example above, the advice 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">
-<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
-  @Advise(serviceInterface=MyService.class)
+</div></div><p>In the example above, the advice 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">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  @Advise(serviceInterface=MyService.class)
   @Blue
   public static void byMarkerAnnotation(MethodAdviceReceiver receiver)
   {
     ...
   }
 </pre>
-</div></div>
-
-<p>The advice above is applied to any implementation of the MyService 
interface that is marked by the @Blue annotation.</p>
-
-<h1 id="ServiceAdvisors-DecoratorsandAdvice">Decorators and Advice</h1>
-
-<p><a shape="rect" href="tapestry-ioc-decorators.html">Service decorators</a> 
are another way to achieve the same thing; service advisors are a more recent 
addition, added in Tapestry 5.1.</p>
-
-<p>It is not recommended that you mix advice and decoration. If you do, 
decoration take precedence; all decorators will be in effect before any advice 
(internally, they are two separate steps, with advice being processed and the 
result of that used by the decorators).</p>
-</div>
+</div></div><p>The advice above is applied to any implementation of the 
MyService interface that is marked by the @Blue annotation.</p><h1 
id="ServiceAdvisors-DecoratorsandAdvice">Decorators and Advice</h1><p><a 
shape="rect" href="tapestry-ioc-decorators.html">Service decorators</a> are 
another way to achieve the same thing; service advisors are a more recent 
addition, added in Tapestry 5.1.</p><p>It is not recommended that you mix 
advice and decoration. If you do, decoration take precedence; all decorators 
will be in effect before any advice (internally, they are two separate steps, 
with advice being processed and the result of that used by the 
decorators).</p><p>&#160;</p><p></p></div>
 </div>
 
 <div class="clearer"></div>

Modified: 
websites/production/tapestry/content/service-implementation-reloading.html
==============================================================================
--- websites/production/tapestry/content/service-implementation-reloading.html 
(original)
+++ websites/production/tapestry/content/service-implementation-reloading.html 
Sat Aug  8 17:20:04 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"/>
 
@@ -102,37 +92,7 @@
                         
                     </div>
     </li></ul>
-</div><p>Why is this important?</p><p>On the one hand, a good application 
design keeps the page and component classes "thin" and moves logic into the 
services layer, for easier reuse across pages. On the other hand, moving logic 
into services would be less agile if those services didn't auto-reload the way 
Tapestry pages do.</p><p>There are several restrictions on this, and a couple 
of <a shape="rect" class="external-link" 
href="http://en.wikipedia.org/wiki/Leaky_abstraction"; >leaky abstractions</a>, 
but on the whole it's quite serviceable.</p><p>As of release 5.2, you can 
change your service implementation, and Tapestry picks up the change 
immediately. A service can even change its dependencies when being reloaded ... 
but it can't change its interface.</p><h2 
id="ServiceImplementationReloading-Limitations">Limitations</h2><ul><li>Reloading
 only works for services, and only for services with the default service scope 
(i.e., global singletons). Live reloading does not apply to <stron
 g>modules</strong>, <strong>service interfaces</strong>, contributions, or 
anything but just the service implementation.</li><li>Reloading is limited to 
services that can be proxied: services with an interface and an implementation 
of that interface.</li><li>Reloading requires that the underlying class files 
be simple, local, filesystem files (not, for example, files inside a 
JAR).</li><li>If a service has internal state of any kind, that state is lost 
when the class is reloaded and the service re-instantiated. However, if a 
service has a configuration, the configuration will be 
<strong>reconstructed</strong> and injected into the service.</li><li>Services 
are decorated only once, so any decorations or advice applies to the initially 
loaded version of the class, and will not be recalculated when the class 
changes.</li></ul><h2 
id="ServiceImplementationReloading-ClassLoaderIssues">Class Loader 
Issues</h2><p>Tapestry creates a new class loader for <em>each service 
implementation</em>.
  When the underlying .class file changes, the class loader is discarded along 
with the instance, and a new class loader is created.</p><p>The class loader 
only loads the service implementation class, and any inner classes for the 
service implementation. All other classes are loaded by the standard class 
loader for the application.</p><p>Because of how class loaders work, the class 
will no longer be able to access package private classes and members of other 
classes in the same package. You may see some odd IllegalAccessErrors and need 
to change the visibility of package-private classes to be public.</p><p>The JVM 
should be able to eventually garbage collect the class loader. However, if the 
class publishes itself to some other service (for example, adding itself as a 
listener to an event published by some other service), then the instance and 
the garbage collector will be leaked.</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>Be careful about publishing any 
instances of a reloadable class.</p></div></div><h2 
id="ServiceImplementationReloading-UpdateChecks">Update Checks</h2><p>Update 
checks are normally driven by tapestry-core, which periodically checks for 
changed templates, message catalogs, and component classes. Checks for changed 
service implementation classes occur at the same time.</p><p>In an application 
that is not driven by the web tier, you will need to periodically invoke the 
<code>fireCheckForUpdates()</code> method of the <a shape="rect" 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/UpdateListenerHub.html";>UpdateListenerHub</a>
 service (which was moved from tapestry-core to tapestry-ioc for this 
purpose).</p><div class="aui-label" style="float:right" title="Related 
Articles">
-
-
-
-
-
-
-
-
-<h3>Related Articles</h3>
-
-<ul class="content-by-label"><li>
-        <div>
-                <span class="icon aui-icon aui-icon-small 
aui-iconfont-page-default" title="Page">Page:</span>        </div>
-
-        <div class="details">
-                        <a shape="rect" 
href="service-implementation-reloading.html">Service Implementation 
Reloading</a>
-                
-                        
-                    </div>
-    </li><li>
-        <div>
-                <span class="icon aui-icon aui-icon-small 
aui-iconfont-page-default" title="Page">Page:</span>        </div>
-
-        <div class="details">
-                        <a shape="rect" href="class-reloading.html">Class 
Reloading</a>
-                
-                        
-                    </div>
-    </li></ul>
-</div></div>
+</div><p>Why is this important?</p><p>On the one hand, a good application 
design keeps the page and component classes "thin" and moves logic into the 
services layer, for easier reuse across pages. On the other hand, moving logic 
into services would be less agile if those services didn't auto-reload the way 
Tapestry pages do.</p><p>There are several restrictions on this, and a couple 
of <a shape="rect" class="external-link" 
href="http://en.wikipedia.org/wiki/Leaky_abstraction"; >leaky abstractions</a>, 
but on the whole it's quite serviceable.</p><p>As of release 5.2, you can 
change your service implementation, and Tapestry picks up the change 
immediately. A service can even change its dependencies when being reloaded ... 
but it can't change its interface.</p><h2 
id="ServiceImplementationReloading-Limitations">Limitations</h2><ul><li>Reloading
 only works for services, and only for services with the default service scope 
(i.e., global singletons). Live reloading does not apply to <stron
 g>modules</strong>, <strong>service interfaces</strong>, contributions, or 
anything but just the service implementation.</li><li>Reloading is limited to 
services that can be proxied: services with an interface and an implementation 
of that interface.</li><li>Reloading requires that the underlying class files 
be simple, local, filesystem files (not, for example, files inside a 
JAR).</li><li>If a service has internal state of any kind, that state is lost 
when the class is reloaded and the service re-instantiated. However, if a 
service has a configuration, the configuration will be 
<strong>reconstructed</strong> and injected into the service.</li><li>Services 
are decorated only once, so any decorations or advice applies to the initially 
loaded version of the class, and will not be recalculated when the class 
changes.</li></ul><h2 
id="ServiceImplementationReloading-ClassLoaderIssues">Class Loader 
Issues</h2><p>Tapestry creates a new class loader for <em>each service 
implementation</em>.
  When the underlying .class file changes, the class loader is discarded along 
with the instance, and a new class loader is created.</p><p>The class loader 
only loads the service implementation class, and any inner classes for the 
service implementation. All other classes are loaded by the standard class 
loader for the application.</p><p>Because of how class loaders work, the class 
will no longer be able to access package private classes and members of other 
classes in the same package. You may see some odd IllegalAccessErrors and need 
to change the visibility of package-private classes to be public.</p><p>The JVM 
should be able to eventually garbage collect the class loader. However, if the 
class publishes itself to some other service (for example, adding itself as a 
listener to an event published by some other service), then the instance and 
the garbage collector will be leaked.</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>Be careful about publishing any 
instances of a reloadable class.</p></div></div><h2 
id="ServiceImplementationReloading-UpdateChecks">Update Checks</h2><p>Update 
checks are normally driven by tapestry-core, which periodically checks for 
changed templates, message catalogs, and component classes. Checks for changed 
service implementation classes occur at the same time.</p><p>In an application 
that is not driven by the web tier, you will need to periodically invoke the 
<code>fireCheckForUpdates()</code> method of the <a shape="rect" 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/UpdateListenerHub.html";>UpdateListenerHub</a>
 service (which was moved from tapestry-core to tapestry-ioc for this 
purpose).</p><p>&#160;</p><p></p><p>&#160;</p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/service-serialization.html
==============================================================================
--- websites/production/tapestry/content/service-serialization.html (original)
+++ websites/production/tapestry/content/service-serialization.html Sat Aug  8 
17:20:04 2015
@@ -31,8 +31,6 @@
   <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();
@@ -71,7 +69,7 @@
 <pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">[ERROR] SerializationSupport Setting a new service 
proxy provider when there's already
 an existing provider. This may indicate that you have multiple IoC Registries.
 </pre>
-</div></div><p></p></div>
+</div></div><p>&#160;</p><p></p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/shadowbuilder-service.html
==============================================================================
--- websites/production/tapestry/content/shadowbuilder-service.html (original)
+++ websites/production/tapestry/content/shadowbuilder-service.html Sat Aug  8 
17:20:04 2015
@@ -31,8 +31,6 @@
   <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();
@@ -67,7 +65,7 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><p>The ShadowBuilder service (see the <a 
shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/PropertyShadowBuilder.html";>PropertyShadowBuilder</a>
 API) is used to build a special, delegating kind of service implementation 
that, essentially, allows a property of another service to be exposed as its 
own service.</p><div class="aui-label" style="float:right" title="Related 
Articles">
+<div id="ConfluenceContent"><p>The <strong>ShadowBuilder service</strong> (see 
the <a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/PropertyShadowBuilder.html";>PropertyShadowBuilder</a>
 API) is used to build a special, delegating kind of service implementation 
that, essentially, allows a property of another service to be exposed as its 
own service.</p><div class="aui-label" style="float:right" title="Related 
Articles">
 
 
 
@@ -132,7 +130,7 @@ public String getParameter(String name)
 {
   return source.getRequest().getParameter(name);
 }</pre>
-</div></div><p>That is, the shadow implementation holds onto the target object 
(in the above example, the RequestGlobals service) and invokes a method on it 
directly, not using reflection, no differently than you would if you wrote the 
code yourself.</p></div>
+</div></div><p>That is, the shadow implementation holds onto the target object 
(in the above example, the RequestGlobals service) and invokes a method on it 
directly, not using reflection, no differently than you would if you wrote the 
code yourself.</p><p>&#160;</p><p></p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/strategybuilder-service.html
==============================================================================
--- websites/production/tapestry/content/strategybuilder-service.html (original)
+++ websites/production/tapestry/content/strategybuilder-service.html Sat Aug  
8 17:20:04 2015
@@ -31,8 +31,6 @@
   <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();
@@ -129,7 +127,7 @@
   
      return builder.build(registry);
   }</pre>
-</div></div><p></p></div>
+</div></div><p>&#160;</p><p></p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/symbols.html
==============================================================================
--- websites/production/tapestry/content/symbols.html (original)
+++ websites/production/tapestry/content/symbols.html Sat Aug  8 17:20:04 2015
@@ -31,8 +31,6 @@
   <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();
@@ -176,7 +174,7 @@
   {
       configuration.add("report.path", "${report.url}/report.cgi");
   }</pre>
-</div></div><p>When the <code>report.url</code> is referenced, an exception 
will be thrown with the message: <em>Symbol 'report.path' is defined in terms 
of itself (report.path --&gt; report.url --&gt; report.path)</em>.</p></div>
+</div></div><p>When the <code>report.url</code> is referenced, an exception 
will be thrown with the message: <em>Symbol 'report.path' is defined in terms 
of itself (report.path --&gt; report.url --&gt; 
report.path)</em>.</p><p>&#160;</p><p></p></div>
 </div>
 
 <div class="clearer"></div>

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 Sat 
Aug  8 17:20:04 2015
@@ -31,8 +31,6 @@
   <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();
@@ -67,7 +65,7 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><p><strong>Configuration of Tapestry IOC 
services</strong> &#8211; both those provided by Tapestry and those you write 
yourself &#8211; is done using Java, not XML.</p><div class="aui-label" 
style="float:right" title="Related Articles">
+<div id="ConfluenceContent"><p><strong>Tapestry IOC Configuration</strong> is 
the configuration of both the IOC services provided by Tapestry and those you 
write yourself. Both are configured in the same way: using Java, not 
XML.</p><div class="aui-label" style="float:right" title="Related Articles">
 
 
 
@@ -133,7 +131,7 @@
                         
                     </div>
     </li></ul>
-</div><p>One of the key concepts in Tapestry IoC is <em>distributed 
configuration</em>. The <em>distributed</em> part refers to the fact that 
<em>any module</em> may configure a service. Distributed configuration is the 
key feature of Tapestry IoC that supports extensibility and 
modularity.</p><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">service builder method</a>:</p><div 
class="code panel pdl" style="border-width: 1p
 x;"><div class="codeContent panelContent pdl">
+</div><p>One of the key concepts in Tapestry IoC is <em>distributed 
configuration</em>. The <em>distributed</em> part refers to the fact that 
<em>any module</em> may configure a service. Distributed configuration is the 
key feature of Tapestry IoC that supports extensibility and 
modularity.</p><p>Modules configure a service by <em>contributing</em> to 
service configurations. This may seem esoteric but is really pretty simple. 
We'll explain with 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">service builder method</a>:</p><div 
class="code panel pdl" style="border-widt
 h: 1px;"><div class="codeContent panelContent pdl">
 <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);
@@ -237,7 +235,7 @@ public static void arbitraryMethodName(M
 </p><div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">Added in 
5.1</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
 </div></div>
 <div style="border-right: 20px solid #D8E4F1;border-left: 20px solid #D8E4F1;">
-<p>&#160;</p></div>The OrderedConfiguration and MappedConfiguration interfaces 
now support overrides. An override is a replacement for a normally contributed 
object. An override <em>must</em> match a contributed object, and each 
contributed object may be overridden at most once.<p>The new object replaces 
the original object; alternately, you may override the original object with 
null.</p><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></div>
+<p>&#160;</p></div>The OrderedConfiguration and MappedConfiguration interfaces 
now support overrides. An override is a replacement for a normally contributed 
object. An override <em>must</em> match a contributed object, and each 
contributed object may be overridden at most once.<p>The new object replaces 
the original object; alternately, you may override the original object with 
null.</p><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><p>&#160;</p><p></p></div>
 </div>
 
 <div class="clearer"></div>


Reply via email to