Modified: websites/production/tapestry/content/operation-tracker.html
==============================================================================
--- websites/production/tapestry/content/operation-tracker.html (original)
+++ websites/production/tapestry/content/operation-tracker.html Sat Feb  3 
17:21:22 2018
@@ -36,13 +36,26 @@
 
   <div class="wrapper bs">
 
-        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div></div>
+        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div>
+
+</div>
 
           <div id="top">
-            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span><form 
enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";> 
- <input type="text" name="q"> 
- <input type="submit" value="Search"> 
-</form></div><div class="emblem" style="float:left"><p><a  
href="index.html"><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Operation Tracker</h1></div></div>
+            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
+  <input type="text" name="q">
+  <input type="submit" value="Search">
+</form>
+
+</div>
+
+
+<div class="emblem" style="float:left"><p><a  href="index.html"><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div>
+
+
+<div class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Operation Tracker</h1></div>
+
+</div>
       <div class="clearer"></div>
       </div>
 
@@ -54,25 +67,55 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>Have you ever hit an error in 
some code and been faced with a giant stack trace, and no clue what that means? 
&#160;Us too. We wished there was a way for the exception to describe the path 
to the error not (just) in terms of which methods called which methods, but 
what&#160;<em>operations</em> triggered what other operations. That's the 
OperationTracker.</p><p>The operation tracker is another aspect of Tapestry's 
commitment to feedback.</p><div class="aui-label" style="float:right" 
title="Related Articles"><h3>Related Articles</h3><ul 
class="content-by-label"><li> 
-  <div> 
-   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
-  </div> 
-  <div class="details"> 
-   <a  href="error-page-recipe.html">Error Page Recipe</a> 
-  </div> </li><li> 
-  <div> 
-   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
-  </div> 
-  <div class="details"> 
-   <a  href="specific-errors-faq.html">Specific Errors FAQ</a> 
-  </div> </li><li> 
-  <div> 
-   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
-  </div> 
-  <div class="details"> 
-   <a  href="overriding-exception-reporting.html">Overriding Exception 
Reporting</a> 
-  </div> </li></ul></div><p>The <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/OperationTracker.html";>OperationTracker</a>
 is a resource; it's actually a singleton, and is available for injection into 
any IoC service (or Tapestry component).</p><p>Using the OperationTracker you 
may run a Runnable, or invoke an Invokable (returning a typed response). 
&#160;Associated with the operation is a description string.</p><p>If there are 
no exceptions, then no problem.</p><p>If there &#160;are exceptions, then 
you'll see the console output logged at the point of the 
exception:</p><pre></pre><p>qtp644826761-13 [ERROR] Registry Operations 
trace:<br clear="none">qtp644826761-13 [ERROR] Registry [ 1] Handling page 
render request for page DatumEditor<br clear="none">qtp644826761-13 [ERROR] 
Registry [ 2] Constructing instance of page class 
org.apache.tapestry5.integration.app1.pages.DatumEditor<br 
clear="none">qtp644826761-13 [ERROR] Registry [ 3
 ] Assembling root component for page DatumEditor<br 
clear="none">qtp644826761-13 [ERROR] Registry [ 4] Running component class 
transformations on org.apache.tapestry5.integration.app1.pages.Datum<br 
clear="none">qtp644826761-13 [ERROR] RequestExceptionHandler Processing of 
request failed with uncaught exception: java.lang.RuntimeException: Exception 
assembling root component of page DatumEditor: Unable to instantiate instance 
of transformed class org.apache.tapestry5.integration.app1.pages.DatumEditor: 
java.lang.reflect.InvocationTargetException<br 
clear="none">java.lang.RuntimeException: Exception assembling root component of 
page DatumEditor: Unable to instantiate instance of transformed class 
org.apache.tapestry5.integration.app1.pages.DatumEditor: 
java.lang.reflect.InvocationTargetException<br clear="none">at 
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.<a
  class="external-link" href="http://java:129"; rel="nofo
 llow">java:129</a>)<br clear="none">at 
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.access$000(ComponentAssemblerImpl.java:37)<br
 clear="none">at 
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:81)<br
 clear="none">at 
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:78)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.<a  
class="external-link" href="http://java:1258"; rel="nofollow">java:1258</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.assembleRootComponent(ComponentAssemblerImpl.java:76)<br
 clear="none">at org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.i
 nvoke(PageLoaderImpl.<a  class="external-link" href="http://java:197"; 
rel="nofollow">java:197</a>)<br clear="none">at 
org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.<a
  class="external-link" href="http://java:190"; rel="nofollow">java:190</a>)<br 
clear="none">at 
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.<a  
class="external-link" href="http://java:1258"; rel="nofollow">java:1258</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.<a
  class="external-link" href="http://java:189"; rel="nofollow">java:189</a>)<br 
clear="none">at $PageLoader_13a0346ec83c4e52.loadPage(Unknown Source)<br 
clear="none">at org.apache.tapestry5.internal.services.PageSourceImpl.getP
 age(PageSourceImpl.<a  class="external-link" href="http://java:104"; 
rel="nofollow">java:104</a>)<br clear="none">at 
$PageSource_13a0346ec83c4e51.getPage(Unknown Source)<br clear="none">at 
$PageSource_13a0346ec83c4e50.getPage(Unknown Source)<br clear="none">at 
org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:86)<br
 clear="none">at $RequestPageCache_13a0346ec83c4e4f.get(Unknown Source)<br 
clear="none">at $RequestPageCache_13a0346ec83c4e4e.get(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:56)<br
 clear="none">at 
org.apache.tapestry5.modules.TapestryModule$34.handle(TapestryModule.<a  
class="external-link" href="http://java:1978"; rel="nofollow">java:1978</a>)<br 
clear="none">at $PageRenderRequestHandler_13a0346ec83c4f9c.handle(Unknown 
Source)<br clear="none">at 
$PageRenderRequestHandler_13a0346ec83c4f97.handle(Unknown Source)<br 
clear="none">at org.ap
 
ache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)<br
 clear="none">at 
org.apache.tapestry5.internal.services.DeferredResponseRenderer.handlePageRender(DeferredResponseRenderer.java:52)<br
 clear="none">at 
$ComponentRequestFilter_13a0346ec83c4f95.handlePageRender(Unknown Source)<br 
clear="none">at 
$ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:47)<br
 clear="none">at 
$ComponentRequestFilter_13a0346ec83c4f94.handlePageRender(Unknown Source)<br 
clear="none">at 
$ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.internal.services.ProductionModeUnknownComponentFilter.handlePageRender(ProductionModeUnknownComponentFilter.java:62)<br
 clear="none">at $ComponentRequestFilter_13a0346ec83c4f93.handlePageRender(Un
 known Source)<br clear="none">at 
$ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.internal.services.RequestOperationTracker$2.run(RequestOperationTracker.java:73)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:56)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:60)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.<a  
class="external-link" href="http://java:1252"; rel="nofollow">java:1252</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.services.RequestOperationTracker.handlePageRender(RequestOperationTracker.java:66)<br
 clear="none">at 
$ComponentRequestFilter_13a0346ec83c4f92.handlePageRender(Unknown Source)<br 
clear="none">at 
$ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown Source)<br 
clear="none">at $ComponentRequestHandler_13a0346ec83c4f81
 .handlePageRender(Unknown Source)<br clear="none">at 
org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:52)<br
 clear="none">at $Dispatcher_13a0346ec83c4f7f.dispatch(Unknown Source)<br 
clear="none">at $Dispatcher_13a0346ec83c4f80.dispatch(Unknown Source)<br 
clear="none">at $Dispatcher_13a0346ec83c4f74.dispatch(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.modules.TapestryModule$RequestHandlerTerminator.service(TapestryModule.<a
  class="external-link" href="http://java:304"; rel="nofollow">java:304</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)<br
 clear="none">at $RequestFilter_13a0346ec83c4f73.service(Unknown Source)<br 
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.<a  
class="external-link" href="http://java:854"; rel="nofollow">java:854</a>)<br 
clea
 r="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.<a  
class="external-link" href="http://java:844"; rel="nofollow">java:844</a>)<br 
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89)<br
 clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.integration.app1.services.AppModule$2.service(AppModule.<a 
 class="external-link" href="http://java:111"; rel="nofollow">java:111</a>)<br 
clear="none">at $RequestFilter_13a0346ec83c4f71.service(Unknown Source)<br 
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br 
clear="none">at $RequestHandler_13a0346ec83c4f6a.service(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator
 .service(TapestryModule.<a  class="external-link" href="http://java:255"; 
rel="nofollow">java:255</a>)<br clear="none">at 
org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59)<br 
clear="none">at $HttpServletRequestHandler_13a0346ec83c4f6c.service(Unknown 
Source)<br clear="none">at 
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)<br
 clear="none">at $HttpServletRequestFilter_13a0346ec83c4f6d.service(Unknown 
Source)<br clear="none">at 
$HttpServletRequestFilter_13a0346ec83c4f68.service(Unknown Source)<br 
clear="none">at $HttpServletRequestHandler_13a0346ec83c4f6c.service(Unknown 
Source)<br clear="none">at 
org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.<a  
class="external-link" href="http://java:804"; rel="nofollow">java:804</a>)<br 
clear="none">at $HttpServletRequestHandler_13a0346ec83c4f6c.service(Unknown 
Source)<br clear="none">at 
$HttpServletRequestHandler_13a0346ec83c4f67.service(Unknown Source)<br 
 clear="none">at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.<a 
 class="external-link" href="http://java:166"; rel="nofollow">java:166</a>)<br 
clear="none">at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.<a 
 class="external-link" href="http://java:1291"; rel="nofollow">java:1291</a>)<br 
clear="none">at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.<a  
class="external-link" href="http://java:443"; rel="nofollow">java:443</a>)<br 
clear="none">at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.<a  
class="external-link" href="http://java:137"; rel="nofollow">java:137</a>)<br 
clear="none">at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.<a  
class="external-link" href="http://java:556"; rel="nofollow">java:556</a>)<br 
clear="none">at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.<a  
class="external-link" href="http://java:227"; rel="nofollow">java:227</a>)<br 
clear
 ="none">at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.<a  
class="external-link" href="http://java:1044"; rel="nofollow">java:1044</a>)<br 
clear="none">at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.<a  
class="external-link" href="http://java:372"; rel="nofollow">java:372</a>)<br 
clear="none">at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.<a  
class="external-link" href="http://java:189"; rel="nofollow">java:189</a>)<br 
clear="none">at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.<a  
class="external-link" href="http://java:978"; rel="nofollow">java:978</a>)<br 
clear="none">at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.<a  
class="external-link" href="http://java:135"; rel="nofollow">java:135</a>)<br 
clear="none">at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.<a  
class="external-link" href="http://java:116"; rel="nofollow">java:116</a>)<br cl
 ear="none">at org.eclipse.jetty.server.Server.handle(Server.<a  
class="external-link" href="http://java:369"; rel="nofollow">java:369</a>)<br 
clear="none">at 
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.<a
  class="external-link" href="http://java:486"; rel="nofollow">java:486</a>)<br 
clear="none">at 
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.<a
  class="external-link" href="http://java:933"; rel="nofollow">java:933</a>)<br 
clear="none">at 
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.<a
  class="external-link" href="http://java:995"; rel="nofollow">java:995</a>)<br 
clear="none">at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.<a  
class="external-link" href="http://java:644"; rel="nofollow">java:644</a>)<br 
clear="none">at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.<a  
class="external-link" href="http://java:235"; rel="nofollow">j
 ava:235</a>)<br clear="none">at 
org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)<br
 clear="none">at 
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.<a  
class="external-link" href="http://java:668"; rel="nofollow">java:668</a>)<br 
clear="none">at 
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)<br
 clear="none">at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.<a  
class="external-link" href="http://java:608"; rel="nofollow">java:608</a>)<br 
clear="none">at 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.<a  
class="external-link" href="http://java:543"; rel="nofollow">java:543</a>)<br 
clear="none">at java.lang.Thread.run(Thread.<a  class="external-link" 
href="http://java:724"; rel="nofollow">java:724</a>)<br clear="none">Caused by: 
java.lang.RuntimeException: Unable to instantiate instance of transformed class 
org.apache.tapestry5.integration.app1.pag
 es.DatumEditor: java.lang.reflect.InvocationTargetException<br clear="none">at 
org.apache.tapestry5.internal.plastic.ClassInstantiatorImpl.newInstance(ClassInstantiatorImpl.<a
  class="external-link" href="http://java:113"; rel="nofollow">java:113</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$2$1.newInstance(ComponentInstantiatorSourceImpl.<a
  class="external-link" href="http://java:235"; rel="nofollow">java:235</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.&lt;init&gt;(InternalComponentResourcesImpl.<a
  class="external-link" href="http://java:163"; rel="nofollow">java:163</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.&lt;init&gt;(ComponentPageElementImpl.<a
  class="external-link" href="http://java:555"; rel="nofollow">java:555</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.&lt;init&gt;(ComponentPageElementI
 mpl.<a  class="external-link" href="http://java:579"; 
rel="nofollow">java:579</a>)<br clear="none">at 
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.java:97)<br
 clear="none">... 94 more<br clear="none">Caused by: 
java.lang.reflect.InvocationTargetException<br clear="none">at 
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)<br 
clear="none">at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)<br
 clear="none">at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)<br
 clear="none">at java.lang.reflect.Constructor.newInstance(Constructor.<a  
class="external-link" href="http://java:526"; rel="nofollow">java:526</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.plastic.ClassInstantiatorImpl.newInstance(ClassInstantiatorImpl.<a
  class="external-link" href="http://java:109"; rel="nofollow">java:109</a>)<br 
clear="n
 one">... 99 more<br clear="none">Caused by: 
org.apache.tapestry5.ioc.internal.OperationException: Field _value of class 
org.apache.tapestry5.integration.app1.pages.Datum must be instrumented, and may 
not be public.<br clear="none">at 
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.<a
  class="external-link" href="http://java:184"; rel="nofollow">java:184</a>)<br 
