Author: lukaszlenart
Date: Fri Nov 14 07:43:54 2014
New Revision: 929145

Log:
Updates production

Added:
    
websites/production/struts/content/development/2.x/docs/version-notes-2319.html
    
websites/production/struts/content/release/2.3.x/docs/version-notes-2319.html
Modified:
    
websites/production/struts/content/development/2.x/docs/building-struts-2-normal-release.html
    websites/production/struts/content/development/2.x/docs/model-driven.html
    websites/production/struts/content/development/2.x/docs/rest-plugin.html
    websites/production/struts/content/development/2.x/docs/security.html
    websites/production/struts/content/release/2.3.x/docs/actionmapper.html
    
websites/production/struts/content/release/2.3.x/docs/building-struts-2-normal-release.html
    websites/production/struts/content/release/2.3.x/docs/file-upload.html
    websites/production/struts/content/release/2.3.x/docs/guides.html
    websites/production/struts/content/release/2.3.x/docs/interceptors.html
    websites/production/struts/content/release/2.3.x/docs/migration-guide.html
    websites/production/struts/content/release/2.3.x/docs/model-driven.html
    websites/production/struts/content/release/2.3.x/docs/rest-plugin.html
    websites/production/struts/content/release/2.3.x/docs/security.html
    websites/production/struts/content/release/2.3.x/docs/sitegraph-plugin.html
    websites/production/struts/content/release/2.3.x/docs/spring-plugin.html
    websites/production/struts/content/release/2.3.x/docs/type-conversion.html
    websites/production/struts/content/release/2.3.x/docs/validation.html
    
websites/production/struts/content/release/2.3.x/docs/version-notes-2318.html

Modified: 
websites/production/struts/content/development/2.x/docs/building-struts-2-normal-release.html
==============================================================================
--- 
websites/production/struts/content/development/2.x/docs/building-struts-2-normal-release.html
 (original)
+++ 
websites/production/struts/content/development/2.x/docs/building-struts-2-normal-release.html
 Fri Nov 14 07:43:54 2014
@@ -139,33 +139,39 @@ under the License. 
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><h1 
id="BuildingStruts2-Normalrelease-Content">Content</h1><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1411293680771 {padding: 0px;}
-div.rbtoc1411293680771 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1411293680771 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1415950672619 {padding: 0px;}
+div.rbtoc1415950672619 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1415950672619 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1411293680771">
+/*]]>*/</style></p><div class="toc-macro rbtoc1415950672619">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Gettingready">Getting 
ready</a></li><li><span class="TOCOutline">2</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-UpdateDraftDocswhenneeded">Update Draft 
Docs when needed</a></li><li><span class="TOCOutline">3</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Besureyourlocalcopyisup-to-date">Be sure 
your local copy is up-to-date</a></li><li><span class="TOCOutline">4</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Createareleasebranch">Create 
a release branch</a></li><li><span class="TOCOutline">5</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Preparerelease">Prepare 
release</a></li><li><span class="TOCOutline">6</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Performtherelease">Perform the 
release</a></li><li><span class="TOCOutline">7</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Movetheasse
 mblies">Move the assemblies</a></li><li><span class="TOCOutline">8</span> <a 
shape="rect" 
href="#BuildingStruts2-Normalrelease-Announceavailability">Announce 
availability</a></li><li><span class="TOCOutline">9</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Cleanuprepository">Clean up 
repository</a></li><li><span class="TOCOutline">10</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Voteonit">Vote on it</a></li><li><span 
class="TOCOutline">11</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Copyfiles">Copy files</a></li><li><span 
class="TOCOutline">12</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Promoterelease">Promote 
release</a></li><li><span class="TOCOutline">13</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Cleanupoldreleases">Clean up old 
releases</a></li><li><span class="TOCOutline">14</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Waitforrsync">Wait for 
rsync</a></li><li><span class="TOCOutline">15</s
 pan> <a shape="rect" href="#BuildingStruts2-Normalrelease-Updatesite">Update 
site</a></li><li><span class="TOCOutline">16</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Redeploythedraftdocs(Optional)">Redeploy 
the draft docs (Optional)</a></li><li><span class="TOCOutline">17</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Postannouncements">Post 
announcements</a></li></ul>
 </div><h2 id="BuildingStruts2-Normalrelease-BuildingSteps(Struts)">Building 
Steps (Struts)</h2><h3 id="BuildingStruts2-Normalrelease-Gettingready">Getting 
ready</h3><ol><li>Create an "Struts 2.x.y omnibus ticket" ticket in JIRA to 
refer to in upcoming release related commit comments and for general 
documentation purposes. Mark it with priority "Blocker".</li><li>Switch to 
branch&#160;<code>develop</code></li><li>Ensure that the master POM and Struts 
Annotations have current releases</li><li>Review JIRA for any issues without a 
fix version set, and for any issues that should be resolved for the pending 
release.</li><li>Ensure that there are no repositories or pluginRepositories 
listed in the poms.</li><li>If you have committed all changes regarding the 
release process, close the omnibus ticket as it is the last open ticket for the 
upcoming release</li><li>Release the upcoming version in JIRA (under 
Administration/Manage Releases) and tag the release date</li><li>Add next 
milestone ve
 rsion to the JIRA roadmap</li><li>Create DONE and TODO filters for the new 
version, share with all, and remove obsolete TODO filter</li><li>Create a new 
Version Notes page in Confluence, link from <a shape="rect" 
href="migration-guide.html">Migration Guide</a>, and link to prior release page 
and JIRA DONE filters of the version to release</li><li>Export wiki pages and 
put them under&#160;<code>/docs</code></li></ol><h3 
id="BuildingStruts2-Normalrelease-UpdateDraftDocswhenneeded">Update Draft Docs 
when needed</h3><p>Checkout&#160;<code>struts-site</code> project (see details 
at the bottom of this page) and perform export:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[cd struts-site
 mvn package]]></script>
 </div></div><p>If build will fail try again - don't 
use&#160;<code>clean</code>, the exporter is going to update only outdated 
pages. After successful export, commit updated files 
into&#160;<code>struts-production</code></p><h3 
id="BuildingStruts2-Normalrelease-Besureyourlocalcopyisup-to-date">Be sure your 
local copy is up-to-date</h3><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[git checkout develop
-git pull
-git fetch origin --prune]]></script>
-</div></div><h3 id="BuildingStruts2-Normalrelease-Createareleasebranch">Create 
a release branch</h3><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[git fetch origin --prune
+git checkout develop
+git pull]]></script>
+</div></div>    <div class="aui-message warning shadowed information-macro">
+                            <span class="aui-icon icon-warning">Icon</span>
+                <div class="message-content">
+                            <p>Please remember to keep BOM subproject in sync 
- 
<code>&lt;struts-version.version&gt;X.X.X&lt;/struts-version.version&gt;</code> 
- must be the same as the parent pom.</p>
+                    </div>
+    </div>
+<h3 id="BuildingStruts2-Normalrelease-Createareleasebranch">Create a release 
branch</h3><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[git flow release start X.X.X.X
 git flow release publish X.X.X.X]]></script>
