http://git-wip-us.apache.org/repos/asf/struts-site/blob/124e36c4/content/docs/building-struts-annotations.html
----------------------------------------------------------------------
diff --git a/content/docs/building-struts-annotations.html 
b/content/docs/building-struts-annotations.html
new file mode 100644
index 0000000..20bf533
--- /dev/null
+++ b/content/docs/building-struts-annotations.html
@@ -0,0 +1,196 @@
+<!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='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
+    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
+    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushCss.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>Building Struts Annotations</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="contributors-guide.html">Contributors Guide</a>&nbsp;&gt;&nbsp;<a 
href="creating-and-signing-a-distribution.html">Creating and Signing a 
Distribution</a>&nbsp;&gt;&nbsp;<a 
href="building-struts-annotations.html">Building Struts Annotations</a>
+        </td>
+        <td align="right" valign="middle" nowrap>
+            <form name="search" action="https://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">Building 
Struts Annotations</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=27832965";>
+                <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=27832965";>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=27832965";>
+                <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=27832965";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=27832965";>
+                <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=27832965";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><h1 
id="BuildingStrutsAnnotations-Content">Content</h1>
+<style type="text/css">/*<![CDATA[*/
+div.rbtoc1488974251775 {padding: 0px;}
+div.rbtoc1488974251775 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1488974251775 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style><div class="toc-macro rbtoc1488974251775">
+<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" href="#BuildingStrutsAnnotations-Content">Content</a>
+<ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a 
shape="rect" 
href="#BuildingStrutsAnnotations-BuildingSteps(StrutsAnnotations)">Building 
Steps (Struts Annotations)</a>
+<ul class="toc-indentation"><li><span class="TOCOutline">1.1.1</span> <a 
shape="rect" 
href="#BuildingStrutsAnnotations-Obtainafreshcheckoutofstrutsannotations">Obtain
 a fresh check out of struts annotations</a></li><li><span 
class="TOCOutline">1.1.2</span> <a shape="rect" 
href="#BuildingStrutsAnnotations-Preparerelease">Prepare 
release</a></li><li><span class="TOCOutline">1.1.3</span> <a shape="rect" 
href="#BuildingStrutsAnnotations-Performrelease">Perform 
release</a></li><li><span class="TOCOutline">1.1.4</span> <a shape="rect" 
href="#BuildingStrutsAnnotations-SendaVOTEemail">Send a VOTE 
email</a></li><li><span class="TOCOutline">1.1.5</span> <a shape="rect" 
href="#BuildingStrutsAnnotations-Promoterelease">Promote release</a></li></ul>
+</li></ul>
+</li></ul>
+</div>
+
+<h2 id="BuildingStrutsAnnotations-BuildingSteps(StrutsAnnotations)">Building 
Steps (Struts Annotations)</h2>
+<h3 
id="BuildingStrutsAnnotations-Obtainafreshcheckoutofstrutsannotations">Obtain a 
fresh check out of struts annotations</h3>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+svn co https://svn.apache.org/repos/asf/struts/maven/trunk/struts-annotations 
struts-annotations
+</pre>
+</div></div>
+<h3 id="BuildingStrutsAnnotations-Preparerelease">Prepare release</h3>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+mvn release:prepare -Dusername=yourSvnUsername -Dpassword=yourSvnPassword
+</pre>
+</div></div>
+<p>Accept the suggested tag name</p>
+
+<div class="confluence-information-macro 
confluence-information-macro-note"><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
+<p>For some reason, when using svn client 1.5, the release plugin might fail 
to tag the release, if it fails, run:<br clear="none">
+svn up -r head<br clear="none">
+mvn release:prepare -Dresume </p></div></div>
+
+<h3 id="BuildingStrutsAnnotations-Performrelease">Perform release</h3>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+mvn release:perform -Dusername=yourSvnUsername
+</pre>
+</div></div>
+<p>Log in to <a shape="rect" class="external-link" 
href="http://repository.apache.org/";>Nexus</a> and <strong>close</strong> the 
staging repository.</p>
+<h3 id="BuildingStrutsAnnotations-SendaVOTEemail">Send a VOTE email</h3>
+<p>A sample template is at <a shape="rect" 
href="sample-announcements.html">Sample announcements</a> page (and DO wait for 
the 72 hours period)</p>
+<h3 id="BuildingStrutsAnnotations-Promoterelease">Promote release</h3>
+<p>If the Vote passed log in again to <a shape="rect" class="external-link" 
href="http://repository.apache.org/";>Nexus</a> and <strong>promote</strong> the 
repository - it will be automatically synced with Maven Central 
Repository.</p></div>
+        </div>
+
+        
+    </div>
+</div>
+<div class="footer">
+    Generated by CXF SiteExporter
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/124e36c4/content/docs/building-struts-master.html
----------------------------------------------------------------------
diff --git a/content/docs/building-struts-master.html 
b/content/docs/building-struts-master.html
new file mode 100644
index 0000000..7301ecc
--- /dev/null
+++ b/content/docs/building-struts-master.html
@@ -0,0 +1,255 @@
+<!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='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
+    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
+    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushCss.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>Building Struts Master</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="contributors-guide.html">Contributors Guide</a>&nbsp;&gt;&nbsp;<a 
href="creating-and-signing-a-distribution.html">Creating and Signing a 
Distribution</a>&nbsp;&gt;&nbsp;<a href="building-struts-master.html">Building 
Struts Master</a>
+        </td>
+        <td align="right" valign="middle" nowrap>
+            <form name="search" action="https://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">Building 
Struts Master</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=27839549";>
+                <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=27839549";>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=27839549";>
+                <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=27839549";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=27839549";>
+                <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=27839549";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><h1 
id="BuildingStrutsMaster-Content">Content</h1>
+<style type="text/css">/*<![CDATA[*/
+div.rbtoc1488974272765 {padding: 0px;}
+div.rbtoc1488974272765 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1488974272765 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style><div class="toc-macro rbtoc1488974272765">
+<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" href="#BuildingStrutsMaster-BuildingSteps(Struts)">Building Steps 
(Struts)</a>
+<ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a 
shape="rect" href="#BuildingStrutsMaster-Obtainafreshcheckout.">Obtain a fresh 
checkout.</a></li><li><span class="TOCOutline">1.2</span> <a shape="rect" 
href="#BuildingStrutsMaster-Changesitetarget">Change site 
target</a></li><li><span class="TOCOutline">1.3</span> <a shape="rect" 
href="#BuildingStrutsMaster-Preparerelease">Prepare release</a></li><li><span 
class="TOCOutline">1.4</span> <a shape="rect" 
href="#BuildingStrutsMaster-Performtherelease">Perform the 
release</a></li><li><span class="TOCOutline">1.5</span> <a shape="rect" 
href="#BuildingStrutsMaster-Announceavailability">Announce 
availability</a></li><li><span class="TOCOutline">1.6</span> <a shape="rect" 
href="#BuildingStrutsMaster-Voteonit">Vote on it</a></li><li><span 
class="TOCOutline">1.7</span> <a shape="rect" 
href="#BuildingStrutsMaster-Promoterelease">Promote release</a></li><li><span 
class="TOCOutline">1.8</span> <a shape="rect" href="#BuildingS
 trutsMaster-Waitforrsync">Wait for rsync</a></li><li><span 