clear="none">at 
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:62)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:60)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.<a  
class="external-link" href="http://java:1252"; rel="nofollow">java:1252</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.transform(ComponentInstantiatorSourceImpl.<a
  class="external-link" href="http://java:266"; rel="nofollow">java:266</
 a>)<br clear="none">at 
org.apache.tapestry5.internal.plastic.PlasticClassPool.loadAndTransformClass(PlasticClassPool.<a
  class="external-link" href="http://java:368"; rel="nofollow">java:368</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.plastic.PlasticClassLoader.loadClass(PlasticClassLoader.java:38)<br
 clear="none">at java.lang.ClassLoader.loadClass(ClassLoader.<a  
class="external-link" href="http://java:357"; rel="nofollow">java:357</a>)<br 
clear="none">at 
org.apache.tapestry5.integration.app1.pages.DatumEditor.initializeInstance(DatumEditor.java:22)<br
 clear="none">at 
org.apache.tapestry5.integration.app1.pages.DatumEditor.&lt;init&gt;(DatumEditor.java)<br
 clear="none">... 104 more<br clear="none">Caused by: 
java.lang.IllegalArgumentException: Field _value of class 
org.apache.tapestry5.integration.app1.pages.Datum must be instrumented, and may 
not be public.<br clear="none">at 
org.apache.tapestry5.internal.plastic.PlasticFieldImpl.ensureNotPublic(PlasticFieldImpl.<a
  class=
 "external-link" href="http://java:166"; rel="nofollow">java:166</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.plastic.PlasticFieldImpl.replaceFieldReadAccess(PlasticFieldImpl.<a
  class="external-link" href="http://java:423"; rel="nofollow">java:423</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.plastic.PlasticFieldImpl.setComputedConduit(PlasticFieldImpl.<a
  class="external-link" href="http://java:292"; rel="nofollow">java:292</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.transform.UnclaimedFieldWorker.transformField(UnclaimedFieldWorker.java:99)<br
 clear="none">at 
org.apache.tapestry5.internal.transform.UnclaimedFieldWorker.transform(UnclaimedFieldWorker.java:88)<br
 clear="none">at 
$ComponentClassTransformWorker2_13a0346ec83c4e9a.transform(Unknown Source)<br 
clear="none">at 
$ComponentClassTransformWorker2_13a0346ec83c4e9c.transform(Unknown Source)<br 
clear="none">at 
$ComponentClassTransformWorker2_13a0346ec83c4e7f.transform(Unknown Source)<br 
clear="none">at org
 
.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$3.run(ComponentInstantiatorSourceImpl.<a
  class="external-link" href="http://java:316"; rel="nofollow">java:316</a>)<br 
clear="none">at 
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:56)<br
 clear="none">... 112 more</p><p>Notice how the operation trace at the top of 
the text succinctly explains how execution arrived at the point of failure and 
why, information that isn't captured in a stack trace.</p><p>This operation 
trace appears in the Tapestry web applications, as part of the <a  
href="runtime-exceptions.html">default exception report page</a>.</p><p>There 
are times, especially when tracking down startup failures, where it is useful 
to see the operations log even without explicit 
exceptions.</p><p>Enabling&#160;<strong>debug</strong> level logging for 
the&#160;<strong>org.apache.tapestry5.ioc.Registry</strong> logging category 
will provide huge volumes of output in the consol
 e:</p><pre></pre><p>[DEBUG] Registry [ 1] --&gt; Creating non-proxied instance 
of service ServiceConfigurationListenerHub<br clear="none">[DEBUG] Registry [ 
2] --&gt; Creating plan to instantiate 
org.apache.tapestry5.ioc.services.ServiceConfigurationListenerHub via public 
org.apache.tapestry5.ioc.services.ServiceConfigurationListenerHub(java.util.List)<br
 clear="none">[DEBUG] Registry [ 3] --&gt; Determining injection value for 
parameter #1 (java.util.List)<br clear="none">[DEBUG] Registry [ 4] --&gt; 
Collecting ordered configuration for service ServiceConfigurationListenerHub<br 
clear="none">[DEBUG] Registry [ 5] --&gt; Invoking 
org.apache.tapestry5.ioc.FredModule.configureServiceConfigurationListener(OrderedConfiguration,
 CatchAllServiceConfigurationListener) (at FredModule.<a  class="external-link" 
href="http://java:141"; rel="nofollow">java:141</a>)<br clear="none">[DEBUG] 
Registry [ 6] --&gt; Determining injection value for parameter #1 
(org.apache.tapestry5.ioc.OrderedConfigura
 tion)<br clear="none">[DEBUG] Registry [ 6] &lt;-- Determining injection value 
for parameter #1 (org.apache.tapestry5.ioc.OrderedConfiguration) [0.17 ms]<br 
clear="none">[DEBUG] Registry [ 6] --&gt; Determining injection value for 
parameter #2 (org.apache.tapestry5.ioc.CatchAllServiceConfigurationListener)<br 
clear="none">[DEBUG] Registry [ 7] --&gt; Creating proxy for service 
MasterObjectProvider<br clear="none">[DEBUG] Registry [ 7] &lt;-- Creating 
proxy for service MasterObjectProvider [2.82 ms]<br clear="none">[DEBUG] 
Registry [ 7] --&gt; Realizing service MasterObjectProvider<br 
clear="none">[DEBUG] Registry [ 8] --&gt; Instantiating service 
MasterObjectProvider implementation via 
org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl(List, 
OperationTracker) (at MasterObjectProviderImpl.java:33) via 
org.apache.tapestry5.ioc.modules.TapestryIOCModule.bind(ServiceBinder) (at 
TapestryIOCModule.java:50)<br clear="none">[DEBUG] Registry [ 9] --&gt; 
Creating plan to inst
 antiate org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl 
via public 
org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl(java.util.List,org.apache.tapestry5.ioc.OperationTracker)<br
 clear="none">[DEBUG] Registry [ 10] --&gt; Determining injection value for 
parameter #1 (java.util.List)<br clear="none">[DEBUG] Registry [ 11] --&gt; 
Collecting ordered configuration for service MasterObjectProvider<br 
clear="none">[DEBUG] Registry [ 12] --&gt; Invoking 
org.apache.tapestry5.ioc.modules.TapestryIOCModule.setupObjectProviders(OrderedConfiguration,
 ServiceOverride) (at TapestryIOCModule.<a  class="external-link" 
href="http://java:136"; rel="nofollow">java:136</a>)<br clear="none">[DEBUG] 
Registry [ 13] --&gt; Determining injection value for parameter #1 
(org.apache.tapestry5.ioc.OrderedConfiguration)<br clear="none">[DEBUG] 
Registry [ 13] &lt;-- Determining injection value for parameter #1 
(org.apache.tapestry5.ioc.OrderedConfiguration) [0.17 ms]<br clear="
 none">[DEBUG] Registry [ 13] --&gt; Determining injection value for parameter 
#2 (org.apache.tapestry5.ioc.services.ServiceOverride)<br clear="none">[DEBUG] 
Registry [ 14] --&gt; Creating proxy for service ServiceOverride<br 
clear="none">[DEBUG] Registry [ 14] &lt;-- Creating proxy for service 
ServiceOverride [2.15 ms]<br clear="none">[DEBUG] Registry [ 13] &lt;-- 
Determining injection value for parameter #2 
(org.apache.tapestry5.ioc.services.ServiceOverride) [2.62 ms]<br 
clear="none">[DEBUG] Registry [ 13] --&gt; Creating proxy for service 
UpdateListenerHub<br clear="none">[DEBUG] Registry [ 13] &lt;-- Creating proxy 
for service UpdateListenerHub [2.28 ms]</p><p>...</p><p>The output identifies 
operation depth (the number in square brackets), whether the operation is 
starting&#160;(&#8211;&gt;) or finishing&#160;(&lt;&#8211;), and even the 
execution time of the operation.</p><p></p></div>
+                <div id="ConfluenceContent"><p>Have you ever hit an error in 
some code and been faced with a giant stack trace, and no clue what that means? 
&#160;Us too. We wished there was a way for the exception to describe the path 
to the error not (just) in terms of which methods called which methods, but 
what&#160;<em>operations</em> triggered what other operations. That's the 
OperationTracker.</p><p>The operation tracker is another aspect of Tapestry's 
commitment to feedback.</p><div class="aui-label" style="float:right" 
title="Related Articles">
+
+
+
+
+
+
+
+
+<h3>Related Articles</h3>
+
+<ul class="content-by-label"><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small 
aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="error-page-recipe.html">Error Page Recipe</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small 
aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="specific-errors-faq.html">Specific Errors 
FAQ</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small 
aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  
href="overriding-exception-reporting.html">Overriding Exception Reporting</a>
+                
+                        
+                    </div>
+    </li></ul>
+</div>
+
+
+<p>The <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/OperationTracker.html";>OperationTracker</a>
 is a resource; it's actually a singleton, and is available for injection into 
any IoC service (or Tapestry component).</p><p>Using the OperationTracker you 
may run a Runnable, or invoke an Invokable (returning a typed response). 
&#160;Associated with the operation is a description string.</p><p>If there are 
no exceptions, then no problem.</p><p>If there &#160;are exceptions, then 
you'll see the console output logged at the point of the 
exception:</p><pre></pre><p>qtp644826761-13 [ERROR] Registry Operations 
trace:<br clear="none">qtp644826761-13 [ERROR] Registry [ 1] Handling page 
render request for page DatumEditor<br clear="none">qtp644826761-13 [ERROR] 
Registry [ 2] Constructing instance of page class 
org.apache.tapestry5.integration.app1.pages.DatumEditor<br 
clear="none">qtp644826761-13 [ERROR] Registry [ 3] Assembling root compone
 nt for page DatumEditor<br clear="none">qtp644826761-13 [ERROR] Registry [ 4] 
Running component class transformations on 
org.apache.tapestry5.integration.app1.pages.Datum<br 
clear="none">qtp644826761-13 [ERROR] RequestExceptionHandler Processing of 
request failed with uncaught exception: java.lang.RuntimeException: Exception 
assembling root component of page DatumEditor: Unable to instantiate instance 
of transformed class org.apache.tapestry5.integration.app1.pages.DatumEditor: 
java.lang.reflect.InvocationTargetException<br 
clear="none">java.lang.RuntimeException: Exception assembling root component of 
page DatumEditor: Unable to instantiate instance of transformed class 
org.apache.tapestry5.integration.app1.pages.DatumEditor: 
java.lang.reflect.InvocationTargetException<br clear="none">at 
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.<a
  class="external-link" href="http://java:129"; rel="nofollow">java:129</a>)<br 
cl
 ear="none">at 
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.access$000(ComponentAssemblerImpl.java:37)<br
 clear="none">at 
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:81)<br
 clear="none">at 
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:78)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.<a  
class="external-link" href="http://java:1258"; rel="nofollow">java:1258</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.assembleRootComponent(ComponentAssemblerImpl.java:76)<br
 clear="none">at 