-</div></div><p>Now you should be on&#160;<code>release/X.X.X.X</code> branch 
(<code>git status</code>&#160;supposed to confirm that). You must push changes 
to remote repo as the Release plugins will push changes to remote as 
well.</p><h3 id="BuildingStruts2-Normalrelease-Preparerelease"><span 
style="line-height: 1.5625;">Prepare release</span></h3><p>Tag the release by 
using the "release:prepare" goal of Maven:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[mvn release:prepare 
-DautoVersionSubmodules=true -Dusername=yourSvnUsername 
-Dpassword=yourSvnPassword
+</div></div><p>Now you should be on&#160;<code>release/X.X.X.X</code> branch 
(<code>git status</code>&#160;supposed to confirm that). You must push changes 
to remote repo as the Release plugins will push changes to remote as well (it's 
already done after publishing release).</p><h3 
id="BuildingStruts2-Normalrelease-Preparerelease"><span style="line-height: 
1.5625;">Prepare release</span></h3><p>Tag the release by using the 
"release:prepare" goal of Maven:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[mvn release:prepare 
-DautoVersionSubmodules=true
 ]]></script>
 </div></div><p>For a <a shape="rect" class="external-link" 
href="http://maven.apache.org/plugins/maven-release-plugin/usage.html";>dry 
run</a>, add <code>-DdryRun=true</code>. If you do a dry run, use <code>mvn 
release:clean</code> to clean up after you have looked at the 
output.</p><p>When prompted for the SCM tag name, follow this pattern: 
STRUTS_2_3_[PATCH_VERSION]</p>    <div class="aui-message warning shadowed 
information-macro">
                             <span class="aui-icon icon-warning">Icon</span>
                 <div class="message-content">
-                            <p>If you get an error message, try to re-run 
<code>mvn release:prepare -Dusername=yourSvnUsername -Dpassword=yourSvnPassword 
-DautoVersionSubmodules=true</code> command again, <code>-Dresume</code> flag 
is set to true by default and the plugin will resume the release process from 
where it failed before.</p>
+                            <p>If you get an error message, try to re-run 
<code>mvn release:prepare -DautoVersionSubmodules=true</code> command again, 
<code>-Dresume</code> flag is set to true by default and the plugin will resume 
the release process from where it failed before.</p>
                     </div>
     </div>
 <p>Follow the link to get&#160;<a shape="rect" class="external-link" 
href="http://maven.apache.org/plugins/maven-release-plugin/examples/prepare-release.html";>more
 information</a>&#160;about performed operation by release plugin.</p><h3 
id="BuildingStruts2-Normalrelease-Performtherelease">Perform the 
release</h3><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[mvn release:perform -Dusername=yourSvnUsername
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[mvn release:perform
 ]]></script>
 </div></div><p>Follow the link to get&#160;<a shape="rect" 
class="external-link" 
href="http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html";>more
 information</a>&#160;about performed operation by release plugin.&#160;<span 
style="line-height: 1.4285715;">After this step the artifacts will be hosted by 
</span><a shape="rect" class="external-link" 
href="http://repository.apache.org/"; style="line-height: 
1.4285715;">Nexus</a>.</p><p>If you need to run perform again, (or in a 
different box), do:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[git checkout STRUTS_2_3_[PATCH_VERSION]
@@ -214,7 +220,13 @@ rm *.asc.sha1
 </div></div><p>This will remove the branch from the remote, now we can merge 
once more the release branch (when on <code>develop</code>) and remove 
it</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[git merge --no-ff release/X.X.X.X
 git branch -d release/X.X.X.X]]></script>
-</div></div><p>Now both&#160;<code>master</code> and&#160;<code>develop</code> 
branches should be up to date with the changes introduced by the 
release.</p><h3 id="BuildingStruts2-Normalrelease-Voteonit">Vote on 
it</h3><p>Post a release/quality vote to the dev list (and 
<strong>only</strong> the dev list). The example mail is on <a shape="rect" 
href="sample-announcements.html">Sample announcements</a> page. <br 
clear="none"> If the vote result is for an ASF release (i.e. not test build), 
update site, announce. If the vote result is for GA, push to central.</p><h3 
id="BuildingStruts2-Normalrelease-Copyfiles">Copy files</h3><p>After the vote, 
if the distribution is being mirrored (there was a favourable release vote) 
copy the Sources and Binaries:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>Now both&#160;<code>master</code> and&#160;<code>develop</code> 
branches should be up to date with the changes introduced by the release.</p>   
 <div class="aui-message warning shadowed information-macro">
+                            <span class="aui-icon icon-warning">Icon</span>
+                <div class="message-content">
+                            <p>Do not remove the tag! It clearly indicates 
what was planned and it can be used as a history marker. Always used the next 
version number, do not redeploy the same version as it breaks Maven's policy 
and you will have to manually clean up Maven repository.</p>
+                    </div>
+    </div>
+<h3 id="BuildingStruts2-Normalrelease-Voteonit">Vote on it</h3><p>Post a 
release/quality vote to the dev list (and <strong>only</strong> the dev list). 
The example mail is on <a shape="rect" href="sample-announcements.html">Sample 
announcements</a> page. <br clear="none"> If the vote result is for an ASF 
release (i.e. not test build), update site, announce. If the vote result is for 
GA, push to central.</p><h3 id="BuildingStruts2-Normalrelease-Copyfiles">Copy 
files</h3><p>After the vote, if the distribution is being mirrored (there was a 
favourable release vote) copy the Sources and Binaries:</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[ssh people.apache.org
 cd /www/people.apache.org/builds/struts/$VERSION
 cp struts-$VERSION-src.*  /www/www.apache.org/dist/struts/source

Modified: 
websites/production/struts/content/development/2.x/docs/model-driven.html
==============================================================================
--- websites/production/struts/content/development/2.x/docs/model-driven.html 
(original)
+++ websites/production/struts/content/development/2.x/docs/model-driven.html 
Fri Nov 14 07:43:54 2014
@@ -138,18 +138,8 @@ under the License. 
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><p>Struts 2 does not have "forms" like 
Struts 1 did. In Struts 2 request parameters are bound directly to fields in 
the actions class, and this class is placed on top of the stack when the action 
is executed. </p>
-
-<p>If an action  class implements the interface 
<code>com.opensymphony.xwork2.ModelDriven</code> then it needs to return an 
object from the <code>getModel()</code> method. Struts will then populate the 
fields of this object with the request parameters, and this object will be 
placed on top of the stack once the action is executed. Validation will also be 
performed on this model object, instead of the action. </p>
-
-<h2 id="ModelDriven-Interceptor">Interceptor</h2>
-<p>To use <code>ModelDriven</code> actions, make sure that the <a shape="rect" 
href="model-driven-interceptor.html">Model Driven Interceptor</a> is applied to 
your action. This interceptor is part of the default interceptor stack 
<code>defaultStack</code> so it is applied to all actions by default. </p>
-
-<h2 id="ModelDriven-Example">Example</h2>
-<p>Action class:</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-public class ModelDrivenAction implements ModelDriven { 
+            <div id="ConfluenceContent"><p>Struts 2 does not have "forms" like 
Struts 1 did. In Struts 2 request parameters are bound directly to fields in 
the actions class, and this class is placed on top of the stack when the action 
is executed.</p><p>If an action class implements the interface 
<code>com.opensymphony.xwork2.ModelDriven</code> then it needs to return an 
object from the <code>getModel()</code> method. Struts will then populate the 
fields of this object with the request parameters, and this object will be 
placed on top of the stack once the action is executed. Validation will also be 
performed on this model object, instead of the action. Please read 
about&#160;<a shape="rect" 
href="visitorfieldvalidator-annotation.html">VisitorFieldValidator 
Annotation</a> which can help you validate model's fields.</p><h2 
id="ModelDriven-Interceptor">Interceptor</h2><p>To use <code>ModelDriven</code> 
actions, make sure that the <a shape="rect" 
href="model-driven-interceptor.html">M
 odel Driven Interceptor</a> is applied to your action. This interceptor is 
part of the default interceptor stack <code>defaultStack</code> so it is 
applied to all actions by default.</p><h2 
id="ModelDriven-Example">Example</h2><p>Action class:</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[public class ModelDrivenAction implements 
ModelDriven { 
     public String execute() throws Exception {
         return SUCCESS;
     }
@@ -159,11 +149,8 @@ public class ModelDrivenAction implement
     }
 }
 ]]></script>
-</div></div>
-<p>Gangster class (model):</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-public class Gangster implements Serializable {
+</div></div><p>Gangster class (model):</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[public class Gangster implements Serializable 
{
     private String name;
     private int age;
     private String description;
@@ -195,11 +182,8 @@ public class Gangster implements Seriali
     }
 }
 ]]></script>
-</div></div>
-<p>JSP for creating a Gangster:</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-&lt;s:form action=&quot;modelDrivenResult&quot; method=&quot;POST&quot; 
namespace=&quot;/modelDriven&quot;&gt;   
+</div></div><p>JSP for creating a Gangster:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;s:form 
action=&quot;modelDrivenResult&quot; method=&quot;POST&quot; 
namespace=&quot;/modelDriven&quot;&gt;   
     &lt;s:textfield label=&quot;Gangster Name&quot; name=&quot;name&quot; /&gt;
     &lt;s:textfield label=&quot;Gangster Age&quot;  name=&quot;age&quot; /&gt;
     &lt;s:checkbox  label=&quot;Gangster Busted Before&quot; 
name=&quot;bustedBefore&quot; /&gt;

Modified: 
websites/production/struts/content/development/2.x/docs/rest-plugin.html
==============================================================================
--- websites/production/struts/content/development/2.x/docs/rest-plugin.html 
(original)
+++ websites/production/struts/content/development/2.x/docs/rest-plugin.html 
Fri Nov 14 07:43:54 2014
@@ -145,11 +145,11 @@ under the License. 
                     </div>
     </div>
 <p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1405758685177 {padding: 0px;}