class="TOCOutline">1.9</span> <a shape="rect" 
href="#BuildingStrutsMaster-Postannouncements">Post announcements</a></li></ul>
+</li></ul>
+</div>
+
+<h2 id="BuildingStrutsMaster-BuildingSteps(Struts)">Building Steps 
(Struts)</h2>
+
+<h3 id="BuildingStrutsMaster-Obtainafreshcheckout.">Obtain a fresh 
checkout.</h3>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+svn co https://svn.apache.org/repos/asf/struts/maven/trunk/ struts-master
+</pre>
+</div></div> 
+
+<h3 id="BuildingStrutsMaster-Changesitetarget">Change site target</h3>
+
+<p>Apply needed changes, in most cases it will be upgrade to latest Apache 
Parent POM, eg. from 9 to 10</p>
+
+<p>commit the change</p>
+
+<h3 id="BuildingStrutsMaster-Preparerelease">Prepare release</h3>
+<p>Enter pom folder (cd pom) and 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">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+mvn release:prepare -Dusername=yourSvnUsername -Dpassword=yourSvnPassword 
-DautoVersionSubmodules=true
+</pre>
+</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 '-DdryRun=true'. If you do a dry run, use 'mvn release:clean' to 
clean up after you have looked at the output. </p>
+
+<p>When prompted for the SCM tag name, follow this pattern: 
STRUTS_MASTER_[PATCH_VERSION]</p>
+
+<div class="confluence-information-macro 
confluence-information-macro-note"><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
+<p>For some reason, when using svn client 1.5, the release plugin might fail 
to tag the release, if it fails, run:<br clear="none">
+svn up -r head<br clear="none">
+mvn release:prepare -Dresume </p></div></div>
+
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+[ERROR] Failed to execute goal 
org.apache.maven.plugins:maven-release-plugin:2.0-beta-7:prepare (default-cli) 
on project struts2-parent: Unable to tag SCM
+[ERROR] Provider message:
+[ERROR] The svn tag command failed.
+[ERROR] Command output:
+[ERROR] svn: Commit failed (details follow):
+[ERROR] svn: No such revision 1223030
+</pre>
+</div></div>
+
+<div class="confluence-information-macro 
confluence-information-macro-note"><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
+<p>If you get the error message above, try to re-run mvn release:prepare 
-Dusername=yourSvnUsername -Dpassword=yourSvnPassword 
-DautoVersionSubmodules=true command again, -Dresume flag is set to true by 
default and the plugin will resume the release process from where it failed 
before.</p></div></div>
+
+<p>This step will (<a shape="rect" class="external-link" 
href="http://maven.apache.org/plugins/maven-release-plugin/examples/prepare-release.html";>more
 information</a>):</p>
