tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r959584 [1/2] - in /websites/production/tapestry/content: ./ cache/
Date Sun, 26 Jul 2015 01:19:59 GMT
Author: buildbot
Date: Sun Jul 26 01:19:59 2015
New Revision: 959584

Log:
Production update by buildbot for tapestry

Modified:
    websites/production/tapestry/content/annotations.html
    websites/production/tapestry/content/cache/main.pageCache
    websites/production/tapestry/content/class-reloading.html
    websites/production/tapestry/content/component-classes.html
    websites/production/tapestry/content/component-reference.html
    websites/production/tapestry/content/configuration.html
    websites/production/tapestry/content/getting-started.html
    websites/production/tapestry/content/introduction.html
    websites/production/tapestry/content/principles.html
    websites/production/tapestry/content/tapestry-tutorial.html

Modified: websites/production/tapestry/content/annotations.html
==============================================================================
--- websites/production/tapestry/content/annotations.html (original)
+++ websites/production/tapestry/content/annotations.html Sun Jul 26 01:19:59 2015
@@ -27,16 +27,6 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
-    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' type='text/css' />
-  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
-  <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -67,30 +57,37 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><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>
+<div id="ConfluenceContent"><div class="aui-label" style="float:right" title="Related Articles">
 
-<p>Tapestry relies heavily on Java <strong>annotations</strong> rather than XML files for almost all of its configuration. (In addition, Tapestry's method naming conventions mean you don't <em>have</em> to use annotations in many cases.)</p>
 
-<p>Tapestry annotations are grouped into several distinct modules according to their purpose.</p>
 
-<h2 id="Annotations-TapestryCoreandIoCAnnotations">Tapestry Core and IoC Annotations</h2>
 
-<p>The majority of Tapestry annotations (those defined in the tapestry-core and tapestry-ioc modules) are very specific to Tapestry components or Tapestry IoC services:</p>
 
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/package-summary.html">Tapestry Component Annotations</a> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> intended for use in page/component/mixin classes </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/package-summary.html">Tapestry IoC Annotations</a> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> for use by IoC services </p></td></tr></tbody></table></div>
 
 
-<h2 id="Annotations-Annotationsfordataholdingclasses">Annotations for data holding classes</h2>
 
-<p>In addition to the core and IoC annotations, there are a few annotations intended for data holding classes that are not Tapestry components; these annotations allow high-level components such as Grid and BeanEditForm to create powerful user interfaces with out any additional coding. Because these annotations are separated from the rest of Tapestry, they can be used inside your data tier classes <em>without</em> having to bring all of Tapestry into your classpath. This is very useful in multi-tier applications where data objects may originate in an application tier (such as a JEE application server) and travel to the presentation tier (a Tapestry application).</p>
+<h3>Related Articles</h3>
 
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/beaneditor/package-summary.html">BeanEditForm Annotations</a> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> for users of the BeanEditForm and Grid components </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/hibernate/annotations/package-summary.html">Hibernate Annotations</a> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> for users of the Tapestry-Hibernate library </p></td></tr></tbody></table></div>
+<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="annotations.html">Annotations</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
 
-<h2 id="Annotations-UpgradeNotes&#8211;Release5.0.12">Upgrade Notes &#8211; Release 5.0.12</h2>
-
-<p>The artifact id for the annotations module has changed from <code>tapestry-annotations</code> to <code>tapestry5-annotations</code>. This is necessary to support Tapestry 4 and Tapestry 5 applications co-existing within a single WAR.</p></div>
+        <div class="details">
+                        <a shape="rect" href="component-cheat-sheet.html">Component Cheat Sheet</a>
+                
+                        
+                    </div>
+    </li></ul>
+</div><p>&#160;</p><p>Tapestry relies heavily on Java <strong>annotations</strong> rather than XML files for almost all of its configuration. (In addition, Tapestry's method naming conventions mean you don't <em>have</em> to use annotations in many cases.)</p><p>Tapestry annotations are grouped into several distinct modules according to their purpose.</p><h2 id="Annotations-TapestryCoreandIoCAnnotations">Tapestry Core and IoC Annotations</h2><p>The majority of Tapestry annotations (those defined in the tapestry-core and tapestry-ioc modules) are very specific to Tapestry components or Tapestry IoC services:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/package-summary.html">Tapestry Component Annotations</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>intended for use in page
 /component/mixin classes</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/package-summary.html">Tapestry IoC Annotations</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>for use by IoC services</p></td></tr></tbody></table></div><h2 id="Annotations-Annotationsfordataholdingclasses">Annotations for data holding classes</h2><p>In addition to the core and IoC annotations, there are a few annotations intended for data holding classes that are not Tapestry components; these annotations allow high-level components such as Grid and BeanEditForm to create powerful user interfaces with out any additional coding. Because these annotations are separated from the rest of Tapestry, they can be used inside your data tier classes <em>without</em> having to bring all of Tapestry into your classpath. This is very useful in multi-tier applicati
 ons where data objects may originate in an application tier (such as a JEE application server) and travel to the presentation tier (a Tapestry application).</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/beaneditor/package-summary.html">BeanEditForm Annotations</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>for users of the BeanEditForm and Grid components</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/hibernate/annotations/package-summary.html">Hibernate Annotations</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>for users of the Tapestry-Hibernate library</p></td></tr></tbody></table></div><h2 id="Annotations-UpgradeNotes&#8211;Release5.0.12"
 >Upgrade Notes &#8211; Release 5.0.12</h2><p>The artifact id for the annotations module has changed from <code>tapestry-annotations</code> to <code>tapestry5-annotations</code>. This is necessary to support Tapestry 4 and Tapestry 5 applications co-existing within a single WAR.</p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/tapestry/content/class-reloading.html
==============================================================================
--- websites/production/tapestry/content/class-reloading.html (original)
+++ websites/production/tapestry/content/class-reloading.html Sun Jul 26 01:19:59 2015
@@ -67,77 +67,44 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><h1 id="ClassReloading-LiveClassandTemplateReloading">Live Class and Template Reloading</h1>
+<div id="ConfluenceContent"><h1 id="ClassReloading-LiveClassandTemplateReloading">Live Class and Template Reloading</h1><div class="aui-label" style="float:right" title="Related Articles">
 