-div.rbtoc1405758685177 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1405758685177 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1415950670950 {padding: 0px;}
+div.rbtoc1415950670950 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1415950670950 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1405758685177">
+/*]]>*/</style></p><div class="toc-macro rbtoc1415950670950">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" href="#RESTPlugin-Overview">Overview</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a 
shape="rect" href="#RESTPlugin-Features">Features</a></li><li><span 
class="TOCOutline">1.2</span> <a shape="rect" 
href="#RESTPlugin-MappingRESTURLstoStruts2Actions">Mapping REST URLs to Struts 
2 Actions</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">1.2.1</span> <a 
shape="rect" href="#RESTPlugin-RESTfulURLMappingLogic">RESTful URL Mapping 
Logic</a></li></ul>
@@ -161,7 +161,7 @@ div.rbtoc1405758685177 li {margin-left: 
 </li></ul>
 </li><li><span class="TOCOutline">2.2</span> <a shape="rect" 
href="#RESTPlugin-WriteYourControllerActions">Write Your Controller 
Actions</a></li></ul>
 </li><li><span class="TOCOutline">3</span> <a shape="rect" 
href="#RESTPlugin-AdvancedTopics">Advanced Topics</a>
-<ul class="toc-indentation"><li><span class="TOCOutline">3.1</span> <a 
shape="rect" href="#RESTPlugin-CustomContentTypeHandlers">Custom 
ContentTypeHandlers</a></li><li><span class="TOCOutline">3.2</span> <a 
shape="rect" href="#RESTPlugin-Settings">Settings</a></li></ul>
+<ul class="toc-indentation"><li><span class="TOCOutline">3.1</span> <a 
shape="rect" href="#RESTPlugin-CustomContentTypeHandlers">Custom 
ContentTypeHandlers</a></li><li><span class="TOCOutline">3.2</span> <a 
shape="rect" href="#RESTPlugin-UseJacksonframeworkasJSONContentTypeHandler">Use 
Jackson framework as JSON ContentTypeHandler</a></li><li><span 
class="TOCOutline">3.3</span> <a shape="rect" 
href="#RESTPlugin-Settings">Settings</a></li></ul>
 </li><li><span class="TOCOutline">4</span> <a shape="rect" 
href="#RESTPlugin-Resources">Resources</a></li><li><span 
class="TOCOutline">5</span> <a shape="rect" 
href="#RESTPlugin-VersionHistory">Version History</a></li></ul>
 </div><h2 id="RESTPlugin-Overview">Overview</h2><p>The REST Pluginprovides 
high level support for the implementation of RESTful resource based web 
applicationsThe REST plugin can cooperate with the <a shape="rect" 
href="convention-plugin.html">Convention Plugin</a> to support a zero 
configuration approach to declaring your actions and results, but you can 
always use the REST plugin with XML style configuration if you like.</p><p>If 
you prefer to see a working code example, instead of reading through an 
explanation, you can download the <a shape="rect" class="external-link" 
href="http://struts.apache.org/2.x/index.html";>struts2 sample apps</a> and 
check out the <code>struts2-rest-showcase</code> application, a complete WAR 
file, that demonstrates a simple REST web program.</p><h3 
id="RESTPlugin-Features">Features</h3><ul><li>Ruby on Rails REST-style 
URLs</li><li>Zero XML config when used with Convention Plugin</li><li>Built-in 
serialization and deserialization support for XML and JSO
 N</li><li>Automatic error handling</li><li>Type-safe configuration of the HTTP 
response</li><li>Automatic conditional GET support</li></ul><h3 
id="RESTPlugin-MappingRESTURLstoStruts2Actions">Mapping REST URLs to Struts 2 
Actions</h3><p>The main functionality of the REST plugin lies in the 
interpretation of incoming request URL's according the RESTful rules. In the 
Struts 2 framework, this 'mapping' of request URL's to Actions is handled by in 
implementation of the <a shape="rect" class="external-link" 
href="http://struts.apache.org/2.x/struts2-core/apidocs/org/apache/struts2/dispatcher/mapper/ActionMapper.html";><code>ActionMapper</code></a>
 interface. Out of the box, Struts 2 uses the <a shape="rect" 
class="external-link" 
href="http://struts.apache.org/2.x/struts2-core/apidocs/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.html";><code>DefaultActionMapper</code></a>
 to map URL's to Actions via the logic you are probably already familiar 
with.</p>    <div class="aui-message 
 warning shadowed information-macro">
                             <span class="aui-icon icon-warning">Icon</span>
@@ -268,7 +268,25 @@ public class OrdersController implements
 </div></div><p>Then, tell the REST Plugin to override the handler for the 
desired extension with yours. In <code>struts.properties</code>, it would look 
like this:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[struts.rest.handlerOverride.xml=myXml
 ]]></script>
-</div></div><h3 id="RESTPlugin-Settings">Settings</h3><p>The following 
settings can be customized. See the <a shape="rect" class="external-link" 
href="http://cwiki.apache.org/confluence/display/WW/Configuration+Files";>developer
 guide</a>.<br clear="none"> For more configuration options see the <a 
shape="rect" href="convention-plugin.html">Convention Plugin 
Documentation</a></p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Setting</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Possible Values</p></th></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>struts.rest.handlerOverride.EXTENSION</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>The alias for the 
<code>ContentTypeHandler</code> implementation that handles the EXTENSION val
 ue</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>N/A</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Any declared alias for a 
<code>ContentTypeHandler</code> implementation</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>struts.rest.defaultExtension</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The default extension to use 
when none is explicitly specified in the request</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>xhtml</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Any extension</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>struts.rest.validationFailureStatusCode</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>The HTTP status code to return 
on validation failure</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>400</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Any HTTP status code as 
 an integer</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>struts.rest.namespace</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Optional parameter to specify 
namespace for REST services</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>/</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>eg. /rest</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>struts.rest.content.restrictToGET</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>Optional parameter, if set to 
true blocks returning content from any other methods than GET, if set to false, 
the content can be returned for any kind of method</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>eg. put struts.rest.content.restrictToGET = 
false in struts.properties</p></td></tr></tbody></table></div><h2 
id="RESTPlugin-Resources">Resource
 s</h2><ul><li><a shape="rect" class="external-link" 
href="http://www.b-simple.de/documents"; 
rel="nofollow">http://www.b-simple.de/documents</a> - Short RESTful Rails 
tutorial (PDF, multiple languages)</li><li><a shape="rect" 
class="external-link" 
href="http://www.amazon.com/RESTful-Web-Services-Leonard-Richardson/dp/0596529260";
 rel="nofollow">RESTful Web Services</a> - Highly recommend book from 
O'Reilly</li><li><a shape="rect" class="external-link" 
href="http://raibledesigns.com/rd/entry/go_light_with_apache_struts"; 
rel="nofollow">Go Light with Apache Struts 2 and REST</a> - Presentation by Don 
Brown at ApacheCon US 2008</li></ul><h2 id="RESTPlugin-VersionHistory">Version 
History</h2><p>From Struts 2.1.1+</p></div>
+</div></div><h3 
id="RESTPlugin-UseJacksonframeworkasJSONContentTypeHandler">Use Jackson 
framework as JSON ContentTypeHandler</h3><p>The default JSON Content Handler is 
build on top of the <a shape="rect" class="external-link" 
href="http://json-lib.sourceforge.net/"; rel="nofollow">JSON-lib</a>. If you 
prefer to use the <a shape="rect" class="external-link" 
href="http://jackson.codehaus.org/"; rel="nofollow">Jackson framework</a> for 
JSON serialisation, you can configure the JacksonLibHandler as Content Handler 
for your json requests.&#160;</p><p>First you need to add the jackson 
dependency to your web application by downloading the jar file and put it under 
WEB-INF/lib or by adding following xml snippet to your dependencies section in 
the pom.xml when you are using maven as build system.</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
+    &lt;groupId&gt;org.codehaus.jackson&lt;/groupId&gt;
+    &lt;artifactId&gt;jackson-jaxrs&lt;/artifactId&gt;
+    &lt;version&gt;1.9.13&lt;/version&gt;
+&lt;/dependency&gt;
+]]></script>
+</div></div><p>Now you can overwrite the Content Handler with the Jackson 
Content Handler in the struts.xml:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;bean 
type=&quot;org.apache.struts2.rest.handler.ContentTypeHandler&quot; 
name=&quot;jackson&quot; 
class=&quot;org.apache.struts2.rest.handler.JacksonLibHandler&quot;/&gt;
+&lt;constant name=&quot;struts.rest.handlerOverride.json&quot; 
value=&quot;jackson&quot;/&gt;
+
+&lt;!-- Set to false if the json content can be returned for any kind of http 
method --&gt;
+&lt;constant name=&quot;struts.rest.content.restrictToGET&quot; 
value=&quot;false&quot;/&gt; 
+
+&lt;!-- Set encoding to UTF-8, default is ISO-8859-1 --&gt;
+&lt;constant name=&quot;struts.i18n.encoding&quot; 
value=&quot;UTF-8&quot;/&gt; 
+
+]]></script>
+</div></div><p>&#160;</p><h3 id="RESTPlugin-Settings">Settings</h3><p>The 
following settings can be customized. See the <a shape="rect" 
class="external-link" 
href="http://cwiki.apache.org/confluence/display/WW/Configuration+Files";>developer
 guide</a>.<br clear="none"> For more configuration options see the <a 