+<ul><li>Check that there are no uncommitted changes in the 
sources</li><li>Check that there are no SNAPSHOT dependencies</li><li>Change 
the version in the poms from x-SNAPSHOT to a new version (you will be prompted 
for the versions to use)</li><li>Transform the SCM information in the POM to 
include the final destination of the tag</li><li>Run the project tests against 
the modified POMs to confirm everything is in working order</li><li>Commit the 
modified POMs</li><li>Tag the code in the SCM with a version name (this will be 
prompted for)</li><li>Bump the version in the POMs to a new value y-SNAPSHOT 
(these values will also be prompted for)</li><li>Commit the modified 
POMs</li></ul>
+
+
+<h3 id="BuildingStrutsMaster-Performtherelease">Perform the release </h3>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+mvn release:perform -Dusername=yourSvnUsername
+</pre>
+</div></div> 
+
+<p>This step will (<a shape="rect" class="external-link" 
href="http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html";>more
 information</a>):</p>
+<ul><li>Checkout from an SCM URL with optional tag</li><li>Run the predefined 
Maven goals to release the project (by default, deploy site-deploy)</li></ul>
+
+
+<p>After this step the artifacts will be hosted by <a shape="rect" 
class="external-link" href="http://repository.apache.org/";>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">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+svn co http://svn.apache.org/repos/asf/struts/struts2/tags/$VERSION
+cd $VERSION
+mvn deploy site-deploy --no-plugin-updates -DperformRelease=true 
+</pre>
+</div></div>
+
+<p>Next, log in to <a shape="rect" class="external-link" 
href="http://repository.apache.org/";>Nexus </a> and <strong>close</strong> 
staging repository.</p>
+
+<h3 id="BuildingStrutsMaster-Announceavailability">Announce availability</h3>
+<p>Send a short e-mail to dev@struts.a.o informing about the new packages and 
to give people enough time to test the distribution (actual bits). Wait around 
a week before posting Vote. If no show-stoppers reported, start a vote thread 
for build quality designation.</p>
+
+<p>The new build is available from staging repository -&gt; 
https://repository.apache.org/content/groups/staging/org/apache/struts/struts-master/\[PATCH_VERSION\]/</p>
+
+<h3 id="BuildingStrutsMaster-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="BuildingStrutsMaster-Promoterelease">Promote release</h3>
+<p>Log in again to <a shape="rect" class="external-link" 
href="http://repository.apache.org/";>Nexus</a> and <strong>release</strong> the 
repository, it will be automatically replicated across Maven Repositories<br 
clear="none">
+See <a shape="rect" class="external-link" 
href="http://maven.apache.org/developers/release/apache-release.html";>Releasing 
a Maven-based project</a> for further details.</p>
+
+<h3 id="BuildingStrutsMaster-Waitforrsync">Wait for rsync</h3>
+<p>Wait 24 hours before proceeding. </p>
+
+<h3 id="BuildingStrutsMaster-Postannouncements">Post announcements </h3>
+<p>We leave this as the last step, once the artifacts have had time to sync up 
on the mirrors. Target it to: user@struts.a.o and announcements@struts.a.o, 
samples are available at <a shape="rect" 
href="sample-announcements.html">Sample announcements</a> page</p></div>
+        </div>
+
+        
+    </div>
+</div>
+<div class="footer">
+    Generated by CXF SiteExporter
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/124e36c4/content/docs/building-the-framework-from-source.html
----------------------------------------------------------------------
diff --git a/content/docs/building-the-framework-from-source.html 
b/content/docs/building-the-framework-from-source.html
new file mode 100644
index 0000000..d48785e
--- /dev/null
+++ b/content/docs/building-the-framework-from-source.html
@@ -0,0 +1,172 @@
+<!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='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
+    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
+    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushCss.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>Building the Framework from Source</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="contributors-guide.html">Contributors Guide</a>&nbsp;&gt;&nbsp;<a 
href="building-the-framework-from-source.html">Building the Framework from 
Source</a>
+        </td>
+        <td align="right" valign="middle" nowrap>
+            <form name="search" action="https://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">Building the 
Framework from Source</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=13829";>
+                <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=13829";>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=13829";>
+                <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=13829";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=13829";>
+                <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=13829";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><h2 
id="BuildingtheFrameworkfromSource-WhyBuild?">Why Build?</h2><p>Most developers 
will never need to build the framework from source. The distribution package 
contains everything a developer needs to get started and become productive with 
the framework. For more on how to go to work with the distributed binaries 
right away, see <a shape="rect" href="ready-set-go.html">Ready, Set, Go!</a>. 
However, there are situations when someone will want to build the framework 
from scratch. You may want to try out new tweaks and patches, or you might want 
to try writing your own tweak or patch.</p><div 
class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>If you just want to use the latest 
development build, perhaps because a patch you need has been applied, you can 
also <a shape="rect" 
 class="external-link" 
