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

svn commit: r959689 [2/4] - in /websites/production/tapestry/content: ./ cache/

Modified: websites/production/tapestry/content/object-providers.html
==============================================================================
--- websites/production/tapestry/content/object-providers.html (original)
+++ websites/production/tapestry/content/object-providers.html Sun Jul 26 22:19:48 2015
@@ -62,85 +62,27 @@
 <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="object-providers.html">Object Providers</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="object-providers.html">Object Providers</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=23338489">edit</a>
   </div>
 
 <div id="content">
-<div id="ConfluenceContent">
-
-<h1 id="ObjectProviders-ObjectProviders">Object Providers</h1>
-
-<p>When you don't provide 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 a parameter (to a service builder method or constructor), Tapestry will resolve the parameter automatically.</p>
-
-<p>This is called <em>object injection</em>, rather than <em>service injection</em>, because the value that will ultimately be injected is not necessarily a service; it may be some arbitrary object.</p>
-
-<p>If this sounds vague, its because there is not just one <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/ObjectProvider.html">ObjectProvider</a>; there's a whole set of them, forming a <a shape="rect" href="chainbuilder-service.html">chain of command</a>. The commands in the chain may provide an object based on the parameter type, or based on additional annotations on the parameter.</p>
-
-<p>There are several built-in object providers:</p>
-
-<ul><li>Check for @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Value.html">Value</a> annotation</li><li>Check for @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Symbol.html">Symbol</a> annotation</li><li>Check for a <em>unique</em> service in the Registry whose service interface matches the parameter type<br clear="none">
-Usually, the @Inject annotation is supplemented by an additional annotation which triggers a specific ObjectProvider to provide the value.</li></ul>
-
-
-<h1 id="ObjectProviders-@ValueAnnotationProvider">@Value Annotation Provider</h1>
-
-<p>The Value annotation allows a literal value to be injected. When combined with <a shape="rect" href="symbols.html">symbols</a>, they represent a way for parts of the overall service network to be spot-configured. For example:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
-  public MyService build(@Value("${max-seconds}") long maxSeconds)
+<div id="ConfluenceContent"><p>When you don't provide 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 a parameter (to a service builder method or constructor), Tapestry will resolve the parameter automatically.</p><p>This is called <em>object injection</em>, rather than <em>service injection</em>, because the value that will ultimately be injected is not necessarily a service; it may be some arbitrary object.</p><p>If this sounds vague, its because there is not just one <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/ObjectProvider.html">ObjectProvider</a>; there's a whole set of them, forming a <a shape="rect" href="chainbuilder-service.html">chain of command</a>. The commands in the chain may provide an object based on the parameter type, or based on additional annotations on the paramet
 er.</p><p>There are several built-in object providers:</p><ul><li>Check for @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Value.html">Value</a> annotation</li><li>Check for @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Symbol.html">Symbol</a> annotation</li><li>Check for a <em>unique</em> service in the Registry whose service interface matches the parameter type<br clear="none"> Usually, the @Inject annotation is supplemented by an additional annotation which triggers a specific ObjectProvider to provide the value.</li></ul><h1 id="ObjectProviders-@ValueAnnotationProvider">@Value Annotation Provider</h1><p>The Value annotation allows a literal value to be injected. When combined with <a shape="rect" href="symbols.html">symbols</a>, they represent a way for parts of the overall service network to be spot-configured. For example:
 </p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">  public MyService build(@Value("${max-seconds}") long maxSeconds)
   {
     return new MyServiceImpl(maxSeconds);
   }</pre>
-</div></div>
-
-<p>Here, the MyService service requires a configuration of a number of seconds. The value is supplied as a symbol, with a factory default that may be overwritten with an application default.</p>
-
-<p>Usually, the symbol reference is only part of the string, i.e. <code>@Value("${report.dir}/${report.name}.txt")</code></p>
-
-<h1 id="ObjectProviders-@SymbolAnnotationProvider">@Symbol Annotation Provider</h1>
-
-<p>This is closely related to the @Value annotation approach, except that the annotation directly specifies a symbol name.</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 MyService build(@Symbol("max-seconds") long maxSeconds)
+</div></div><p>Here, the MyService service requires a configuration of a number of seconds. The value is supplied as a symbol, with a factory default that may be overwritten with an application default.</p><p>Usually, the symbol reference is only part of the string, i.e. <code>@Value("${report.dir}/${report.name}.txt")</code></p><h1 id="ObjectProviders-@SymbolAnnotationProvider">@Symbol Annotation Provider</h1><p>This is closely related to the @Value annotation approach, except that the annotation directly specifies a symbol name.</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 MyService build(@Symbol("max-seconds") long maxSeconds)
   {
     return new MyServiceImpl(maxSeconds);
   }</pre>