shape="rect" href="convention-plugin.html">Convention Plugin 
Documentation</a></p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Setting</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Possible Values</p></th></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>struts.rest.handlerOverride.EXTENSION</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>The alias for the 
<code>ContentTypeHandler</code> implementation that handles the 
 EXTENSION value</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>N/A</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Any declared alias for a 
<code>ContentTypeHandler</code> implementation</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>struts.rest.defaultExtension</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The default extension to use 
when none is explicitly specified in the request</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>xhtml</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Any extension</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>struts.rest.validationFailureStatusCode</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>The HTTP status code to return 
on validation failure</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>400</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Any HTTP st
 atus code as an integer</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>struts.rest.namespace</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Optional parameter to specify 
namespace for REST services</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>/</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>eg. /rest</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>struts.rest.content.restrictToGET</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>Optional parameter, if set to 
true blocks returning content from any other methods than GET, if set to false, 
the content can be returned for any kind of method</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>eg. put struts.rest.content.restrictToGET = 
false in struts.properties</p></td></tr></tbody></table></div><h2 
id="RESTPlugin-Resour
 ces">Resources</h2><ul><li><a shape="rect" class="external-link" 
href="http://www.b-simple.de/documents"; 
rel="nofollow">http://www.b-simple.de/documents</a> - Short RESTful Rails 
tutorial (PDF, multiple languages)</li><li><a shape="rect" 
class="external-link" 
href="http://www.amazon.com/RESTful-Web-Services-Leonard-Richardson/dp/0596529260";
 rel="nofollow">RESTful Web Services</a> - Highly recommend book from 
O'Reilly</li><li><a shape="rect" class="external-link" 
href="http://raibledesigns.com/rd/entry/go_light_with_apache_struts"; 
rel="nofollow">Go Light with Apache Struts 2 and REST</a> - Presentation by Don 
Brown at ApacheCon US 2008</li></ul><h2 id="RESTPlugin-VersionHistory">Version 
History</h2><p>From Struts 2.1.1+</p></div>
         </div>
 
         

Modified: websites/production/struts/content/development/2.x/docs/security.html
==============================================================================
--- websites/production/struts/content/development/2.x/docs/security.html 
(original)
+++ websites/production/struts/content/development/2.x/docs/security.html Fri 
Nov 14 07:43:54 2014
@@ -138,7 +138,18 @@ under the License. 
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><h3 
id="Security-Securitytips">Security tips</h3><p>The Apache Struts 2 doesn't 
provide any security mechanism - it is just a pure web framework. Below are few 
tips you should consider during application development with the Apache Struts 
2.</p><h4 id="Security-RestrictaccesstotheConfigBrowser">Restrict access to the 
Config Browser</h4><p><a shape="rect" href="config-browser-plugin.html">Config 
Browser Plugin</a>&#160;exposes internal configuration and should be used only 
during development phase. If you must use it on production site, we strictly 
recommend restricting access to it - you can use &#160;Basic Authentication or 
any other security mechanism (e.g. <a shape="rect" class="external-link" 
href="http://shiro.apache.org/";>Apache Shiro</a>)</p><h4 
id="Security-Don'tmixdifferentaccesslevelsinthesamenamespace">Don't mix 
different access levels in the same namespace</h4><p>Very often access to 
different resources is controlled based on URL p
 atterns, see snippet below. Because of that you cannot mix actions with 
different security levels in the same namespace. Always group actions in one 
namespace by security level.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+            <div id="ConfluenceContent"><h3 
id="Security-/*&lt;![CDATA[*/div.rbtoc1415950673266{padding:0px;}div.rbtoc1415950673266ul{list-style:disc;margin-left:0px;}div.rbtoc1415950673266li{margin-left:0px;padding-left:0px;}/*]]&gt;*/SecuritytipsRestrictaccesstotheConfigBrowserDon'tmixdifferentaccesslevels"><style
 type="text/css">/*<![CDATA[*/
+div.rbtoc1415950673266 {padding: 0px;}
+div.rbtoc1415950673266 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1415950673266 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></h3><div class="toc-macro rbtoc1415950673266">
+<ul class="toc-indentation"><li><a shape="rect" 
href="#Security-Securitytips">Security tips</a>
+<ul class="toc-indentation"><li><a shape="rect" 
href="#Security-RestrictaccesstotheConfigBrowser">Restrict access to the Config 
Browser</a></li><li><a shape="rect" 
href="#Security-Don'tmixdifferentaccesslevelsinthesamenamespace">Don't mix 
different access levels in the same namespace</a></li></ul>
+</li><li><a shape="rect" href="#Security-Internalsecuritymechanism">Internal 
security mechanism</a>
+<ul class="toc-indentation"><li><a shape="rect" 
href="#Security-OGNLisusedtocallaction'smethods">OGNL is used to call action's 
methods</a></li></ul>
+</li></ul>
+</div><h3 id="Security-Securitytips">Security tips</h3><p>The Apache Struts 2 
doesn't provide any security mechanism - it is just a pure web framework. Below 
are few tips you should consider during application development with the Apache 
Struts 2.</p><h4 id="Security-RestrictaccesstotheConfigBrowser">Restrict access 
to the Config Browser</h4><p><a shape="rect" 
href="config-browser-plugin.html">Config Browser Plugin</a>&#160;exposes 
internal configuration and should be used only during development phase. If you 
must use it on production site, we strictly recommend restricting access to it 
- you can use &#160;Basic Authentication or any other security mechanism (e.g. 
<a shape="rect" class="external-link" href="http://shiro.apache.org/";>Apache 
Shiro</a>)</p><h4 
id="Security-Don'tmixdifferentaccesslevelsinthesamenamespace">Don't mix 
different access levels in the same namespace</h4><p>Very often access to 
different resources is controlled based on URL patterns, see snippet below. 
Becaus
 e of that you cannot mix actions with different security levels in the same 
namespace. Always group actions in one namespace by security level.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[    &lt;security-constraint&gt;
         &lt;web-resource-collection&gt;
             &lt;web-resource-name&gt;admin&lt;/web-resource-name&gt;
@@ -149,7 +160,52 @@ under the License. 
         &lt;/auth-constraint&gt;
     &lt;/security-constraint&gt;
 ]]></script>
-</div></div></div>
+</div></div><h3 id="Security-Internalsecuritymechanism">Internal security 
mechanism</h3><p>The Apache Struts 2 contains internal security manager which 
blocks access to particular classes and Java packages - it's a OGNL-wide 
mechanism which means it affects any aspect of the framework ie. incoming 
parameters, expressions used in JSPs, etc.</p><p>The defaults are as 
follow:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[    &lt;constant 
name=&quot;struts.excludedClasses&quot;
+              value=&quot;
+                java.lang.Object,
+                java.lang.Runtime,
+                java.lang.System,
+                java.lang.Class,
+                java.lang.ClassLoader,
+                java.lang.Shutdown,
+                ognl.OgnlContext,
+                ognl.MemberAccess,
+                ognl.ClassResolver,
+                ognl.TypeConverter,
+                com.opensymphony.xwork2.ActionContext&quot; /&gt;
+    &lt;!-- this must be valid regex, each &#39;.&#39; in package name must be 
escaped! --&gt;
+    &lt;constant name=&quot;struts.excludedPackageNamePatterns&quot; 
value=&quot;^java\.lang\..*,^ognl.*,^javax.*&quot; /&gt;]]></script>
+</div></div><p>Any expression or target which evaluates to one of these will 
be blocked and you see a WARN in logs:</p><div class="preformatted panel" 
style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>[WARNING] Target class [class example.MyBean] or declaring class of 
member type [public example.MyBean()] are excluded!</pre>
+</div></div><p>In that case&#160;<code>new MyBean()</code> was used to create 
a new instance of class (inside JSP) - it's blocked 
because&#160;<code>target</code> of such expression is evaluated 
to&#160;<code>java.lang.Class</code></p>    <div class="aui-message warning 
shadowed information-macro">
+                            <span class="aui-icon icon-warning">Icon</span>
+                <div class="message-content">
+                            <p>It is possible to redefine the above constants 
in <code>struts.xml</code> but try to avoid this and rather change design of 
your application!</p>
+                    </div>
+    </div>
+<h4 id="Security-OGNLisusedtocallaction'smethods">OGNL is used to call 
action's methods</h4><p>This can impact actions which have large inheritance 
hierarchy and use the same method's name throughout the hierarchy, this was 
reported as an issue <a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4405";>WW-4405</a>. See the 
example below:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[public class RealAction extends BaseAction {  
+    @Action(&quot;save&quot;)
+    public String save() throws Exception {
+        super.save();
+        return SUCCESS;
+    }
+}    
+ 
+public class BaseAction extends AbstractAction {
+    public String save() throws Exception {
+        save(Double.MAX_VALUE);
+        return SUCCESS;
+    }
+}
+ 
+public abstract class AbstractAction extends ActionSupport {
+    protected void save(Double val) {
+        // some logic
+    }
+}]]></script>
+</div></div><p>In such case OGNL cannot properly map which method to call when 
request is coming. This is do the OGNL limitation. To solve the problem don't 
use the same method's names through the hierarchy, you can simply change the 
action's method from&#160;<code>save()</code> 
to&#160;<code>saveAction()</code>&#160;and leaving annotation as is to 
allow&#160;<span style="line-height: 1.4285715;">call this action 
via&#160;</span><code style="line-height: 1.4285715;">/save.action</code><span 
style="line-height: 1.4285715;"> request.</span></p></div>
         </div>
 
         