href="http://people.apache.org/builds/struts/nightlies/";>download a nightly 
build</a>.</p></div></div><h2 
id="BuildingtheFrameworkfromSource-GettingtheSources">Getting the 
Sources</h2><p>The source code for the framework is available as a distribution 
you can download directly and from the source code repository.</p><h3 
id="BuildingtheFrameworkfromSource-Distribution">Distribution</h3><p>The 
distributions of the framework contain all sources, as well as all needed 
libraries for building JARs and running. Distributions can be downloaded from 
the <a shape="rect" class="external-link" 
href="http://struts.apache.org/downloads.html";>Apache Struts 
project</a>.</p><h3 
id="BuildingtheFrameworkfromSource-Repository(SVN)">Repository (SVN)</h3><p>Use 
<a shape="rect" class="external-link" href="http://subversion.tigris.org/"; 
rel="nofollow">Subversion</a> to checkout the source code.</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelCont
 ent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">&gt; cd C:\projects\Apache\
+&gt; git clone https://git-wip-us.apache.org/repos/asf/struts.git
+</pre>
+</div></div><h2 id="BuildingtheFrameworkfromSource-BuildingwithMaven">Building 
with Maven</h2><p>The default build environment is Maven. To get started with 
Maven</p><ul><li>Download Maven 3</li><li>Extract Maven 3 to a directory of 
your choice<ul><li>(e.g. 
<code>\opt\Apache\Maven\maven-3.3.3</code>)</li></ul></li><li>Add the bin 
folder under that directory to your system path<ul><li>(e.g. 
<code>PATH=%PATH%;C:\opt\Apache\Maven\maven-<span>3.3.3</span></code>)</li></ul></li></ul><p>Change
 to your framework home directory (e.g. <code>C:\projects\Apache\struts</code>) 