org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.<a
  
 class="external-link" href="http://java:197"; rel="nofollow">java:197</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.<a
  class="external-link" href="http://java:190"; rel="nofollow">java:190</a>)<br 
clear="none">at 
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.<a  
class="external-link" href="http://java:1258"; rel="nofollow">java:1258</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.<a
  class="external-link" href="http://java:189"; rel="nofollow">java:189</a>)<br 
clear="none">at $PageLoader_13a0346ec83c4e52.loadPage(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.internal.services.PageSourceImpl.getPage(PageSourceImpl.<a 
 cl
 ass="external-link" href="http://java:104"; rel="nofollow">java:104</a>)<br 
clear="none">at $PageSource_13a0346ec83c4e51.getPage(Unknown Source)<br 
clear="none">at $PageSource_13a0346ec83c4e50.getPage(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:86)<br
 clear="none">at $RequestPageCache_13a0346ec83c4e4f.get(Unknown Source)<br 
clear="none">at $RequestPageCache_13a0346ec83c4e4e.get(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:56)<br
 clear="none">at 
org.apache.tapestry5.modules.TapestryModule$34.handle(TapestryModule.<a  
class="external-link" href="http://java:1978"; rel="nofollow">java:1978</a>)<br 
clear="none">at $PageRenderRequestHandler_13a0346ec83c4f9c.handle(Unknown 
Source)<br clear="none">at 
$PageRenderRequestHandler_13a0346ec83c4f97.handle(Unknown Source)<br 
clear="none">at org.apache.tapestry5.internal.s
 
ervices.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)<br
 clear="none">at 
org.apache.tapestry5.internal.services.DeferredResponseRenderer.handlePageRender(DeferredResponseRenderer.java:52)<br
 clear="none">at 