-<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>One of the great features of Tapestry 5 is automatic reloading of changed classes and templates. <em>Page and component</em> classes will automatically reload when changed. Likewise, changes to component templates and other related resources will also be picked up immediately.  In addition, starting in version 5.2, your service classes will also be reloaded automatically after changes (if you're using <a shape="rect" href="ioc.html">Tapestry IoC</a>).</p>
 
-<h2 id="ClassReloading-TemplateReloading">Template Reloading</h2>
 
-<p>When a template changes, all page instances (as well as the hierarchy of components below them) are discarded and reconstructed with the new template. However, classes are not reloaded in this case.</p>
 
-<h2 id="ClassReloading-ClassReloading">Class Reloading</h2>
 
-<p>On a change to <em>any</em> loaded class from inside a controlled package (or any sub-package of a controlled package), Tapestry will discard all page instances, and discard the class loader.</p>
 
-<p><a shape="rect" href="persistent-page-data.html">Persistent field data</a> on the pages will usually not be affected (as it is stored separately, usually in the session). This allows you to make fairly significant changes to a component class even while the application continues to run.</p>
 
-<h2 id="ClassReloading-PackagesScanned">Packages Scanned</h2>
+<h3>Related Articles</h3>
 
-<p>Only certain classes are subject to reload. Reloading is based on package name; the packages that are reloaded are derived from the <a shape="rect" href="configuration.html">application configuration</a>.</p>
+<ul class="content-by-label"><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
 
-<p>If your root package is <code>org.example.myapp</code>, then only classes in the following packages (and their sub-packages) will be scanned for automatic reloads:</p>
+        <div class="details">
+                        <a shape="rect" href="service-implementation-reloading.html">Service Implementation Reloading</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
 
-<ul><li>org.example.myapp.pages</li><li>org.example.myapp.components</li><li>org.example.myapp.mixins</li><li>org.example.myapp.base</li><li>org.example.myapp.services (Tapestry 5.2 and later, with restrictions)</li></ul>
+        <div class="details">
+                        <a shape="rect" href="class-reloading.html">Class Reloading</a>
+                
+                        
+                    </div>
+    </li></ul>
+</div><p>One of the best features of Tapestry is automatic reloading of changed classes and templates. <em>Page and component</em> classes will automatically reload when changed. Likewise, changes to component templates and other related resources will also be picked up immediately. In addition, starting in version 5.2, your service classes will also be reloaded automatically after changes (if you're using <a shape="rect" href="ioc.html">Tapestry IoC</a>).</p><h2 id="ClassReloading-TemplateReloading">Template Reloading</h2><p>When a template changes, all page instances (as well as the hierarchy of components below them) are discarded and reconstructed with the new template. However, classes are not reloaded in this case.</p><h2 id="ClassReloading-ClassReloading">Class Reloading</h2><p>On a change to <em>any</em> loaded class from inside a controlled package (or any sub-package of a controlled package), Tapestry will discard all page instances, and discard the class loader.</p><p><a 
 shape="rect" href="persistent-page-data.html">Persistent field data</a> on the pages will usually not be affected (as it is stored separately, usually in the session). This allows you to make fairly significant changes to a component class even while the application continues to run.</p><h2 id="ClassReloading-PackagesScanned">Packages Scanned</h2><p>Only certain classes are subject to reload. Reloading is based on package name; the packages that are reloaded are derived from the <a shape="rect" href="configuration.html">application configuration</a>.</p><p>If your root package is <code>org.example.myapp</code>, then only classes in the following packages (and their sub-packages) will be scanned for automatic reloads:</p><ul><li>org.example.myapp.pages</li><li>org.example.myapp.components</li><li>org.example.myapp.mixins</li><li>org.example.myapp.base</li><li>org.example.myapp.services (Tapestry 5.2 and later, with restrictions)</li></ul><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">
+</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;">
-
 <p>Starting in Tapestry 5.2, live class reloading includes service implementation classes. There are some limitations to this. See <a shape="rect" href="service-implementation-reloading.html" title="Service Implementation Reloading">Service Implementation Reloading</a> for more details.</p>
-</div>
-
-<h2 id="ClassReloading-FileSystemOnly">File System Only</h2>
-
-<p>Reloading of classes and other files applies only to files that are actually on the file system, and not files obtained from JAR files. This is perfect during development, where the files in question are in your local workspace. In a deployed application, you are somewhat subject to the implementation of your servlet container or application server.</p>
-
-<h2 id="ClassReloading-ClassLoaderIssues">Class Loader Issues</h2>
-
-<p>Tapestry uses an extra class loader to load page and component classes.</p>
-
-<p>When a change to an underlying Java class file is detected, Tapestry discards the class loader and any pooled page instances.</p>
-
-<p>You should be careful to not hold any references to Tapestry pages or components in other code, such as Tapestry IoC services. Holding such references can cause significant memory leaks, as they can prevent the class loader from being reclaimed by the garbage collector.</p>
-
-<h2 id="ClassReloading-ClassCastExceptions">ClassCastExceptions</h2>
-
-<p>Tapestry's class loader architecture can cause minor headaches when you make use of a services layer, or any time that you pass component instances to objects that are not themselves components.</p>
-
-<p>In such cases you may see ClassCastException errors. This is because the same class name, say org.example.myapp.pages.Start, exists as two different class instances. One class instance is loaded by the web application's default class loader. A second class instance has been loaded <em>and transformed</em> by Tapestry's reloading class loader.</p>
-
-<p>Ordinary classes, such as Tapestry IoC Services, will be loaded by the default class loader and expect instances to be loaded by the same class loader (or a parent).</p>
-
-<p>The solution to this problem is to introduce an interface; the component class should implement the interface, and the service should expect an instance of the interface, rather than a specific type.</p>
-
-<p>It is important that the interface be loaded by the default class loader.  It should not be in the pages or components package, but instead be in another package, such as services.</p>
-
-<h2 id="ClassReloading-HandlingReloadsinyourCode">Handling Reloads in your Code</h2>
-
-<p>On occasion, you may need to know when invalidations occur, to clear your own cache. For example, if you have a binding that creates new classes, the way <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/PropertyConduitSource.html">PropertyConduitSource</a> does, you need to discard any cached classes or instances when a change is detected in component classes.</p>
-
-<p>You do this by registering a listener with the correct <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tpaestry5/services/InvalidationEventHub.html">InvalidationEventHub</a> service.</p>
-
-<p>For example, your service may be in the business of creating new classes based on component classes, and keep a cache of those classes:</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 MyServiceImpl implements MyService, InvalidationEventListener
+</div><h2 id="ClassReloading-FileSystemOnly">File System Only</h2><p>Reloading of classes and other files applies only to files that are actually on the file system, and not files obtained from JAR files. This is perfect during development, where the files in question are in your local workspace. In a deployed application, you are somewhat subject to the implementation of your servlet container or application server.</p><h2 id="ClassReloading-ClassLoaderIssues">Class Loader Issues</h2><p>Tapestry uses an extra class loader to load page and component classes.</p><p>When a change to an underlying Java class file is detected, Tapestry discards the class loader and any pooled page instances.</p><p>You should be careful to not hold any references to Tapestry pages or components in other code, such as Tapestry IoC services. Holding such references can cause significant memory leaks, as they can prevent the class loader from being reclaimed by the garbage collector.</p><h2 id="ClassReloadi
 ng-ClassCastExceptions">ClassCastExceptions</h2><p>Tapestry's class loader architecture can cause minor headaches when you make use of a services layer, or any time that you pass component instances to objects that are not themselves components.</p><p>In such cases you may see ClassCastException errors. This is because the same class name, say org.example.myapp.pages.Start, exists as two different class instances. One class instance is loaded by the web application's default class loader. A second class instance has been loaded <em>and transformed</em> by Tapestry's reloading class loader.</p><p>Ordinary classes, such as Tapestry IoC Services, will be loaded by the default class loader and expect instances to be loaded by the same class loader (or a parent).</p><p>The solution to this problem is to introduce an interface; the component class should implement the interface, and the service should expect an instance of the interface, rather than a specific type.</p><p>It is important 
 that the interface be loaded by the default class loader. It should not be in the pages or components package, but instead be in another package, such as services.</p><h2 id="ClassReloading-HandlingReloadsinyourCode">Handling Reloads in your Code</h2><p>On occasion, you may need to know when invalidations occur, to clear your own cache. For example, if you have a binding that creates new classes, the way <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/PropertyConduitSource.html">PropertyConduitSource</a> does, you need to discard any cached classes or instances when a change is detected in component classes.</p><p>You do this by registering a listener with the correct <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tpaestry5/services/InvalidationEventHub.html">InvalidationEventHub</a> service.</p><p>For example, your service may be in the business of creating new cl
 asses based on component classes, and keep a cache of those classes:</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 MyServiceImpl implements MyService, InvalidationEventListener
 {
   public final Map&lt;String,Class&gt; cache = new ConcurrentHashMap&lt;String,Class&gt;();
 
@@ -146,81 +113,18 @@ public class MyServiceImpl implements My
   public void objectWasInvalidated() { cache.clear(); }
 }
 </pre>
-</div></div>
-
-<p>Here, the service implementation implements the InvalidationEventListener interface, as well as its service interface. The question is: how does it register for notifications?</p>
-
-<p>In your module, you will want to use a service builder method, such as:</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 MyService buildMyService(@Autobuild MyServiceImpl service, @ComponentClasses InvalidationEventHub hub)
+</div></div><p>Here, the service implementation implements the InvalidationEventListener interface, as well as its service interface. The question is: how does it register for notifications?</p><p>In your module, you will want to use a service builder method, such as:</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 MyService buildMyService(@Autobuild MyServiceImpl service, @ComponentClasses InvalidationEventHub hub)
 {
   hub.addInvalidationListener(service);
 
   return service;
 }
 </pre>
-</div></div>
-
-<p>This is the intent of service builder methods; to do more than just injecting dependencies.</p>
-
-<h2 id="ClassReloading-CheckingForUpdates">Checking For Updates</h2>
-
-<p>The built in InvalidationEventHub services provide notifications of changes to component classes, to component templates, and to component message catalogs. If you wish to check some other resources (for example, files in a directory of the file system or rows in a database table), you should register as an <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/UpdateListener.html">UpdateListener</a> with the <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/UpdateListenerHub.html">UpdateListenerHub</a> service.</p>
-
-<p>Periodically (the frequency is configurable), UpdateListeners are notified that they should check for updates. Typically, UpdateListeners are also InvalidationEventHubs (or provide InvalidationEventHubs), so that other interested parties can be alerted when underlying data changes.</p>
-
-<h2 id="ClassReloading-TroubleshootingLiveClassReloading">Troubleshooting Live Class Reloading</h2>
-
-<h3 id="ClassReloading-QuickChecklist">Quick Checklist</h3>
-
-<ul><li>"Production Mode" must be false (in Tapestry 5.3 and later)</li><li>The class must be one that Tapestry instantiates (a page, component, or mixin class, or a Tapestry IOC service implementation that implements an interface)</li><li>Turn on "Build Automatically" in your IDE, or remember to build manually.</li><li>Turn <em>off</em> JVM hot code swapping, if your servlet container supports it.</li><li>Eclipse: Uncheck the "derived" checkbox for the Target dir (in the Project Explorer view, right click on "target", select properties, uncheck "derived" on the Resource tab)</li></ul>
-
-
-<p>Some of these issues are described in more detail below.</p>
-
-<h3 id="ClassReloading-IfLiveClassReloadingdoesn'twork">If Live Class Reloading doesn't work</h3>
-
-<h4 id="ClassReloading-ProductionMode">Production Mode</h4>
-
-<p>Starting with Tapestry 5.3, Live Class Reloading only works when not in "Production Mode". Check your application module (usually AppModule.java) to be sure you have:</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;">
-configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
+</div></div><p>This is the intent of service builder methods; to do more than just injecting dependencies.</p><h2 id="ClassReloading-CheckingForUpdates">Checking For Updates</h2><p>The built in InvalidationEventHub services provide notifications of changes to component classes, to component templates, and to component message catalogs. If you wish to check some other resources (for example, files in a directory of the file system or rows in a database table), you should register as an <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/UpdateListener.html">UpdateListener</a> with the <a shape="rect" class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/UpdateListenerHub.html">UpdateListenerHub</a> service.</p><p>Periodically (the frequency is configurable), UpdateListeners are notified that they should check for updates. Typically, UpdateListeners are also InvalidationEven
 tHubs (or provide InvalidationEventHubs), so that other interested parties can be alerted when underlying data changes.</p><h2 id="ClassReloading-TroubleshootingLiveClassReloading">Troubleshooting Live Class Reloading</h2><h3 id="ClassReloading-QuickChecklist">Quick Checklist</h3><ul><li>"Production Mode" must be false (in Tapestry 5.3 and later)</li><li>The class must be one that Tapestry instantiates (a page, component, or mixin class, or a Tapestry IOC service implementation that implements an interface)</li><li>Turn on "Build Automatically" in your IDE, or remember to build manually.</li><li>Turn <em>off</em> JVM hot code swapping, if your servlet container supports it.</li><li>Eclipse: Uncheck the "derived" checkbox for the Target dir (in the Project Explorer view, right click on "target", select properties, uncheck "derived" on the Resource tab)</li></ul><p>Some of these issues are described in more detail below.</p><h3 id="ClassReloading-IfLiveClassReloadingdoesn'twork">If Li
 ve Class Reloading doesn't work</h3><h4 id="ClassReloading-ProductionMode">Production Mode</h4><p>Starting with Tapestry 5.3, Live Class Reloading only works when not in "Production Mode". Check your application module (usually AppModule.java) to be sure you have:</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;">configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
 </pre>
-</div></div>
-
-<p>and that this isn't being overridden to "true" on your application's startup command line.</p>
-
-<h4 id="ClassReloading-BuildPathIssues">Build Path Issues</h4>
-
-<p>Live Class Reloading can fail if your build path isn't set correctly, and the exact configuration may differ between Maven plugin versions and Eclipse versions. The build process must be set to create classes in a folder which is in the servlet container's classpath.</p>
-
-<p>Live Class Reloading won't work correctly with vanilla Tomcat without some tweaks (see below).</p>
-
-<p>Non-Tapestry filters can interfere with LCR. Try disabling other filters in your web.xml file to see if that helps.</p>
-
-<h4 id="ClassReloading-BuildingAutomatically">Building Automatically</h4>
-
-<p>Although LCR allows you to see changes without restarting your app, you still need to "build" your project (to compile the Java source into byte code). Your IDE can be set to do this automatically every time you save a file. (In Eclipse, this is done using <code>Project &gt; Build Automatically</code>.) Alternatively, you can manually trigger a build after you save a file. (In Eclipse, this is done using <code>Project &gt; Build</code>, or by pressing <code>Control-B</code>.)</p>
-
-<h4 id="ClassReloading-TurnoffJVMhotcodeswapping&amp;automaticrestarts">Turn off JVM hot code swapping &amp; automatic restarts</h4>
-
-<p>Many servlet containers, including Tomcat and Jetty, support various forms of hot code swapping and/or automatic restarts when file changes are detected. These are generally <strong>much slower</strong> than LCR and usually should be turned off with Tapestry applications. If you're using RunJettyRun plugin for Eclipse, for example, edit your Run Configuration, and on the Jetty tab, click Show Advanced Options and uncheck the Enable Scanner checkbox.</p>
-
-<h3 id="ClassReloading-TomcatSpecifics">Tomcat Specifics</h3>
-
-<p>See <a shape="rect" class="external-link" href="http://docs.codehaus.org/display/TYNAMO/Developing+with+Tomcat+and+Eclipse" >these hints</a></p>
-
-<h3 id="ClassReloading-IfLiveClassReloadingworksbutisslow">If Live Class Reloading works but is slow</h3>
-
-<p>If LCR works for you but is slow (more than a second or two), consider the following.</p>
-
-<ul><li>Be sure your project source files (your workspace in Eclipse, for example), are on a local drive, NOT a network location. Network drives are always slower, and the file system scanning needed for LCR can add a noticable lag if I/O is slow. If you use Maven, be sure to put your local repository (e.g. ~/.m2/repository) on a local drive for similar reasons.</li><li>Since LCR adds classes to your PermGen space, you may be running low on PermGen memory (and may eventually get a "java.lang.OutOfMemoryError: PermGen space" error). Try increasing PermGen size with a JVM argument of something like <code>-XX:MaxPermSize=400m</code></li></ul>
-
-</div>
+</div></div><p>and that this isn't being overridden to "true" on your application's startup command line.</p><h4 id="ClassReloading-BuildPathIssues">Build Path Issues</h4><p>Live Class Reloading can fail if your build path isn't set correctly, and the exact configuration may differ between Maven plugin versions and Eclipse versions. The build process must be set to create classes in a folder which is in the servlet container's classpath.</p><p>Live Class Reloading won't work correctly with vanilla Tomcat without some tweaks (see below).</p><p>Non-Tapestry filters can interfere with LCR. Try disabling other filters in your web.xml file to see if that helps.</p><h4 id="ClassReloading-BuildingAutomatically">Building Automatically</h4><p>Although LCR allows you to see changes without restarting your app, you still need to "build" your project (to compile the Java source into byte code). Your IDE can be set to do this automatically every time you save a file. (In Eclipse, this is done us
 ing <code>Project &gt; Build Automatically</code>.) Alternatively, you can manually trigger a build after you save a file. (In Eclipse, this is done using <code>Project &gt; Build</code>, or by pressing <code>Control-B</code>.)</p><h4 id="ClassReloading-TurnoffJVMhotcodeswapping&amp;automaticrestarts">Turn off JVM hot code swapping &amp; automatic restarts</h4><p>Many servlet containers, including Tomcat and Jetty, support various forms of hot code swapping and/or automatic restarts when file changes are detected. These are generally <strong>much slower</strong> than LCR and usually should be turned off with Tapestry applications. If you're using RunJettyRun plugin for Eclipse, for example, edit your Run Configuration, and on the Jetty tab, click Show Advanced Options and uncheck the Enable Scanner checkbox.</p><h3 id="ClassReloading-TomcatSpecifics">Tomcat Specifics</h3><p>See <a shape="rect" class="external-link" href="http://docs.codehaus.org/display/TYNAMO/Developing+with+Tomcat
 +and+Eclipse" >these hints</a></p><h3 id="ClassReloading-IfLiveClassReloadingworksbutisslow">If Live Class Reloading works but is slow</h3><p>If LCR works for you but is slow (more than a second or two), consider the following.</p><ul><li>Be sure your project source files (your workspace in Eclipse, for example), are on a local drive, NOT a network location. Network drives are always slower, and the file system scanning needed for LCR can add a noticable lag if I/O is slow. If you use Maven, be sure to put your local repository (e.g. ~/.m2/repository) on a local drive for similar reasons.</li><li>Since LCR adds classes to your PermGen space, you may be running low on PermGen memory (and may eventually get a "java.lang.OutOfMemoryError: PermGen space" error). Try increasing PermGen size with a JVM argument of something like <code>-XX:MaxPermSize=400m</code></li></ul><p></p></div>
 </div>
 
 <div class="clearer"></div>

Modified: websites/production/tapestry/content/component-classes.html
==============================================================================
--- websites/production/tapestry/content/component-classes.html (original)
+++ websites/production/tapestry/content/component-classes.html Sun Jul 26 01:19:59 2015
@@ -32,7 +32,6 @@
   <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
   <script src='/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
   <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
   <script type="text/javascript">
   SyntaxHighlighter.defaults['toolbar'] = false;
   SyntaxHighlighter.all();
@@ -67,8 +66,100 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><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 <strong>component class</strong>&#160;is the class associated with a page, component or mixin in your Tapestry web application. Classes for pages, components and mixins are all created in an identical way. They are pure POJOs (Plain Old Java Objects), typically with annotations and conventionally named methods. They are not <em>abstract</em>, nor do they need to extend base classes or implement interfaces.</p><p><em>For Tapestry 4 Users: Component classes in Tapestry 5 are much easier than in Tapestry 4. There are no base classes to extend from, the classes are concrete (not abstract), and there's no XML file. There is still a bit of configuration in the form of Java annotations, but those now go directly onto fields of your class, rather than on abstract getters and setters.</em></p><p>
 In most cases, each component class will have a corresponding <a shape="rect" href="component-templates.html">component template</a>. However, it is also possible for a component class to emit all of its markup itself, without using a template.</p><h2 id="ComponentClasses-CreatingaTrivialComponent">Creating a Trivial Component</h2><p>Creating a page or component in Tapestry 5 is a breeze. There are only a few constraints:</p><ul><li>There must be a public Java class.</li><li>The class must be in the correct package (see below).</li><li>The class must have a public, no-arguments constructor. (The default one provided by the compiler is fine.)</li></ul><p>Here's a minimal component that outputs a fixed message, using a <a shape="rect" href="component-templates.html">template</a> with a matching file name:</p><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro"><div class="code panel pdl" style="border-width: 1px;"><div class
 ="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>HelloWorld.java</b></div><div class="codeContent panelContent pdl">
+<div id="ConfluenceContent"><p>A <strong>component class</strong>&#160;is the class associated with a page, component or mixin in your Tapestry web application. Classes for pages, components and mixins are all created in an identical way. They are pure POJOs (Plain Old Java Objects), typically with annotations and conventionally named methods. They are not <em>abstract</em>, nor do they need to extend base classes or implement interfaces.</p><div class="aui-label" style="float:right" title="Related Articles">
+
+
+
+
+
+
+
+
+<h3>Related Articles</h3>
+
+<ul class="content-by-label"><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a shape="rect" href="page-and-component-classes-faq.html">Page And Component Classes 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 shape="rect" href="component-reference.html">Component Reference</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="component-libraries.html">Component Libraries</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="component-templates.html">Component Templates</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="component-cheat-sheet.html">Component Cheat Sheet</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="component-parameters.html">Component Parameters</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="https://cwiki.apache.org/confluence/display/BIGTOP/Running+various+Bigtop+components">Running various Bigtop components</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-homepage" title="Home page">Home page:</span>        </div>
+
+        <div class="details">
+                        <a shape="rect" href="https://cwiki.apache.org/confluence/display/TOBAGO/Index">Index</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-homepage" title="Home page">Home page:</span>        </div>
+
+        <div class="details">
+                        <a shape="rect" href="https://cwiki.apache.org/confluence/display/TRINIDAD/Index">Index</a>
+                
+                        
+                    </div>
+    </li></ul>
+</div><p>In most cases, each component class will have a corresponding <a shape="rect" href="component-templates.html">component template</a>. However, it is also possible for a component class to emit all of its markup itself, without using a template.</p><p><em>For Tapestry 4 Users: Component classes in Tapestry 5 are much easier than in Tapestry 4. There are no base classes to extend from, the classes are concrete (not abstract), and there's no XML file. There is still a bit of configuration in the form of Java annotations, but those now go directly onto fields of your class, rather than on abstract getters and setters.</em></p><h2 id="ComponentClasses-CreatingaTrivialComponent">Creating a Trivial Component</h2><p>Creating a page or component in Tapestry 5 is a breeze. There are only a few constraints:</p><ul><li>There must be a public Java class.</li><li>The class must be in the correct package (see below).</li><li>The class must have a public, no-arguments constructor. (The def
 ault one provided by the compiler is fine.)</li></ul><p>Here's a minimal component that outputs a fixed message, using a <a shape="rect" href="component-templates.html">template</a> with a matching file name:</p><div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro"><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>HelloWorld.java</b></div><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">package org.example.myapp.components;
 public class HelloWorld
 {

Modified: websites/production/tapestry/content/component-reference.html
==============================================================================
--- websites/production/tapestry/content/component-reference.html (original)
+++ websites/production/tapestry/content/component-reference.html Sun Jul 26 01:19:59 2015
@@ -27,16 +27,6 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
-    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' type='text/css' />
-  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
-  <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -67,13 +57,51 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><p>Tapestry includes more than 65 built-in components and mixins. In addition, there are hundreds of Tapestry components freely available from others. Of course, Tapestry makes it <a shape="rect" href="component-classes.html">trivially easy</a> to create your own custom components, so if you don't see what you need, just develop them yourself.</p><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><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1437340781000 {padding: 0px;}
-div.rbtoc1437340781000 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1437340781000 li {margin-left: 0px;padding-left: 0px;}
+<div id="ConfluenceContent"><p>Tapestry includes more than 65 built-in components and mixins. In addition, there are hundreds of Tapestry components freely available from others. Of course, Tapestry makes it <a shape="rect" href="component-classes.html">trivially easy</a> to create your own custom components, so if you don't see what you need, just develop them yourself.</p><div class="aui-label" style="float:right" title="Related Articles">
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1437340781000">
+
+
+
+
+
+
+
+<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="templating-and-markup-faq.html">Templating and Markup 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 shape="rect" href="component-classes.html">Component Classes</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="component-parameters.html">Component Parameters</a>
+                
+                        
+                    </div>
+    </li></ul>
+</div><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/
+div.rbtoc1437873583463 {padding: 0px;}
+div.rbtoc1437873583463 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1437873583463 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1437873583463">
 <ul class="toc-indentation"><li><a shape="rect" href="#ComponentReference-Tapestry-providedComponents">Tapestry-provided Components</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#ComponentReference-AJAX-specificComponents">AJAX-specific Components</a></li><li><a shape="rect" href="#ComponentReference-BeanDisplaying&amp;Editing">Bean Displaying &amp; Editing</a></li><li><a shape="rect" href="#ComponentReference-ConditionalandLoopingComponents">Conditional and Looping Components</a></li><li><a shape="rect" href="#ComponentReference-FormComponents">Form Components</a></li><li><a shape="rect" href="#ComponentReference-Grids,TablesandTrees">Grids, Tables and Trees</a></li><li><a shape="rect" href="#ComponentReference-LinksandButtons">Links and Buttons</a></li><li><a shape="rect" href="#ComponentReference-OutputandMessages">Output and Messages</a></li><li><a shape="rect" href="#ComponentReference-Miscellaneous">Miscellaneous</a></li></ul>
 </li><li><a shape="rect" href="#ComponentReference-TapestryMixins">Tapestry Mixins</a></li><li><a shape="rect" href="#ComponentReference-TapestryPages">Tapestry Pages</a></li><li><a shape="rect" href="#ComponentReference-BaseComponents">Base Components</a></li><li><a shape="rect" href="#ComponentReference-OtherComponentLibraries">Other Component Libraries</a></li></ul>

Modified: websites/production/tapestry/content/configuration.html
==============================================================================
--- websites/production/tapestry/content/configuration.html (original)
+++ websites/production/tapestry/content/configuration.html Sun Jul 26 01:19:59 2015
@@ -67,13 +67,123 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><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><h1 id="Configuration-ConfiguringTapestry">Configuring Tapestry</h1><p>This page discusses all the ways in which Tapestry can be configured. Tapestry applications are configured almost entirely using Java, with very little XML at all.</p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1437340864993 {padding: 0px;}
-div.rbtoc1437340864993 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1437340864993 li {margin-left: 0px;padding-left: 0px;}
+<div id="ConfluenceContent"><div style="float:right" title="Related Articles">
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1437340864993">
+
+
+
+
+
+
+
+<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="application-module-class-cheat-sheet.html">Application Module Class Cheat Sheet</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="ioc-cookbook-service-configurations.html">IoC cookbook - Service Configurations</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="symbols.html">Symbols</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="tapestry-ioc-configuration.html">Tapestry IoC Configuration</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="response-compression.html">Response Compression</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="configuration.html">Configuration</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="https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack+Example+Configurations">CloudStack Example Configurations</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="https://cwiki.apache.org/confluence/display/TS/SquidConfigTranslation">SquidConfigTranslation</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-homepage" title="Home page">Home page:</span>        </div>
+
+        <div class="details">
+                        <a shape="rect" href="https://cwiki.apache.org/confluence/display/MFTEST/Index">Index</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-homepage" title="Home page">Home page:</span>        </div>
+
+        <div class="details">
+                        <a shape="rect" href="https://cwiki.apache.org/confluence/display/TOMAHAWK/Index">Index</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-homepage" title="Home page">Home page:</span>        </div>
+
+        <div class="details">
+                        <a shape="rect" href="https://cwiki.apache.org/confluence/display/MYFACES/Index">Index</a>
+                
+                        
+                    </div>
+    </li></ul>
+</div><h1 id="Configuration-ConfiguringTapestry">Configuring Tapestry</h1><p>This page discusses all the ways in which Tapestry can be configured. Tapestry applications are configured almost entirely using Java, with very little XML at all.</p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/
+div.rbtoc1437873580868 {padding: 0px;}
+div.rbtoc1437873580868 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1437873580868 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1437873580868">
 <ul class="toc-indentation"><li><a shape="rect" href="#Configuration-XMLconfiguration(web.xml)">XML configuration (web.xml)</a></li><li><a shape="rect" href="#Configuration-YourApplication'sModuleClass">Your Application's Module Class</a></li><li><a shape="rect" href="#Configuration-ConfigurationSymbolNames">Configuration Symbol Names</a></li><li><a shape="rect" href="#Configuration-SettingComponentParameterDefaults">Setting Component Parameter Defaults</a></li><li><a shape="rect" href="#Configuration-ConfiguringIgnoredPaths">Configuring Ignored Paths</a></li><li><a shape="rect" href="#Configuration-ConfiguringContentTypeMapping">Configuring Content Type Mapping</a></li><li><a shape="rect" href="#Configuration-SettingExecutionModes">Setting Execution Modes</a></li></ul>
 </div><h2 id="Configuration-XMLconfiguration(web.xml)">XML configuration (web.xml)</h2><p>Tapestry runs on top of the standard Java Servlet API. To the servlet container, such as Tomcat, Tapestry appears as a <em>servlet filter</em>. This gives Tapestry great flexibility in matching URLs without requiring lots of XML configuration.</p><p>Although most configuration is done with Java, a small but necessary amount of configuration occurs inside the servlet deployment descriptor, WEB-INF/web.xml. Most of the configuration is boilerplate, nearly the same for all applications.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>web.xml (partial)</b></div><div class="codeContent panelContent pdl">
 <pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">&lt;!DOCTYPE web-app
@@ -95,12 +205,12 @@ div.rbtoc1437340864993 li {margin-left:
     &lt;/filter-mapping&gt;
 &lt;/web-app&gt;
 </pre>
-</div></div><div class="navmenu" style="float:right; width:30%; background:#eee; margin:3px; padding:3px">
+</div></div><p></p><div class="navmenu" style="float:right; width:30%; background:#eee; margin:3px; padding:3px">
 <p><font color="#539126"><strong>Tapestry Requests vs. Container Requests</strong></font></p>
 
 <p>The Tapestry filter matches all the requests that apply to Tapestry, and passes the rest off to the servlet container. In situations where there would be a naming conflict, actual files inside the web application take precedence over Tapestry pages.</p>
 
-<p>Tapestry recognizes the <em>root URL</em>, where the servlet path is simply "/", and renders the application page "Index", if it exists.</p></div><p>The application-specific part, the <code>tapestry.app-package</code> context parameter, provides your application's root package name. Tapestry uses this to locate your page and component classes. It expects page classes in the <code>pages</code> sub-package and components in the <code>components</code> sub-package. In the example above, page classes will be stored in the <code>org.example.myapp.pages</code> package (or in sub-packages below). Likewise, component classes will be stored in the <code>org.example.myapp.components</code> package.</p><p>By convention, the filter name (<code>filter-name</code>) is almost always "app", but you can use any name you want. Tapestry uses this to determine what <em>module class</em> name to look for (see below).</p><h2 id="Configuration-YourApplication'sModuleClass">Your Application's Module Cla
 ss</h2><p>Main Article: <a shape="rect" href="tapestry-ioc-configuration.html">Tapestry IoC Configuration</a></p><p>Most other configuration occurs inside your application's module class. The application module class will often define new services, provide overrides of services, or make contributions to service configurations.</p><p>Tapestry looks for your application module class in the services package (under the root package) of your application. It capitalizes the &lt;filter-name&gt; and appends "Module". In the previous example, because the filter name was "app" and the application's root package name is "org.example.myapp", the module class would be org.example.myapp.services.AppModule.</p><p>If such a class exists, it is added to the IoC Registry. It is not an error for your application to not have a module class, though any non-trivial application will have one.</p><p>Your application module class (usually AppModule.java) will typically override some of Tapestry's default, o
 r "factory", symbols, by contributing overrides to the ApplicationDefaults service configuration. For example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java</b></div><div class="codeContent panelContent pdl">
+<p>Tapestry recognizes the <em>root URL</em>, where the servlet path is simply "/", and renders the application page "Index", if it exists.</p></div>The application-specific part, the <code>tapestry.app-package</code> context parameter, provides your application's root package name. Tapestry uses this to locate your page and component classes. It expects page classes in the <code>pages</code> sub-package and components in the <code>components</code> sub-package. In the example above, page classes will be stored in the <code>org.example.myapp.pages</code> package (or in sub-packages below). Likewise, component classes will be stored in the <code>org.example.myapp.components</code> package.<p>By convention, the filter name (<code>filter-name</code>) is almost always "app", but you can use any name you want. Tapestry uses this to determine what <em>module class</em> name to look for (see below).</p><h2 id="Configuration-YourApplication'sModuleClass">Your Application's Module Class</h2>
 <p>Main Article: <a shape="rect" href="tapestry-ioc-configuration.html">Tapestry IoC Configuration</a></p><p>Most other configuration occurs inside your application's module class. The application module class will often define new services, provide overrides of services, or make contributions to service configurations.</p><p>Tapestry looks for your application module class in the services package (under the root package) of your application. It capitalizes the &lt;filter-name&gt; and appends "Module". In the previous example, because the filter name was "app" and the application's root package name is "org.example.myapp", the module class would be org.example.myapp.services.AppModule.</p><p>If such a class exists, it is added to the IoC Registry. It is not an error for your application to not have a module class, though any non-trivial application will have one.</p><p>Your application module class (usually AppModule.java) will typically override some of Tapestry's default, or "fact
 ory", symbols, by contributing overrides to the ApplicationDefaults service configuration. For example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java</b></div><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">public class AppModule
 {
   public static void contributeApplicationDefaults(MappedConfiguration&lt;String,String&gt; configuration)

Modified: websites/production/tapestry/content/getting-started.html
==============================================================================
--- websites/production/tapestry/content/getting-started.html (original)
+++ websites/production/tapestry/content/getting-started.html Sun Jul 26 01:19:59 2015
@@ -27,16 +27,6 @@
   </title>
   <link type="text/css" rel="stylesheet" href="/resources/space.css">
 
-    <link href='/resources/highlighter/styles/shCoreCXF.css' rel='stylesheet' type='text/css' />
-  <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' type='text/css' />
-  <script src='/resources/highlighter/scripts/shCore.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
-  <script src='/resources/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script>
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
   <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
 
@@ -67,7 +57,7 @@
   </div>
 
 <div id="content">
-<div id="ConfluenceContent"><p>
+<div id="ConfluenceContent"><div class="aui-label" style="float:right" title="Related Articles">
 
 
 
@@ -76,22 +66,16 @@
 
 
 
+<h3>Related Articles</h3>
 
-</p><ul class="content-by-label"><li>
+<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="tapestry-for-jsf-users.html">Tapestry for JSF Users</a>
-                                         <span class="smalltext">(Apache Tapestry)</span>
-             
+                
                         
-                        <div class="label-details">
-                                
-                                
-    <ul class="label-list "><li class="aui-label" data-label-id="24444992"><a shape="rect" class="aui-label-split-main" href="/confluence/label/new-users" rel="tag">new-users</a></li></ul>
-
-            </div>
                     </div>
     </li><li>
         <div>
@@ -99,15 +83,8 @@
 
         <div class="details">
                         <a shape="rect" href="tapestry-tutorial.html">Tapestry Tutorial</a>
-                                         <span class="smalltext">(Apache Tapestry)</span>
-             
+                
                         
-                        <div class="label-details">
-                                
-                                
-    <ul class="label-list "><li class="aui-label" data-label-id="24444992"><a shape="rect" class="aui-label-split-main" href="/confluence/label/new-users" rel="tag">new-users</a></li></ul>
-
-            </div>
                     </div>
     </li><li>
         <div>
@@ -115,15 +92,8 @@
 
         <div class="details">
                         <a shape="rect" href="principles.html">Principles</a>
-                                         <span class="smalltext">(Apache Tapestry)</span>
-             
+                
                         
-                        <div class="label-details">
-                                
-                                
-    <ul class="label-list "><li class="aui-label" data-label-id="24444992"><a shape="rect" class="aui-label-split-main" href="/confluence/label/new-users" rel="tag">new-users</a></li></ul>
-
-            </div>
                     </div>
     </li><li>
         <div>
@@ -131,15 +101,8 @@
 
         <div class="details">
                         <a shape="rect" href="getting-started.html">Getting Started</a>
-                                         <span class="smalltext">(Apache Tapestry)</span>
-             
+                
                         
-                        <div class="label-details">
-                                
-                                
-    <ul class="label-list "><li class="aui-label" data-label-id="24444992"><a shape="rect" class="aui-label-split-main" href="/confluence/label/new-users" rel="tag">new-users</a></li></ul>
-
-            </div>
                     </div>
     </li><li>
         <div>
@@ -147,19 +110,11 @@
 
         <div class="details">
                         <a shape="rect" href="introduction.html">Introduction</a>
-                                         <span class="smalltext">(Apache Tapestry)</span>
-             
+                
                         
-                        <div class="label-details">
-                                
-                                
-    <ul class="label-list "><li class="aui-label" data-label-id="24444992"><a shape="rect" class="aui-label-split-main" href="/confluence/label/new-users" rel="tag">new-users</a></li></ul>
-
-            </div>
                     </div>
     </li></ul>
-<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>Getting started with Tapestry is easy, and you have lots of ways to begin: watch a video, browse the source code of a working demo app, create a skeleton app using Maven, or step through the tutorial.<h2 id="GettingStarted-Watchashortvideo">Watch a short video</h2><p>For a fast-paced introduction, watch Mark W. Shead's <a shape="rect" class="external-link" href="http://blog.markwshead.com/900/tapestry-5-10-minute-demo/" >10 Minute Demo</a>. This video shows how to set up a simple Tapestry application, complete with form validation, Hibernate-based persistence, and Ajax. The video provides a preview of the development speed and productivity that experienced Tapestry users enjoy.</p><h2 id="GettingStarted-Playwithaworkingdemoapp">Play with a working demo app</h2><p>You can also play with Tapest
 ry via our live demonstration applications. To start, have a look at the <a shape="rect" class="external-link" href="http://tapestry.zones.apache.org:8180/tapestry5-hotel-booking/">Hotel Booking Demo</a>. The <a shape="rect" class="external-link" href="http://github.com/ccordenier/tapestry5-hotel-booking" >source code</a> is provided so you can download and play with it.</p><h2 id="GettingStarted-CreateyourfirstTapestryproject">Create your first Tapestry project</h2><p>The easiest way to start a new app is to use <a shape="rect" class="external-link" href="http://maven.apache.org">Apache Maven</a> to create your initial project; Maven can use an <em>archetype</em> (a kind of project template) to create a bare-bones Tapestry application for you.</p><p>Once you have Maven installed, execute the following command:</p><div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
+</div><p>&#160;</p><p>Getting started with Tapestry is easy, and you have lots of ways to begin: watch a video, browse the source code of a working demo app, create a skeleton app using Maven, or step through the tutorial.</p><h2 id="GettingStarted-Watchashortvideo">Watch a short video</h2><p>For a fast-paced introduction, watch Mark W. Shead's <a shape="rect" class="external-link" href="http://blog.markwshead.com/900/tapestry-5-10-minute-demo/" >10 Minute Demo</a>. This video shows how to set up a simple Tapestry application, complete with form validation, Hibernate-based persistence, and Ajax. The video provides a preview of the development speed and productivity that experienced Tapestry users enjoy.</p><h2 id="GettingStarted-Playwithaworkingdemoapp">Play with a working demo app</h2><p>You can also play with Tapestry via our live demonstration applications. To start, have a look at the <a shape="rect" class="external-link" href="http://tapestry.zones.apache.org:8180/tapestry5-hot
 el-booking/">Hotel Booking Demo</a>. The <a shape="rect" class="external-link" href="http://github.com/ccordenier/tapestry5-hotel-booking" >source code</a> is provided so you can download and play with it.</p><h2 id="GettingStarted-CreateyourfirstTapestryproject">Create your first Tapestry project</h2><p>The easiest way to start a new app is to use <a shape="rect" class="external-link" href="http://maven.apache.org">Apache Maven</a> to create your initial project; Maven can use an <em>archetype</em> (a kind of project template) to create a bare-bones Tapestry application for you.</p><p>Once you have Maven installed, execute the following command:</p><div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
 <pre>mvn archetype:generate -DarchetypeCatalog=http://tapestry.apache.org</pre>
 </div></div><p><span style="line-height: 1.4285715;">Maven will prompt you for the archetype to create ("Tapestry 5 Quickstart Project") and the exact version number ("5.4.-beta-28", at the time of writing). It also asks you for a group id, an artifact id, and a version number. </span></p><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Currently, it is necessary to use a staging URI to get the 5.4 beta archetype. This will change after the final Tapestry 5.4 release.</p></div></div><p><span style="line-height: 1.4285715;"><br clear="none"></span></p><p><span style="line-height: 1.4285715;">You can see this in the following transcript:</span></p><div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
 <pre>$ mvn archetype:generate -DarchetypeCatalog=https://repository.apache.org/content/repositories/staging

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



Mime
View raw message