and run</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">&gt; cd C:\projects\Apache\struts\
+&gt; mvn clean install -Pall
+</pre>
+</div></div><p>That will take care of the basic maven build. There is a bunch 
more that you can do. Checkout out <a shape="rect" 
href="building-with-maven.html">Building with Maven</a> for more 
information.</p><p><strong>NOTE:</strong> The above assumes that the Struts 
build depends on a version of XWork which is available from a Maven repository. 
If this is not the case (e.g. when Struts depends on an unreleased XWork 
snapshot), you will need to build XWork yourself, and install it into your 
local Maven repository, before attempting to build Struts itself. See <a 
shape="rect" href="building-with-maven.html">Building with Maven</a> for 
instructions on building XWork.</p><h2 
id="BuildingtheFrameworkfromSource-JDK/JRECompatibility">JDK/JRE 
Compatibility</h2><ul><li>The framework requires JDK 1.7 to build.</li></ul><h2 
id="BuildingtheFrameworkfromSource-Next:">Next: <a shape="rect" 
href="building-with-maven.html">Building with Maven</a></h2></div>
+        </div>
+
+                    <div class="tabletitle">
+                Children
+            <span class="smalltext" id="show" style="display: inline;">
+              <a href="javascript:showChildren()">Show Children</a></span>
+            <span class="smalltext" id="hide" style="display: none;">
+              <a href="javascript:hideChildren()">Hide Children</a></span>
+            </div>
+            <div class="greybox" id="children" style="display: none;">
+                                                    $page.link($child)
+                    <span class="smalltext">(Apache Struts 2 
Documentation)</span>
+                    <br>
+                            </div>
+        
+    </div>
+</div>
+<div class="footer">
+    Generated by CXF SiteExporter
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/124e36c4/content/docs/building-with-maven.html
----------------------------------------------------------------------
diff --git a/content/docs/building-with-maven.html 
b/content/docs/building-with-maven.html
new file mode 100644
index 0000000..83d8398
--- /dev/null
+++ b/content/docs/building-with-maven.html
@@ -0,0 +1,382 @@
+<!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='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
+    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
+    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushCss.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>Building with Maven</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="contributors-guide.html">Contributors Guide</a>&nbsp;&gt;&nbsp;<a 
href="building-the-framework-from-source.html">Building the Framework from 
Source</a>&nbsp;&gt;&nbsp;<a href="building-with-maven.html">Building with 
Maven</a>
+        </td>
+        <td align="right" valign="middle" nowrap>
+            <form name="search" action="https://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">Building 
with Maven</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=14147";>
+                <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=14147";>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=14147";>
+                <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=14147";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=14147";>
+                <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=14147";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><div 
class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p><a shape="rect" 
class="external-link" href="http://maven.apache.org";>Maven 3.0.0 or later</a> 
is required to build Struts 2</p></div></div>
+<p>First, let's review some Maven basics. Maven uses the notion of a build 
<em>life-cycle</em> to which plugins can attach. Plugins are similar to Ant 
tasks. When a Maven build is invoked, we specify a point in the life-cycle up 
to which the build <em>should</em> proceed. The <em>compile</em> phase comes 
before <em>test</em>, and <em>test</em> comes before <em>package</em>, and 
<em>package</em> comes before <em>install</em>. Once we have Maven setup, we 
can invoke the Struts build, and specify which phase the build should use.</p>
+
+<h2 id="BuildingwithMaven-Installing">Installing</h2>
+
+<p>The <em>install</em> phase builds up the project ("package"), and installs 
any JARs it needs into your local repository (e.g. 
<code>~/.m2/repository</code>). Once installed, the JARs can be used by any 
other Maven project you build.&#160; The <em>install</em> phase is the 
<strong>default</strong> phase if none is specified.</p>
+
+<p>To run a basic install, change to the root of the source distribution, and 
enter</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Go!</b></div><div 
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+&gt; mvn
+</pre>
+</div></div>
+<p>That's it! Maven will download any dependencies the build needs; run all 
unit tests; package up the JARs; then install the new JARs locally. For your 
convenience, copies of the JARs can be found in the <em>target</em> directories 
of each module. For example, after the build, the main JAR can found at 
<code>core/target/struts2-core-2.0-SNAPSHOT.jar</code>.</p>
+<div class="confluence-information-macro 
confluence-information-macro-warning"><p class="title">It's supposed to be 
automatic, but you might still have to press the button</p><span 
class="aui-icon aui-icon-small aui-iconfont-error 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
+<p>Sometimes, licensing restrictions prevent Maven from downloading all the 
JARs that a build might need. For example, JavaMail and Activation, can only be 
downloaded from Sun. When this happens, Maven will display a helpful message 
that explains how to install these JARs manually. After downloading the 
required JAR, follow the instructions to install it to the your local 
repository. Once installed, the JAR is available to all your Maven builds, not 
just Struts.</p></div></div>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Initial Build 
Successful</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+[INFO] Reactor Summary:
+[INFO]
+[INFO] Struts 2 .......................................... SUCCESS [6.016s]
+[INFO] XWork: Core ....................................... SUCCESS [1:08.086s]
+[INFO] Struts 2 Core ..................................... SUCCESS [2:42.604s]
+[INFO] Struts Plugins .................................... SUCCESS [0.944s]
+[INFO] Struts 2 Spring Plugin ............................ SUCCESS [13.523s]
+[INFO] Struts 2 Convention Plugin ........................ SUCCESS [16.473s]
+[INFO] Struts 2 JUnit Plugin ............................. SUCCESS [13.325s]
+[INFO] Webapps ........................................... SUCCESS [1.027s]
+[INFO] Blank Webapp ...................................... SUCCESS [9.572s]
+[INFO] JBoss Blank Webapp ................................ SUCCESS [7.814s]
+[INFO] Mail Reader Webapp ................................ SUCCESS [7.028s]
+[INFO] Struts 2 Portlet Plugin ........................... SUCCESS [20.995s]
+[INFO] Struts 2 DWR Plugin ............................... SUCCESS [4.432s]
+[INFO] Struts 2 Tiles Plugin ............................. SUCCESS [4.451s]
+[INFO] Struts 2 Portlet Tiles Plugin ..................... SUCCESS [3.741s]
+[INFO] Portlet Webapp .................................... SUCCESS [28.480s]
+[INFO] Struts 2 Struts 1 Plugin .......................... SUCCESS [8.353s]
+[INFO] Struts 2 Dojo Plugin .............................. SUCCESS [30.181s]
+[INFO] Struts 2 JSF Plugin ............................... SUCCESS [6.000s]
+[INFO] Struts 2 Configuration Browser Plugin ............. SUCCESS [7.531s]
+[INFO] Struts 2 Sitemesh Plugin .......................... SUCCESS [6.159s]
+[INFO] Struts 2 JSON Plugin .............................. SUCCESS [16.944s]
+[INFO] Showcase Webapp ................................... SUCCESS [20.303s]
+[INFO] Struts 2 REST Plugin .............................. SUCCESS [10.015s]
+[INFO] Struts 2 Rest Showcase Example .................... SUCCESS [6.928s]
+[INFO] Struts 2 Codebehind Plugin ........................ SUCCESS [10.394s]
+[INFO] Struts 2 Java Templates Plugin .................... SUCCESS [9.633s]
+[INFO] Struts 2 Jasper Reports Plugin .................... SUCCESS [5.920s]
+[INFO] Struts 2 JFreeChart Plugin ........................ SUCCESS [18.296s]
+[INFO] Struts 2 Pell Multipart Plugin .................... SUCCESS [3.891s]
+[INFO] Struts 2 Plexus Plugin ............................ SUCCESS [4.715s]
+[INFO] Struts 2 Sitegraph Plugin ......................... SUCCESS [8.009s]
+[INFO] Struts 2 TestNG Plugin ............................ SUCCESS [6.012s]
+[INFO] Struts 2 OVal Plugin .............................. SUCCESS [9.629s]
+[INFO] Struts 2 OSGi Plugin .............................. SUCCESS [8.118s]
+[INFO] Struts 2 Embedded JSP Plugin ...................... SUCCESS [30.524s]
+[INFO] Struts 2 GXP Plugin ............................... SUCCESS [4.878s]
+[INFO] Struts 2 CDI Plugin ............................... SUCCESS [7.620s]
+[INFO] Struts 2 Tiles 3 Plugin ........................... SUCCESS [5.132s]
+[INFO] Struts OSGi Bundles ............................... SUCCESS [0.254s]
+[INFO] Struts 2 OSGi Admin Bundle ........................ SUCCESS [5.204s]
+[INFO] Struts 2 OSGi Demo Bundle ......................... SUCCESS [4.582s]
+[INFO] Struts 2 Maven Archetypes ......................... SUCCESS [0.198s]
+[INFO] Struts 2 Archetypes - Angular JS .................. SUCCESS [10.509s]
+[INFO] Struts 2 Archetypes - Blank ....................... SUCCESS [1.440s]
+[INFO] Struts 2 Archetypes - Blank Convention ............ SUCCESS [1.324s]
+[INFO] Struts 2 Archetypes - Database Portlet ............ SUCCESS [0.990s]
+[INFO] Struts 2 Archetypes - Plugin ...................... SUCCESS [0.923s]
+[INFO] Struts 2 Archetypes - Portlet ..................... SUCCESS [0.888s]
+[INFO] Struts 2 Archetypes - Starter ..................... SUCCESS [1.992s]
+[INFO] Struts 2 Assembly ................................. SUCCESS [1:37.556s]
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD SUCCESS
+[INFO] ------------------------------------------------------------------------
+[INFO] Total time: 12:23.728s
+[INFO] Finished at: Wed Oct 30 17:26:27 CET 2013
+[INFO] Final Memory: 57M/945M
+[INFO] ------------------------------------------------------------------------
+</pre>
+</div></div>
+
+<h3 id="BuildingwithMaven-Otherphases">Other phases</h3>
+
+<p>There are other phases that can be useful when working with Maven. The 
<em>package</em> phase will just JAR (or WAR) the modules. The <em>test</em> 
phase will only execute unit-tests. The <em>compile</em> phase will only build 
the source-code (but not the test sources). And the <em>clean</em> phase will 
remove all artifacts, typically the entire <em>target</em> directory.</p>
+
+<h2 id="BuildingwithMaven-BuildingIDEprojectfiles">Building IDE project 
files</h2>
+
+<p>Maven has a great feature that will allow you to build up your IDEA or 
Eclipse project files based on the project build structure. Using the Maven 
project files helps keep developers in-sync and efficient. The IDEA project 
files are pre-configured to define in the Run/Debug menu many common tasks, 
such as "execute all tests", "launch the showcase sample app", and so fort.</p>
+
+<h3 id="BuildingwithMaven-IDEAbyJetBrains">IDEA by JetBrains</h3>
+
+<p>The Maven IDEA plugin creates IDEA project and modules files, based on the 
Maven build configuraton (pom.xml).</p>
+
+<p>First, be sure you have the latest IDEA plugin for Maven.</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Get the latest 
plugin!</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+mvn 
-DconnectionUrl=scm:svn:http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-idea-plugin
 \
