Modified: websites/production/tapestry/content/autoloading-modules.html
==============================================================================
--- websites/production/tapestry/content/autoloading-modules.html (original)
+++ websites/production/tapestry/content/autoloading-modules.html Fri May  1 
00:29:08 2020
@@ -19,24 +19,24 @@
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta name="keywords" content="tapestry, apache, apache tapestry, frameowrk, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
+  <meta name="keywords" content="tapestry, apache, apache tapestry, framework, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
   <meta name="description" content="Apache Tapestry is a open-source 
component-oriented 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.">
 
   <title>
           Autoloading Modules - Apache Tapestry
       </title>
 
-  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="images/apache-tapestry-5-icon-144.png">
-  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="images/apache-tapestry-5-icon-114.png">
-  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="images/apache-tapestry-5-icon-72.png">
-  <link rel="apple-touch-icon-precomposed" 
href="images/apache-tapestry-5-icon-57.png">
-  <link rel="shortcut icon" href="images/apache-tapestry-5-icon-32.png">
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="/images/apache-tapestry-5-icon-144.png">
+  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="/images/apache-tapestry-5-icon-114.png">
+  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="/images/apache-tapestry-5-icon-72.png">
+  <link rel="apple-touch-icon-precomposed" 
href="/images/apache-tapestry-5-icon-57.png">
+  <link rel="shortcut icon" href="/images/apache-tapestry-5-icon-32.png">
 
   <link rel="stylesheet" 