$ComponentRequestFilter_13a0346ec83c4f95.handlePageRender(Unknown Source)<br 
clear="none">at 
$ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:47)<br
 clear="none">at 
$ComponentRequestFilter_13a0346ec83c4f94.handlePageRender(Unknown Source)<br 
clear="none">at 
$ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.internal.services.ProductionModeUnknownComponentFilter.handlePageRender(ProductionModeUnknownComponentFilter.java:62)<br
 clear="none">at 
$ComponentRequestFilter_13a0346ec83c4f93.handlePageRender(Unknown Source)<br 
clear="n
 one">at $ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown 
Source)<br clear="none">at 
org.apache.tapestry5.internal.services.RequestOperationTracker$2.run(RequestOperationTracker.java:73)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:56)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:60)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.<a  
class="external-link" href="http://java:1252"; rel="nofollow">java:1252</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.services.RequestOperationTracker.handlePageRender(RequestOperationTracker.java:66)<br
 clear="none">at 
$ComponentRequestFilter_13a0346ec83c4f92.handlePageRender(Unknown Source)<br 
clear="none">at 
$ComponentRequestHandler_13a0346ec83c4f98.handlePageRender(Unknown Source)<br 
clear="none">at 
$ComponentRequestHandler_13a0346ec83c4f81.handlePageRender(Unknown
  Source)<br clear="none">at 
org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:52)<br
 clear="none">at $Dispatcher_13a0346ec83c4f7f.dispatch(Unknown Source)<br 
clear="none">at $Dispatcher_13a0346ec83c4f80.dispatch(Unknown Source)<br 
clear="none">at $Dispatcher_13a0346ec83c4f74.dispatch(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.modules.TapestryModule$RequestHandlerTerminator.service(TapestryModule.<a
  class="external-link" href="http://java:304"; rel="nofollow">java:304</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)<br
 clear="none">at $RequestFilter_13a0346ec83c4f73.service(Unknown Source)<br 
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.<a  
class="external-link" href="http://java:854"; rel="nofollow">java:854</a>)<br 
clear="none">at $RequestHandl
 er_13a0346ec83c4f75.service(Unknown Source)<br clear="none">at 
org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.<a  
class="external-link" href="http://java:844"; rel="nofollow">java:844</a>)<br 
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89)<br
 clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.integration.app1.services.AppModule$2.service(AppModule.<a 
 class="external-link" href="http://java:111"; rel="nofollow">java:111</a>)<br 
clear="none">at $RequestFilter_13a0346ec83c4f71.service(Unknown Source)<br 
clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br 
clear="none">at $RequestHandler_13a0346ec83c4f6a.service(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.<
 a  class="external-link" href="http://java:255"; 
rel="nofollow">java:255</a>)<br clear="none">at 
org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59)<br 
clear="none">at $HttpServletRequestHandler_13a0346ec83c4f6c.service(Unknown 
Source)<br clear="none">at 
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)<br
 clear="none">at $HttpServletRequestFilter_13a0346ec83c4f6d.service(Unknown 
Source)<br clear="none">at 
$HttpServletRequestFilter_13a0346ec83c4f68.service(Unknown Source)<br 
clear="none">at $HttpServletRequestHandler_13a0346ec83c4f6c.service(Unknown 
Source)<br clear="none">at 
org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.<a  
class="external-link" href="http://java:804"; rel="nofollow">java:804</a>)<br 
clear="none">at $HttpServletRequestHandler_13a0346ec83c4f6c.service(Unknown 
Source)<br clear="none">at 
$HttpServletRequestHandler_13a0346ec83c4f67.service(Unknown Source)<br 
clear="none">at org.apach
 e.tapestry5.TapestryFilter.doFilter(TapestryFilter.<a  class="external-link" 
href="http://java:166"; rel="nofollow">java:166</a>)<br clear="none">at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.<a 
 class="external-link" href="http://java:1291"; rel="nofollow">java:1291</a>)<br 
clear="none">at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.<a  
class="external-link" href="http://java:443"; rel="nofollow">java:443</a>)<br 
clear="none">at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.<a  
class="external-link" href="http://java:137"; rel="nofollow">java:137</a>)<br 
clear="none">at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.<a  
class="external-link" href="http://java:556"; rel="nofollow">java:556</a>)<br 
clear="none">at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.<a  
class="external-link" href="http://java:227"; rel="nofollow">java:227</a>)<br 
clear="none">at org.eclipse.je
 tty.server.handler.ContextHandler.doHandle(ContextHandler.<a  
class="external-link" href="http://java:1044"; rel="nofollow">java:1044</a>)<br 
clear="none">at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.<a  
class="external-link" href="http://java:372"; rel="nofollow">java:372</a>)<br 
clear="none">at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.<a  
class="external-link" href="http://java:189"; rel="nofollow">java:189</a>)<br 
clear="none">at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.<a  
class="external-link" href="http://java:978"; rel="nofollow">java:978</a>)<br 
clear="none">at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.<a  
class="external-link" href="http://java:135"; rel="nofollow">java:135</a>)<br 
clear="none">at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.<a  
class="external-link" href="http://java:116"; rel="nofollow">java:116</a>)<br 
clear="none">at org.eclipse
 .jetty.server.Server.handle(Server.<a  class="external-link" 
href="http://java:369"; rel="nofollow">java:369</a>)<br clear="none">at 
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.<a
  class="external-link" href="http://java:486"; rel="nofollow">java:486</a>)<br 
clear="none">at 
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.<a
  class="external-link" href="http://java:933"; rel="nofollow">java:933</a>)<br 
clear="none">at 
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.<a
  class="external-link" href="http://java:995"; rel="nofollow">java:995</a>)<br 
clear="none">at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.<a  
class="external-link" href="http://java:644"; rel="nofollow">java:644</a>)<br 
clear="none">at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.<a  
class="external-link" href="http://java:235"; rel="nofollow">java:235</a>)<br 
clear="no
 ne">at 
org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)<br
 clear="none">at <a  class="external-link" href="http://org.eclipse.jetty.io"; 
rel="nofollow">org.eclipse.jetty.io</a>.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.<a
  class="external-link" href="http://java:668"; rel="nofollow">java:668</a>)<br 
clear="none">at <a  class="external-link" href="http://org.eclipse.jetty.io"; 
rel="nofollow">org.eclipse.jetty.io</a>.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)<br
 clear="none">at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.<a  
class="external-link" href="http://java:608"; rel="nofollow">java:608</a>)<br 
clear="none">at 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.<a  
class="external-link" href="http://java:543"; rel="nofollow">java:543</a>)<br 
clear="none">at java.lang.Thread.run(Thread.<a  class="external-link" 
href="http://java:724"; rel="nofollow">java:724</a>)<br clear="non
 e">Caused by: java.lang.RuntimeException: Unable to instantiate instance of 