-</div></div>
-
-<h1 id="ObjectProviders-ServiceProvider">Service Provider</h1>
-
-<p>This is always that last object provider checked.</p>
-
-<p>A <em>single</em> service must exist whose service interface matches the parameter type. This is <em>not</em> an exact match: a search is made for any and all services whose service interface is a super class of the parameter type.</p>
-
-<p>An exception is thrown if there are no matches, or if there are multiple matches.</p>
-
-<h1 id="ObjectProviders-AliasObjectProvider">Alias Object Provider</h1>
-
-<p>The tapestry-core module defines the <a shape="rect" href="aliases.html">Alias object provider</a>, which is used as a way to override services or disambiguate services (when multiple services implement the same interface).</p>
-
-<h1 id="ObjectProviders-DefiningNewProviders">Defining New Providers</h1>
-
-<p>New providers can be specified by contributing to the MasterObjectProvider service's configuration. The configuration is mapped, with the keys being the provider prefix, and the values being the object provider implementation.</p>
-
-<p>Example:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
-  public void contributeMasterObjectProvider(OrderedConfiguration&lt;ObjectProvider&gt; configuration)
+</div></div><h1 id="ObjectProviders-ServiceProvider">Service Provider</h1><p>This is always that last object provider checked.</p><p>A <em>single</em> service must exist whose service interface matches the parameter type. This is <em>not</em> an exact match: a search is made for any and all services whose service interface is a super class of the parameter type.</p><p>An exception is thrown if there are no matches, or if there are multiple matches.</p><h1 id="ObjectProviders-AliasObjectProvider">Alias Object Provider</h1><p>The tapestry-core module defines the <a shape="rect" href="aliases.html">Alias object provider</a>, which is used as a way to override services or disambiguate services (when multiple services implement the same interface).</p><h1 id="ObjectProviders-DefiningNewProviders">Defining New Providers</h1><p>New providers can be specified by contributing to the MasterObjectProvider service's configuration. The configuration is mapped, with the keys being the provider pr
 efix, and the values being the object provider implementation.</p><p>Example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">  public void contributeMasterObjectProvider(OrderedConfiguration&lt;ObjectProvider&gt; configuration)
   {
     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></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/operation-tracker.html
==============================================================================
--- websites/production/tapestry/content/operation-tracker.html (original)
+++ websites/production/tapestry/content/operation-tracker.html Sun Jul 26 22:19:48 2015
@@ -27,6 +27,16 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
+    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' type='text/css' />
+  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
+  <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
+  <script src='/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
+  <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
+  <script src='/resources/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
+  <script type="text/javascript">
+  SyntaxHighlighter.defaults['toolbar'] = false;
+  SyntaxHighlighter.all();
+  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -52,12 +62,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="operation-tracker.html">Operation Tracker</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="operation-tracker.html">Operation Tracker</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=47384480">edit</a>
   </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><p>The <a shape="rect" 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 &#1
 60;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.Invocatio
 nTargetException<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 shape="rect" class="external-link" href="http://java:129" >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.ta
 pestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)<br clear="none"> at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.<a shape="rect" class="external-link" href="http://java:1258" >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 shape="rect" class="external-link" href="http://java:197" >java:197</a>)<br clear="none"> at org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.<a shape="rect" class="external-link" href="http://java:190" >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.a
 pache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.<a shape="rect" class="external-link" href="http://java:1258" >java:1258</a>)<br clear="none"> at org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.<a shape="rect" class="external-link" href="http://java:189" >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 shape="rect" class="external-link" href="http://java:104" >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.ap
 ache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:56)<br clear="none"> at org.apache.tapestry5.modules.TapestryModule$34.handle(TapestryModule.<a shape="rect" class="external-link" href="http://java:1978" >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.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(Unknown 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.Regi
 stryImpl.run(RegistryImpl.<a shape="rect" class="external-link" href="http://java:1252" >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 shape="rect" class="
 external-link" href="http://java:304" >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 shape="rect" class="external-link" href="http://java:854" >java:854</a>)<br clear="none"> at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br clear="none"> at org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.<a shape="rect" class="external-link" href="http://java:844" >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 c
 lear="none"> at org.apache.tapestry5.integration.app1.services.AppModule$2.service(AppModule.<a shape="rect" class="external-link" href="http://java:111" >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 shape="rect" class="external-link" href="http://java:255" >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 shape="rect" class="external-link" href="http://java:804" >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 shape="rect" class="external-link" href="http://java:166" >java:166</a>)<br clear="none"> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.<a shape="rect" class="external-link" href="http://java:1291" >java:1291</a>)<br clear="none"> at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.<a shape="rect" class="external-link" href="http://java:443" >java:443</a>)<br cl
 ear="none"> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.<a shape="rect" class="external-link" href="http://java:137" >java:137</a>)<br clear="none"> at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.<a shape="rect" class="external-link" href="http://java:556" >java:556</a>)<br clear="none"> at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.<a shape="rect" class="external-link" href="http://java:227" >java:227</a>)<br clear="none"> at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.<a shape="rect" class="external-link" href="http://java:1044" >java:1044</a>)<br clear="none"> at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.<a shape="rect" class="external-link" href="http://java:372" >java:372</a>)<br clear="none"> at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.<a shape="rect" class="external-link" href="http://java:189" >java:189</a>)<br clear="n
 one"> at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.<a shape="rect" class="external-link" href="http://java:978" >java:978</a>)<br clear="none"> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.<a shape="rect" class="external-link" href="http://java:135" >java:135</a>)<br clear="none"> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.<a shape="rect" class="external-link" href="http://java:116" >java:116</a>)<br clear="none"> at org.eclipse.jetty.server.Server.handle(Server.<a shape="rect" class="external-link" href="http://java:369" >java:369</a>)<br clear="none"> at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.<a shape="rect" class="external-link" href="http://java:486" >java:486</a>)<br clear="none"> at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.<a shape="rect" class="external-link" href="http://java:933" >java:933</a>)<br cle
 ar="none"> at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.<a shape="rect" class="external-link" href="http://java:995" >java:995</a>)<br clear="none"> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.<a shape="rect" class="external-link" href="http://java:644" >java:644</a>)<br clear="none"> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.<a shape="rect" class="external-link" href="http://java:235" >java: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 shape="rect" class="external-link" href="http://java:668" >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 shape="rect" class="external
 -link" href="http://java:608" >java:608</a>)<br clear="none"> at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.<a shape="rect" class="external-link" href="http://java:543" >java:543</a>)<br clear="none"> at java.lang.Thread.run(Thread.<a shape="rect" class="external-link" href="http://java:724" >java:724</a>)<br clear="none">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 shape="rect" class="external-link" href="http://java:113" >java:113</a>)<br clear="none"> at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$2$1.newInstance(ComponentInstantiatorSourceImpl.<a shape="rect" class="external-link" href="http://java:235" >java:235</a>)<br clear="none"> at org.apache.tapestry5.internal
 .structure.InternalComponentResourcesImpl.&lt;init&gt;(InternalComponentResourcesImpl.<a shape="rect" class="external-link" href="http://java:163" >java:163</a>)<br clear="none"> at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.&lt;init&gt;(ComponentPageElementImpl.<a shape="rect" class="external-link" href="http://java:555" >java:555</a>)<br clear="none"> at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.&lt;init&gt;(ComponentPageElementImpl.<a shape="rect" class="external-link" href="http://java:579" >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 shape="rect" class="external-link" href="http://java:526" >java:526</a>)<br clear="none"> at org.apache.tapestry5.internal.plastic.ClassInstantiatorImpl.newInstance(ClassInstantiatorImpl.<a shape="rect" class="external-link" href="http://java:109" >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 shape="rect" class="external-link" href="http://java:184" >java:184</a>)<br clear="none"> at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:62)<br cl
 ear="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 shape="rect" class="external-link" href="http://java:1252" >java:1252</a>)<br clear="none"> at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.transform(ComponentInstantiatorSourceImpl.<a shape="rect" class="external-link" href="http://java:266" >java:266</a>)<br clear="none"> at org.apache.tapestry5.internal.plastic.PlasticClassPool.loadAndTransformClass(PlasticClassPool.<a shape="rect" class="external-link" href="http://java:368" >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 shape="rect" class="external-link" href="http://java:357" >java:357</a>)<br clear="none"> at org.apache.tapestry5.integration.app1.pages.Dat
 umEditor.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 shape="rect" class="external-link" href="http://java:166" >java:166</a>)<br clear="none"> at org.apache.tapestry5.internal.plastic.PlasticFieldImpl.replaceFieldReadAccess(PlasticFieldImpl.<a shape="rect" class="external-link" href="http://java:423" >java:423</a>)<br clear="none"> at org.apache.tapestry5.internal.plastic.PlasticFieldImpl.setComputedConduit(PlasticFieldImpl.<a shape="rect" class="external-link" href="http://java:292" >java:292</a>)<br clear="none"> at org.apache.tapestry5.internal.transform.Unclaimed
 FieldWorker.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 shape="rect" class="external-link" href="http://java:316" >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 shape="rect" 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 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.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 shape="rect" class="external-link" href="http://java:141" >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 m
 s]<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 clear="none">[DEBUG] Registry [ 11] --&gt; Collecting ordered configuration for service MasterObjectProvider<br clear="none">[DEBUG] Registry [ 12] --&gt; Invoking org.apache.ta
 pestry5.ioc.modules.TapestryIOCModule.setupObjectProviders(OrderedConfiguration, ServiceOverride) (at TapestryIOCModule.<a shape="rect" class="external-link" href="http://java:136" >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] Regis
 try [ 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></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><p>The <a shape="rect" 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 &#1
 60;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.Invocatio
 nTargetException<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 shape="rect" class="external-link" href="http://java:129" >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.tapestry
 5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)<br clear="none">at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.<a shape="rect" class="external-link" href="http://java:1258" >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 shape="rect" class="external-link" href="http://java:197" >java:197</a>)<br clear="none">at org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.<a shape="rect" class="external-link" href="http://java:190" >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.tapestr
 y5.ioc.internal.RegistryImpl.invoke(RegistryImpl.<a shape="rect" class="external-link" href="http://java:1258" >java:1258</a>)<br clear="none">at org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.<a shape="rect" class="external-link" href="http://java:189" >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 shape="rect" class="external-link" href="http://java:104" >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.interna
 l.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:56)<br clear="none">at org.apache.tapestry5.modules.TapestryModule$34.handle(TapestryModule.<a shape="rect" class="external-link" href="http://java:1978" >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.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(InitializeAc
 tivePageName.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="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 shape="rec
 t" class="external-link" href="http://java:1252" >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 shape="rect" class="external-link" href="http://java:304" >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 shape="rect" class="external-link" href="http://java:854" >java:854</a>)<br clear="none">at $RequestHandler_13a0346ec83c4f75.service(Unknown Source)<br clear="none">at org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.<a shape="rect" class="external-link" href="http://java:844" >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.serv
 ices.AppModule$2.service(AppModule.<a shape="rect" class="external-link" href="http://java:111" >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 shape="rect" class="external-link" href="http://java:255" >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 Sour
 ce)<br clear="none">at $HttpServletRequestHandler_13a0346ec83c4f6c.service(Unknown Source)<br clear="none">at org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.<a shape="rect" class="external-link" href="http://java:804" >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 shape="rect" class="external-link" href="http://java:166" >java:166</a>)<br clear="none">at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.<a shape="rect" class="external-link" href="http://java:1291" >java:1291</a>)<br clear="none">at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.<a shape="rect" class="external-link" href="http://java:443" >java:443</a>)<br clear="none">at org.eclipse.jetty.server.handler.ScopedHandler.handle(Scoped
 Handler.<a shape="rect" class="external-link" href="http://java:137" >java:137</a>)<br clear="none">at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.<a shape="rect" class="external-link" href="http://java:556" >java:556</a>)<br clear="none">at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.<a shape="rect" class="external-link" href="http://java:227" >java:227</a>)<br clear="none">at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.<a shape="rect" class="external-link" href="http://java:1044" >java:1044</a>)<br clear="none">at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.<a shape="rect" class="external-link" href="http://java:372" >java:372</a>)<br clear="none">at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.<a shape="rect" class="external-link" href="http://java:189" >java:189</a>)<br clear="none">at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.<
 a shape="rect" class="external-link" href="http://java:978" >java:978</a>)<br clear="none">at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.<a shape="rect" class="external-link" href="http://java:135" >java:135</a>)<br clear="none">at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.<a shape="rect" class="external-link" href="http://java:116" >java:116</a>)<br clear="none">at org.eclipse.jetty.server.Server.handle(Server.<a shape="rect" class="external-link" href="http://java:369" >java:369</a>)<br clear="none">at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.<a shape="rect" class="external-link" href="http://java:486" >java:486</a>)<br clear="none">at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.<a shape="rect" class="external-link" href="http://java:933" >java:933</a>)<br clear="none">at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComp
 lete(AbstractHttpConnection.<a shape="rect" class="external-link" href="http://java:995" >java:995</a>)<br clear="none">at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.<a shape="rect" class="external-link" href="http://java:644" >java:644</a>)<br clear="none">at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.<a shape="rect" class="external-link" href="http://java:235" >java: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 shape="rect" class="external-link" href="http://java:668" >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 shape="rect" class="external-link" href="http://java:608" >java:608</a>)<br clear="none">at org.eclipse.jetty.util.thread
 .QueuedThreadPool$3.run(QueuedThreadPool.<a shape="rect" class="external-link" href="http://java:543" >java:543</a>)<br clear="none">at java.lang.Thread.run(Thread.<a shape="rect" class="external-link" href="http://java:724" >java:724</a>)<br clear="none">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 shape="rect" class="external-link" href="http://java:113" >java:113</a>)<br clear="none">at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl$2$1.newInstance(ComponentInstantiatorSourceImpl.<a shape="rect" class="external-link" href="http://java:235" >java:235</a>)<br clear="none">at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.&lt;init&gt;(InternalComponentResourcesImpl.<a shape="re
 ct" class="external-link" href="http://java:163" >java:163</a>)<br clear="none">at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.&lt;init&gt;(ComponentPageElementImpl.<a shape="rect" class="external-link" href="http://java:555" >java:555</a>)<br clear="none">at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.&lt;init&gt;(ComponentPageElementImpl.<a shape="rect" class="external-link" href="http://java:579" >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(DelegatingConstruc
 torAccessorImpl.java:45)<br clear="none">at java.lang.reflect.Constructor.newInstance(Constructor.<a shape="rect" class="external-link" href="http://java:526" >java:526</a>)<br clear="none">at org.apache.tapestry5.internal.plastic.ClassInstantiatorImpl.newInstance(ClassInstantiatorImpl.<a shape="rect" class="external-link" href="http://java:109" >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 shape="rect" class="external-link" href="http://java:184" >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:6
 0)<br clear="none">at org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.<a shape="rect" class="external-link" href="http://java:1252" >java:1252</a>)<br clear="none">at org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl.transform(ComponentInstantiatorSourceImpl.<a shape="rect" class="external-link" href="http://java:266" >java:266</a>)<br clear="none">at org.apache.tapestry5.internal.plastic.PlasticClassPool.loadAndTransformClass(PlasticClassPool.<a shape="rect" class="external-link" href="http://java:368" >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 shape="rect" class="external-link" href="http://java:357" >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.Datum
 Editor.&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 shape="rect" class="external-link" href="http://java:166" >java:166</a>)<br clear="none">at org.apache.tapestry5.internal.plastic.PlasticFieldImpl.replaceFieldReadAccess(PlasticFieldImpl.<a shape="rect" class="external-link" href="http://java:423" >java:423</a>)<br clear="none">at org.apache.tapestry5.internal.plastic.PlasticFieldImpl.setComputedConduit(PlasticFieldImpl.<a shape="rect" class="external-link" href="http://java:292" >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.Unclaim
 edFieldWorker.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 shape="rect" class="external-link" href="http://java:316" >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 shape="rect" href="runtime-exceptions.html">defa
 ult 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.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 shape="rect" class="external-link" href="http://java:141" >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 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 shape="
 rect" class="external-link" href="http://java:136" >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 ser
 vice 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></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/parallel-execution.html
==============================================================================
--- websites/production/tapestry/content/parallel-execution.html (original)
+++ websites/production/tapestry/content/parallel-execution.html Sun Jul 26 22:19:48 2015
@@ -62,76 +62,21 @@
 <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="parallel-execution.html">Parallel Execution</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="parallel-execution.html">Parallel Execution</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=23338487">edit</a>
   </div>
 
 <div id="content">
-<div id="ConfluenceContent">
+<div id="ConfluenceContent"><p>The <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/ParallelExecutor.html">ParallelExecutor</a> service allows a computation to occur in parallel.</p><p>It can be used in two ways. First, with an explicit <a shape="rect" class="external-link" href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html" >Future</a>:</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;">   Future&lt;String&gt; future = executor.invoke(new Invokable&lt;String&gt;() { ... });</pre>
+</div></div><p>The executor will submit the Invokable to a thread pool for execution in the background.</p><p>The ultimate value of the Invokable is available by invoking <code>get()</code> on the Future; this will block until the value is ready.</p><p>Other methods on Future can cancel the execution, or get the value only if it is ready within a timeout.</p><p>The thread pool is started automatically as needed, and will shutdown when the Registry itself is shutdown.</p><p>Another alternative will return an object proxy, not a Future:</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;">  RSSFeed feed = executor.invoke(RSSFeed.class, new Invokable&lt;RSSFeed&gt;() { ... });</pre>
+</div></div><p>This only works if the type is an interface. A proxy for the interface is created around the Future object; any invocation on the proxy will invoke get() on the Future (that is, will block until the value is computed).</p><h1 id="ParallelExecution-Configuration">Configuration</h1><p>The behavior of the ParallelExecutor can be tuned with global configuration symbols.</p><p>Java constants for the configuration symbols are defined in <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/IOCSymbols.html">IOCSymbols</a>.</p><h3 id="ParallelExecution-tapestry.thread-pool-enabled">tapestry.thread-pool-enabled</h3><p>If true, the default, then the thread pool will operate. If false, then ParallelExecutor's implementation changes to invoke the Invokable immediately, not in a pooled thread. This is useful in environments, such as <a shape="rect" class="external-link" href="http://code.google.com/appengine/" >Google App E
 ngine</a>, that do not support the creation of threads and thread pools.</p><h3 id="ParallelExecution-tapestry.thread-pool.core-pool-size">tapestry.thread-pool.core-pool-size</h3><p>Minimum size of the thread pool. Defaults to 3.</p><h3 id="ParallelExecution-tapestry.thread-pool.max-pool-size">tapestry.thread-pool.max-pool-size</h3><p>Maximum number of threads (active or inactive) in the thread pool. Defaults to 20.</p><h3 id="ParallelExecution-tapestry.thread-pool.keep-alive">tapestry.thread-pool.keep-alive</h3><p>Time to keep waiting threads alive. Defaults to "1 m" (one minute).</p><h3 id="ParallelExecution-tapestry.thread-pool.queue-size">tapestry.thread-pool.queue-size</h3><p>
 
-<h1 id="ParallelExecution-ParallelExecution">Parallel Execution</h1>
-
-<p>The <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/ParallelExecutor.html">ParallelExecutor</a> service allows a computation to occur in parallel.</p>
-
-<p>It can be used in two ways. First, with an explicit <a shape="rect" class="external-link" href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html" >Future</a>:</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;">
-   Future&lt;String&gt; future = executor.invoke(new Invokable&lt;String&gt;() { ... });</pre>
-</div></div>
-
-<p>The executor will submit the Invokable to a thread pool for execution in the background.</p>
-
-<p>The ultimate value of the Invokable is available by invoking <code>get()</code> on the Future; this will block until the value is ready.</p>
-
-<p>Other methods on Future can cancel the execution, or get the value only if it is ready within a timeout.</p>
-
-<p>The thread pool is started automatically as needed, and will shutdown when the Registry itself is shutdown.</p>
-
-<p>Another alternative will return an object proxy, not a Future:</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;">
-  RSSFeed feed = executor.invoke(RSSFeed.class, new Invokable&lt;RSSFeed&gt;() { ... });</pre>
-</div></div>
-
-<p>This only works if the type is an interface. A proxy for the interface is created around the Future object; any invocation on the proxy will invoke get() on the Future (that is, will block until the value is computed).</p>
-
-<h1 id="ParallelExecution-Configuration">Configuration</h1>
-
-<p>The behavior of the ParallelExecutor can be tuned with global configuration symbols.</p>
-
-<p>Java constants for the configuration symbols are defined in <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/IOCSymbols.html">IOCSymbols</a>.</p>
-
-<h3 id="ParallelExecution-tapestry.thread-pool-enabled">tapestry.thread-pool-enabled </h3>
-
-<p>If true, the default, then the thread pool will operate. If false, then ParallelExecutor's implementation changes to invoke the Invokable immediately, not in a pooled thread. This is useful in environments, such as <a shape="rect" class="external-link" href="http://code.google.com/appengine/" >Google App Engine</a>, that do not support the creation of threads and thread pools.</p>
-
-<h3 id="ParallelExecution-tapestry.thread-pool.core-pool-size">tapestry.thread-pool.core-pool-size </h3>
-
-<p>Minimum size of the thread pool. Defaults to 3. </p>
-
-<h3 id="ParallelExecution-tapestry.thread-pool.max-pool-size">tapestry.thread-pool.max-pool-size</h3>
-
-<p>Maximum number of threads (active or inactive) in the thread pool. Defaults to 20. </p>
-
-<h3 id="ParallelExecution-tapestry.thread-pool.keep-alive">tapestry.thread-pool.keep-alive </h3>
-
-<p>Time to keep waiting threads alive. Defaults to "1 m" (one minute). </p>
-
-<h3 id="ParallelExecution-tapestry.thread-pool.queue-size">tapestry.thread-pool.queue-size</h3>
-
-
-
-<div class="confluence-information-macro confluence-information-macro-information"><p class="title">Added in 5.3</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.3</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>The size of the task queue. When there are at least the core number of threads in the pool, tasks will be placed in the queue. If the queue is empty, more threads may be created (up to the maximum pool size). If the queue is full and all threads have been created, the task is rejected (and exception is thrown).</p>
-
-<p>Defaults to 100.</p>
-</div>
+<p>&#160;</p></div>The size of the task queue. When there are at least the core number of threads in the pool, tasks will be placed in the queue. If the queue is empty, more threads may be created (up to the maximum pool size). If the queue is full and all threads have been created, the task is rejected (and exception is thrown).<p>Defaults to 100.</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 Sun Jul 26 22:19:48 2015
@@ -62,27 +62,61 @@
 <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="pipelinebuilder-service.html">PipelineBuilder Service</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="pipelinebuilder-service.html">PipelineBuilder Service</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=23338488">edit</a>
   </div>
 
 <div id="content">
-<div id="ConfluenceContent">
+<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">
 
-<h1 id="PipelineBuilderService-BuildingPipelines">Building Pipelines</h1>
 
-<div class="navmenu" style="float:right; background:#eee; margin:3px; padding:3px">
-<div class="error"><span class="error">Error formatting macro: contentbylabel: com.atlassian.confluence.api.service.exceptions.BadRequestException: Could not parse cql : null</span> </div></div>
 
-<p>A common pattern within Tapestry is the use of filtering pipelines. Another name for a pipeline is a <em>filter chain</em>; an example of this is the Filter and FilterChain interfaces inside the Servlet API.</p>
 
-<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 shape="rect" href="chainbuilder-service.html">chain of command</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 chain of command, 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 class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
-public interface StringTransformService
+
+
+<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="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 shape="rect" 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 shape="rect" 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 shape="rect" 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 shape="rect" 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 interface
 s:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">public interface StringTransformService
 {
   String transform(String input);
 }
@@ -91,46 +125,24 @@ public interface StringTransformFilter
 {
   String transform(String input, StringTransformService delegate);
 }</pre>
-</div></div>
-
-<p>An implementation of the filter might look like:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
-public class UpcasePreFilter implements StringTransformFilter
+</div></div><p>An implementation of the filter might look like:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">public class UpcasePreFilter implements StringTransformFilter
 {
   public String transform(String input, StringTransformService delegate)
   {
     return delegate.transform(input.toUpperCase());
   }
 }</pre>
-</div></div>
-
-<p>Alternately, the filter could pass input to delegate unchanged, but invoke toUpperCase() on the result:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
-public class UpcasePostFilter implements StringTransformFilter
+</div></div><p>Alternately, the filter could pass input to delegate unchanged, but invoke toUpperCase() on the result:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">public class UpcasePostFilter implements StringTransformFilter
 {
   public String transform(String input, StringTransformService delegate)
   {
     return delegate.transform(input).toUpperCase();
   }
 }</pre>
-</div></div>
-
-<p>The PipelineBuilder Service (<a shape="rect" 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">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
-  public static StringTransformService build(
+</div></div><p>The PipelineBuilder Service (<a shape="rect" 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">
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">  public static StringTransformService build(
     @InjectService("PipelineBuilder")
     PipelineBuilder builder,
     List&lt;StringTransformFilter&gt; configuration,
@@ -150,10 +162,7 @@ Pipeline Calling Sequence</p>
         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></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/registry-startup.html
==============================================================================
--- websites/production/tapestry/content/registry-startup.html (original)
+++ websites/production/tapestry/content/registry-startup.html Sun Jul 26 22:19:48 2015
@@ -62,50 +62,26 @@
 <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="registry-startup.html">Registry Startup</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="registry-startup.html">Registry Startup</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=23338494">edit</a>
   </div>
 
 <div id="content">
-<div id="ConfluenceContent">
-
-<h2 id="RegistryStartup-RegistryStartup">Registry Startup</h2>
-
-<p>It is possible to provide extra logic to be executed at Registry startup, by making contributions to the RegistryStartup service configuration.</p>
-
-<p>The values contributed are Runnable objects. The configuration is ordered, so it is possible to control in what order the objects are executed.</p>
-
-<p>RegistryStartup occurs after eager loaded services are instantiated.</p>
-
-<p>Here's an example of a module that makes a contribution:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
-public class MyModule
+<div id="ConfluenceContent"><p>It is possible to provide extra logic to be executed at Registry startup, by making contributions to the RegistryStartup service configuration.</p><p>The values contributed are Runnable objects. The configuration is ordered, so it is possible to control in what order the objects are executed.</p><p>RegistryStartup occurs after eager loaded services are instantiated.</p><p>Here's an example of a module that makes a contribution:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">public class MyModule
 {
   public static void contributeRegistryStartup(OrderedConfiguration&lt;Runnable&gt; configuration)
   {
     configuration.add("MyContributionName", new Runnable() { ... });
   }
 }</pre>
-</div></div>
-
-<p>Generally, these contributions are in the form of inner classes; if they were services, they could just be eagerly loaded.</p>
+</div></div><p>Generally, these contributions are in the form of inner classes; if they were services, they could just be eagerly loaded.</p><h2 id="RegistryStartup-StartupMethods">Startup Methods</h2><p>
 
-<h2 id="RegistryStartup-StartupMethods">Startup Methods</h2>
-
-
-
-<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>Instead of making contributions to the RegistryStartup service configuration you can provide startup methods inside your modules. A startup method is a static or instance method of a module annotated with @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Startup.html">Startup</a> annotation. Each module is allowed to contain several startup 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;">
-public class MyModule
+<p>&#160;</p></div>Instead of making contributions to the RegistryStartup service configuration you can provide startup methods inside your modules. A startup method is a static or instance method of a module annotated with @<a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Startup.html">Startup</a> annotation. Each module is allowed to contain several startup methods.<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">public class MyModule
 {
 
   @Startup
@@ -117,8 +93,7 @@ public class MyModule
   }
 }
 </pre>
-</div></div>
-</div>
+</div></div><p></p></div>
 </div>
 
 <div class="clearer"></div>