href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap";>
 
   <link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"; 
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
 crossorigin="anonymous">
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css";>
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css";>
-    <link rel="stylesheet" href="/styles/main.css">
+  <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
     if (window.location.protocol === 'http:' && window.location.hostname !== 
'localhost') {
@@ -55,7 +55,7 @@
     ga('create', 'UA-400821-1', 'auto');
     ga('send', 'pageview');
   </script>
-  <script async src='https://www.google-analytics.com/analytics.js'></script>
+  <script async src="https://www.google-analytics.com/analytics.js";></script>
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -226,4 +226,4 @@ public final class InternalModule
 </footer><br clear="none"></p><p><br clear="none"></p></div>
   <!-- /// Footer End -->
 </body>
-</html>
\ No newline at end of file
+</html>

Added: 
websites/production/tapestry/content/banner.data/apache-tapestry-icontext-600.png
==============================================================================
Binary file - no diff available.

Propchange: 
websites/production/tapestry/content/banner.data/apache-tapestry-icontext-600.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Modified: websites/production/tapestry/content/banner.html
==============================================================================
--- websites/production/tapestry/content/banner.html (original)
+++ websites/production/tapestry/content/banner.html Fri May  1 00:29:08 2020
@@ -19,24 +19,24 @@
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta name="keywords" content="tapestry, apache, apache tapestry, frameowrk, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
+  <meta name="keywords" content="tapestry, apache, apache tapestry, framework, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
   <meta name="description" content="Apache Tapestry is a open-source 
component-oriented 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.">
 
   <title>
           Banner - Apache Tapestry
       </title>
 
-  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="images/apache-tapestry-5-icon-144.png">
-  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="images/apache-tapestry-5-icon-114.png">
-  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="images/apache-tapestry-5-icon-72.png">
-  <link rel="apple-touch-icon-precomposed" 
href="images/apache-tapestry-5-icon-57.png">
-  <link rel="shortcut icon" href="images/apache-tapestry-5-icon-32.png">
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="/images/apache-tapestry-5-icon-144.png">
+  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="/images/apache-tapestry-5-icon-114.png">
+  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="/images/apache-tapestry-5-icon-72.png">
+  <link rel="apple-touch-icon-precomposed" 
href="/images/apache-tapestry-5-icon-57.png">
+  <link rel="shortcut icon" href="/images/apache-tapestry-5-icon-32.png">
 
   <link rel="stylesheet" 
href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap";>
 
   <link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"; 
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
 crossorigin="anonymous">
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css";>
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css";>
-    <link rel="stylesheet" href="/styles/main.css">
+  <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
     if (window.location.protocol === 'http:' && window.location.hostname !== 
'localhost') {
@@ -55,7 +55,7 @@
     ga('create', 'UA-400821-1', 'auto');
     ga('send', 'pageview');
   </script>
-  <script async src='https://www.google-analytics.com/analytics.js'></script>
+  <script async src="https://www.google-analytics.com/analytics.js";></script>
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -142,7 +142,7 @@
             
             <!-- /// Content Start -->
             <div id="content">
-                            <div id="ConfluenceContent"><div class="row" 
id="top"><div class="col-md-8 home-banner"><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="https://tapestry.apache.org/images/tapestry.png"; 
data-image-src="https://tapestry.apache.org/images/tapestry.png";></span></p></div>
+                            <div id="ConfluenceContent"><div class="row" 
id="top"><div class="col-md-8 home-banner"><p><span 
class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img 
class="confluence-embedded-image" height="250" 
src="banner.data/apache-tapestry-icontext-600.png"></span></p></div>
 
 
 <div class="col-md-4" style="padding: 0 2em 2em"><p>A component-oriented 
framework for creating highly scalable web applications in Java.</p></div>
@@ -204,4 +204,4 @@
 </footer><br clear="none"></p><p><br clear="none"></p></div>
   <!-- /// Footer End -->
 </body>
-</html>
\ No newline at end of file
+</html>

Modified: websites/production/tapestry/content/bannerv2.html
==============================================================================
--- websites/production/tapestry/content/bannerv2.html (original)
+++ websites/production/tapestry/content/bannerv2.html Fri May  1 00:29:08 2020
@@ -19,24 +19,24 @@
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta name="keywords" content="tapestry, apache, apache tapestry, frameowrk, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
+  <meta name="keywords" content="tapestry, apache, apache tapestry, framework, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
   <meta name="description" content="Apache Tapestry is a open-source 
component-oriented 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.">
 
   <title>
           BannerV2 - Apache Tapestry
       </title>
 
-  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="images/apache-tapestry-5-icon-144.png">
-  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="images/apache-tapestry-5-icon-114.png">
-  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="images/apache-tapestry-5-icon-72.png">
-  <link rel="apple-touch-icon-precomposed" 
href="images/apache-tapestry-5-icon-57.png">
-  <link rel="shortcut icon" href="images/apache-tapestry-5-icon-32.png">
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="/images/apache-tapestry-5-icon-144.png">
+  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="/images/apache-tapestry-5-icon-114.png">
+  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="/images/apache-tapestry-5-icon-72.png">
+  <link rel="apple-touch-icon-precomposed" 
href="/images/apache-tapestry-5-icon-57.png">
+  <link rel="shortcut icon" href="/images/apache-tapestry-5-icon-32.png">
 
   <link rel="stylesheet" 
href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap";>
 
   <link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"; 
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
 crossorigin="anonymous">
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css";>
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css";>
-    <link rel="stylesheet" href="/styles/main.css">
+  <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
     if (window.location.protocol === 'http:' && window.location.hostname !== 
'localhost') {
@@ -55,7 +55,7 @@
     ga('create', 'UA-400821-1', 'auto');
     ga('send', 'pageview');
   </script>
-  <script async src='https://www.google-analytics.com/analytics.js'></script>
+  <script async src="https://www.google-analytics.com/analytics.js";></script>
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -210,4 +210,4 @@
 </footer><br clear="none"></p><p><br clear="none"></p></div>
   <!-- /// Footer End -->
 </body>
-</html>
\ No newline at end of file
+</html>

Modified: websites/production/tapestry/content/bean-validation.html
==============================================================================
--- websites/production/tapestry/content/bean-validation.html (original)
+++ websites/production/tapestry/content/bean-validation.html Fri May  1 
00:29:08 2020
@@ -19,24 +19,24 @@
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta name="keywords" content="tapestry, apache, apache tapestry, frameowrk, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
+  <meta name="keywords" content="tapestry, apache, apache tapestry, framework, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
   <meta name="description" content="Apache Tapestry is a open-source 
component-oriented 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.">
 
   <title>
           Bean Validation - Apache Tapestry
       </title>
 
-  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="images/apache-tapestry-5-icon-144.png">
-  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="images/apache-tapestry-5-icon-114.png">
-  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="images/apache-tapestry-5-icon-72.png">
-  <link rel="apple-touch-icon-precomposed" 
href="images/apache-tapestry-5-icon-57.png">
-  <link rel="shortcut icon" href="images/apache-tapestry-5-icon-32.png">
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="/images/apache-tapestry-5-icon-144.png">
+  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="/images/apache-tapestry-5-icon-114.png">
+  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="/images/apache-tapestry-5-icon-72.png">
+  <link rel="apple-touch-icon-precomposed" 
href="/images/apache-tapestry-5-icon-57.png">
+  <link rel="shortcut icon" href="/images/apache-tapestry-5-icon-32.png">
 
   <link rel="stylesheet" 
href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap";>
 
   <link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"; 
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
 crossorigin="anonymous">
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css";>
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css";>
-    <link rel="stylesheet" href="/styles/main.css">
+  <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
     if (window.location.protocol === 'http:' && window.location.hostname !== 
'localhost') {
@@ -55,7 +55,7 @@
     ga('create', 'UA-400821-1', 'auto');
     ga('send', 'pageview');
   </script>
-  <script async src='https://www.google-analytics.com/analytics.js'></script>
+  <script async src="https://www.google-analytics.com/analytics.js";></script>
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -266,7 +266,7 @@ public static void provideBeanValidatorC
 
    ...
 }</code></pre>
-</div></div><h3 id="BeanValidation-Client-sideValidation">Client-side 
Validation</h3><p>Unfortunately JSR-303 doesn&#8217;t cover client-side 
validation, so web frameworks supporting this JSR need to come up with 
proprietary client-side solutions. Tapestry provides client-side validation for 
the following JSR-303 constraints:</p><div class="table-wrap"><table 
class="table table-bordered"><colgroup span="1"><col span="1"><col 
span="1"></colgroup><tbody><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>JSR-303 constraint</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry' JavaScript function</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/Max.html";
 rel="nofollow">@Max</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry.Validator.maxnumber</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a class="exter
 nal-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/Min.html";
 rel="nofollow">@Min</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry.Validator.minnumber</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/NotNull.html";
 rel="nofollow">@NotNull</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry.Validator.notnull</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/Null.html";
 rel="nofollow">@Null</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry.Validator.isnull</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/Pattern.html";
 rel="nofollow">@P
 attern</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry.Validator.pattern</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/Size.html";
 rel="nofollow">@Size</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry.Validator.size</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/AssertTrue.html";
 rel="nofollow">@AssertTrue</a> <em>(Since 5.4.5)</em></td><td colspan="1" 
rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/AssertFalse.html";
 rel="nofollow">@AssertFalse</a> <em>(Since 5.4.5)</em></td><td colspan="1" 
rowspan="1" class="confluenceTd"></td></tr></tbody></table></div
 ><h3 id="BeanValidation-Providingownclient-sidevalidators">Providing own 
 >client-side validators</h3><p>Now let's see how to provide own client-side 
 >validation for JSR-303 constraints. Imagine you created the following 
 >constraint definition. The server-side implementation of the constraint is 
 >implemented by RangeValidator. I suppose you are familiar with JSR-303, so we 
 >won't explain how to implement RangeValidator.</p><div class="code panel pdl" 
 >style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="BeanValidation-Client-sideValidation">Client-side 
Validation</h3><p>Unfortunately JSR-303 doesn&#8217;t cover client-side 
validation, so web frameworks supporting this JSR need to come up with 
proprietary client-side solutions. Tapestry provides client-side validation for 
the following JSR-303 constraints:</p><div class="table-wrap"><table 
class="table table-bordered table-responsive"><colgroup span="1"><col 
span="1"><col span="1"></colgroup><tbody><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>JSR-303 constraint</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry' JavaScript function</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/Max.html";
 rel="nofollow">@Max</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry.Validator.maxnumber</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><
 p><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/Min.html";
 rel="nofollow">@Min</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry.Validator.minnumber</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/NotNull.html";
 rel="nofollow">@NotNull</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry.Validator.notnull</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/Null.html";
 rel="nofollow">@Null</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry.Validator.isnull</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/Pattern.html";
 
 rel="nofollow">@Pattern</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry.Validator.pattern</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/Size.html";
 rel="nofollow">@Size</a></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Tapestry.Validator.size</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/AssertTrue.html";
 rel="nofollow">@AssertTrue</a> <em>(Since 5.4.5)</em></td><td colspan="1" 
rowspan="1" class="confluenceTd"></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><a class="external-link" 
href="http://download.oracle.com/javaee/6/api/javax/validation/constraints/AssertFalse.html";
 rel="nofollow">@AssertFalse</a> <em>(Since 5.4.5)</em></td><td colspan="1" 
rowspan="1" class="confluenceTd"></td></tr></tb
 ody></table></div><h3 
id="BeanValidation-Providingownclient-sidevalidators">Providing own client-side 
validators</h3><p>Now let's see how to provide own client-side validation for 
JSR-303 constraints. Imagine you created the following constraint definition. 
The server-side implementation of the constraint is implemented by 
RangeValidator. I suppose you are familiar with JSR-303, so we won't explain 
how to implement RangeValidator.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre><code class="language-java">@Documented
 @Constraint(validatedBy = RangeValidator.class)
 @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@@ -351,4 +351,4 @@ public static void provideClientConstrai
 </footer><br clear="none"></p><p><br clear="none"></p></div>
   <!-- /// Footer End -->
 </body>
-</html>
\ No newline at end of file
+</html>

Modified: websites/production/tapestry/content/beaneditform-faq.html
==============================================================================
--- websites/production/tapestry/content/beaneditform-faq.html (original)
+++ websites/production/tapestry/content/beaneditform-faq.html Fri May  1 
00:29:08 2020
@@ -19,24 +19,24 @@
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta name="keywords" content="tapestry, apache, apache tapestry, frameowrk, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
+  <meta name="keywords" content="tapestry, apache, apache tapestry, framework, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
   <meta name="description" content="Apache Tapestry is a open-source 
component-oriented 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.">
 
   <title>
           BeanEditForm FAQ - Apache Tapestry
       </title>
 
-  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="images/apache-tapestry-5-icon-144.png">
-  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="images/apache-tapestry-5-icon-114.png">
-  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="images/apache-tapestry-5-icon-72.png">
-  <link rel="apple-touch-icon-precomposed" 
href="images/apache-tapestry-5-icon-57.png">
-  <link rel="shortcut icon" href="images/apache-tapestry-5-icon-32.png">
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="/images/apache-tapestry-5-icon-144.png">
+  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="/images/apache-tapestry-5-icon-114.png">
+  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="/images/apache-tapestry-5-icon-72.png">
+  <link rel="apple-touch-icon-precomposed" 
href="/images/apache-tapestry-5-icon-57.png">
+  <link rel="shortcut icon" href="/images/apache-tapestry-5-icon-32.png">
 
   <link rel="stylesheet" 
href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap";>
 
   <link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"; 
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
 crossorigin="anonymous">
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css";>
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css";>
-    <link rel="stylesheet" href="/styles/main.css">
+  <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
     if (window.location.protocol === 'http:' && window.location.hostname !== 
'localhost') {
@@ -55,7 +55,7 @@
     ga('create', 'UA-400821-1', 'auto');
     ga('send', 'pageview');
   </script>
-  <script async src='https://www.google-analytics.com/analytics.js'></script>
+  <script async src="https://www.google-analytics.com/analytics.js";></script>
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -143,11 +143,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="BeanEditFormFAQ-BeanEditForm">BeanEditForm</h1><p>Main Article: <a 
href="beaneditform-guide.html">BeanEditForm Guide</a></p><h2 
id="BeanEditFormFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1588040573201 {padding: 0px;}
-div.rbtoc1588040573201 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1588040573201 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1588292604335 {padding: 0px;}
+div.rbtoc1588292604335 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1588292604335 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1588040573201">
+/*]]>*/</style></p><div class="toc-macro rbtoc1588292604335">
 <ul class="toc-indentation"><li><a 
href="#BeanEditFormFAQ-WhydoIgetexceptionsaboutinstantiatingabeanwhenusingBeanEditForm?">Why
 do I get exceptions about instantiating a bean when using 
BeanEditForm?</a></li><li><a 
href="#BeanEditFormFAQ-What'sthedifferencebetweenBeanEditorandBeanEditForm?">What's
 the difference between BeanEditor and BeanEditForm?</a></li><li><a 
href="#BeanEditFormFAQ-HowdoIcustomizethelayoutoftheBeanEditForm?">How do I 
customize the layout of the BeanEditForm?</a></li></ul>
 </div><h2 
id="BeanEditFormFAQ-WhydoIgetexceptionsaboutinstantiatingabeanwhenusingBeanEditForm?">Why
 do I get exceptions about instantiating a bean when using 
BeanEditForm?</h2><p>When you render a BeanEditForm, or when the rendered form 
is submitted, Tapestry must instantiate an instance of the object to be edited. 
This occurs when the BeanEditForm's <code>object</code> parameter is bound to 
null: Tapestry instantiates an instance of the property type so that the 
BeanEditForm has an object to read default values from, or to push submitted 
values into.</p><p>By default, this uses the standard <a 
href="injection-in-detail.html">injection mechanism</a>, which means that 
Tapestry will identify the public constructor with the most parameters, and 
attempt to find objects and other objects for each constructor 
parameter.</p><p>There's two ways to fine tune this so you don't get 
errors:</p><ul><li>Place an @<a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache
 /tapestry5/ioc/annotations/Inject.html">Inject</a> annotation on the correct 
constructor to use (often, the constructor with no parameters).</li></ul><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <pre><code class="language-java">public class MyBean {
@@ -227,4 +227,4 @@ div.rbtoc1588040573201 li {margin-left:
 </footer><br clear="none"></p><p><br clear="none"></p></div>
   <!-- /// Footer End -->
 </body>
-</html>
\ No newline at end of file
+</html>

Modified: websites/production/tapestry/content/beaneditform-guide.html
==============================================================================
--- websites/production/tapestry/content/beaneditform-guide.html (original)
+++ websites/production/tapestry/content/beaneditform-guide.html Fri May  1 
00:29:08 2020
@@ -19,24 +19,24 @@
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta name="keywords" content="tapestry, apache, apache tapestry, frameowrk, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
+  <meta name="keywords" content="tapestry, apache, apache tapestry, framework, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
   <meta name="description" content="Apache Tapestry is a open-source 
component-oriented 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.">
 
   <title>
           BeanEditForm Guide - Apache Tapestry
       </title>
 
-  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="images/apache-tapestry-5-icon-144.png">
-  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="images/apache-tapestry-5-icon-114.png">
-  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="images/apache-tapestry-5-icon-72.png">
-  <link rel="apple-touch-icon-precomposed" 
href="images/apache-tapestry-5-icon-57.png">
-  <link rel="shortcut icon" href="images/apache-tapestry-5-icon-32.png">
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="/images/apache-tapestry-5-icon-144.png">
+  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="/images/apache-tapestry-5-icon-114.png">
+  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="/images/apache-tapestry-5-icon-72.png">
+  <link rel="apple-touch-icon-precomposed" 
href="/images/apache-tapestry-5-icon-57.png">
+  <link rel="shortcut icon" href="/images/apache-tapestry-5-icon-32.png">
 
   <link rel="stylesheet" 
href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap";>
 
   <link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"; 
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
 crossorigin="anonymous">
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css";>
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css";>
-    <link rel="stylesheet" href="/styles/main.css">
+  <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
     if (window.location.protocol === 'http:' && window.location.hostname !== 
'localhost') {
@@ -55,7 +55,7 @@
     ga('create', 'UA-400821-1', 'auto');
     ga('send', 'pageview');
   </script>
-  <script async src='https://www.google-analytics.com/analytics.js'></script>
+  <script async src="https://www.google-analytics.com/analytics.js";></script>
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -281,4 +281,4 @@
 </footer><br clear="none"></p><p><br clear="none"></p></div>
   <!-- /// Footer End -->
 </body>
-</html>
\ No newline at end of file
+</html>

Modified: websites/production/tapestry/content/blogs.html
==============================================================================
--- websites/production/tapestry/content/blogs.html (original)
+++ websites/production/tapestry/content/blogs.html Fri May  1 00:29:08 2020
@@ -19,24 +19,24 @@
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta name="keywords" content="tapestry, apache, apache tapestry, frameowrk, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
+  <meta name="keywords" content="tapestry, apache, apache tapestry, framework, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
   <meta name="description" content="Apache Tapestry is a open-source 
component-oriented 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.">
 
   <title>
           Blogs - Apache Tapestry
       </title>
 
-  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="images/apache-tapestry-5-icon-144.png">
-  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="images/apache-tapestry-5-icon-114.png">
-  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="images/apache-tapestry-5-icon-72.png">
-  <link rel="apple-touch-icon-precomposed" 
href="images/apache-tapestry-5-icon-57.png">
-  <link rel="shortcut icon" href="images/apache-tapestry-5-icon-32.png">
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="/images/apache-tapestry-5-icon-144.png">
+  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="/images/apache-tapestry-5-icon-114.png">
+  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="/images/apache-tapestry-5-icon-72.png">
+  <link rel="apple-touch-icon-precomposed" 
href="/images/apache-tapestry-5-icon-57.png">
+  <link rel="shortcut icon" href="/images/apache-tapestry-5-icon-32.png">
 
   <link rel="stylesheet" 
href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap";>
 
   <link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"; 
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
 crossorigin="anonymous">
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css";>
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css";>
-    <link rel="stylesheet" href="/styles/main.css">
+  <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
     if (window.location.protocol === 'http:' && window.location.hostname !== 
'localhost') {
@@ -55,7 +55,7 @@
     ga('create', 'UA-400821-1', 'auto');
     ga('send', 'pageview');
   </script>
-  <script async src='https://www.google-analytics.com/analytics.js'></script>
+  <script async src="https://www.google-analytics.com/analytics.js";></script>
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -196,4 +196,4 @@
 </footer><br clear="none"></p><p><br clear="none"></p></div>
   <!-- /// Footer End -->
 </body>
-</html>
\ No newline at end of file
+</html>

Modified: websites/production/tapestry/content/books.html
==============================================================================
--- websites/production/tapestry/content/books.html (original)
+++ websites/production/tapestry/content/books.html Fri May  1 00:29:08 2020
@@ -19,24 +19,24 @@
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta name="keywords" content="tapestry, apache, apache tapestry, frameowrk, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
+  <meta name="keywords" content="tapestry, apache, apache tapestry, framework, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
   <meta name="description" content="Apache Tapestry is a open-source 
component-oriented 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.">
 
   <title>
           Books - Apache Tapestry
       </title>
 
-  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="images/apache-tapestry-5-icon-144.png">
-  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="images/apache-tapestry-5-icon-114.png">
-  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="images/apache-tapestry-5-icon-72.png">
-  <link rel="apple-touch-icon-precomposed" 
href="images/apache-tapestry-5-icon-57.png">
-  <link rel="shortcut icon" href="images/apache-tapestry-5-icon-32.png">
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="/images/apache-tapestry-5-icon-144.png">
+  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="/images/apache-tapestry-5-icon-114.png">
+  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="/images/apache-tapestry-5-icon-72.png">
+  <link rel="apple-touch-icon-precomposed" 
href="/images/apache-tapestry-5-icon-57.png">
+  <link rel="shortcut icon" href="/images/apache-tapestry-5-icon-32.png">
 
   <link rel="stylesheet" 
href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap";>
 
   <link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"; 
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
 crossorigin="anonymous">
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css";>
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css";>
-    <link rel="stylesheet" href="/styles/main.css">
+  <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
     if (window.location.protocol === 'http:' && window.location.hostname !== 
'localhost') {
@@ -55,7 +55,7 @@
     ga('create', 'UA-400821-1', 'auto');
     ga('send', 'pageview');
   </script>
-  <script async src='https://www.google-analytics.com/analytics.js'></script>
+  <script async src="https://www.google-analytics.com/analytics.js";></script>
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -197,4 +197,4 @@
 </footer><br clear="none"></p><p><br clear="none"></p></div>
   <!-- /// Footer End -->
 </body>
-</html>
\ No newline at end of file
+</html>

Modified: 
websites/production/tapestry/content/building-tapestry-from-source.html
==============================================================================
--- websites/production/tapestry/content/building-tapestry-from-source.html 
(original)
+++ websites/production/tapestry/content/building-tapestry-from-source.html Fri 
May  1 00:29:08 2020
@@ -19,24 +19,24 @@
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta name="keywords" content="tapestry, apache, apache tapestry, frameowrk, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
+  <meta name="keywords" content="tapestry, apache, apache tapestry, framework, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
   <meta name="description" content="Apache Tapestry is a open-source 
component-oriented 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.">
 
   <title>
           Building Tapestry from Source - Apache Tapestry
       </title>
 
-  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="images/apache-tapestry-5-icon-144.png">
-  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="images/apache-tapestry-5-icon-114.png">
-  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="images/apache-tapestry-5-icon-72.png">
-  <link rel="apple-touch-icon-precomposed" 
href="images/apache-tapestry-5-icon-57.png">
-  <link rel="shortcut icon" href="images/apache-tapestry-5-icon-32.png">
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="/images/apache-tapestry-5-icon-144.png">
+  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="/images/apache-tapestry-5-icon-114.png">
+  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="/images/apache-tapestry-5-icon-72.png">
+  <link rel="apple-touch-icon-precomposed" 
href="/images/apache-tapestry-5-icon-57.png">
+  <link rel="shortcut icon" href="/images/apache-tapestry-5-icon-32.png">
 
   <link rel="stylesheet" 
href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap";>
 
   <link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"; 
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
 crossorigin="anonymous">
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css";>
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css";>
-    <link rel="stylesheet" href="/styles/main.css">
+  <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
     if (window.location.protocol === 'http:' && window.location.hostname !== 
'localhost') {
@@ -55,7 +55,7 @@
     ga('create', 'UA-400821-1', 'auto');
     ga('send', 'pageview');
   </script>
-  <script async src='https://www.google-analytics.com/analytics.js'></script>
+  <script async src="https://www.google-analytics.com/analytics.js";></script>
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -142,7 +142,7 @@
             
             <!-- /// Content Start -->
             <div id="content">
-                            <div id="ConfluenceContent"><p>This is a guide to 
building Tapestry itself from source code. This is primarily of interest to 
Tapestry <em>contributors</em>, rather than Tapestry 
<em>users</em>.</p><p>Although Tapestry <em>users</em> are free to use any 
build mechanism for their own projects (and first class Maven support is 
provided), to build Tapestry itself from source you will use 
Gradle.</p><p>Note: Both command line and Eclipse Gradle IDE/EGit instructions 
are given here. Generally you'll want to chose approach one or the other, 
rather than mixing them.</p><h2 
id="BuildingTapestryfromSource-Prerequisites">Prerequisites</h2><ul><li>Install 
a <strong>Java JDK</strong> (Sun/Oracle, not OpenJDK), version 1.7 (just to 
prevent VU#225657, see: <a class="external-link" 
href="http://www.kb.cert.org/vuls/id/225657"; 
rel="nofollow">http://www.kb.cert.org/vuls/id/225657</a>), or version 1.8 for 
Tapestry 5.5 and later.</li><li>Install an <strong>IDE</strong> (IDE
 A IntelliJ is recommended (and free to Tapestry committers), but Eclipse will 
also work. NetBeans is reported to work as 
well.</li><li><strong>Firefox</strong>: For Tapestry 5.4.x and earlier, install 
Firefox browser <a class="external-link" 
href="https://ftp.mozilla.org/pub/firefox/releases/42.0/"; 
rel="nofollow">version 42</a> or earlier, needed for the integration tests 
(because newer versions require a newer version of Selenium than Tapestry's 
Java version requirements allow).</li><li><s>Set the Firefox browser's 
"preferred language" to English (en), because some tests will otherwise 
fail.</s> (Fixed; see <a class="external-link" 
href="https://issues.apache.org/jira/browse/TAP5-2413";>TAP5-2413</a>)</li><li>Install
 a <strong>Git</strong> client<ul><li>Command-line users: <a 
class="external-link" href="http://git-scm.com/downloads"; 
rel="nofollow">http://git-scm.com/downloads</a></li><li>Eclipse users: install 
EGit from the Eclipse Marketplace, then in In Window &gt; Preferences &gt
 ; Team &gt; Git, set your "Default repository folder" (e.g. <code>~/git</code> 
or <code>%HOME%\git</code>). Note that for Eclipse 4.4 (Luna) and later Git 
support is built in.</li></ul></li><li>Install <strong>Gradle</strong> 
1.0-milestone-3 or newer (or a Gradle plugin to your IDE),<ul><li>Command-line 
users: nothing to do (Tapestry's Gradle wrapper, gradlew, will download Gradle 
automatically on first use).</li><li>Eclipse users: Install Gradle IDE (aka 
Gradle Integration for Eclipse), from the Eclipse Marketplace. Note that for 
Eclipse 4.6 (Neon) and later, Gradle support is built 
in.</li></ul></li></ul><h2 
id="BuildingTapestryfromSource-GettingStarted">Getting Started</h2><p>Please 
read <a class="external-link" 
href="https://git-wip-us.apache.org/";>https://git-wip-us.apache.org/</a> 
first.</p><p>Windows users (especialy EGit users) should probably set the 
core.autocrlf config setting to <code>false</code> so that local diffs won't 
highlight line ending differences.</p><h3 id="Bu
 ildingTapestryfromSource-ClonetheRepository">Clone the Repository</h3><p>Clone 
Tapestry from the Git repo:</p><ul><li><p>Command-line git users:</p><div 
class="table-wrap"><table class="table table-bordered"><tbody><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Non Committers:</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>git clone</p><a 
class="external-link" 
href="http://git-wip-us.apache.org/repos/asf/tapestry-5.git";>http://git-wip-us.apache.org/repos/asf/tapestry-5.git</a></td></tr><tr><td
 colspan="1" rowspan="1" class="confluenceTd"><p>Committers:</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>git clone</p><a 
class="external-link" 
href="https://git-wip-us.apache.org/repos/asf/tapestry-5.git";>https://git-wip-us.apache.org/repos/asf/tapestry-5.git</a></td></tr></tbody></table></div></li><li>Eclipse
 EGit users:<ul><li>Switch to Git perspective; then copy one of the URLs above 
into paste buffer</li><li>Right-click &gt; Paste repository path or URI
 . This will bring up the Clone Git Repository dialog.</li><li>Committers: make 
sure Protocol is https, and enter your Apache commiter LDAP user name &amp; 
password</li><li>click Next.</li><li>Select the branches you're interested in 
(e.g 5.3 and master), click Next</li><li>Select Directory to where you want the 
project source code (e.g. <code>~/git/tapestry-5</code> or 
<code>%HOME%\git\tapestry-5</code>)</li><li>Select whichever "Initial Branch" 
you're interested in (e.g. master)</li><li>Set "Remote name" to "origin" (the 
default)</li><li><strong>VERY IMPORTANT</strong>: uncheck the "Import all 
existing projects" checkbox (we'll do this using Gradle, below)</li><li>Click 
Finish. (Be patient; the clone operation might take a few 
minutes.)</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-GradlePreparation">Gradle 
Preparation</h3><ul><li>Command-line gradle users only:<ul><li>If you're using 
Eclipse but <strong>not</strong> Gradle IDE do <code>./gradlew 
eclipse</code></li><li>The 
 command-line Gradle's eclipse plugin doesn't include the provided project 
dependencies; you need to add them manually (Java Build Path &gt; Projects &gt; 
Add tapestry-test). The plugin also generates a root eclipse project, so you'll 
need to delete the ".project" file in the root folder, and then you can import 
all Tapestry sub-projects at once.</li></ul></li><li>Eclipse Gradle IDE 
users:<ul><li>Switch to Java (or JEE) perspective and right-click &gt; 
Import... &gt; Gradle &gt; Gradle Project &gt; Next.</li><li>Set the "Root 
folder" to where you put your Tapestry source in the previous section (e.g. 
<code>~/git/tapestry-5</code> or 
<code>%Home%\git\tapestry-5</code>)</li><li>Click <code>Build Model. When it 
completes, s</code>elect the top-level (the top-level module and all 
sub-modules).</li><li>Be sure the "Enable dependency management" and "Create 
workingset 'tapestry-5' checkboxes are checked.</li><li>Click 
<code>Finish</code>. (Be patient; the import operation might take a few 
 minutes.)</li></ul></li><li>Eclipse EGit users: Do a Git "Share" on the 
project:<ul><li>Still in the Java (or JEE) perspective, select all of the 
Tapestry projects (top-level and sub-modules) and right-click &gt; Team &gt; 
Share Project... &gt; Git &gt; Next &gt; Ensure all are selected, click 
<code>Finish</code>.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-Antlr">Antlr</h3><p>The 
<code>tapestry-core</code> project will initially have errors because of 
missing Java classes that are produced by ANTLR the first time the project is 
built. To fix this:</p><ul><li>Eclipse Gradle IDE users:<ul><li>Right click on 
the <code>build.gradle</code> file within tapestry-core and click Run As &gt; 
"Gradle build...", check <strong>only</strong> the generateGrammarSource task, 
and change the "Name" field to something like "tapestry-core antlr", then click 
Apply and Run.</li><li>When it's finished, the antlr-generated classes (e.g. 
PropertyExpressionLexer.java) will be in created in $buildD
 ir/generated-sources/antlr/, but Eclipse doesn't yet know about that path. To 
fix that, right click on the <code>tapestry-core</code> project &gt; Properties 
&gt; Java Build Path &gt; Source &gt; Add Folder &gt; find 
<code>tapestry-core/build/generated-sources/antlr</code> and check the checkbox 
next to it, then click <code>OK</code>.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-CoffeeScript">CoffeeScript</h3><p>If you want to 
run tests from within Eclipse, Tapestry will complain that it won't find 
certain JavaScript files that normally are generated during compile time from 
their Coffeescript sources. In order to generate the JavaScript files you need 
to have Coffeescript installed and in your path. Simply install <a 
class="external-link" href="http://nodejs.org/download/"; 
rel="nofollow">Node.js</a> and afterwards run <code>npm install -g 
coffee-script</code>. The installation should take care of 
everything.</p><ul><li>Eclipse Gradle IDE users:<ul><li>Right click on the <c
 ode>build.gradle</code> file within tapestry-core and click Run As &gt; 
"Gradle build...", check <strong>only</strong> the 
tapestry-core:compileCoffeeScript and tapestry-core:compileTestCoffeeScript 
tasks, and change the "Name" field to something like "tapestry-core 
coffeescript", then click Apply and Run.</li><li>When it's finished, the 
coffeescript-generated JavaScript files (e.g. t5-core-dom-jquery.js) will be in 
created in $buildDir/generated-sources/compiled-coffeescript/ and 
$buildDir/generated-sources/compiled-test-coffeescript/, but Eclipse doesn't 
yet know about that path. To fix that, right click on the 
<code>tapestry-core</code> project &gt; Properties &gt; Java Build Path &gt; 
Source &gt; Add Folder &gt; find 
<code>tapestry-core/build/generated-sources/compiled-coffeescript</code> and 
<code>tapestry-core/build/generated-sources/compiled-test-coffeescript</code> 
and check the checkbox next to it, then click 
<code>OK</code>.</li></ul></li></ul><h3 id="BuildingTapestryfromS
 ource-GenerateCoffeeScriptandAntlrfilesautomaticallywhenchanged">Generate 
CoffeeScript and Antlr files automatically when changed</h3><p>If you want to 
have Eclipse compile the JavaScript files and lexer classes from their 
Coffeescript sources and Antlr files automatically when they change, you can do 
that by configuring an additional builder for the <code>tapestry-core</code> 
project:</p><ul><li>Eclipse Gradle IDE users:<ul><li>Right click on the 
<code>tapestry-core</code> project and select properties.</li><li>Select the 
"Builders" entry from the list on the left and click "New.." in the right 
panel.</li><li>Select "Program" and click "Ok".</li><li>Give the program a 
meaningful name, e.g. "compile coffeescript and antlr".</li><li>Switch to the 
"Main" tab.</li><li>For "Location:" click "Browse Workspace..." and select 
gradlew (for Mac/Linux) or <code>gradlew.bat (for Windows)</code> in the 
Tapestry root project. If the root project is called "tapestry-5" the entry 
should look simil
 ar to "${workspace_loc:/tapestry-5/gradlew.bat}".</li><li>For "Working 
Directory:" click "Browse Workspace..." and select the Tapestry root 
project.</li><li>For "Arguments:" enter 
<code>tapestry-core:generateGrammarSource tapestry-core:compileCoffeeScript 
tapestry-core:compileTestCoffeeScript</code></li><li>Switch to the "Build 
Options" tab.</li><li>Make sure that only "Allocate Console", "After a 
"Clean"", "During manual builds", "During auto builds" and "Specify working set 
of relevant resources" are checked.</li><li>Click "Specify 
Resources...".</li><li>From the "tapestry-core" project select 
"src/main/antlr", "src/main/coffeescript", and 
"src/test/coffeescript".</li><li>Click "Finish".</li><li>Click 
"OK".</li><li>Click "OK".</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-Building">Building</h3><p>You can build 
individual modules, or (from the root folder) build 
everything.</p><ul><li>Command-line users: *( "gradlew" is the gradle wrapper 
shell script (gradlew) or batch fi
 le (gradlew.bat) found in the root folder of the Tapestry 
source.<ul><li><code>./gradlew build</code></li></ul></li><li>Eclipse Gradle 
IDE users:<ul><li>Right click on the top-level project (or any sub-project) and 
select Run As &gt; Gradle Build..., which starts an External Tools 
Configuration dialog box. Enter a reasonable name, select the tasks you want to 
run (for example, tapestry-core/install), and click Run.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-SeleniumSetup">Selenium Setup</h3><p>It is 
necessary that you have a compatible version of Firefox installed. &#160;On a 
Mac, you should install it in ~/Applications (rather than 
/Applications).</p><p>You should modify your ~/.bash_profile (or equivalent), 
to add ~/Applications/Firefox.app/Contents/MacOS to the PATH variable.</p><h3 
id="BuildingTapestryfromSource-RunningIndividualTests">Running Individual 
Tests</h3><p>Eclipse users:</p><ul><li>Install the <a class="external-link" 
href="http://testng.org/doc/eclipse.htm
 l" rel="nofollow">TestNG plugin</a> to allow running of individual TestNG unit 
tests from within in Eclipse.</li><li>Right-click on any test class and select 
Run As &gt;TestNG Test</li></ul><p>Command-line users:</p><ul><li>./gradlew 
-Dtest.single=myclassname</li><li>./gradlew 
-Dtest.single=myclassname.mymethod</li></ul><p>where myclassname is the test 
class, such as FormTest</p><p>The Tapestry integration tests will repeatedly 
start up a Firefox browser.</p><ul><li>Ensure that your environment will allow 
a connection to <a class="external-link" href="https://localhost:9090"; 
rel="nofollow">https://localhost:9090</a></li></ul><h3 
id="BuildingTapestryfromSource-SkippingTests">Skipping Tests</h3><p>Running the 
Tapestry integration tests can take 10 minutes or more (mostly because of 
Selenium tests, which repeatedly start and stop the Firefox browser), so you 
won't want to run them every time you try a change.</p><ul><li>Command-line 
users:<ul><li><code>To build while skipping all tests
 : ./gradlew build -x test</code></li><li>You can skip tests on a specific 
module by adding a colon and the module name. For example: <code>-x 
test:tapestry-ioc</code></li></ul></li><li>Eclipse Gradle IDE users:<ul><li>In 
your External Tools Configuration, add the same -x test option as above at 
Arguments &gt; Program Arguments.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-RunningtheIntegrationTestAppsManually">Running 
the Integration Test Apps Manually</h3><p>The Tapestry source includes several 
small web apps that are used by the automated Selenium integration tests. You 
can also run these apps manually to try out nearly every browser-visible aspect 
of Tapestry. Just invoke the corresponding Gradle tasks. This is mainly useful 
when debugging failing selenium tests.</p><ul><li>Command-line 
users:<ul><li>./gradlew runTestApp1</li></ul></li><li>Eclipse users:<ul><li>Use 
the run-jetty-run plugin in Eclipse, with the context directory selected from 
among the <code>test</code> c
 ontext directories. For example, in the tapestry-core module, right click on 
the /src/test/app1 (or app2, etc) folder, and select Run As &gt; Run Jetty, 
then open your browser to <a class="external-link" 
href="http://localhost:8080/tapestry-core"; 
rel="nofollow">http://localhost:8080/tapestry-core</a></li></ul></li></ul><p>The
 integration test apps are:</p><ul><li>activationctx&#160;&#8211; used 
by&#160;tapestry-core integration tests</li><li>activationctx2&#160;&#8211; 
used by&#160;tapestry-core integration tests</li><li>app0&#160;&#8211; used 
only by the tapestry-hibernate integration tests</li><li><strong>app1 
&#8211;&#160;used by most of the tapestry-core integration 
tests</strong></li><li>app2&#160;&#8211; used by tapestry-core integration 
tests (HTTPS)app3&#160;&#8211; used by&#160;tapestry-core integration 
tests</li><li>app4&#160;&#8211; used by&#160;tapestry-core integration 
tests</li><li>app5&#160;&#8211; used by&#160;tapestry-core integration 
tests</li><li><em>appfolder</em
 > &#160;&#8211; used by&#160;tapestry-core integration 
 > tests</li><li>cluster&#160;&#8211; used by&#160;tapestry-core integration 
 > tests</li><li>linktrans&#160;&#8211; used by&#160;tapestry-core integration 
 > tests</li><li>symbolparam&#160;&#8211; used by&#160;tapestry-core 
 > integration tests</li><li>(...and a few others not yet documented, and 
 > without Gradle tasks yet. Search for web.xml files in the Tapestry 
 > source.)</li></ul><h3 
 > id="BuildingTapestryfromSource-MakingCodeChanges">Making Code 
 > Changes</h3><p>Once you have cloned or pulled the latest changes to your 
 > local Git repository, you can start working on it. Whenever you make some 
 > changes to the codebase, it's good to have a related issue filed in JIRA and 
 > to use a similarly named branch in your local Git repository. For example, 
 > to create a branch for an issue with the key TAP5-123:</p><div class="code 
 > panel pdl" style="border-width: 1px;"><div class="codeContent panelContent 
 > pdl">
+                            <div id="ConfluenceContent"><p>This is a guide to 
building Tapestry itself from source code. This is primarily of interest to 
Tapestry <em>contributors</em>, rather than Tapestry 
<em>users</em>.</p><p>Although Tapestry <em>users</em> are free to use any 
build mechanism for their own projects (and first class Maven support is 
provided), to build Tapestry itself from source you will use 
Gradle.</p><p>Note: Both command line and Eclipse Gradle IDE/EGit instructions 
are given here. Generally you'll want to chose approach one or the other, 
rather than mixing them.</p><h2 
id="BuildingTapestryfromSource-Prerequisites">Prerequisites</h2><ul><li>Install 
a <strong>Java JDK</strong> (Sun/Oracle, not OpenJDK), version 1.7 (just to 
prevent VU#225657, see: <a class="external-link" 
href="http://www.kb.cert.org/vuls/id/225657"; 
rel="nofollow">http://www.kb.cert.org/vuls/id/225657</a>), or version 1.8 for 
Tapestry 5.5 and later.</li><li>Install an <strong>IDE</strong> (IDE
 A IntelliJ is recommended (and free to Tapestry committers), but Eclipse will 
also work. NetBeans is reported to work as 
well.</li><li><strong>Firefox</strong>: For Tapestry 5.4.x and earlier, install 
Firefox browser <a class="external-link" 
href="https://ftp.mozilla.org/pub/firefox/releases/42.0/"; 
rel="nofollow">version 42</a> or earlier, needed for the integration tests 
(because newer versions require a newer version of Selenium than Tapestry's 
Java version requirements allow).</li><li><s>Set the Firefox browser's 
"preferred language" to English (en), because some tests will otherwise 
fail.</s> (Fixed; see <a class="external-link" 
href="https://issues.apache.org/jira/browse/TAP5-2413";>TAP5-2413</a>)</li><li>Install
 a <strong>Git</strong> client<ul><li>Command-line users: <a 
class="external-link" href="http://git-scm.com/downloads"; 
rel="nofollow">http://git-scm.com/downloads</a></li><li>Eclipse users: install 
EGit from the Eclipse Marketplace, then in In Window &gt; Preferences &gt
 ; Team &gt; Git, set your "Default repository folder" (e.g. <code>~/git</code> 
or <code>%HOME%\git</code>). Note that for Eclipse 4.4 (Luna) and later Git 
support is built in.</li></ul></li><li>Install <strong>Gradle</strong> 
1.0-milestone-3 or newer (or a Gradle plugin to your IDE),<ul><li>Command-line 
users: nothing to do (Tapestry's Gradle wrapper, gradlew, will download Gradle 
automatically on first use).</li><li>Eclipse users: Install Gradle IDE (aka 
Gradle Integration for Eclipse), from the Eclipse Marketplace. Note that for 
Eclipse 4.6 (Neon) and later, Gradle support is built 
in.</li></ul></li></ul><h2 
id="BuildingTapestryfromSource-GettingStarted">Getting Started</h2><p>Please 
read <a class="external-link" 
href="https://git-wip-us.apache.org/";>https://git-wip-us.apache.org/</a> 
first.</p><p>Windows users (especialy EGit users) should probably set the 
core.autocrlf config setting to <code>false</code> so that local diffs won't 
highlight line ending differences.</p><h3 id="Bu
 ildingTapestryfromSource-ClonetheRepository">Clone the Repository</h3><p>Clone 
Tapestry from the Git repo:</p><ul><li><p>Command-line git users:</p><div 
class="table-wrap"><table class="table table-bordered 
table-responsive"><tbody><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Non Committers:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>git clone</p><a class="external-link" 
href="http://git-wip-us.apache.org/repos/asf/tapestry-5.git";>http://git-wip-us.apache.org/repos/asf/tapestry-5.git</a></td></tr><tr><td
 colspan="1" rowspan="1" class="confluenceTd"><p>Committers:</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>git clone</p><a 
class="external-link" 
href="https://git-wip-us.apache.org/repos/asf/tapestry-5.git";>https://git-wip-us.apache.org/repos/asf/tapestry-5.git</a></td></tr></tbody></table></div></li><li>Eclipse
 EGit users:<ul><li>Switch to Git perspective; then copy one of the URLs above 
into paste buffer</li><li>Right-click &gt; Paste repos
 itory path or URI. This will bring up the Clone Git Repository 
dialog.</li><li>Committers: make sure Protocol is https, and enter your Apache 
commiter LDAP user name &amp; password</li><li>click Next.</li><li>Select the 
branches you're interested in (e.g 5.3 and master), click Next</li><li>Select 
Directory to where you want the project source code (e.g. 
<code>~/git/tapestry-5</code> or 
<code>%HOME%\git\tapestry-5</code>)</li><li>Select whichever "Initial Branch" 
you're interested in (e.g. master)</li><li>Set "Remote name" to "origin" (the 
default)</li><li><strong>VERY IMPORTANT</strong>: uncheck the "Import all 
existing projects" checkbox (we'll do this using Gradle, below)</li><li>Click 
Finish. (Be patient; the clone operation might take a few 
minutes.)</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-GradlePreparation">Gradle 
Preparation</h3><ul><li>Command-line gradle users only:<ul><li>If you're using 
Eclipse but <strong>not</strong> Gradle IDE do <code>./gradlew eclipse</c
 ode></li><li>The command-line Gradle's eclipse plugin doesn't include the 
provided project dependencies; you need to add them manually (Java Build Path 
&gt; Projects &gt; Add tapestry-test). The plugin also generates a root eclipse 
project, so you'll need to delete the ".project" file in the root folder, and 
then you can import all Tapestry sub-projects at 
once.</li></ul></li><li>Eclipse Gradle IDE users:<ul><li>Switch to Java (or 
JEE) perspective and right-click &gt; Import... &gt; Gradle &gt; Gradle Project 
&gt; Next.</li><li>Set the "Root folder" to where you put your Tapestry source 
in the previous section (e.g. <code>~/git/tapestry-5</code> or 
<code>%Home%\git\tapestry-5</code>)</li><li>Click <code>Build Model. When it 
completes, s</code>elect the top-level (the top-level module and all 
sub-modules).</li><li>Be sure the "Enable dependency management" and "Create 
workingset 'tapestry-5' checkboxes are checked.</li><li>Click 
<code>Finish</code>. (Be patient; the import operation 
 might take a few minutes.)</li></ul></li><li>Eclipse EGit users: Do a Git 
"Share" on the project:<ul><li>Still in the Java (or JEE) perspective, select 
all of the Tapestry projects (top-level and sub-modules) and right-click &gt; 
Team &gt; Share Project... &gt; Git &gt; Next &gt; Ensure all are selected, 
click <code>Finish</code>.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-Antlr">Antlr</h3><p>The 
<code>tapestry-core</code> project will initially have errors because of 
missing Java classes that are produced by ANTLR the first time the project is 
built. To fix this:</p><ul><li>Eclipse Gradle IDE users:<ul><li>Right click on 
the <code>build.gradle</code> file within tapestry-core and click Run As &gt; 
"Gradle build...", check <strong>only</strong> the generateGrammarSource task, 
and change the "Name" field to something like "tapestry-core antlr", then click 
Apply and Run.</li><li>When it's finished, the antlr-generated classes (e.g. 
PropertyExpressionLexer.java) will be in c
 reated in $buildDir/generated-sources/antlr/, but Eclipse doesn't yet know 
about that path. To fix that, right click on the <code>tapestry-core</code> 
project &gt; Properties &gt; Java Build Path &gt; Source &gt; Add Folder &gt; 
find <code>tapestry-core/build/generated-sources/antlr</code> and check the 
checkbox next to it, then click <code>OK</code>.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-CoffeeScript">CoffeeScript</h3><p>If you want to 
run tests from within Eclipse, Tapestry will complain that it won't find 
certain JavaScript files that normally are generated during compile time from 
their Coffeescript sources. In order to generate the JavaScript files you need 
to have Coffeescript installed and in your path. Simply install <a 
class="external-link" href="http://nodejs.org/download/"; 
rel="nofollow">Node.js</a> and afterwards run <code>npm install -g 
coffee-script</code>. The installation should take care of 
everything.</p><ul><li>Eclipse Gradle IDE users:<ul><li>Righ
 t click on the <code>build.gradle</code> file within tapestry-core and click 
Run As &gt; "Gradle build...", check <strong>only</strong> the 
tapestry-core:compileCoffeeScript and tapestry-core:compileTestCoffeeScript 
tasks, and change the "Name" field to something like "tapestry-core 
coffeescript", then click Apply and Run.</li><li>When it's finished, the 
coffeescript-generated JavaScript files (e.g. t5-core-dom-jquery.js) will be in 
created in $buildDir/generated-sources/compiled-coffeescript/ and 
$buildDir/generated-sources/compiled-test-coffeescript/, but Eclipse doesn't 
yet know about that path. To fix that, right click on the 
<code>tapestry-core</code> project &gt; Properties &gt; Java Build Path &gt; 
Source &gt; Add Folder &gt; find 
<code>tapestry-core/build/generated-sources/compiled-coffeescript</code> and 
<code>tapestry-core/build/generated-sources/compiled-test-coffeescript</code> 
and check the checkbox next to it, then click 
<code>OK</code>.</li></ul></li></ul><h3 id="Buil
 
dingTapestryfromSource-GenerateCoffeeScriptandAntlrfilesautomaticallywhenchanged">Generate
 CoffeeScript and Antlr files automatically when changed</h3><p>If you want to 
have Eclipse compile the JavaScript files and lexer classes from their 
Coffeescript sources and Antlr files automatically when they change, you can do 
that by configuring an additional builder for the <code>tapestry-core</code> 
project:</p><ul><li>Eclipse Gradle IDE users:<ul><li>Right click on the 
<code>tapestry-core</code> project and select properties.</li><li>Select the 
"Builders" entry from the list on the left and click "New.." in the right 
panel.</li><li>Select "Program" and click "Ok".</li><li>Give the program a 
meaningful name, e.g. "compile coffeescript and antlr".</li><li>Switch to the 
"Main" tab.</li><li>For "Location:" click "Browse Workspace..." and select 
gradlew (for Mac/Linux) or <code>gradlew.bat (for Windows)</code> in the 
Tapestry root project. If the root project is called "tapestry-5" the entry 
 should look similar to "${workspace_loc:/tapestry-5/gradlew.bat}".</li><li>For 
"Working Directory:" click "Browse Workspace..." and select the Tapestry root 
project.</li><li>For "Arguments:" enter 
<code>tapestry-core:generateGrammarSource tapestry-core:compileCoffeeScript 
tapestry-core:compileTestCoffeeScript</code></li><li>Switch to the "Build 
Options" tab.</li><li>Make sure that only "Allocate Console", "After a 
"Clean"", "During manual builds", "During auto builds" and "Specify working set 
of relevant resources" are checked.</li><li>Click "Specify 
Resources...".</li><li>From the "tapestry-core" project select 
"src/main/antlr", "src/main/coffeescript", and 
"src/test/coffeescript".</li><li>Click "Finish".</li><li>Click 
"OK".</li><li>Click "OK".</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-Building">Building</h3><p>You can build 
individual modules, or (from the root folder) build 
everything.</p><ul><li>Command-line users: *( "gradlew" is the gradle wrapper 
shell script (gra
 dlew) or batch file (gradlew.bat) found in the root folder of the Tapestry 
source.<ul><li><code>./gradlew build</code></li></ul></li><li>Eclipse Gradle 
IDE users:<ul><li>Right click on the top-level project (or any sub-project) and 
select Run As &gt; Gradle Build..., which starts an External Tools 
Configuration dialog box. Enter a reasonable name, select the tasks you want to 
run (for example, tapestry-core/install), and click Run.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-SeleniumSetup">Selenium Setup</h3><p>It is 
necessary that you have a compatible version of Firefox installed. &#160;On a 
Mac, you should install it in ~/Applications (rather than 
/Applications).</p><p>You should modify your ~/.bash_profile (or equivalent), 
to add ~/Applications/Firefox.app/Contents/MacOS to the PATH variable.</p><h3 
id="BuildingTapestryfromSource-RunningIndividualTests">Running Individual 
Tests</h3><p>Eclipse users:</p><ul><li>Install the <a class="external-link" 
href="http://testng.or
 g/doc/eclipse.html" rel="nofollow">TestNG plugin</a> to allow running of 
individual TestNG unit tests from within in Eclipse.</li><li>Right-click on any 
test class and select Run As &gt;TestNG Test</li></ul><p>Command-line 
users:</p><ul><li>./gradlew -Dtest.single=myclassname</li><li>./gradlew 
-Dtest.single=myclassname.mymethod</li></ul><p>where myclassname is the test 
class, such as FormTest</p><p>The Tapestry integration tests will repeatedly 
start up a Firefox browser.</p><ul><li>Ensure that your environment will allow 
a connection to <a class="external-link" href="https://localhost:9090"; 
rel="nofollow">https://localhost:9090</a></li></ul><h3 
id="BuildingTapestryfromSource-SkippingTests">Skipping Tests</h3><p>Running the 
Tapestry integration tests can take 10 minutes or more (mostly because of 
Selenium tests, which repeatedly start and stop the Firefox browser), so you 
won't want to run them every time you try a change.</p><ul><li>Command-line 
users:<ul><li><code>To build while s
 kipping all tests: ./gradlew build -x test</code></li><li>You can skip tests 
on a specific module by adding a colon and the module name. For example: 
<code>-x test:tapestry-ioc</code></li></ul></li><li>Eclipse Gradle IDE 
users:<ul><li>In your External Tools Configuration, add the same -x test option 
as above at Arguments &gt; Program Arguments.</li></ul></li></ul><h3 
id="BuildingTapestryfromSource-RunningtheIntegrationTestAppsManually">Running 
the Integration Test Apps Manually</h3><p>The Tapestry source includes several 
small web apps that are used by the automated Selenium integration tests. You 
can also run these apps manually to try out nearly every browser-visible aspect 
of Tapestry. Just invoke the corresponding Gradle tasks. This is mainly useful 
when debugging failing selenium tests.</p><ul><li>Command-line 
users:<ul><li>./gradlew runTestApp1</li></ul></li><li>Eclipse users:<ul><li>Use 
the run-jetty-run plugin in Eclipse, with the context directory selected from 
among the <c
 ode>test</code> context directories. For example, in the tapestry-core module, 
right click on the /src/test/app1 (or app2, etc) folder, and select Run As &gt; 
Run Jetty, then open your browser to <a class="external-link" 
href="http://localhost:8080/tapestry-core"; 
rel="nofollow">http://localhost:8080/tapestry-core</a></li></ul></li></ul><p>The
 integration test apps are:</p><ul><li>activationctx&#160;&#8211; used 
by&#160;tapestry-core integration tests</li><li>activationctx2&#160;&#8211; 
used by&#160;tapestry-core integration tests</li><li>app0&#160;&#8211; used 
only by the tapestry-hibernate integration tests</li><li><strong>app1 
&#8211;&#160;used by most of the tapestry-core integration 
tests</strong></li><li>app2&#160;&#8211; used by tapestry-core integration 
tests (HTTPS)app3&#160;&#8211; used by&#160;tapestry-core integration 
tests</li><li>app4&#160;&#8211; used by&#160;tapestry-core integration 
tests</li><li>app5&#160;&#8211; used by&#160;tapestry-core integration 
tests</li><li>
 <em>appfolder</em> &#160;&#8211; used by&#160;tapestry-core integration 
tests</li><li>cluster&#160;&#8211; used by&#160;tapestry-core integration 
tests</li><li>linktrans&#160;&#8211; used by&#160;tapestry-core integration 
tests</li><li>symbolparam&#160;&#8211; used by&#160;tapestry-core integration 
tests</li><li>(...and a few others not yet documented, and without Gradle tasks 
yet. Search for web.xml files in the Tapestry source.)</li></ul><h3 
id="BuildingTapestryfromSource-MakingCodeChanges">Making Code 
Changes</h3><p>Once you have cloned or pulled the latest changes to your local 
Git repository, you can start working on it. Whenever you make some changes to 
the codebase, it's good to have a related issue filed in JIRA and to use a 
similarly named branch in your local Git repository. For example, to create a 
branch for an issue with the key TAP5-123:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre><code class="language-java">git branch TAP5-123 origin/master</code></pre>
 </div></div><p>With per-issue branches you can easily switch back and forth 
between different issues without worrying about unwanted side-effects from 
unfinished changes to other issues. Whenever you want to work on the TAP5-123 
example issue, simply checkout that branch and start making your 
changes:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <pre><code class="language-java">git checkout TAP5-123</code></pre>
@@ -216,4 +216,4 @@ http://localhost:9090/&amp;debugMode=fal
 </footer><br clear="none"></p><p><br clear="none"></p></div>
   <!-- /// Footer End -->
 </body>
-</html>
\ No newline at end of file
+</html>

Modified: websites/production/tapestry/content/built-in-mixins.html
==============================================================================
--- websites/production/tapestry/content/built-in-mixins.html (original)
+++ websites/production/tapestry/content/built-in-mixins.html Fri May  1 
00:29:08 2020
@@ -19,24 +19,24 @@
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta name="keywords" content="tapestry, apache, apache tapestry, frameowrk, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
+  <meta name="keywords" content="tapestry, apache, apache tapestry, framework, 
java, web, component, open source, application, dynamic, scalable, robust, 
servlet">
   <meta name="description" content="Apache Tapestry is a open-source 
component-oriented 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.">
 
   <title>
           Built-in Mixins - Apache Tapestry
       </title>
 
-  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="images/apache-tapestry-5-icon-144.png">
-  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="images/apache-tapestry-5-icon-114.png">
-  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="images/apache-tapestry-5-icon-72.png">
-  <link rel="apple-touch-icon-precomposed" 
href="images/apache-tapestry-5-icon-57.png">
-  <link rel="shortcut icon" href="images/apache-tapestry-5-icon-32.png">
+  <link rel="apple-touch-icon-precomposed" sizes="144x144" 
href="/images/apache-tapestry-5-icon-144.png">
+  <link rel="apple-touch-icon-precomposed" sizes="114x114" 
href="/images/apache-tapestry-5-icon-114.png">
+  <link rel="apple-touch-icon-precomposed" sizes="72x72" 
href="/images/apache-tapestry-5-icon-72.png">
+  <link rel="apple-touch-icon-precomposed" 
href="/images/apache-tapestry-5-icon-57.png">
+  <link rel="shortcut icon" href="/images/apache-tapestry-5-icon-32.png">
 
   <link rel="stylesheet" 
href="https://fonts.googleapis.com/css2?family=Sarabun:ital,wght@0,400;0,700;1,400;1,700&display=swap";>
 
   <link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"; 
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
 crossorigin="anonymous">
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css";>
   <link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.20.0/themes/prism.min.css";>
-    <link rel="stylesheet" href="/styles/main.css">
+  <link rel="stylesheet" href="/styles/main.css">
 
   <script type="text/javascript">
     if (window.location.protocol === 'http:' && window.location.hostname !== 
'localhost') {
@@ -55,7 +55,7 @@
     ga('create', 'UA-400821-1', 'auto');
     ga('send', 'pageview');
   </script>
-  <script async src='https://www.google-analytics.com/analytics.js'></script>
+  <script async src="https://www.google-analytics.com/analytics.js";></script>
 </head>
 <body>
   <!-- /// Navigation Start -->
@@ -142,7 +142,7 @@
             
             <!-- /// Content Start -->
             <div id="content">
-                            <div id="ConfluenceContent"><p>Tapestry includes 
the following mixins out-of-the-box.</p><div class="table-wrap"><table 
class="table table-bordered"><tbody><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/Autocomplete.html";>Autocomplete</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>modifies a text field to 
provide for auto-completion of text using values retrieved from the server as 
the user types. <a href="ajax-and-zones.html">See 
instructions</a>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/Confirm.html";>Confirm</a></td><td
 colspan="1" rowspan="1" class="confluenceTd">attached to a Form or link 
component, runs a modal-dialog to force the user to confirm the behavior. New 
for Tapestry 5.4.</t
 d></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/DiscardBody.html";>DiscardBody</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>discards a component's body. 
Returns false from the BeforeRenderBody phase, which prevents the rendering of 
the body.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/FormFieldFocus.html";>FormFieldFocus</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>instruments the outer Form on 
which component the focus should be activated. Replaced by OverrideFieldFocus 
starting in Tapestry 5.4.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/FormGroup.html";>FormGro
 up</a></td><td colspan="1" rowspan="1" class="confluenceTd">attaches to a 
field to render an enclosing &lt;div&gt; element and label for proper Bootstrap 
markup of text fields, selects, and textareas</td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/NotEmpty.html";>NotEmpty</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>attaches to any component that 
renders an element. At the end of the render, if the element is empty, then a 
non-breaking space (&amp;nbsp;) is injected into the 
element.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/OverrideFieldFocus.html";>OverrideFieldFocus</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>when attached to a form field, 
causes that field to gain focus. Starting in 
 Tapestry 5.4, this supersedes FormFieldFocus.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/RenderClientId.html";>RenderClientId</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>forces a client element to 
render its client id by ensuring that "getClientId" is 
called.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/RenderDisabled.html";>RenderDisabled</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>renders a "disabled" attribute 
if the containing component is disabled</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/RenderInformals.html";>RenderInformals</a></p></td><td
  colspan="1" rowspan="1" class="confluenceTd"><p>renders out all informal 
parameters, at the end of the BeginRender phase. This mixin can be used with 
components that render a single tag inside the BeginRender 
phase.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/RenderNotification.html";>RenderNotification</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>triggers component event 
notifications when the attached component enters its BeginRender and 
AfterRender render phases.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/TriggerFragment.html";>TriggerFragment</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>when applied to a Checkbox or 
Radio component, links the input field and a FormFragment, ma
 king the field control the client-side visibility of the 
FormFragment</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/ZoneRefresh.html";>ZoneRefresh</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>periodically refreshes a Zone 
by triggering an event on the server using ajax 
requests.</p></td></tr></tbody></table></div></div>
+                            <div id="ConfluenceContent"><p>Tapestry includes 
the following mixins out-of-the-box.</p><div class="table-wrap"><table 
class="table table-bordered table-responsive"><tbody><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/Autocomplete.html";>Autocomplete</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>modifies a text field to 
provide for auto-completion of text using values retrieved from the server as 
the user types. <a href="ajax-and-zones.html">See 
instructions</a>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/Confirm.html";>Confirm</a></td><td
 colspan="1" rowspan="1" class="confluenceTd">attached to a Form or link 
component, runs a modal-dialog to force the user to confirm the behavior. New 
for
  Tapestry 5.4.</td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/DiscardBody.html";>DiscardBody</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>discards a component's body. 
Returns false from the BeforeRenderBody phase, which prevents the rendering of 
the body.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/FormFieldFocus.html";>FormFieldFocus</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>instruments the outer Form on 
which component the focus should be activated. Replaced by OverrideFieldFocus 
starting in Tapestry 5.4.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/FormGr
 oup.html">FormGroup</a></td><td colspan="1" rowspan="1" 
class="confluenceTd">attaches to a field to render an enclosing &lt;div&gt; 
element and label for proper Bootstrap markup of text fields, selects, and 
textareas</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/NotEmpty.html";>NotEmpty</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>attaches to any component that 
renders an element. At the end of the render, if the element is empty, then a 
non-breaking space (&amp;nbsp;) is injected into the 
element.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/OverrideFieldFocus.html";>OverrideFieldFocus</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>when attached to a form field, 
causes that field to gain fo
 cus. Starting in Tapestry 5.4, this supersedes 
FormFieldFocus.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/RenderClientId.html";>RenderClientId</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>forces a client element to 
render its client id by ensuring that "getClientId" is 
called.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/RenderDisabled.html";>RenderDisabled</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>renders a "disabled" attribute 
if the containing component is disabled</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/RenderInformals.html";>RenderInformal
 s</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>renders out 
all informal parameters, at the end of the BeginRender phase. This mixin can be 
used with components that render a single tag inside the BeginRender 
phase.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a 
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/RenderNotification.html";>RenderNotification</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>triggers component event 
notifications when the attached component enters its BeginRender and 
AfterRender render phases.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/TriggerFragment.html";>TriggerFragment</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>when applied to a Checkbox or 
Radio component, links the input field and a
  FormFragment, making the field control the client-side visibility of the 
FormFragment</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/ZoneRefresh.html";>ZoneRefresh</a></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>periodically refreshes a Zone 
by triggering an event on the server using ajax 
requests.</p></td></tr></tbody></table></div></div>
             </div>
             <!-- /// Content End -->
           </div>
@@ -196,4 +196,4 @@
 </footer><br clear="none"></p><p><br clear="none"></p></div>
   <!-- /// Footer End -->
 </body>
-</html>
\ No newline at end of file
+</html>


Reply via email to