transformed class org.apache.tapestry5.integration.app1.pages.DatumEditor: 
java.lang.reflect.InvocationTargetException<br clear="none">at 
org.apache.tapestry5.internal.plastic.ClassInstantiatorImpl.newInstance(ClassInstantiatorImpl.<a
  class="external-link" href="http://java:113"; rel="nofollow">java:113</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$2$1.newInstance(ComponentInstantiatorSourceImpl.<a
  class="external-link" href="http://java:235"; rel="nofollow">java:235</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.&lt;init&gt;(InternalComponentResourcesImpl.<a
  class="external-link" href="http://java:163"; rel="nofollow">java:163</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.&lt;init&gt;(ComponentPageElementImpl.<a
  class="external-link" href="http://java:555"; rel="nofollo
 w">java:555</a>)<br clear="none">at 
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.&lt;init&gt;(ComponentPageElementImpl.<a
  class="external-link" href="http://java:579"; rel="nofollow">java:579</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.java:97)<br
 clear="none">... 94 more<br clear="none">Caused by: 
java.lang.reflect.InvocationTargetException<br clear="none">at 
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)<br 
clear="none">at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)<br
 clear="none">at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)<br
 clear="none">at java.lang.reflect.Constructor.newInstance(Constructor.<a  
class="external-link" href="http://java:526"; rel="nofollow">java:526</a>)<br 
clear="none">at org.apache.tapestry5.internal.plastic.ClassInsta
 ntiatorImpl.newInstance(ClassInstantiatorImpl.<a  class="external-link" 
href="http://java:109"; rel="nofollow">java:109</a>)<br clear="none">... 99 
more<br clear="none">Caused by: 
org.apache.tapestry5.ioc.internal.OperationException: Field _value of class 
org.apache.tapestry5.integration.app1.pages.Datum must be instrumented, and may 
not be public.<br clear="none">at 
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.<a
  class="external-link" href="http://java:184"; rel="nofollow">java:184</a>)<br 
clear="none">at 
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:62)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:60)<br
 clear="none">at 