Added: 
websites/production/struts/content/development/2.x/docs/version-notes-2319.html
==============================================================================
--- 
websites/production/struts/content/development/2.x/docs/version-notes-2319.html 
(added)
+++ 
websites/production/struts/content/development/2.x/docs/version-notes-2319.html 
Fri Nov 14 07:43:54 2014
@@ -0,0 +1,174 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- 
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License. 
+-->
+<html>
+<head>
+    <link type="text/css" rel="stylesheet" 
href="https://struts.apache.org/css/default.css";>
+    <style type="text/css">
+        .dp-highlighter {
+            width:95% !important;
+        }
+    </style>
+    <style type="text/css">
+        .footer {
+            background-image:      
url('https://cwiki.apache.org/confluence/images/border/border_bottom.gif');
+            background-repeat:     repeat-x;
+            background-position:   left top;
+            padding-top:           4px;
+            color:                 #666;
+        }
+    </style>
+    <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
+    <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
+    <script src='http://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
+    <script src="http://struts.apache.org/highlighter/js/shBrushPlain.js"; 
type="text/javascript"></script>
+    <script src="http://struts.apache.org/highlighter/js/shBrushXml.js"; 
type="text/javascript"></script>
+    <script src="http://struts.apache.org/highlighter/js/shBrushJava.js"; 
type="text/javascript"></script>
+    <script src="http://struts.apache.org/highlighter/js/shBrushJScript.js"; 
type="text/javascript"></script>
+    <script src="http://struts.apache.org/highlighter/js/shBrushGroovy.js"; 
type="text/javascript"></script>
+    <script src="http://struts.apache.org/highlighter/js/shBrushBash.js"; 
type="text/javascript"></script>
+    <script type="text/javascript">
+        SyntaxHighlighter.defaults['toolbar'] = false;
+        SyntaxHighlighter.all();
+    </script>
+    <script type="text/javascript" language="javascript">
+        var hide = null;
+        var show = null;
+        var children = null;
+
+        function init() {
+            /* Search form initialization */
+            var form = document.forms['search'];
+            if (form != null) {
+                form.elements['domains'].value = location.hostname;
+                form.elements['sitesearch'].value = location.hostname;
+            }
+
+            /* Children initialization */
+            hide = document.getElementById('hide');
+            show = document.getElementById('show');
+            children = document.all != null ?
+                    document.all['children'] :
+                    document.getElementById('children');
+            if (children != null) {
+                children.style.display = 'none';
+                show.style.display = 'inline';
+                hide.style.display = 'none';
+            }
+        }
+
+        function showChildren() {
+            children.style.display = 'block';
+            show.style.display = 'none';
+            hide.style.display = 'inline';
+        }
+
+        function hideChildren() {
+            children.style.display = 'none';
+            show.style.display = 'inline';
+            hide.style.display = 'none';
+        }
+    </script>
+    <title>Version Notes 2.3.19</title>
+</head>
+<body onload="init()">
+<table border="0" cellpadding="2" cellspacing="0" width="100%">
+    <tr class="topBar">
+        <td align="left" valign="middle" class="topBarDiv" align="left" nowrap>
+            &nbsp;<a href="home.html">Home</a>&nbsp;&gt;&nbsp;<a 
href="guides.html">Guides</a>&nbsp;&gt;&nbsp;<a 
href="migration-guide.html">Migration Guide</a>&nbsp;&gt;&nbsp;<a 
href="version-notes-2319.html">Version Notes 2.3.19</a>
+        </td>
+        <td align="right" valign="middle" nowrap>
+            <form name="search" action="http://www.google.com/search"; 
method="get">
+                <input type="hidden" name="ie" value="UTF-8" />
+                <input type="hidden" name="oe" value="UTF-8" />
+                <input type="hidden" name="domains" value="" />
+                <input type="hidden" name="sitesearch" value="" />
+                <input type="text" name="q" maxlength="255" value="" />
+                <input type="submit" name="btnG" value="Google Search" />
+            </form>
+        </td>
+    </tr>
+</table>
+
+<div id="PageContent">
+    <div class="pageheader" style="padding: 6px 0px 0px 0px;">
+        <!-- We'll enable this once we figure out how to access (and save) the 
logo resource -->
+        <!--img src="/wiki/images/confluence_logo.gif" style="float: left; 
margin: 4px 4px 4px 10px;" border="0"-->
+        <div style="margin: 0px 10px 0px 10px" class="smalltext">Apache Struts 
2 Documentation</div>
+        <div style="margin: 0px 10px 8px 10px"  class="pagetitle">Version 
Notes 2.3.19</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=40506670";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/notep_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Edit Page"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=40506670";>Edit
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/browse_space.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Browse Space"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW";>Browse 
Space</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=40506670";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/add_page_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Add Page"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=40506670";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=40506670";>
+                <img 
src="https://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif";
+                     height="16" width="16" border="0" align="absmiddle" 
title="Add News"></a>
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=40506670";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><p><img class="emoticon emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" alt="(tick)"> These are the notes for the Struts 
2.3.19 distribution.</p><p><img class="emoticon emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" alt="(tick)"> For prior notes in this release 
series, see <a shape="rect" href="version-notes-23161.html">Version Notes 
2.3.16.1</a></p><ul><li>If you are a Maven user, you might want to get started 
using the <a shape="rect" href="struts-2-maven-archetypes.html">Maven 
Archetype</a>.</li><li>Another quick-start entry point is the 
<strong>blank</strong> application. Rename and deploy the WAR as a starting 
point for your own development.</li></ul><div class="code p
 anel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>Maven Dependency</b></div><div 
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.struts&lt;/groupId&gt;
+  &lt;artifactId&gt;struts2-core&lt;/artifactId&gt;
+  &lt;version&gt;2.3.19&lt;/version&gt;
+&lt;/dependency&gt;
+]]></script>
+</div></div><p>You can also use Struts Archetype Catalog like below</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts Archetype 
Catalog</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: text; gutter: false" 
type="syntaxhighlighter"><![CDATA[mvn archetype:generate 
-DarchetypeCatalog=http://struts.apache.org/]]></script>
+</div></div><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Staging 
Repository</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;repositories&gt;
+  &lt;repository&gt;
+    &lt;id&gt;apache.nexus&lt;/id&gt;
+    &lt;name&gt;ASF Nexus Staging&lt;/name&gt;
+    
&lt;url&gt;https://repository.apache.org/content/groups/staging/&lt;/url&gt;
+  &lt;/repository&gt;
+&lt;/repositories&gt;]]></script>
+</div></div><h2 id="VersionNotes2.3.19-InternalChanges">Internal 
Changes</h2><ul><li><img class="emoticon emoticon-warning" 
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/warning.png";
 data-emoticon-name="warning" alt="(warning)"> Merged security fixes from 
version 2.3.16.1,&#160;2.3.16.2,&#160;2.3.16.3</li><li><img class="emoticon 
emoticon-warning" 
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/warning.png";
 data-emoticon-name="warning" alt="(warning)">&#160;Extended existing security 
mechanism to block access to given Java packages and Classes, see <a 
shape="rect" class="external-link" 
href="https://github.com/apache/struts/pull/11"; rel="nofollow">#11</a>&#160;or 
read&#160;<a shape="rect" 
href="security.html#Security-Internalsecuritymechanism">Internal security 
mechanism</a></li><li>Collection Parameters for Redir
 ectResults, <a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4224";>WW-4224</a></li><li>Make 
ParametersInterceptor supports chinese in hash key by default, <a shape="rect" 
class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4250";>WW-4250</a></li><li>themes.properties
 can be loaded using ServletContext allows to put <code>template</code> folder 
under WEB-INF or on classpath, <a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4260";>WW-4260</a></li><li><span>New
 tag datetextfield, <a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-3493";>WW-3493</a></span></li><li><span>Only
 valid Ognl expressions are cached, <a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4146";>WW-4146</a></span></li><li><span>CustomTextProvider
 can be used for validation errors of model driven actions, <a shape="rect" 
class="external-link" href="https://issues.apa
 che.org/jira/browse/WW-4202">WW-4202</a></span></li><li><span>datetimepicker's 
label fixed, <a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4254";>WW-4254</a></span></li><li><span>PropertiesJudge<span>&#160;removed
 and properties are checked 