+    -Dgoals=install \
+    scm:bootstrap
+</pre>
+</div></div>
+<p>Most often, we use Maven to build projects, but it can also run plugins 
directly. To build an IDEA project file for Struts 2, including all the 
modules, run</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Generate the project 
files</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+&gt; mvn idea:idea -Papps,extras,thirdparty,xwork
+</pre>
+</div></div>
+<p>Maven will generate <em>struts-parent.ipr</em>, <em>struts-parent.iws</em>, 
and an <em>iml</em> file for each module listed Open up 
<em>struts-parent.ipr</em> in IDEA, and you should be good to go.</p>
+
+<p>If you ever need to rebuild your projects, running the 
<code>idea:idea</code> command again will update your files without overriding 
any information that doesn't conflict. If you do want to overwrite the project 
files, specify the overwrite parameter as true.</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Starting 
over</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+&gt; mvn idea:idea -Doverwrite=true -Papps,extras,thirdparty,plugins,xwork
+
+If you only need to rebuild some of the modules, adjust the list of "profiles".
+</pre>
+</div></div>
+<div class="confluence-information-macro confluence-information-macro-tip"><p 
class="title">Clearing the cache</p><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>If you find the xwork module 
causing you problems, such as displaying as "XWork" when it should be named 
"xwork", the problem is likely to be within IDEA. Try clearing out your IDEA 
system cache and then run it again</p></div></div>
+
+<h2 id="BuildingwithMaven-Eclipse">Eclipse</h2>
+
+<p>For Eclipse, try</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Generating 
Eclipse</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+&gt; mvn -Pthirdparty,plugins,xwork eclipse:eclipse
+</pre>
+</div></div>
+<div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">Feedback 
Wanted</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
+<p>Many Struts 2 developers use IDEA, and the Eclipse project files are not as 
well-tested or featureful as the IDEA versions. But as far as we know, they 
work!</p></div></div>
+
+<h2 
id="BuildingwithMaven-IMPORTANT:RunningtheSampleApplicationsfromEclipseornon-IDEAIDEs">IMPORTANT:
 Running the Sample Applications from Eclipse or non-IDEA IDEs</h2>