org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.<a  
class="external-link" href="http://java:1252"; rel="nofollow">java:1252</a>)<br 
clear="none">at org.apache.tapestry5.internal.services.ComponentInst
 antiatorSourceImpl.transform(ComponentInstantiatorSourceImpl.<a  
class="external-link" href="http://java:266"; rel="nofollow">java:266</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.plastic.PlasticClassPool.loadAndTransformClass(PlasticClassPool.<a
  class="external-link" href="http://java:368"; rel="nofollow">java:368</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.plastic.PlasticClassLoader.loadClass(PlasticClassLoader.java:38)<br
 clear="none">at java.lang.ClassLoader.loadClass(ClassLoader.<a  
class="external-link" href="http://java:357"; rel="nofollow">java:357</a>)<br 
clear="none">at 
org.apache.tapestry5.integration.app1.pages.DatumEditor.initializeInstance(DatumEditor.java:22)<br
 clear="none">at 
org.apache.tapestry5.integration.app1.pages.DatumEditor.&lt;init&gt;(DatumEditor.java)<br
 clear="none">... 104 more<br clear="none">Caused by: 
java.lang.IllegalArgumentException: Field _value of class 
org.apache.tapestry5.integration.app1.pages.Datum must be instrumented, and m
 ay not be public.<br clear="none">at 
org.apache.tapestry5.internal.plastic.PlasticFieldImpl.ensureNotPublic(PlasticFieldImpl.<a
  class="external-link" href="http://java:166"; rel="nofollow">java:166</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.plastic.PlasticFieldImpl.replaceFieldReadAccess(PlasticFieldImpl.<a
  class="external-link" href="http://java:423"; rel="nofollow">java:423</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.plastic.PlasticFieldImpl.setComputedConduit(PlasticFieldImpl.<a
  class="external-link" href="http://java:292"; rel="nofollow">java:292</a>)<br 
clear="none">at 
org.apache.tapestry5.internal.transform.UnclaimedFieldWorker.transformField(UnclaimedFieldWorker.java:99)<br
 clear="none">at 
org.apache.tapestry5.internal.transform.UnclaimedFieldWorker.transform(UnclaimedFieldWorker.java:88)<br
 clear="none">at 
$ComponentClassTransformWorker2_13a0346ec83c4e9a.transform(Unknown Source)<br 
clear="none">at $ComponentClassTransformWorker2_13a0346ec83c4e9c.transfo
 rm(Unknown Source)<br clear="none">at 
$ComponentClassTransformWorker2_13a0346ec83c4e7f.transform(Unknown Source)<br 
clear="none">at 
org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$3.run(ComponentInstantiatorSourceImpl.<a
  class="external-link" href="http://java:316"; rel="nofollow">java:316</a>)<br 
clear="none">at 
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:56)<br
 clear="none">... 112 more</p>
+
+
+<p>Notice how the operation trace at the top of the text succinctly explains 
how execution arrived at the point of failure and why, information that isn't 
captured in a stack trace.</p><p>This operation trace appears in the Tapestry 
web applications, as part of the <a  href="operation-tracker.html">default 
exception report page</a>.</p><p>There are times, especially when tracking down 
startup failures, where it is useful to see the operations log even without 
explicit exceptions.</p><p>Enabling&#160;<strong>debug</strong> level logging 
for the&#160;<strong>org.apache.tapestry5.ioc.Registry</strong> logging 
category will provide huge volumes of output in the 
console:</p><pre></pre><p>[DEBUG] Registry [ 1] --&gt; Creating non-proxied 
instance of service ServiceConfigurationListenerHub<br clear="none">[DEBUG] 
Registry [ 2] --&gt; Creating plan to instantiate 
org.apache.tapestry5.ioc.services.ServiceConfigurationListenerHub via public 
org.apache.tapestry5.ioc.services.ServiceConfigurati
 onListenerHub(java.util.List)<br clear="none">[DEBUG] Registry [ 3] --&gt; 
Determining injection value for parameter #1 (java.util.List)<br 
clear="none">[DEBUG] Registry [ 4] --&gt; Collecting ordered configuration for 
service ServiceConfigurationListenerHub<br clear="none">[DEBUG] Registry [ 5] 
--&gt; Invoking 
org.apache.tapestry5.ioc.FredModule.configureServiceConfigurationListener(OrderedConfiguration,
 CatchAllServiceConfigurationListener) (at FredModule.<a  class="external-link" 
href="http://java:141"; rel="nofollow">java:141</a>)<br clear="none">[DEBUG] 
Registry [ 6] --&gt; Determining injection value for parameter #1 
(org.apache.tapestry5.ioc.OrderedConfiguration)<br clear="none">[DEBUG] 
Registry [ 6] &lt;-- Determining injection value for parameter #1 
(org.apache.tapestry5.ioc.OrderedConfiguration) [0.17 ms]<br 
clear="none">[DEBUG] Registry [ 6] --&gt; Determining injection value for 
parameter #2 (org.apache.tapestry5.ioc.CatchAllServiceConfigurationListener)<br 
clear="none">[
 DEBUG] Registry [ 7] --&gt; Creating proxy for service MasterObjectProvider<br 
clear="none">[DEBUG] Registry [ 7] &lt;-- Creating proxy for service 
MasterObjectProvider [2.82 ms]<br clear="none">[DEBUG] Registry [ 7] --&gt; 
Realizing service MasterObjectProvider<br clear="none">[DEBUG] Registry [ 8] 
--&gt; Instantiating service MasterObjectProvider implementation via 
org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl(List, 
OperationTracker) (at MasterObjectProviderImpl.java:33) via 
org.apache.tapestry5.ioc.modules.TapestryIOCModule.bind(ServiceBinder) (at 
TapestryIOCModule.java:50)<br clear="none">[DEBUG] Registry [ 9] --&gt; 
Creating plan to instantiate 
org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl via public 
org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl(java.util.List,org.apache.tapestry5.ioc.OperationTracker)<br
 clear="none">[DEBUG] Registry [ 10] --&gt; Determining injection value for 
parameter #1 (java.util.List)<br c
 lear="none">[DEBUG] Registry [ 11] --&gt; Collecting ordered configuration for 
service MasterObjectProvider<br clear="none">[DEBUG] Registry [ 12] --&gt; 
Invoking 
org.apache.tapestry5.ioc.modules.TapestryIOCModule.setupObjectProviders(OrderedConfiguration,
 ServiceOverride) (at TapestryIOCModule.<a  class="external-link" 
href="http://java:136"; rel="nofollow">java:136</a>)<br clear="none">[DEBUG] 
Registry [ 13] --&gt; Determining injection value for parameter #1 
(org.apache.tapestry5.ioc.OrderedConfiguration)<br clear="none">[DEBUG] 
Registry [ 13] &lt;-- Determining injection value for parameter #1 
(org.apache.tapestry5.ioc.OrderedConfiguration) [0.17 ms]<br 
clear="none">[DEBUG] Registry [ 13] --&gt; Determining injection value for 
parameter #2 (org.apache.tapestry5.ioc.services.ServiceOverride)<br 
clear="none">[DEBUG] Registry [ 14] --&gt; Creating proxy for service 
ServiceOverride<br clear="none">[DEBUG] Registry [ 14] &lt;-- Creating proxy 
for service ServiceOverride [2.15 ms]<br c
 lear="none">[DEBUG] Registry [ 13] &lt;-- Determining injection value for 
parameter #2 (org.apache.tapestry5.ioc.services.ServiceOverride) [2.62 ms]<br 
clear="none">[DEBUG] Registry [ 13] --&gt; Creating proxy for service 
UpdateListenerHub<br clear="none">[DEBUG] Registry [ 13] &lt;-- Creating proxy 
for service UpdateListenerHub [2.28 ms]</p><p>...</p>
+
+
+<p>The output identifies operation depth (the number in square brackets), 
whether the operation is starting&#160;(&#8211;&gt;) or 
finishing&#160;(&lt;&#8211;), and even the execution time of the 
operation.</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 Feb  
3 17:21:22 2018
@@ -36,13 +36,26 @@
 
   <div class="wrapper bs">
 
-        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div></div>
+        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div>
+
+</div>
 
           <div id="top">
-            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span><form 
enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";> 
- <input type="text" name="q"> 
- <input type="submit" value="Search"> 
-</form></div><div class="emblem" style="float:left"><p><a  
href="index.html"><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Ordering by Constraints</h1></div></div>
+            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
+  <input type="text" name="q">
+  <input type="submit" value="Search">
+</form>
+
+</div>
+
+
+<div class="emblem" style="float:left"><p><a  href="index.html"><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div>
+
+
+<div class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Ordering by Constraints</h1></div>
+
+</div>
       <div class="clearer"></div>
       </div>
 
@@ -54,7 +67,7 @@
       </div>
 
       <div id="content">
-                <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  href="tapestry-ioc-configuration.html">Ordered 
Configurations</a>, where different modules may contribute into a service's 
configuration</li><li><a  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 contrib
 ution or after it.</p><p>The constraints are specified using the @<a  
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 mat
 ch 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  href="case-insensitivity.html">case 
insensitive</a>.</p><p>&#160;</p><p></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  href="ordering-by-constraints.html">Ordered 
Configurations</a>, where different modules may contribute into a service's 
configuration</li><li><a  href="ordering-by-constraints.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 contributi
 on or after it.</p><p>The constraints are specified using the @<a  
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  
href="ordering-by-constraints.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 Feb  
3 17:21:22 2018
@@ -44,13 +44,26 @@
 
   <div class="wrapper bs">
 
-        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div></div>
+        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div>
+
+</div>
 
           <div id="top">
-            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span><form 
enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";> 
- <input type="text" name="q"> 
- <input type="submit" value="Search"> 
-</form></div><div class="emblem" style="float:left"><p><a  
href="index.html"><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">PipelineBuilder Service</h1></div></div>
+            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
+  <input type="text" name="q">
+  <input type="submit" value="Search">
+</form>
+
+</div>
+
+
+<div class="emblem" style="float:left"><p><a  href="index.html"><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div>
+
+
+<div class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">PipelineBuilder Service</h1></div>
+
+</div>
       <div class="clearer"></div>
       </div>
 
@@ -62,31 +75,58 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>The <strong>PipelineBuilder 
Service</strong> is a service used to create pipelines, also known as 
<em>filter chains</em>. An example of this is the Filter and FilterChain 
interfaces inside the Servlet API.</p><div class="aui-label" 
style="float:right" title="Related Articles"><h3>Related Articles</h3><ul 
class="content-by-label"><li> 
-  <div> 
-   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
-  </div> 
-  <div class="details"> 
-   <a  href="shadowbuilder-service.html">ShadowBuilder Service</a> 
-  </div> </li><li> 
-  <div> 
-   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
-  </div> 
-  <div class="details"> 
-   <a  href="strategybuilder-service.html">StrategyBuilder Service</a> 
-  </div> </li><li> 
-  <div> 
-   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
-  </div> 
-  <div class="details"> 
-   <a  href="pipelinebuilder-service.html">PipelineBuilder Service</a> 
-  </div> </li><li> 
-  <div> 
-   <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" 
title="Page">Page:</span> 
-  </div> 
-  <div class="details"> 
-   <a  href="chainbuilder-service.html">ChainBuilder Service</a> 
-  </div> </li></ul></div><p>In this pattern, an existing service is decorated 
with a filter. The filter will delegate to the service, but has the chance to 
alter or replace parameters before invoking the method, and can perform 
operations before returning. This is similar to <a  
href="chainbuilder-service.html">chain of responsibility</a>, but differs in 
that there are two interfaces (the service interface and the filter interface) 
and that each filter invokes the next filter via the service interface. In 
contrast, in the chain of responsibility, the chain invokes each method, which 
must return before the next command in the chain is invoked.</p><p>The service 
interface and the filter interface are closely related: the filter interface 
must match the service interface method for method, but each method of the 
filter interface must have an additional parameter whose type is the service 
interface. For example, a pipeline that performed string transformations might 
use the following in
 terfaces:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+                <div id="ConfluenceContent"><p>The <strong>PipelineBuilder 
Service</strong> is a service used to create pipelines, also known as 
<em>filter chains</em>. An example of this is the Filter and FilterChain 
interfaces inside the Servlet API.</p><div class="aui-label" 
style="float:right" title="Related Articles">
+
+
+
+
+
+
+
+
+<h3>Related Articles</h3>
+
+<ul class="content-by-label"><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small 
aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="shadowbuilder-service.html">ShadowBuilder 
Service</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small 
aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  
href="strategybuilder-service.html">StrategyBuilder Service</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small 
aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  
href="pipelinebuilder-service.html">PipelineBuilder Service</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small 
aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="chainbuilder-service.html">ChainBuilder 
Service</a>
+                
+                        
+                    </div>
+    </li></ul>
+</div>
+
+
+<p>In this pattern, an existing service is decorated with a filter. The filter 
will delegate to the service, but has the chance to alter or replace parameters 
before invoking the method, and can perform operations before returning. This 
is similar to <a  href="pipelinebuilder-service.html">chain of 
responsibility</a>, but differs in that there are two interfaces (the service 
interface and the filter interface) and that each filter invokes the next 
filter via the service interface. In contrast, in the chain of responsibility, 
the chain invokes each method, which must return before the next command in the 
chain is invoked.</p><p>The service interface and the filter interface are 
closely related: the filter interface must match the service interface method 
for method, but each method of the filter interface must have an additional 
parameter whose type is the service interface. For example, a pipeline that 
performed string transformations might use the following interfaces:</p><div 
clas
 s="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">public interface StringTransformService
 {
   String transform(String input);
@@ -112,7 +152,7 @@ public interface StringTransformFilter
     return delegate.transform(input).toUpperCase();
   }
 }</pre>
-</div></div><p>The PipelineBuilder Service (<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/PipelineBuilder.html";>API</a>)
 is useful for constructing pipelines. The service is often injected into a 
service builder method, along with an ordered configuration of 
services.</p><p>What the builder accomplishes is to represent each 
<em>filter</em> in the pipeline as an instance of the <em>service</em> 
interface.</p><p><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image" 
src="pipelinebuilder-service.data/PipelineCallingSequence.png"></span><br 
clear="none"> Pipeline Calling Sequence</p><p>The bridges are created by the 
PipelineBuilder service. The terminator must be provided. The bridges and the 
terminator implement the service interface.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>The PipelineBuilder Service (<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/PipelineBuilder.html";>API</a>)
 is useful for constructing pipelines. The service is often injected into a 
service builder method, along with an ordered configuration of 
services.</p><p>What the builder accomplishes is to represent each 
<em>filter</em> in the pipeline as an instance of the <em>service</em> 
interface.</p><p>&#160;</p><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" 
src="pipelinebuilder-service.data/PipelineCallingSequence.png"></span><br 
clear="none"> Pipeline Calling Sequence</p><p>The bridges are created by the 
PipelineBuilder service. The terminator must be provided. The bridges and the 
terminator implement the service interface.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">  public static StringTransformService build(
     @InjectService("PipelineBuilder")
     PipelineBuilder builder,
@@ -133,7 +173,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><p>&#160;</p><p></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><p>&#160;</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 Feb  3 
17:21:22 2018
@@ -93,7 +93,7 @@
     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  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  
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 meth
 ods (this is different from <a  href="tapestry-ioc-decorators.html">service 
decorator methods</a>).</p><p>The @<a  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  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  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  class="external-link" 
href="http://tapestr
 
y.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">
+</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  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  
href="service-advisors.html">Service Advisors</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 (t
 his is different from <a  href="service-advisors.html">service decorator 
methods</a>).</p><p>The @<a  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  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  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  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)
   {
@@ -159,7 +159,7 @@
     ...
   }
 </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  
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><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  
href="service-advisors.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 Feb  3 17:21:22 2018
@@ -72,7 +72,7 @@
 </p><div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">Added in 
5.2</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
 </div></div>
 <div class="error"><span class="error">Unknown macro: {div}</span> 
-<p>&#160;</p></div><strong>Service implementation reloading</strong> is the 
live reloading of Tapestry-IOC service implementation classes without having to 
stop &amp; restart the servlet container. Available for Tapestry 5.2 and later, 
it extends the developer productivity gains of Tapestry's <a  
href="class-reloading.html">Live Class Reloading</a> to your Tapestry-IOC 
service modules.<div class="aui-label" style="float:right" title="Related 
Articles">
+<p>&#160;</p></div><strong>Service implementation reloading</strong> is the 
live reloading of Tapestry-IOC service implementation classes without having to 
stop &amp; restart the servlet container. Available for Tapestry 5.2 and later, 
it extends the developer productivity gains of Tapestry's <a  
href="service-implementation-reloading.html">Live Class Reloading</a> to your 
Tapestry-IOC service modules.<div class="aui-label" style="float:right" 
title="Related Articles">
 
 
 

Modified: websites/production/tapestry/content/service-serialization.html
==============================================================================
--- websites/production/tapestry/content/service-serialization.html (original)
+++ websites/production/tapestry/content/service-serialization.html Sat Feb  3 
17:21:22 2018
@@ -44,13 +44,26 @@
 
   <div class="wrapper bs">
 
-        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div></div>
+        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div>
+
+</div>
 
           <div id="top">
-            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span><form 
enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";> 
- <input type="text" name="q"> 
- <input type="submit" value="Search"> 
-</form></div><div class="emblem" style="float:left"><p><a  
href="index.html"><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div><div
 class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Service Serialization</h1></div></div>
+            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" 
action="http://tapestry.apache.org/search.html";>
+  <input type="text" name="q">
+  <input type="submit" value="Search">
+</form>
+
+</div>
+
+
+<div class="emblem" style="float:left"><p><a  href="index.html"><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="http://tapestry.apache.org/images/tapestry_small.png";></span></a></p></div>
+
+
+<div class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Service Serialization</h1></div>
+
+</div>
       <div class="clearer"></div>
       </div>
 


Reply via email to