in&#160;<code>SecurityMemberAccess</code></span></span>, <a shape="rect" 
class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4257";>WW-4257</a></li><li>resource
 reloading works in IBM JVM, <a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4266";>WW-4266</a></li><li>default
 reloading settings were removed from&#160;<code>default.properties</code>, <a 
shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4267";>WW-4267</a></li><li><img 
class="emoticon emoticon-warning" 
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/warning.png";
 data-emoticon-name="warn
 ing" alt="(warning)">&#160;commons-fileupload library upgraded to version 
1.3.1 to fix potential security vulnerability, <a shape="rect" 
class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4286";>WW-4286</a></li><li>The&#160;<code>scheme</code>
 attribute accepts expressions in&#160;<code>s:url</code> tag, <a shape="rect" 
class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4024";>WW-4024</a></li><li>Solves 
problem with infinite loop in&#160;<code>FastByteArrayOutputStream</code>, <a 
shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4383";>WW-4383</a></li><li><code>LocalizedTextUtil</code>
 supports many&#160;<code>ClassLoaders</code>, <a shape="rect" 
class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4379";>WW-4379</a></li><li>Bill 
of Materials pom was introduced, <a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/browse/WW-4326";>WW-4326</a></li><li><code>debug=browser|console</code
 > was migrated to jQuery, <a shape="rect" class="external-link" 
 > href="https://issues.apache.org/jira/browse/WW-4322";>WW-4322</a></li><li><code>struts_dojo.js</code>
 >  was fixed, <a shape="rect" class="external-link" 
 > href="https://issues.apache.org/jira/browse/WW-4349";>WW-4349</a></li><li>interface&#160;<code>org/apache/struts2/views/TagLibrary</code>
 >  was restored and marked as&#160;<code>@Depreacted</code>, <a shape="rect" 
 > class="external-link" 
 > href="https://issues.apache.org/jira/browse/WW-4255";>WW-4255</a></li><li>and 
 > many other small improvements, please see the release 
 > notes</li></ul><p>&#160;</p>    <div class="aui-message warning shadowed 
 > information-macro">
+                            <span class="aui-icon icon-warning">Icon</span>
+                <div class="message-content">
+                            <p>Please read information about new <a 
shape="rect" href="security.html#Security-Internalsecuritymechanism">internal 
security mechanism</a> introduced with this version, it can have impact on your 
application!</p>
+                    </div>
+    </div>
+<p>&#160;</p><h3 id="VersionNotes2.3.19-IssueDetail">Issue 
Detail</h3><ul><li><a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311041&amp;version=12319176";>JIRA
 Release Notes 2.3.19</a></li></ul><h3 id="VersionNotes2.3.19-IssueList">Issue 
List</h3><ul><li><a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/issues/?filter=12326872";>Struts 2.3.19 
DONE</a></li><li><a shape="rect" class="external-link" 
href="https://issues.apache.org/jira/issues/?filter=12318399";>Struts 2.3.x 
TODO</a></li></ul><h3 id="VersionNotes2.3.19-Otherresources">Other 
resources</h3><ul><li><a shape="rect" class="external-link" 
href="http://www.mail-archive.com/commits%40struts.apache.org/"; 
rel="nofollow">Commit Logs</a></li><li><a shape="rect" class="external-link" 
href="https://git-wip-us.apache.org/repos/asf?p=struts.git;a=tree;h=refs/heads/develop;hb=develop";>Source
 Code Repository</a></li></ul><div><span style="font-size: 24.
 0px;line-height: 30.0px;"><br clear="none"></span></div><div><span 
style="font-size: 24.0px;line-height: 30.0px;background-color: 
rgb(245,245,245);"><br clear="none"></span></div></div>
+        </div>
+
+        
+    </div>
+</div>
+<div class="footer">
+    Generated by CXF SiteExporter
+</div>
+</body>
+</html>
\ No newline at end of file

Modified: 
websites/production/struts/content/release/2.3.x/docs/actionmapper.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/actionmapper.html 
(original)
+++ websites/production/struts/content/release/2.3.x/docs/actionmapper.html Fri 
Nov 14 07:43:54 2014
@@ -139,11 +139,11 @@ under the License. 
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><style type="text/css">/*<![CDATA[*/
-div.rbtoc1405758432629 {padding: 0px;}
-div.rbtoc1405758432629 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1405758432629 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1411292178688 {padding: 0px;}
+div.rbtoc1411292178688 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1411292178688 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1405758432629">
+/*]]>*/</style><div class="toc-macro rbtoc1411292178688">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#ActionMapper-Description">Description</a></li><li><a shape="rect" 
href="#ActionMapper-DefaultActionMapper">DefaultActionMapper</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#ActionMapper-Methodprefix">Method prefix</a></li><li><a shape="rect" 
href="#ActionMapper-Actionprefix">Action prefix</a></li></ul>
 </li><li><a shape="rect" href="#ActionMapper-CustomActionMapper">Custom 
ActionMapper</a></li><li><a shape="rect" 
href="#ActionMapper-CompositeActionMapper">CompositeActionMapper</a></li><li><a 
shape="rect" 
href="#ActionMapper-PrefixBasedActionMapper">PrefixBasedActionMapper</a></li><li><a
 shape="rect" 
href="#ActionMapper-ActionMapperandActionMappingobjects">ActionMapper and 
ActionMapping objects</a>

Modified: 
websites/production/struts/content/release/2.3.x/docs/building-struts-2-normal-release.html
==============================================================================
--- 
websites/production/struts/content/release/2.3.x/docs/building-struts-2-normal-release.html
 (original)
+++ 
websites/production/struts/content/release/2.3.x/docs/building-struts-2-normal-release.html
 Fri Nov 14 07:43:54 2014
@@ -139,34 +139,39 @@ under the License. 
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><h1 
id="BuildingStruts2-Normalrelease-Content">Content</h1><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1405758786455 {padding: 0px;}
-div.rbtoc1405758786455 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1405758786455 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1415950672619 {padding: 0px;}
+div.rbtoc1415950672619 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1415950672619 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1405758786455">
-<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Gettingready">Getting 
ready</a></li><li><span class="TOCOutline">2</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-UpdateDraftDocswhenneeded">Update Draft 
Docs when needed</a></li><li><span class="TOCOutline">3</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Besureyourlocalcopyisup-to-date">Be sure 
your local copy is up-to-date</a></li><li><span class="TOCOutline">4</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Createareleasebranch">Create 
a release branch</a></li><li><span class="TOCOutline">5</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Preparerelease">Prepare 
release</a></li><li><span class="TOCOutline">6</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Performtherelease">Perform the 
release</a></li><li><span class="TOCOutline">7</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Movetheasse
 mblies">Move the assemblies</a></li><li><span class="TOCOutline">8</span> <a 
shape="rect" 
href="#BuildingStruts2-Normalrelease-Announceavailability">Announce 
availability</a></li><li><span class="TOCOutline">9</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Cleanuprepository">Clean up 
repository</a></li><li><span class="TOCOutline">10</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Voteonit">Vote on it</a></li><li><span 
class="TOCOutline">11</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Copyfiles">Copy files</a></li><li><span 
class="TOCOutline">12</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Promoterelease">Promote 
release</a></li><li><span class="TOCOutline">13</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Cleanupoldreleases">Clean up old 
releases</a></li><li><span class="TOCOutline">14</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Waitforrsync">Wait for 
rsync</a></li><li><span class="TOCOutline">15</s
 pan> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-(Optional)-UpdateSecurityBulletins">(Optional)
 - Update Security Bulletins</a></li><li><span class="TOCOutline">16</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Updatesite">Update 
site</a></li><li><span class="TOCOutline">17</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Redeploythedraftdocs(Optional)">Redeploy 
the draft docs (Optional)</a></li><li><span class="TOCOutline">18</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Postannouncements">Post 
announcements</a></li></ul>
+/*]]>*/</style></p><div class="toc-macro rbtoc1415950672619">
+<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Gettingready">Getting 
ready</a></li><li><span class="TOCOutline">2</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-UpdateDraftDocswhenneeded">Update Draft 
Docs when needed</a></li><li><span class="TOCOutline">3</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Besureyourlocalcopyisup-to-date">Be sure 
your local copy is up-to-date</a></li><li><span class="TOCOutline">4</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Createareleasebranch">Create 
a release branch</a></li><li><span class="TOCOutline">5</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Preparerelease">Prepare 
release</a></li><li><span class="TOCOutline">6</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Performtherelease">Perform the 
release</a></li><li><span class="TOCOutline">7</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Movetheasse
 mblies">Move the assemblies</a></li><li><span class="TOCOutline">8</span> <a 