+
+<p>Currently the sample applications can be deployed using the <a shape="rect" 
class="external-link" href="http://www.mortbay.org/maven-plugin/index.html"; 
rel="nofollow">Maven 2 Jetty plugin</a>.  For example, you can run the showcase 
example application from the command line:</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Runnning Showcase in 
Linux</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+cd apps/showcase
+mvn jetty:run
+</pre>
+</div></div>
+<p>You could also use one of the Maven IDE plugins to run the plugin or simply 
execute the <code>mvn</code> or <code>mvn.bat</code> file as an external 
application within your IDE.<br clear="none">
+A good tutorial on how to use the Maven 2 jetty plugin along with your IDE, 
including JPDA debugging support, can be found at the <a shape="rect" 
class="external-link" 
href="http://cwiki.apache.org/WICKET/maven-jetty-plugin.html";>Apache Wicket 
documentation</a>.</p>
+
+<h2 id="BuildingwithMaven-MavenTips">Maven Tips</h2>
+
+<p>A few helpful tips for using Maven are provided:</p>
+
+<h3 id="BuildingwithMaven-SkipexportingpagesfromConfluence">Skip exporting 
pages from Confluence</h3>
+
+<p>The whole Struts2 documentation resists on Confluence and during normal 
build process is exported with SiteExporter tool locally to html files. To 
perform that, you must have an account on Confluence. In most cases you don't 
need to export the whole Confluence, so you can skip this, just type 
command:</p>
+
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+mvn clean install -DskipWiki
+</pre>
+</div></div>
+
+<h3 id="BuildingwithMaven-Skipcreatingassemblies">Skip creating assemblies</h3>
+
+<p>During normal development cycle you don't need to create assembly packages 
which consist of all the libraries, example apps and docs - you can skip them 
as well:</p>
+
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+mvn clean install -DskipAssembly
+</pre>
+</div></div>
+
+<h3 id="BuildingwithMaven-Offlinemode">Offline mode</h3>
+
+<p>If you are disconnected from the Internet or simply wish to make your build 
faster, pass in the <strong>-o</strong> argument and Maven won't check for new 
modules to download.</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Offline 
Mode</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+mvn -o
+</pre>
+</div></div>
+
+<h3 id="BuildingwithMaven-OutOfMemoryError">OutOfMemoryError</h3>
+
+<p>If you get an OutOfMemoryError while running the tests:</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Memory 
Settings</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+// Bash
+export MAVEN_OPTS=-Xmx512m
+
+// Windows
+set MAVEN_OPTS=-Xmx512m
+</pre>
+</div></div>
+
+<h3 id="BuildingwithMaven-Skippingtestexecution">Skipping test execution</h3>
+
+<p>Although this shouldn't ever happen, sometimes tests do fail and you need 
to build the framework anyway. If there's a problem, you can pass in the skip 
tests parameter.</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Skip Tests</b></div><div 
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+mvn -Dmaven.test.skip=true
+</pre>
+</div></div>
+<p>Of course, if you find tests are failing, please submit a patch to fix 
them!</p>
+
+<h3 id="BuildingwithMaven-Debuggingbuildfailures">Debugging build failures</h3>
+
+<p>Struts 2 depends on the current snapshot artifact of XWork 2.  
Unfortunately, if XWork 2 is modified in a significant way, the Struts build 
doesn't check for and retrieve a new version of the XWork snapshot jar, 
resulting in compilation or unit test failures.</p>
+
+<p>The solution is to clear out any stale XWork 2 jars in your local Maven 
repository, usually by removing the directory 
<code>~/.m2/repository/opensymphony</code>.  This will force the Struts Maven 
build to pull down a fresh copy of XWork and hopefully resolve your problem.</p>
+
+<h2 id="BuildingwithMaven-Mirrors">Mirrors</h2>
+
+<p>The default mirror for Maven builds ("ibiblio") can be slow and unreliable. 
Maven lets you specify <a shape="rect" class="external-link" 
href="http://maven.apache.org/guides/mini/guide-mirror-settings.html";>alternative
 mirrors</a> so that you don't have to depend on ibiblio for everything.</p>
+
+<p>You can add new mirrors through the Settings file (~/.m2/settings.xml).</p>
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Mirror, 
Mirror</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">
+&lt;settings&gt;
+
+  &lt;mirrors&gt;
+    &lt;mirror&gt;
+      &lt;id&gt;dotsrc&lt;/id&gt;
+      &lt;url&gt;http://mirrors.dotsrc.org/maven2&lt;/url&gt;
+      &lt;mirrorOf&gt;central&lt;/mirrorOf&gt;
+    &lt;/mirror&gt;
+  &lt;/mirrors&gt;
+
+&lt;/settings&gt;
+</pre>
+</div></div>
+<div class="confluence-information-macro 
confluence-information-macro-tip"><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Sometimes the alternative mirrors 
have problems too or aren't updated at the same frequency as the main mirror. 
If you have trouble building, try commenting out the aternative 
mirror.</p></div></div>
+
+<h2 id="BuildingwithMaven-Firsttimebuilding">First time building</h2>
+
+<p>In some cases it has been seen that Maven will complain if a module doesn't 
exist, even though it is part of the current build. Often, the missing module 
turns up when executing <code>mvn package</code>. A simple fix for this is to 
run <code>mvn install</code> instead. If you have to do this, it will probably 
only be a one time thing.</p>
+
+<h3 id="BuildingwithMaven-Next:">Next: <a shape="rect" 
href="creating-and-signing-a-distribution.html">Creating and Signing a 
Distribution</a></h3></div>
+        </div>
+
+        
+    </div>
+</div>
+<div class="footer">
+    Generated by CXF SiteExporter
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/124e36c4/content/docs/building-your-own-interceptor.html
----------------------------------------------------------------------
diff --git a/content/docs/building-your-own-interceptor.html 
b/content/docs/building-your-own-interceptor.html
new file mode 100644
index 0000000..af0612a
--- /dev/null
+++ b/content/docs/building-your-own-interceptor.html
@@ -0,0 +1,233 @@
+<!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='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
+    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
+    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
+    <script src='https://struts.apache.org/highlighter/js/shBrushCss.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>Building Your Own Interceptor</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="faqs.html">FAQs</a>&nbsp;&gt;&nbsp;<a 
href="cookbook.html">Cookbook</a>&nbsp;&gt;&nbsp;<a 
href="building-your-own-interceptor.html">Building Your Own Interceptor</a>
+        </td>
+        <td align="right" valign="middle" nowrap>
+            <form name="search" action="https://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">Building 
Your Own Interceptor</div>
+
+        <div class="greynavbar" align="right" style="padding: 2px 10px; 
margin: 0px;">
+            <a 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=23337";>
+                <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=23337";>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=23337";>
+                <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=23337";>Add
 Page</a>