shape="rect" 
href="#BuildingStruts2-Normalrelease-Announceavailability">Announce 
availability</a></li><li><span class="TOCOutline">9</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Cleanuprepository">Clean up 
repository</a></li><li><span class="TOCOutline">10</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Voteonit">Vote on it</a></li><li><span 
class="TOCOutline">11</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Copyfiles">Copy files</a></li><li><span 
class="TOCOutline">12</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Promoterelease">Promote 
release</a></li><li><span class="TOCOutline">13</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Cleanupoldreleases">Clean up old 
releases</a></li><li><span class="TOCOutline">14</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Waitforrsync">Wait for 
rsync</a></li><li><span class="TOCOutline">15</s
 pan> <a shape="rect" href="#BuildingStruts2-Normalrelease-Updatesite">Update 
site</a></li><li><span class="TOCOutline">16</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Redeploythedraftdocs(Optional)">Redeploy 
the draft docs (Optional)</a></li><li><span class="TOCOutline">17</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Postannouncements">Post 
announcements</a></li></ul>
 </div><h2 id="BuildingStruts2-Normalrelease-BuildingSteps(Struts)">Building 
Steps (Struts)</h2><h3 id="BuildingStruts2-Normalrelease-Gettingready">Getting 
ready</h3><ol><li>Create an "Struts 2.x.y omnibus ticket" ticket in JIRA to 
refer to in upcoming release related commit comments and for general 
documentation purposes. Mark it with priority "Blocker".</li><li>Switch to 
branch&#160;<code>develop</code></li><li>Ensure that the master POM and Struts 
Annotations have current releases</li><li>Review JIRA for any issues without a 
fix version set, and for any issues that should be resolved for the pending 
release.</li><li>Ensure that there are no repositories or pluginRepositories 
listed in the poms.</li><li>If you have committed all changes regarding the 
release process, close the omnibus ticket as it is the last open ticket for the 
upcoming release</li><li>Release the upcoming version in JIRA (under 
Administration/Manage Releases) and tag the release date</li><li>Add next 
milestone ve
 rsion to the JIRA roadmap</li><li>Create DONE and TODO filters for the new 
version, share with all, and remove obsolete TODO filter</li><li>Create a new 
Version Notes page in Confluence, link from <a shape="rect" 
href="migration-guide.html">Migration Guide</a>, and link to prior release page 
and JIRA DONE filters of the version to release</li><li>Export wiki pages and 
put them under&#160;<code>/docs</code></li></ol><h3 
id="BuildingStruts2-Normalrelease-UpdateDraftDocswhenneeded">Update Draft Docs 
when needed</h3><p>Checkout&#160;<code>struts-site</code> project (see details 
at the bottom of this page) and perform export:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[cd struts-site
 mvn package]]></script>
 </div></div><p>If build will fail try again - don't 
use&#160;<code>clean</code>, the exporter is going to update only outdated 
pages. After successful export, commit updated files 
into&#160;<code>struts-production</code></p><h3 
id="BuildingStruts2-Normalrelease-Besureyourlocalcopyisup-to-date">Be sure your 
local copy is up-to-date</h3><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[git checkout develop
-git pull
-
-git fetch origin --prune]]></script>
-</div></div><h3 id="BuildingStruts2-Normalrelease-Createareleasebranch">Create 
a release branch</h3><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[git fetch origin --prune
+git checkout develop
+git pull]]></script>
+</div></div>    <div class="aui-message warning shadowed information-macro">
+                            <span class="aui-icon icon-warning">Icon</span>
+                <div class="message-content">
+                            <p>Please remember to keep BOM subproject in sync 
- 
<code>&lt;struts-version.version&gt;X.X.X&lt;/struts-version.version&gt;</code> 
- must be the same as the parent pom.</p>
+                    </div>
+    </div>
+<h3 id="BuildingStruts2-Normalrelease-Createareleasebranch">Create a release 
branch</h3><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[git flow release start X.X.X.X
 git flow release publish X.X.X.X]]></script>
-</div></div><p>Now you should be on&#160;<code>release/X.X.X.X</code> branch 
(<code>git status</code>&#160;supposes confirm that). You must push changes to 
remote repo as the Release plugins will push changes to remote as well.</p><h3 
id="BuildingStruts2-Normalrelease-Preparerelease"><span style="line-height: 
1.5625;">Prepare release</span></h3><p>Tag the release by using the 
"release:prepare" goal of Maven:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[mvn release:prepare 
-DautoVersionSubmodules=true -Dusername=yourSvnUsername 
-Dpassword=yourSvnPassword
+</div></div><p>Now you should be on&#160;<code>release/X.X.X.X</code> branch 
(<code>git status</code>&#160;supposed to confirm that). You must push changes 
to remote repo as the Release plugins will push changes to remote as well (it's 
already done after publishing release).</p><h3 
id="BuildingStruts2-Normalrelease-Preparerelease"><span style="line-height: 
1.5625;">Prepare release</span></h3><p>Tag the release by using the 
"release:prepare" goal of Maven:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[mvn release:prepare 
-DautoVersionSubmodules=true
 ]]></script>
 </div></div><p>For a <a shape="rect" class="external-link" 
href="http://maven.apache.org/plugins/maven-release-plugin/usage.html";>dry 
run</a>, add <code>-DdryRun=true</code>. If you do a dry run, use <code>mvn 
release:clean</code> to clean up after you have looked at the 
output.</p><p>When prompted for the SCM tag name, follow this pattern: 
STRUTS_2_3_[PATCH_VERSION]</p>    <div class="aui-message warning shadowed 
information-macro">
                             <span class="aui-icon icon-warning">Icon</span>
                 <div class="message-content">
-                            <p>If you get an error message, try to re-run 
<code>mvn release:prepare -Dusername=yourSvnUsername -Dpassword=yourSvnPassword 
-DautoVersionSubmodules=true</code> command again, <code>-Dresume</code> flag 
is set to true by default and the plugin will resume the release process from 
where it failed before.</p>
+                            <p>If you get an error message, try to re-run 
<code>mvn release:prepare -DautoVersionSubmodules=true</code> command again, 
<code>-Dresume</code> flag is set to true by default and the plugin will resume 
the release process from where it failed before.</p>
                     </div>
     </div>
 <p>Follow the link to get&#160;<a shape="rect" class="external-link" 
href="http://maven.apache.org/plugins/maven-release-plugin/examples/prepare-release.html";>more
 information</a>&#160;about performed operation by release plugin.</p><h3 
id="BuildingStruts2-Normalrelease-Performtherelease">Perform the 
release</h3><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[mvn release:perform -Dusername=yourSvnUsername
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[mvn release:perform
 ]]></script>
 </div></div><p>Follow the link to get&#160;<a shape="rect" 
class="external-link" 
href="http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html";>more
 information</a>&#160;about performed operation by release plugin.&#160;<span 
style="line-height: 1.4285715;">After this step the artifacts will be hosted by 
</span><a shape="rect" class="external-link" 
href="http://repository.apache.org/"; style="line-height: 
1.4285715;">Nexus</a>.</p><p>If you need to run perform again, (or in a 
different box), do:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[git checkout STRUTS_2_3_[PATCH_VERSION]
@@ -215,7 +220,13 @@ rm *.asc.sha1
 </div></div><p>This will remove the branch from the remote, now we can merge 
once more the release branch (when on <code>develop</code>) and remove 
it</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[git merge --no-ff release/X.X.X.X
 git branch -d release/X.X.X.X]]></script>
-</div></div><p>Now both&#160;<code>master</code> and&#160;<code>develop</code> 
branches should be up to date with the changes introduced by the 
release.</p><h3 id="BuildingStruts2-Normalrelease-Voteonit">Vote on 
it</h3><p>Post a release/quality vote to the dev list (and 
<strong>only</strong> the dev list). The example mail is on <a shape="rect" 
href="sample-announcements.html">Sample announcements</a> page. <br 
clear="none"> If the vote result is for an ASF release (i.e. not test build), 
update site, announce. If the vote result is for GA, push to central.</p><h3 
id="BuildingStruts2-Normalrelease-Copyfiles">Copy files</h3><p>After the vote, 
if the distribution is being mirrored (there was a favourable release vote) 
copy the Sources and Binaries:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>Now both&#160;<code>master</code> and&#160;<code>develop</code> 
branches should be up to date with the changes introduced by the release.</p>   
 <div class="aui-message warning shadowed information-macro">
+                            <span class="aui-icon icon-warning">Icon</span>
+                <div class="message-content">
+                            <p>Do not remove the tag! It clearly indicates 
what was planned and it can be used as a history marker. Always used the next 
version number, do not redeploy the same version as it breaks Maven's policy 
and you will have to manually clean up Maven repository.</p>
+                    </div>
+    </div>
+<h3 id="BuildingStruts2-Normalrelease-Voteonit">Vote on it</h3><p>Post a 
release/quality vote to the dev list (and <strong>only</strong> the dev list). 
The example mail is on <a shape="rect" href="sample-announcements.html">Sample 
announcements</a> page. <br clear="none"> If the vote result is for an ASF 
release (i.e. not test build), update site, announce. If the vote result is for 
GA, push to central.</p><h3 id="BuildingStruts2-Normalrelease-Copyfiles">Copy 
files</h3><p>After the vote, if the distribution is being mirrored (there was a 
favourable release vote) copy the Sources and Binaries:</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[ssh people.apache.org
 cd /www/people.apache.org/builds/struts/$VERSION
 cp struts-$VERSION-src.*  /www/www.apache.org/dist/struts/source
@@ -227,12 +238,22 @@ cp struts-$VERSION-all.* /www/www.apache
 <pre>cd /www/www.apache.org/dist/struts/
 find . -type f -name "struts-2.3.x*" -exec rm -f {} \;
 </pre>
-</div></div><p>where <code>x</code> is the previous version to remove (or one 
more previous to keep current and one version back).</p><h3 
id="BuildingStruts2-Normalrelease-Waitforrsync">Wait for rsync</h3><p>Wait 24 
hours before proceeding.</p><h3 
id="BuildingStruts2-Normalrelease-(Optional)-UpdateSecurityBulletins">(Optional)
 - Update Security Bulletins</h3><p>If the release will fix a - hopefully yet 
undisclosed - security issue, it's now time to update the <a shape="rect" 
href="security-bulletins.html">Security Bulletins</a> page and add a new 
announcement. For a template, just check former announcements</p><h3 
id="BuildingStruts2-Normalrelease-Updatesite"><span style="line-height: 
1.5625;">Update site</span></h3><ul><li><p>Check out site src code</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div><p>where <code>x</code> is the previous version to remove (or one 
more previous to keep current and one version back).</p><h3 
id="BuildingStruts2-Normalrelease-Waitforrsync">Wait for rsync</h3><p>Wait 24 
hours before proceeding.</p><h3 
id="BuildingStruts2-Normalrelease-Updatesite"><span style="line-height: 
1.5625;">Update site</span></h3><ul><li><p>Check out site src code</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[svn co 
https://svn.apache.org/repos/asf/struts/site/ struts-site
 ]]></script>
 </div></div></li><li>If a new DTD was defined, add it 
to&#160;<code>source/dtds</code></li><li>Update current version and release 
date in&#160;<code>struts-site/_config.yml</code></li><li>Update page source 
files<ul><li>struts-site/source/announce.md (if applicable, refer also to 
corresponding security bulletin)</li><li>struts-site/source/downloads.html 
(Prior Releases section)</li><li>struts-site/source/index.html (some parts will 
updated automatically with values defined 
in&#160;<code>_config.yml</code>)</li></ul></li><li>Generate site with 
Jekyll<ul><li><code>jekyll build</code></li><li>with <code>jekyll serve 
-w</code> you can check the generated site at 
http://localhost:4000</li></ul></li><li><p>Commit the changes and the generated 
content</p></li></ul><p>Now the changes must be deployed to production which is 
basically a separated Subversion repository, you check it out with command 
below:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelC
 ontent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[svn co 
https://svn.apache.org/repos/infra/websites/production/struts/content 
struts-production]]></script>
-</div></div><p>It's a good idea to keep that working copy to be used with 
future releases. Right now copy content 
of&#160;<code>struts-site/content</code> 
to&#160;<code>struts-production</code>, then commit changes. Next step is to 
update exported wiki pages. With current approach the pages are kept 
in&#160;<code>struts-production/release/2.X.x/docs</code> 
where&#160;<code>X</code> is the current branch (ie. 2.3.x, 2.2.x and so on). 
Simply remove the whole content from under&#160;<code>/docs</code> and update 
it with docs from assembly (you can download one from Maven repository or copy 
generated during release process which supposes to be 
in&#160;<code>struts/assembly/target/cwiki</code>). And commit changes.</p><h3 
id="BuildingStruts2-Normalrelease-Redeploythedraftdocs(Optional)"><span 
style="line-height: 1.5625;">Redeploy the draft docs 
(Optional)</span></h3><p>Make public available all the pages that could leak 
confidential information about the vulnerability. Wait or manually e
 xport the space in Confluence. Build snapshot locally and copy 
<code>assembly/target/assembly/out/struts2-#.#.#-SNAPSHOT-docs.zip</code> to 
<code>people.apache.org</code> and update 
<code>/www/struts.apache.org/2.x/docs</code></p><h3 
id="BuildingStruts2-Normalrelease-Postannouncements"><span style="line-height: 
1.5625;">Post announcements</span></h3><p>We leave this as the last step, once 
the artifacts have had time to sync up on the mirrors. Target it to: 
<code>[email protected]</code> and <code>[email protected]</code>, samples 
are available at <a shape="rect" href="sample-announcements.html">Sample 
announcements</a> page</p></div>
+</div></div><p>It's a good idea to keep that working copy to be used with 
future releases. Right now copy content 
of&#160;<code>struts-site/content</code> 
to&#160;<code>struts-production</code>, then commit changes. Next step is to 
update exported wiki pages. With current approach the pages are kept 
in&#160;<code>struts-production/release/2.X.x/docs</code> 
where&#160;<code>X</code> is the current branch (ie. 2.3.x, 2.2.x and so on). 
Simply remove the whole content from under&#160;<code>/docs</code> and update 
it with docs from assembly (you can download one from Maven repository or copy 
generated during release process which supposes to be 
in&#160;<code>struts/assembly/target/cwiki</code>). And commit changes.</p><h3 
id="BuildingStruts2-Normalrelease-Redeploythedraftdocs(Optional)"><span 
style="line-height: 1.5625;">Redeploy the draft docs (Optional)</span></h3><ul 
style="list-style-type: square;"><li><p>Checkout source of the website and 
export Confluence pages</p><div class="code 
 panel pdl" style="border-width: 1px;"><div class="codeContent panelContent 
pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[svn co 
https://svn.apache.org/repos/asf/struts/site/trunk struts-site
+cd struts-site
+mvn package]]></script>
+</div></div><p>Now the whole Confluence space is exported 
to&#160;<code>target/cwiki/WW/docs/</code></p></li><li><p>Checkout copy of 
production website</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[svn co 
https://svn.apache.org/repos/infra/websites/production/struts/content/ 
struts-production]]></script>
+</div></div><p>(you can checkout just a subtree, but it's better to checkout 
the whole repo especially when you want to update also the main web 
page)</p></li><li><p>Update production</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[cp -r struts-site/target/cwiki/WW/docs/* 
struts-production/development/2.x/docs/
+cd struts-production
+svn commit &quot;Updates production&quot;]]></script>
+</div></div></li></ul><h3 
id="BuildingStruts2-Normalrelease-Postannouncements"><span style="line-height: 
1.5625;">Post announcements</span></h3><p>We leave this as the last step, once 
the artifacts have had time to sync up on the mirrors. Target it to: 
<code>[email protected]</code> and <code>[email protected]</code>, samples 
are available at <a shape="rect" href="sample-announcements.html">Sample 
announcements</a> page</p></div>
         </div>
 
         

Modified: websites/production/struts/content/release/2.3.x/docs/file-upload.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/file-upload.html 
(original)
+++ websites/production/struts/content/release/2.3.x/docs/file-upload.html Fri 
Nov 14 07:43:54 2014
@@ -139,11 +139,11 @@ under the License. 
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><p>The Struts 2 framework provides 
built-in support for processing file uploads that conform to <a shape="rect" 
class="external-link" href="http://www.ietf.org/rfc/rfc1867.txt"; 
rel="nofollow">RFC 1867</a>, "Form-based File Upload in HTML". When correctly 
configured the framework will pass uploaded file(s) into your Action class. 
Support for individual and multiple file uploads are provided. When a file is 
uploaded it will typically be stored in a temporary directory. Uploaded files 
should be processed or moved by your Action class to ensure the data is not 
lost. Be aware that servers may have a security policy in place that prohibits 
you from writing to directories other than the temporary directory and the 
directories that belong to your web application.</p><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1406303008504 {padding: 0px;}
-div.rbtoc1406303008504 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1406303008504 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1411292312450 {padding: 0px;}
+div.rbtoc1411292312450 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1411292312450 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1406303008504">
+/*]]>*/</style></p><div class="toc-macro rbtoc1411292312450">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#FileUpload-Dependencies">Dependencies</a></li><li><a shape="rect" 
href="#FileUpload-BasicUsage">Basic Usage</a></li><li><a shape="rect" 
href="#FileUpload-UploadingMultipleFiles">Uploading Multiple Files</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#FileUpload-UploadingMultipleFilesusingArrays">Uploading Multiple Files 
using Arrays</a></li><li><a shape="rect" 
href="#FileUpload-UploadingMultipleFilesusingLists">Uploading Multiple Files 
using Lists</a></li></ul>
 </li><li><a shape="rect" href="#FileUpload-AdvancedConfiguration">Advanced 
Configuration</a>


Reply via email to