+            &nbsp;
+            <a 
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=23337";>
+                <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=23337";>Add
 News</a>
+        </div>
+    </div>
+
+    <div class="pagecontent">
+        <div class="wiki-content">
+            <div id="ConfluenceContent"><h2 
id="BuildingYourOwnInterceptor-BuildingyourownInterceptor">Building your own 
Interceptor</h2>
+
+<p>If none of the above interceptors suit your particular need, you will have 
to implement your own interceptor. Fortunately, this is an easy task to 
accomplish. Suppose we need an interceptor that places a greeting in the 
Session according to the time of the day (morning, afternoon or evening). 
Here's how we could implement it:</p>
+
+<h3 
id="BuildingYourOwnInterceptor-GreetingInterceptor.java:">GreetingInterceptor.java:</h3>
+
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">
+package cookbook;
+
+import java.util.Calendar;
+import com.opensymphony.xwork.interceptor.Interceptor;
+import org.apache.struts2.ActionInvocation;
+
+public class GreetingInterceptor implements Interceptor {
+  public void init() { }
+  public void destroy() { }
+  public String intercept(ActionInvocation invocation) throws Exception {
+    Calendar calendar = Calendar.getInstance();
+    int hour = calendar.get(Calendar.HOUR_OF_DAY);
+    String greeting = (hour &lt; 6) ? "Good evening" :
+       ((hour &lt; 12) ? "Good morning":
+       ((hour &lt; 18) ? "Good afternoon": "Good evening"));
+       invocation.getInvocationContext().getSession().put("Greeting", 
greeting);
+       String result = invocation.invoke();
+       return result;
+    }
+}
+</pre>
+</div></div>
+
+<h3 id="BuildingYourOwnInterceptor-struts.xml">struts.xml</h3>
+
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">
+&lt;!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"
+"http://www.opensymphony.com/xwork/xwork-1.0.dtd"&gt;
+
+&lt;xwork&gt;
+       &lt;!-- Include defaults (from Struts JAR). --&gt;
+       &lt;include file="struts-default.xml" /&gt;
+
+       &lt;!-- Configuration for the default package. --&gt;
+       &lt;package name="default" extends="webwork-default"&gt;
+            &lt;interceptors&gt;
+               &lt;interceptor name="Greeting" 
class="cookbook.GreetingInterceptor" /&gt;
+           &lt;/interceptors&gt;
+
+           &lt;!-- Greeting  --&gt;
+           &lt;action name="Greeting"&gt;
+             &lt;result type="velocity"&gt;Greeting.vm&lt;/result&gt;
+               &lt;interceptor-ref name="Greeting" /&gt;
+           &lt;/action&gt;
+       &lt;/package&gt;
+&lt;/struts&gt;
+</pre>
+</div></div>
+
+<h3 id="BuildingYourOwnInterceptor-Greeting.vm:">Greeting.vm:</h3>
+
+<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Cookbook - Building Your Own Interceptor&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+#set ($ses = $req.getSession())
+&lt;p&gt;&lt;b&gt;${ses.getAttribute('Greeting')}!&lt;/b&gt;&lt;/p&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
+</pre>
+</div></div>
+<p>Let's take a look at our interceptor class first. As explained before, the 
interceptor must implement 
<code>com.opensymphony.xwork.interceptor.Interceptor</code>'s methods: 
<code>init()</code>, called during interceptor initialization, 
<code>destroy()</code>, called during destruction, and most importantly, 
<code>intercept(ActionInvocation invocation)</code>, which is where we place 
the code that does the work.</p>
+
+<p>Notice that our interceptor returns the result from 
<code>invocation.invoke()</code> which is the method responsible for executing 
the next interceptor in the stack or, if this is the last one, the action. This 
means that the interceptor has the power of short-circuiting the action 
invocation and return a result string without executing the action at all! Use 
this with caution, though.</p>
+
+<p>One other thing that interceptors can do is execute code after the action 
has executed. To do that, just place code after the invocation.invoke() call. 
</p>
+
+<p>The <code>struts.xml</code> configuration and the result page are pretty 
straightforward and require no further explanation. A custom Action is not 
neede for this example, so we omit the class reference, and use the default 
ActionSupport class.</p></div>
+        </div>
+
+        
+    </div>
+</div>
+<div class="footer">
+    Generated by CXF SiteExporter
+</div>
+</body>
+</html>

Reply via email to