http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/resources/log4j.dtd
----------------------------------------------------------------------
diff --git a/unit_testing/src/main/resources/log4j.dtd 
b/unit_testing/src/main/resources/log4j.dtd
deleted file mode 100644
index 1aabd96..0000000
--- a/unit_testing/src/main/resources/log4j.dtd
+++ /dev/null
@@ -1,227 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- 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.
--->
-
-<!-- Authors: Chris Taylor, Ceki Gulcu. -->
-
-<!-- Version: 1.2 -->
-
-<!-- A configuration element consists of optional renderer
-elements,appender elements, categories and an optional root
-element. -->
-
-<!ELEMENT log4j:configuration (renderer*, appender*,plugin*, 
(category|logger)*,root?,
-                               (categoryFactory|loggerFactory)?)>
-
-<!-- The "threshold" attribute takes a level value below which -->
-<!-- all logging statements are disabled. -->
-
-<!-- Setting the "debug" enable the printing of internal log4j logging   -->
-<!-- statements.                                                         -->
-
-<!-- By default, debug attribute is "null", meaning that we not do touch -->
-<!-- internal log4j logging settings. The "null" value for the threshold -->
-<!-- attribute can be misleading. The threshold field of a repository   -->
-<!-- cannot be set to null. The "null" value for the threshold attribute -->
-<!-- simply means don't touch the threshold field, the threshold field   --> 
-<!-- keeps its old value.                                                -->
-     
-<!ATTLIST log4j:configuration
-  xmlns:log4j              CDATA #FIXED "http://jakarta.apache.org/log4j/"; 
-  threshold                (all|trace|debug|info|warn|error|fatal|off|null) 
"null"
-  debug                    (true|false|null)  "null"
-  reset                    (true|false) "false"
->
-
-<!-- renderer elements allow the user to customize the conversion of  -->
-<!-- message objects to String.                                       -->
-
-<!ELEMENT renderer EMPTY>
-<!ATTLIST renderer
-  renderedClass  CDATA #REQUIRED
-  renderingClass CDATA #REQUIRED
->
-
-<!-- Appenders must have a name and a class. -->
-<!-- Appenders may contain an error handler, a layout, optional parameters -->
-<!-- and filters. They may also reference (or include) other appenders. -->
-<!ELEMENT appender (errorHandler?, param*,
-      rollingPolicy?, triggeringPolicy?, connectionSource?,
-      layout?, filter*, appender-ref*)>
-<!ATTLIST appender
-  name                 CDATA   #REQUIRED
-  class        CDATA   #REQUIRED
->
-
-<!ELEMENT layout (param*)>
-<!ATTLIST layout
-  class                CDATA   #REQUIRED
->
-
-<!ELEMENT filter (param*)>
-<!ATTLIST filter
-  class                CDATA   #REQUIRED
->
-
-<!-- ErrorHandlers can be of any class. They can admit any number of -->
-<!-- parameters. -->
-
-<!ELEMENT errorHandler (param*, root-ref?, logger-ref*,  appender-ref?)> 
-<!ATTLIST errorHandler
-   class        CDATA   #REQUIRED 
->
-
-<!ELEMENT root-ref EMPTY>
-
-<!ELEMENT logger-ref EMPTY>
-<!ATTLIST logger-ref
-  ref CDATA #REQUIRED
->
-
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  name         CDATA   #REQUIRED
-  value                CDATA   #REQUIRED
->
-
-
-<!-- The priority class is org.apache.log4j.Level by default -->
-<!ELEMENT priority (param*)>
-<!ATTLIST priority
-  class   CDATA        #IMPLIED
-  value          CDATA #REQUIRED
->
-
-<!-- The level class is org.apache.log4j.Level by default -->
-<!ELEMENT level (param*)>
-<!ATTLIST level
-  class   CDATA        #IMPLIED
-  value          CDATA #REQUIRED
->
-
-
-<!-- If no level element is specified, then the configurator MUST not -->
-<!-- touch the level of the named category. -->
-<!ELEMENT category (param*,(priority|level)?,appender-ref*)>
-<!ATTLIST category
-  class         CDATA   #IMPLIED
-  name         CDATA   #REQUIRED
-  additivity   (true|false) "true"  
->
-
-<!-- If no level element is specified, then the configurator MUST not -->
-<!-- touch the level of the named logger. -->
-<!ELEMENT logger (level?,appender-ref*)>
-<!ATTLIST logger
-  name         CDATA   #REQUIRED
-  additivity   (true|false) "true"  
->
-
-
-<!ELEMENT categoryFactory (param*)>
-<!ATTLIST categoryFactory 
-   class        CDATA #REQUIRED>
-
-<!ELEMENT loggerFactory (param*)>
-<!ATTLIST loggerFactory
-   class        CDATA #REQUIRED>
-
-<!ELEMENT appender-ref EMPTY>
-<!ATTLIST appender-ref
-  ref CDATA #REQUIRED
->
-
-<!-- plugins must have a name and class and can have optional parameters -->
-<!ELEMENT plugin (param*, connectionSource?)>
-<!ATTLIST plugin
-  name                 CDATA      #REQUIRED
-  class        CDATA  #REQUIRED
->
-
-<!ELEMENT connectionSource (dataSource?, param*)>
-<!ATTLIST connectionSource
-  class        CDATA  #REQUIRED
->
-
-<!ELEMENT dataSource (param*)>
-<!ATTLIST dataSource
-  class        CDATA  #REQUIRED
->
-
-<!ELEMENT triggeringPolicy ((param|filter)*)>
-<!ATTLIST triggeringPolicy
-  name                 CDATA  #IMPLIED
-  class        CDATA  #REQUIRED
->
-
-<!ELEMENT rollingPolicy (param*)>
-<!ATTLIST rollingPolicy
-  name                 CDATA  #IMPLIED
-  class        CDATA  #REQUIRED
->
-
-
-<!-- If no priority element is specified, then the configurator MUST not -->
-<!-- touch the priority of root. -->
-<!-- The root category always exists and cannot be subclassed. -->
-<!ELEMENT root (param*, (priority|level)?, appender-ref*)>
-
-
-<!-- ==================================================================== -->
-<!--                       A logging event                                -->
-<!-- ==================================================================== -->
-<!ELEMENT log4j:eventSet (log4j:event*)>
-<!ATTLIST log4j:eventSet
-  xmlns:log4j             CDATA #FIXED "http://jakarta.apache.org/log4j/"; 
-  version                (1.1|1.2) "1.2" 
-  includesLocationInfo   (true|false) "true"
->
-
-
-
-<!ELEMENT log4j:event (log4j:message, log4j:NDC?, log4j:throwable?, 
-                       log4j:locationInfo?, log4j:properties?) >
-
-<!-- The timestamp format is application dependent. -->
-<!ATTLIST log4j:event
-    logger     CDATA #REQUIRED
-    level      CDATA #REQUIRED
-    thread     CDATA #REQUIRED
-    timestamp  CDATA #REQUIRED
-    time       CDATA #IMPLIED
->
-
-<!ELEMENT log4j:message (#PCDATA)>
-<!ELEMENT log4j:NDC (#PCDATA)>
-
-<!ELEMENT log4j:throwable (#PCDATA)>
-
-<!ELEMENT log4j:locationInfo EMPTY>
-<!ATTLIST log4j:locationInfo
-  class  CDATA #REQUIRED
-  method CDATA #REQUIRED
-  file   CDATA #REQUIRED
-  line   CDATA #REQUIRED
->
-
-<!ELEMENT log4j:properties (log4j:data*)>
-
-<!ELEMENT log4j:data EMPTY>
-<!ATTLIST log4j:data
-  name   CDATA #REQUIRED
-  value  CDATA #REQUIRED
->

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/unit_testing/src/main/resources/log4j.xml 
b/unit_testing/src/main/resources/log4j.xml
deleted file mode 100644
index 2100cb2..0000000
--- a/unit_testing/src/main/resources/log4j.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" 
"log4j.dtd">
-
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/";>
-    
-    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
-       <layout class="org.apache.log4j.PatternLayout"> 
-          <param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/> 
-       </layout> 
-    </appender>
- 
-    <!-- specify the logging level for loggers from other libraries -->
-    <logger name="com.opensymphony">
-       <level value="DEBUG" />
-    </logger>
-
-    <logger name="org.apache.struts2">
-        <level value="DEBUG" />
-    </logger>
-  
-   <!-- for all other loggers log only debug and above log messages -->
-     <root>
-        <priority value="INFO"/> 
-        <appender-ref ref="STDOUT" /> 
-     </root> 
-    
-</log4j:configuration> 
-

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/unit_testing/src/main/resources/struts.xml 
b/unit_testing/src/main/resources/struts.xml
deleted file mode 100644
index 21cc563..0000000
--- a/unit_testing/src/main/resources/struts.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE struts PUBLIC
-    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
-    "http://struts.apache.org/dtds/struts-2.0.dtd";>
-
-<struts>
-
-       <constant name="struts.devMode" value="true" />
-
-       <package name="basicstruts2" extends="struts-default">
-
-        <!-- If no class attribute is specified the framework will assume 
success and 
-        render the result index.jsp -->
-        <!-- If no name value for the result node is specified the success 
value is the default -->
-               <action name="index">
-                       <result>/index.jsp</result>
-               </action>
-
-               
-         <action name="register" 
class="org.apache.struts.register.action.Register" method="execute">
-               <result name="success">/thankyou.jsp</result>
-               <result name="input">/register.jsp</result>
-         </action>
-
-       </package>
-
-</struts>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/webapp/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/unit_testing/src/main/webapp/META-INF/MANIFEST.MF 
b/unit_testing/src/main/webapp/META-INF/MANIFEST.MF
deleted file mode 100644
index 5e94951..0000000
--- a/unit_testing/src/main/webapp/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Class-Path: 
-

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/unit_testing/src/main/webapp/WEB-INF/web.xml 
b/unit_testing/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 794e993..0000000
--- a/unit_testing/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";>
-<display-name>Struts 2 Unit Testing</display-name>
-  <welcome-file-list>
-    <welcome-file>index.jsp</welcome-file>
-  </welcome-file-list>
-  
-                                        
-    <filter>
-        <filter-name>struts2</filter-name>
-        
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
-    </filter>
-
-     <filter-mapping>
-        <filter-name>struts2</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-    
-</web-app>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/webapp/index.jsp
----------------------------------------------------------------------
diff --git a/unit_testing/src/main/webapp/index.jsp 
b/unit_testing/src/main/webapp/index.jsp
deleted file mode 100644
index 48d3fc5..0000000
--- a/unit_testing/src/main/webapp/index.jsp
+++ /dev/null
@@ -1,17 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
-    pageEncoding="ISO-8859-1"%>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Basic Struts 2 Application - Welcome</title>
-</head>
-<body>
-<h1>Welcome To Struts 2!</h1>
-
-
-
-<p><a href="register.jsp">Please register</a> for our prize drawing.</p>
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/webapp/register.jsp
----------------------------------------------------------------------
diff --git a/unit_testing/src/main/webapp/register.jsp 
b/unit_testing/src/main/webapp/register.jsp
deleted file mode 100644
index a4acb15..0000000
--- a/unit_testing/src/main/webapp/register.jsp
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
-    pageEncoding="ISO-8859-1"%>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
-<html xmlns="http://www.w3.org/1999/xhtml";>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Register</title>
-<s:head />
-</head>
-<body>
-<h3>Register for a prize by completing this form.</h3>
-
-<s:form action="register">
-
-         <s:textfield name="personBean.firstName" label="First name" />
-         <s:textfield  name="personBean.lastName" label="Last name" />
-         <s:textfield name="personBean.email"  label ="Email"/>  
-         <s:textfield name="personBean.age"  label="Age"  />
-         
-         <s:submit/>
-         
-</s:form>      
- 
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/webapp/thankyou.jsp
----------------------------------------------------------------------
diff --git a/unit_testing/src/main/webapp/thankyou.jsp 
b/unit_testing/src/main/webapp/thankyou.jsp
deleted file mode 100644
index 3c845bc..0000000
--- a/unit_testing/src/main/webapp/thankyou.jsp
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
-    pageEncoding="ISO-8859-1"%>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
-<html xmlns="http://www.w3.org/1999/xhtml";>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Registration Successful</title>
-</head>
-<body>
-<h3>Thank you for registering for a prize.</h3>
-
-<p>Your registration information: <s:property value="personBean" /> </p>
-
-<p><a href="<s:url action='index' />" >Return to home page</a>.</p>
-
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/test/java/org/apache/struts/register/action/RegisterTest.java
----------------------------------------------------------------------
diff --git 
a/unit_testing/src/test/java/org/apache/struts/register/action/RegisterTest.java
 
b/unit_testing/src/test/java/org/apache/struts/register/action/RegisterTest.java
deleted file mode 100644
index d4e98a5..0000000
--- 
a/unit_testing/src/test/java/org/apache/struts/register/action/RegisterTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.apache.struts.register.action;
-
-
-
-import org.apache.struts2.StrutsTestCase;
-import org.junit.Test;
-
-import com.opensymphony.xwork2.ActionProxy;
-import com.opensymphony.xwork2.ActionSupport;
-
-public class RegisterTest extends StrutsTestCase {
-
-       @Test
-       public void testExecuteValidationPasses() throws Exception {
-               
-               request.setParameter("personBean.firstName", "Bruce");
-               
-               request.setParameter("personBean.lastName", "Phillips");
-               
-               request.setParameter("personBean.email", "[email protected]");
-               
-               request.setParameter("personBean.age", "19");
-                       
-               ActionProxy actionProxy = getActionProxy("/register.action") ;
-               
-               Register action = (Register) actionProxy.getAction();
-               
-               assertNotNull("The action is null but should not be.", action);
-
-               String result = actionProxy.execute();
-               
-               assertEquals("The execute method did not return " + 
ActionSupport.SUCCESS + " but should have.", ActionSupport.SUCCESS, result);
-
-       }
-       
-       @Test
-       public void testExecuteValidationFailsMissingFirstName() throws 
Exception {
-               
-               request.setParameter("personBean.firstName", "Bruce");
-               
-               request.setParameter("personBean.lastName", "Phillips");
-               
-               request.setParameter("personBean.email", "[email protected]");
-               
-               request.setParameter("personBean.age", "17");
-                       
-               ActionProxy actionProxy = getActionProxy("/register.action") ;
-               
-               Register action = (Register) actionProxy.getAction();
-               
-               assertNotNull("The action is null but should not be.", action);
-
-               String result = actionProxy.execute();
-               
-               assertEquals("The execute method did not return " + 
ActionSupport.INPUT + " but should have.", ActionSupport.INPUT, result);
-
-       }
-       
-       
-       @Test
-       public void testExecuteValidationFailsAgeToYoung() throws Exception {
-               
-               
-               request.setParameter("personBean.lastName", "Phillips");
-               
-               request.setParameter("personBean.email", "[email protected]");
-               
-               request.setParameter("personBean.age", "19");
-                       
-               ActionProxy actionProxy = getActionProxy("/register.action") ;
-               
-               Register action = (Register) actionProxy.getAction();
-               
-               assertNotNull("The action is null but should not be.", action);
-
-               String result = actionProxy.execute();
-               
-               assertEquals("The execute method did not return " + 
ActionSupport.INPUT + " but should have.", ActionSupport.INPUT, result);
-
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/README.txt
----------------------------------------------------------------------
diff --git a/using-tags/README.txt b/using-tags/README.txt
new file mode 100644
index 0000000..2ebb6ed
--- /dev/null
+++ b/using-tags/README.txt
@@ -0,0 +1,16 @@
+This is the example project referred to in the
+Struts 2 documentation, Using Tags tutorial.
+See:  http://struts.apache.org.
+
+To build the application's war file run mvn clean package
+from the project's root folder.
+
+The war file is created in the target sub-folder.
+
+Copy the war file to your Servlet container (e.g. Tomcat, GlassFish) and 
+then startup the Servlet container.
+
+In a web browser go to:  http://localhost:8080/using-tags/index.action.
+
+You should see a web page with Welcome to Struts 2!
+

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/pom.xml
----------------------------------------------------------------------
diff --git a/using-tags/pom.xml b/using-tags/pom.xml
new file mode 100644
index 0000000..4da6604
--- /dev/null
+++ b/using-tags/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";
+         xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>struts.apache.org</groupId>
+        <artifactId>struts2examples</artifactId>
+        <version>1.0.0</version>
+    </parent>
+
+    <artifactId>using-tags</artifactId>
+    <name>Using Struts 2 Tags</name>
+
+    <description>Struts 2 example application for the Using Struts 2 Tags 
getting started tutorial</description>
+
+    <packaging>war</packaging>
+
+    <build>
+        <finalName>using_tags</finalName>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java
----------------------------------------------------------------------
diff --git 
a/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java
 
b/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java
new file mode 100644
index 0000000..2a777be
--- /dev/null
+++ 
b/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java
@@ -0,0 +1,62 @@
+package org.apache.struts.using_tags.helloworld.action;
+
+
+import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts.using_tags.helloworld.model.MessageStore;
+
+/**
+ * Acts as a Struts 2 controller that responds
+ * to a user action by setting the value
+ * of the Message model class, and returns a String 
+ * result.
+ * @author Bruce Phillips
+ *
+ */
+public class HelloWorldAction extends ActionSupport {
+
+       private static final long serialVersionUID = 1L;
+       
+       /**
+        * The model class that stores the message
+        * to display in the view.
+        */
+       private MessageStore messageStore;
+       
+       private static int helloCount = 0;
+       
+       public int getHelloCount() {
+               return helloCount;
+       }
+
+       public void setHelloCount(int helloCount) {
+               HelloWorldAction.helloCount = helloCount;
+       }
+
+       /*
+        * Creates the MessageStore model object, 
+        * increase helloCount by 1 and 
+        * returns success.  The MessageStore model
+        * object will be available to the view.
+        * (non-Javadoc)
+        * @see com.opensymphony.xwork2.ActionSupport#execute()
+        */
+       public String execute() throws Exception {
+               
+               messageStore = new MessageStore() ;
+               
+               helloCount++;
+               
+               return SUCCESS;
+       }
+
+       public MessageStore getMessageStore() {
+               return messageStore;
+       }
+
+       public void setMessageStore(MessageStore messageStore) {
+               this.messageStore = messageStore;
+       }
+       
+       
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java
----------------------------------------------------------------------
diff --git 
a/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java
 
b/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java
new file mode 100644
index 0000000..8870513
--- /dev/null
+++ 
b/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java
@@ -0,0 +1,31 @@
+package org.apache.struts.using_tags.helloworld.model;
+
+/**
+ * Model class that stores a message.
+ * @author Bruce Phillips
+ *
+ */
+public class MessageStore {
+       
+       private String message;
+       
+       public MessageStore() {
+               
+               setMessage("Hello Struts User");
+       }
+
+       public String getMessage() {
+               return message;
+       }
+
+       public void setMessage(String message) {
+               this.message = message;
+       }
+       
+       public String toString() {
+               
+               return message + " (from toString)";
+               
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/resources/log4j.dtd
----------------------------------------------------------------------
diff --git a/using-tags/src/main/resources/log4j.dtd 
b/using-tags/src/main/resources/log4j.dtd
new file mode 100644
index 0000000..1aabd96
--- /dev/null
+++ b/using-tags/src/main/resources/log4j.dtd
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ 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.
+-->
+
+<!-- Authors: Chris Taylor, Ceki Gulcu. -->
+
+<!-- Version: 1.2 -->
+
+<!-- A configuration element consists of optional renderer
+elements,appender elements, categories and an optional root
+element. -->
+
+<!ELEMENT log4j:configuration (renderer*, appender*,plugin*, 
(category|logger)*,root?,
+                               (categoryFactory|loggerFactory)?)>
+
+<!-- The "threshold" attribute takes a level value below which -->
+<!-- all logging statements are disabled. -->
+
+<!-- Setting the "debug" enable the printing of internal log4j logging   -->
+<!-- statements.                                                         -->
+
+<!-- By default, debug attribute is "null", meaning that we not do touch -->
+<!-- internal log4j logging settings. The "null" value for the threshold -->
+<!-- attribute can be misleading. The threshold field of a repository   -->
+<!-- cannot be set to null. The "null" value for the threshold attribute -->
+<!-- simply means don't touch the threshold field, the threshold field   --> 
+<!-- keeps its old value.                                                -->
+     
+<!ATTLIST log4j:configuration
+  xmlns:log4j              CDATA #FIXED "http://jakarta.apache.org/log4j/"; 
+  threshold                (all|trace|debug|info|warn|error|fatal|off|null) 
"null"
+  debug                    (true|false|null)  "null"
+  reset                    (true|false) "false"
+>
+
+<!-- renderer elements allow the user to customize the conversion of  -->
+<!-- message objects to String.                                       -->
+
+<!ELEMENT renderer EMPTY>
+<!ATTLIST renderer
+  renderedClass  CDATA #REQUIRED
+  renderingClass CDATA #REQUIRED
+>
+
+<!-- Appenders must have a name and a class. -->
+<!-- Appenders may contain an error handler, a layout, optional parameters -->
+<!-- and filters. They may also reference (or include) other appenders. -->
+<!ELEMENT appender (errorHandler?, param*,
+      rollingPolicy?, triggeringPolicy?, connectionSource?,
+      layout?, filter*, appender-ref*)>
+<!ATTLIST appender
+  name                 CDATA   #REQUIRED
+  class        CDATA   #REQUIRED
+>
+
+<!ELEMENT layout (param*)>
+<!ATTLIST layout
+  class                CDATA   #REQUIRED
+>
+
+<!ELEMENT filter (param*)>
+<!ATTLIST filter
+  class                CDATA   #REQUIRED
+>
+
+<!-- ErrorHandlers can be of any class. They can admit any number of -->
+<!-- parameters. -->
+
+<!ELEMENT errorHandler (param*, root-ref?, logger-ref*,  appender-ref?)> 
+<!ATTLIST errorHandler
+   class        CDATA   #REQUIRED 
+>
+
+<!ELEMENT root-ref EMPTY>
+
+<!ELEMENT logger-ref EMPTY>
+<!ATTLIST logger-ref
+  ref CDATA #REQUIRED
+>
+
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+  name         CDATA   #REQUIRED
+  value                CDATA   #REQUIRED
+>
+
+
+<!-- The priority class is org.apache.log4j.Level by default -->
+<!ELEMENT priority (param*)>
+<!ATTLIST priority
+  class   CDATA        #IMPLIED
+  value          CDATA #REQUIRED
+>
+
+<!-- The level class is org.apache.log4j.Level by default -->
+<!ELEMENT level (param*)>
+<!ATTLIST level
+  class   CDATA        #IMPLIED
+  value          CDATA #REQUIRED
+>
+
+
+<!-- If no level element is specified, then the configurator MUST not -->
+<!-- touch the level of the named category. -->
+<!ELEMENT category (param*,(priority|level)?,appender-ref*)>
+<!ATTLIST category
+  class         CDATA   #IMPLIED
+  name         CDATA   #REQUIRED
+  additivity   (true|false) "true"  
+>
+
+<!-- If no level element is specified, then the configurator MUST not -->
+<!-- touch the level of the named logger. -->
+<!ELEMENT logger (level?,appender-ref*)>
+<!ATTLIST logger
+  name         CDATA   #REQUIRED
+  additivity   (true|false) "true"  
+>
+
+
+<!ELEMENT categoryFactory (param*)>
+<!ATTLIST categoryFactory 
+   class        CDATA #REQUIRED>
+
+<!ELEMENT loggerFactory (param*)>
+<!ATTLIST loggerFactory
+   class        CDATA #REQUIRED>
+
+<!ELEMENT appender-ref EMPTY>
+<!ATTLIST appender-ref
+  ref CDATA #REQUIRED
+>
+
+<!-- plugins must have a name and class and can have optional parameters -->
+<!ELEMENT plugin (param*, connectionSource?)>
+<!ATTLIST plugin
+  name                 CDATA      #REQUIRED
+  class        CDATA  #REQUIRED
+>
+
+<!ELEMENT connectionSource (dataSource?, param*)>
+<!ATTLIST connectionSource
+  class        CDATA  #REQUIRED
+>
+
+<!ELEMENT dataSource (param*)>
+<!ATTLIST dataSource
+  class        CDATA  #REQUIRED
+>
+
+<!ELEMENT triggeringPolicy ((param|filter)*)>
+<!ATTLIST triggeringPolicy
+  name                 CDATA  #IMPLIED
+  class        CDATA  #REQUIRED
+>
+
+<!ELEMENT rollingPolicy (param*)>
+<!ATTLIST rollingPolicy
+  name                 CDATA  #IMPLIED
+  class        CDATA  #REQUIRED
+>
+
+
+<!-- If no priority element is specified, then the configurator MUST not -->
+<!-- touch the priority of root. -->
+<!-- The root category always exists and cannot be subclassed. -->
+<!ELEMENT root (param*, (priority|level)?, appender-ref*)>
+
+
+<!-- ==================================================================== -->
+<!--                       A logging event                                -->
+<!-- ==================================================================== -->
+<!ELEMENT log4j:eventSet (log4j:event*)>
+<!ATTLIST log4j:eventSet
+  xmlns:log4j             CDATA #FIXED "http://jakarta.apache.org/log4j/"; 
+  version                (1.1|1.2) "1.2" 
+  includesLocationInfo   (true|false) "true"
+>
+
+
+
+<!ELEMENT log4j:event (log4j:message, log4j:NDC?, log4j:throwable?, 
+                       log4j:locationInfo?, log4j:properties?) >
+
+<!-- The timestamp format is application dependent. -->
+<!ATTLIST log4j:event
+    logger     CDATA #REQUIRED
+    level      CDATA #REQUIRED
+    thread     CDATA #REQUIRED
+    timestamp  CDATA #REQUIRED
+    time       CDATA #IMPLIED
+>
+
+<!ELEMENT log4j:message (#PCDATA)>
+<!ELEMENT log4j:NDC (#PCDATA)>
+
+<!ELEMENT log4j:throwable (#PCDATA)>
+
+<!ELEMENT log4j:locationInfo EMPTY>
+<!ATTLIST log4j:locationInfo
+  class  CDATA #REQUIRED
+  method CDATA #REQUIRED
+  file   CDATA #REQUIRED
+  line   CDATA #REQUIRED
+>
+
+<!ELEMENT log4j:properties (log4j:data*)>
+
+<!ELEMENT log4j:data EMPTY>
+<!ATTLIST log4j:data
+  name   CDATA #REQUIRED
+  value  CDATA #REQUIRED
+>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/using-tags/src/main/resources/log4j.xml 
b/using-tags/src/main/resources/log4j.xml
new file mode 100644
index 0000000..2100cb2
--- /dev/null
+++ b/using-tags/src/main/resources/log4j.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" 
"log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/";>
+    
+    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
+       <layout class="org.apache.log4j.PatternLayout"> 
+          <param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/> 
+       </layout> 
+    </appender>
+ 
+    <!-- specify the logging level for loggers from other libraries -->
+    <logger name="com.opensymphony">
+       <level value="DEBUG" />
+    </logger>
+
+    <logger name="org.apache.struts2">
+        <level value="DEBUG" />
+    </logger>
+  
+   <!-- for all other loggers log only debug and above log messages -->
+     <root>
+        <priority value="INFO"/> 
+        <appender-ref ref="STDOUT" /> 
+     </root> 
+    
+</log4j:configuration> 
+

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/using-tags/src/main/resources/struts.xml 
b/using-tags/src/main/resources/struts.xml
new file mode 100644
index 0000000..f162457
--- /dev/null
+++ b/using-tags/src/main/resources/struts.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE struts PUBLIC
+    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
+    "http://struts.apache.org/dtds/struts-2.0.dtd";>
+
+<struts>
+
+       <constant name="struts.devMode" value="true" />
+
+       <package name="basicstruts2" extends="struts-default">
+
+        <!-- If no class attribute is specified the framework will assume 
success and 
+        render the result index.jsp -->
+        <!-- If no name value for the result node is specified the success 
value is the default -->
+               <action name="index">
+                       <result>/index.jsp</result>
+               </action>
+               
+               <!-- If the URL is hello.action the call the execute method of 
class HelloWorldAction.
+               If the result returned by the execute method is success render 
the HelloWorld.jsp -->
+               <action name="hello" 
class="org.apache.struts.using_tags.helloworld.action.HelloWorldAction" 
method="execute">
+                       <result name="success">/HelloWorld.jsp</result>
+               </action>
+
+       </package>
+
+</struts>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/webapp/HelloWorld.jsp
----------------------------------------------------------------------
diff --git a/using-tags/src/main/webapp/HelloWorld.jsp 
b/using-tags/src/main/webapp/HelloWorld.jsp
new file mode 100644
index 0000000..108810c
--- /dev/null
+++ b/using-tags/src/main/webapp/HelloWorld.jsp
@@ -0,0 +1,15 @@
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+    pageEncoding="ISO-8859-1"%>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Hello World!</title>
+</head>
+<body>
+<h2><s:property value="messageStore.message" /></h2>
+<p>I've said hello <s:property value="helloCount" /> times!</p>
+<p><s:property value="messageStore" /></p>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/using-tags/src/main/webapp/WEB-INF/web.xml 
b/using-tags/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..ac8a81b
--- /dev/null
+++ b/using-tags/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";>
+<display-name>Using_Tags_Struts2</display-name>
+  <welcome-file-list>
+    <welcome-file>index.jsp</welcome-file>
+  </welcome-file-list>
+  
+                                        
+    <filter>
+        <filter-name>struts2</filter-name>
+        
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
+    </filter>
+
+     <filter-mapping>
+        <filter-name>struts2</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+    
+</web-app>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/webapp/index.jsp
----------------------------------------------------------------------
diff --git a/using-tags/src/main/webapp/index.jsp 
b/using-tags/src/main/webapp/index.jsp
new file mode 100644
index 0000000..f9bcea2
--- /dev/null
+++ b/using-tags/src/main/webapp/index.jsp
@@ -0,0 +1,28 @@
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+    pageEncoding="ISO-8859-1"%>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Basic Struts 2 Application - Welcome</title>
+</head>
+<body>
+<h1>Welcome To Struts 2!</h1>
+<p><a href="<s:url action='hello'/>">Hello World</a></p>
+<s:url action="hello" var="helloLink">
+  <s:param name="userName">Bruce Phillips</s:param>
+</s:url>
+<p><a href="${helloLink}">Hello Bruce Phillips</a></p>
+
+<p>Get your own personal hello by filling out and submitting this form.</p>
+
+<s:form action="hello">
+
+       <s:textfield name="userName" label="Your name" />
+       
+       <s:submit value="Submit" />
+
+</s:form>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/README.txt
----------------------------------------------------------------------
diff --git a/using_tags/README.txt b/using_tags/README.txt
deleted file mode 100644
index 426c32c..0000000
--- a/using_tags/README.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-This is the example project referred to in the
-Struts 2 documentation, Using Tags tutorial.
-See:  http://struts.apache.org.
-
-To build the application's war file run mvn clean package
-from the project's root folder.
-
-The war file is created in the target sub-folder.
-
-Copy the war file to your Servlet container (e.g. Tomcat, GlassFish) and 
-then startup the Servlet container.
-
-In a web browser go to:  http://localhost:8080/using_tags/index.action.
-
-You should see a web page with Welcome to Struts 2!
-

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/pom.xml
----------------------------------------------------------------------
diff --git a/using_tags/pom.xml b/using_tags/pom.xml
deleted file mode 100644
index 54a61c4..0000000
--- a/using_tags/pom.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"; 
xmlns="http://maven.apache.org/POM/4.0.0";
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>struts.apache.org</groupId>
-    <artifactId>struts2examples</artifactId>
-    <version>1.0.0</version>
-  </parent>
-  <artifactId>using_tags</artifactId>
-  <name>using_tags</name>
-  <description>Struts 2 example application for the
-  Using Struts 2 Tags getting started tutorial</description>
-
-  <packaging>war</packaging>
-  
-       <build>
-               <finalName>using_tags</finalName>
-       </build>
-  
-</project>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java
----------------------------------------------------------------------
diff --git 
a/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java
 
b/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java
deleted file mode 100644
index 85017d9..0000000
--- 
a/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.apache.struts.using_tags.helloworld.action;
-
-
-
-import org.apache.struts.using_tags.helloworld.model.MessageStore;
-
-import com.opensymphony.xwork2.ActionSupport;
-
-/**
- * Acts as a Struts 2 controller that responds
- * to a user action by setting the value
- * of the Message model class, and returns a String 
- * result.
- * @author Bruce Phillips
- *
- */
-public class HelloWorldAction extends ActionSupport {
-
-       private static final long serialVersionUID = 1L;
-       
-       /**
-        * The model class that stores the message
-        * to display in the view.
-        */
-       private MessageStore messageStore;
-       
-       private static int helloCount = 0;
-       
-       public int getHelloCount() {
-               return helloCount;
-       }
-
-       public void setHelloCount(int helloCount) {
-               HelloWorldAction.helloCount = helloCount;
-       }
-
-       /*
-        * Creates the MessageStore model object, 
-        * increase helloCount by 1 and 
-        * returns success.  The MessageStore model
-        * object will be available to the view.
-        * (non-Javadoc)
-        * @see com.opensymphony.xwork2.ActionSupport#execute()
-        */
-       public String execute() throws Exception {
-               
-               messageStore = new MessageStore() ;
-               
-               helloCount++;
-               
-               return SUCCESS;
-       }
-
-       public MessageStore getMessageStore() {
-               return messageStore;
-       }
-
-       public void setMessageStore(MessageStore messageStore) {
-               this.messageStore = messageStore;
-       }
-       
-       
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java
----------------------------------------------------------------------
diff --git 
a/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java
 
b/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java
deleted file mode 100644
index 8870513..0000000
--- 
a/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.apache.struts.using_tags.helloworld.model;
-
-/**
- * Model class that stores a message.
- * @author Bruce Phillips
- *
- */
-public class MessageStore {
-       
-       private String message;
-       
-       public MessageStore() {
-               
-               setMessage("Hello Struts User");
-       }
-
-       public String getMessage() {
-               return message;
-       }
-
-       public void setMessage(String message) {
-               this.message = message;
-       }
-       
-       public String toString() {
-               
-               return message + " (from toString)";
-               
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/resources/log4j.dtd
----------------------------------------------------------------------
diff --git a/using_tags/src/main/resources/log4j.dtd 
b/using_tags/src/main/resources/log4j.dtd
deleted file mode 100644
index 1aabd96..0000000
--- a/using_tags/src/main/resources/log4j.dtd
+++ /dev/null
@@ -1,227 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- 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.
--->
-
-<!-- Authors: Chris Taylor, Ceki Gulcu. -->
-
-<!-- Version: 1.2 -->
-
-<!-- A configuration element consists of optional renderer
-elements,appender elements, categories and an optional root
-element. -->
-
-<!ELEMENT log4j:configuration (renderer*, appender*,plugin*, 
(category|logger)*,root?,
-                               (categoryFactory|loggerFactory)?)>
-
-<!-- The "threshold" attribute takes a level value below which -->
-<!-- all logging statements are disabled. -->
-
-<!-- Setting the "debug" enable the printing of internal log4j logging   -->
-<!-- statements.                                                         -->
-
-<!-- By default, debug attribute is "null", meaning that we not do touch -->
-<!-- internal log4j logging settings. The "null" value for the threshold -->
-<!-- attribute can be misleading. The threshold field of a repository   -->
-<!-- cannot be set to null. The "null" value for the threshold attribute -->
-<!-- simply means don't touch the threshold field, the threshold field   --> 
-<!-- keeps its old value.                                                -->
-     
-<!ATTLIST log4j:configuration
-  xmlns:log4j              CDATA #FIXED "http://jakarta.apache.org/log4j/"; 
-  threshold                (all|trace|debug|info|warn|error|fatal|off|null) 
"null"
-  debug                    (true|false|null)  "null"
-  reset                    (true|false) "false"
->
-
-<!-- renderer elements allow the user to customize the conversion of  -->
-<!-- message objects to String.                                       -->
-
-<!ELEMENT renderer EMPTY>
-<!ATTLIST renderer
-  renderedClass  CDATA #REQUIRED
-  renderingClass CDATA #REQUIRED
->
-
-<!-- Appenders must have a name and a class. -->
-<!-- Appenders may contain an error handler, a layout, optional parameters -->
-<!-- and filters. They may also reference (or include) other appenders. -->
-<!ELEMENT appender (errorHandler?, param*,
-      rollingPolicy?, triggeringPolicy?, connectionSource?,
-      layout?, filter*, appender-ref*)>
-<!ATTLIST appender
-  name                 CDATA   #REQUIRED
-  class        CDATA   #REQUIRED
->
-
-<!ELEMENT layout (param*)>
-<!ATTLIST layout
-  class                CDATA   #REQUIRED
->
-
-<!ELEMENT filter (param*)>
-<!ATTLIST filter
-  class                CDATA   #REQUIRED
->
-
-<!-- ErrorHandlers can be of any class. They can admit any number of -->
-<!-- parameters. -->
-
-<!ELEMENT errorHandler (param*, root-ref?, logger-ref*,  appender-ref?)> 
-<!ATTLIST errorHandler
-   class        CDATA   #REQUIRED 
->
-
-<!ELEMENT root-ref EMPTY>
-
-<!ELEMENT logger-ref EMPTY>
-<!ATTLIST logger-ref
-  ref CDATA #REQUIRED
->
-
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  name         CDATA   #REQUIRED
-  value                CDATA   #REQUIRED
->
-
-
-<!-- The priority class is org.apache.log4j.Level by default -->
-<!ELEMENT priority (param*)>
-<!ATTLIST priority
-  class   CDATA        #IMPLIED
-  value          CDATA #REQUIRED
->
-
-<!-- The level class is org.apache.log4j.Level by default -->
-<!ELEMENT level (param*)>
-<!ATTLIST level
-  class   CDATA        #IMPLIED
-  value          CDATA #REQUIRED
->
-
-
-<!-- If no level element is specified, then the configurator MUST not -->
-<!-- touch the level of the named category. -->
-<!ELEMENT category (param*,(priority|level)?,appender-ref*)>
-<!ATTLIST category
-  class         CDATA   #IMPLIED
-  name         CDATA   #REQUIRED
-  additivity   (true|false) "true"  
->
-
-<!-- If no level element is specified, then the configurator MUST not -->
-<!-- touch the level of the named logger. -->
-<!ELEMENT logger (level?,appender-ref*)>
-<!ATTLIST logger
-  name         CDATA   #REQUIRED
-  additivity   (true|false) "true"  
->
-
-
-<!ELEMENT categoryFactory (param*)>
-<!ATTLIST categoryFactory 
-   class        CDATA #REQUIRED>
-
-<!ELEMENT loggerFactory (param*)>
-<!ATTLIST loggerFactory
-   class        CDATA #REQUIRED>
-
-<!ELEMENT appender-ref EMPTY>
-<!ATTLIST appender-ref
-  ref CDATA #REQUIRED
->
-
-<!-- plugins must have a name and class and can have optional parameters -->
-<!ELEMENT plugin (param*, connectionSource?)>
-<!ATTLIST plugin
-  name                 CDATA      #REQUIRED
-  class        CDATA  #REQUIRED
->
-
-<!ELEMENT connectionSource (dataSource?, param*)>
-<!ATTLIST connectionSource
-  class        CDATA  #REQUIRED
->
-
-<!ELEMENT dataSource (param*)>
-<!ATTLIST dataSource
-  class        CDATA  #REQUIRED
->
-
-<!ELEMENT triggeringPolicy ((param|filter)*)>
-<!ATTLIST triggeringPolicy
-  name                 CDATA  #IMPLIED
-  class        CDATA  #REQUIRED
->
-
-<!ELEMENT rollingPolicy (param*)>
-<!ATTLIST rollingPolicy
-  name                 CDATA  #IMPLIED
-  class        CDATA  #REQUIRED
->
-
-
-<!-- If no priority element is specified, then the configurator MUST not -->
-<!-- touch the priority of root. -->
-<!-- The root category always exists and cannot be subclassed. -->
-<!ELEMENT root (param*, (priority|level)?, appender-ref*)>
-
-
-<!-- ==================================================================== -->
-<!--                       A logging event                                -->
-<!-- ==================================================================== -->
-<!ELEMENT log4j:eventSet (log4j:event*)>
-<!ATTLIST log4j:eventSet
-  xmlns:log4j             CDATA #FIXED "http://jakarta.apache.org/log4j/"; 
-  version                (1.1|1.2) "1.2" 
-  includesLocationInfo   (true|false) "true"
->
-
-
-
-<!ELEMENT log4j:event (log4j:message, log4j:NDC?, log4j:throwable?, 
-                       log4j:locationInfo?, log4j:properties?) >
-
-<!-- The timestamp format is application dependent. -->
-<!ATTLIST log4j:event
-    logger     CDATA #REQUIRED
-    level      CDATA #REQUIRED
-    thread     CDATA #REQUIRED
-    timestamp  CDATA #REQUIRED
-    time       CDATA #IMPLIED
->
-
-<!ELEMENT log4j:message (#PCDATA)>
-<!ELEMENT log4j:NDC (#PCDATA)>
-
-<!ELEMENT log4j:throwable (#PCDATA)>
-
-<!ELEMENT log4j:locationInfo EMPTY>
-<!ATTLIST log4j:locationInfo
-  class  CDATA #REQUIRED
-  method CDATA #REQUIRED
-  file   CDATA #REQUIRED
-  line   CDATA #REQUIRED
->
-
-<!ELEMENT log4j:properties (log4j:data*)>
-
-<!ELEMENT log4j:data EMPTY>
-<!ATTLIST log4j:data
-  name   CDATA #REQUIRED
-  value  CDATA #REQUIRED
->

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/using_tags/src/main/resources/log4j.xml 
b/using_tags/src/main/resources/log4j.xml
deleted file mode 100644
index 2100cb2..0000000
--- a/using_tags/src/main/resources/log4j.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" 
"log4j.dtd">
-
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/";>
-    
-    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
-       <layout class="org.apache.log4j.PatternLayout"> 
-          <param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/> 
-       </layout> 
-    </appender>
- 
-    <!-- specify the logging level for loggers from other libraries -->
-    <logger name="com.opensymphony">
-       <level value="DEBUG" />
-    </logger>
-
-    <logger name="org.apache.struts2">
-        <level value="DEBUG" />
-    </logger>
-  
-   <!-- for all other loggers log only debug and above log messages -->
-     <root>
-        <priority value="INFO"/> 
-        <appender-ref ref="STDOUT" /> 
-     </root> 
-    
-</log4j:configuration> 
-

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/using_tags/src/main/resources/struts.xml 
b/using_tags/src/main/resources/struts.xml
deleted file mode 100644
index f162457..0000000
--- a/using_tags/src/main/resources/struts.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE struts PUBLIC
-    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
-    "http://struts.apache.org/dtds/struts-2.0.dtd";>
-
-<struts>
-
-       <constant name="struts.devMode" value="true" />
-
-       <package name="basicstruts2" extends="struts-default">
-
-        <!-- If no class attribute is specified the framework will assume 
success and 
-        render the result index.jsp -->
-        <!-- If no name value for the result node is specified the success 
value is the default -->
-               <action name="index">
-                       <result>/index.jsp</result>
-               </action>
-               
-               <!-- If the URL is hello.action the call the execute method of 
class HelloWorldAction.
-               If the result returned by the execute method is success render 
the HelloWorld.jsp -->
-               <action name="hello" 
class="org.apache.struts.using_tags.helloworld.action.HelloWorldAction" 
method="execute">
-                       <result name="success">/HelloWorld.jsp</result>
-               </action>
-
-       </package>
-
-</struts>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/webapp/HelloWorld.jsp
----------------------------------------------------------------------
diff --git a/using_tags/src/main/webapp/HelloWorld.jsp 
b/using_tags/src/main/webapp/HelloWorld.jsp
deleted file mode 100644
index 108810c..0000000
--- a/using_tags/src/main/webapp/HelloWorld.jsp
+++ /dev/null
@@ -1,15 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
-    pageEncoding="ISO-8859-1"%>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Hello World!</title>
-</head>
-<body>
-<h2><s:property value="messageStore.message" /></h2>
-<p>I've said hello <s:property value="helloCount" /> times!</p>
-<p><s:property value="messageStore" /></p>
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/using_tags/src/main/webapp/WEB-INF/web.xml 
b/using_tags/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index ac8a81b..0000000
--- a/using_tags/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";>
-<display-name>Using_Tags_Struts2</display-name>
-  <welcome-file-list>
-    <welcome-file>index.jsp</welcome-file>
-  </welcome-file-list>
-  
-                                        
-    <filter>
-        <filter-name>struts2</filter-name>
-        
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
-    </filter>
-
-     <filter-mapping>
-        <filter-name>struts2</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-    
-</web-app>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/webapp/index.jsp
----------------------------------------------------------------------
diff --git a/using_tags/src/main/webapp/index.jsp 
b/using_tags/src/main/webapp/index.jsp
deleted file mode 100644
index f9bcea2..0000000
--- a/using_tags/src/main/webapp/index.jsp
+++ /dev/null
@@ -1,28 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
-    pageEncoding="ISO-8859-1"%>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Basic Struts 2 Application - Welcome</title>
-</head>
-<body>
-<h1>Welcome To Struts 2!</h1>
-<p><a href="<s:url action='hello'/>">Hello World</a></p>
-<s:url action="hello" var="helloLink">
-  <s:param name="userName">Bruce Phillips</s:param>
-</s:url>
-<p><a href="${helloLink}">Hello Bruce Phillips</a></p>
-
-<p>Get your own personal hello by filling out and submitting this form.</p>
-
-<s:form action="hello">
-
-       <s:textfield name="userName" label="Your name" />
-       
-       <s:submit value="Submit" />
-
-</s:form>
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/README.txt
----------------------------------------------------------------------
diff --git a/wildcard-method-selection/README.txt 
b/wildcard-method-selection/README.txt
new file mode 100644
index 0000000..cd9275d
--- /dev/null
+++ b/wildcard-method-selection/README.txt
@@ -0,0 +1,16 @@
+This is the example project referred to in the
+Struts 2 documentation, Wildcard Method tutorial.
+See:  http://struts.apache.org.
+
+To build the application's war file run mvn clean package
+from the project's root folder.
+
+The war file is created in the target sub-folder.
+
+Copy the war file to your Servlet container (e.g. Tomcat, GlassFish) and 
+then startup the Servlet container.
+
+In a web browser go to:  
http://localhost:8080/wildcard-method-selection/Person.action
+
+You should see a web page with People listed.
+

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/pom.xml
----------------------------------------------------------------------
diff --git a/wildcard-method-selection/pom.xml 
b/wildcard-method-selection/pom.xml
new file mode 100644
index 0000000..8b4fe1f
--- /dev/null
+++ b/wildcard-method-selection/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";
+         xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>struts.apache.org</groupId>
+        <artifactId>struts2examples</artifactId>
+        <version>1.0.0</version>
+    </parent>
+
+    <artifactId>wildcard-method-selection</artifactId>
+
+    <name>Wildcard Method Selection</name>
+
+    <description>Wildcard method selection example application for the Struts 
2 getting started tutorials
+    </description>
+    <packaging>war</packaging>
+
+    <build>
+        <finalName>wildcard-method-selection</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.mortbay.jetty</groupId>
+                <artifactId>jetty-maven-plugin</artifactId>
+                <version>8.1.16.v20140903</version>
+                <configuration>
+                    <stopKey>CTRL+C</stopKey>
+                    <stopPort>8999</stopPort>
+                    <scanIntervalSeconds>10</scanIntervalSeconds>
+                    <scanTargets>
+                        
<scanTarget>src/main/webapp/WEB-INF/web.xml</scanTarget>
+                    </scanTargets>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/action/PersonAction.java
----------------------------------------------------------------------
diff --git 
a/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/action/PersonAction.java
 
b/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/action/PersonAction.java
new file mode 100644
index 0000000..4aa0926
--- /dev/null
+++ 
b/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/action/PersonAction.java
@@ -0,0 +1,93 @@
+package org.apache.struts.tutorials.wildcardmethod.action;
+
+import com.opensymphony.xwork2.ActionSupport;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.struts.tutorials.wildcardmethod.model.Person;
+import org.apache.struts.tutorials.wildcardmethod.service.PersonService;
+
+import java.util.List;
+
+
+public class PersonAction extends ActionSupport {
+
+    //Create a Logger object
+    private static final Logger log = LogManager.getLogger(PersonAction.class);
+    private static final long serialVersionUID = 1L;
+
+    Person person;
+    int id;
+    List<Person> personList = PersonService.getPersons();
+    PersonService personService = new PersonService();
+
+    public String execute() throws Exception {
+        log.debug("In execute method");
+        return SUCCESS;
+    }
+
+    public String create() {
+        log.debug("In create method");
+        person = new Person();
+
+        return INPUT;
+    }
+
+    public String edit() {
+        log.debug("In edit method");
+        person = personService.getPerson(id);
+
+        return INPUT;
+    }
+
+    public String saveOrUpdate() {
+        log.debug("In saveOrUpdate method");
+        if (person.getId() > -1) {
+            personService.update(person);
+        } else {
+            personService.save(person);
+        }
+
+        personList = PersonService.getPersons();
+        return SUCCESS;
+    }
+
+
+    public String delete() {
+        log.debug("In delete method");
+        personService.deletePerson(id);
+
+        personList = PersonService.getPersons();
+
+        return SUCCESS;
+    }
+
+
+    public Person getPerson() {
+        return person;
+    }
+
+
+    public void setPerson(Person person) {
+        this.person = person;
+    }
+
+
+    public List<Person> getPersonList() {
+        return personList;
+    }
+
+
+    public void setPersonList(List<Person> personList) {
+        this.personList = personList;
+    }
+
+
+    public int getId() {
+        return id;
+    }
+
+
+    public void setId(int id) {
+        this.id = id;
+    }
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java
----------------------------------------------------------------------
diff --git 
a/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java
 
b/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java
new file mode 100644
index 0000000..d3e1b8d
--- /dev/null
+++ 
b/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java
@@ -0,0 +1,55 @@
+package org.apache.struts.tutorials.wildcardmethod.model;
+
+public class Person {
+       
+       private int id;
+       private String firstName;
+       private String lastName;
+       
+       
+       public Person() {
+               
+               this.id = -1;
+               this.firstName = null;
+               this.lastName = null;
+       }
+       
+       
+       public Person(int id, String firstName, String lastName) {
+               super();
+               this.id = id;
+               this.firstName = firstName;
+               this.lastName = lastName;
+       }
+       
+       public int getId() {
+               return id;
+       }
+       public void setId(int id) {
+               this.id = id;
+       }
+       public String getFirstName() {
+               return firstName;
+       }
+       public void setFirstName(String firstName) {
+               this.firstName = firstName;
+       }
+       public String getLastName() {
+               return lastName;
+       }
+       public void setLastName(String lastName) {
+               this.lastName = lastName;
+       }
+       
+       
+       public String toString() {
+               
+               
+               return firstName + " " + lastName;
+               
+       }
+       
+       
+       
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/service/PersonService.java
----------------------------------------------------------------------
diff --git 
a/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/service/PersonService.java
 
b/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/service/PersonService.java
new file mode 100644
index 0000000..79d5b5b
--- /dev/null
+++ 
b/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/service/PersonService.java
@@ -0,0 +1,88 @@
+package org.apache.struts.tutorials.wildcardmethod.service;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.struts.tutorials.wildcardmethod.model.Person;
+
+import java.util.*;
+
+
+
+public class PersonService {
+       
+       //Create a Logger object
+       private static final Logger log = 
LogManager.getLogger(PersonService.class);
+
+       private static SortedMap<Integer, Person> people = new TreeMap<>();
+       
+       static {
+               people.put(0, new Person(0, "Steve", "Smith") );
+               people.put(1, new Person(1, "Sue", "Jones") );
+       }
+
+
+       private static List<Person> personList = new ArrayList<>();
+       
+       static{
+               for (Integer id : people.keySet() ) {
+                       personList.add( people.get(id));
+               }
+       }
+       
+       
+       public static List<Person> getPersons() {
+               return personList;
+       }
+       
+       
+    public  void save(Person person) {
+       int newId = getNewId();
+       person.setId( newId );
+       people.put( newId, person);
+       rebuildPersonList();
+    }
+    
+    
+    private int getNewId() {
+       int newId = 0;
+       
+       try {
+         newId = people.lastKey() + 1;
+       } catch (NoSuchElementException ex) {
+                       log.info("Id value set to 0");
+               }
+ 
+       return newId;
+       }
+
+
+       public  void update(Person person) {
+       Person tempPerson = people.get( person.getId() );
+       
+       tempPerson.setFirstName( person.getFirstName() );
+       tempPerson.setLastName(person.getLastName() );
+       
+       rebuildPersonList();
+    }
+
+
+       public void deletePerson(int ID) {
+               people.remove(ID);
+               
+               rebuildPersonList();
+       }
+
+
+       public Person getPerson(int id) {
+               return people.get(id);
+       }
+       
+ 
+       public static void rebuildPersonList() {
+               personList = new ArrayList<>();
+
+               for (Integer id : people.keySet() ) {
+                       personList.add( people.get(id));
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/wildcard-method-selection/src/main/resources/log4j2.xml 
b/wildcard-method-selection/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..3d7ad0b
--- /dev/null
+++ b/wildcard-method-selection/src/main/resources/log4j2.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Logger name="com.opensymphony.xwork2" level="info"/>
+        <Logger name="org.apache.struts2" level="info"/>
+        <Logger name="org.apache.struts2.tutorials" level="debug"/>
+        <Root level="warn">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/wildcard-method-selection/src/main/resources/struts.xml 
b/wildcard-method-selection/src/main/resources/struts.xml
new file mode 100644
index 0000000..d6f1e93
--- /dev/null
+++ b/wildcard-method-selection/src/main/resources/struts.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE struts PUBLIC
+    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
+    "http://struts.apache.org/dtds/struts-2.0.dtd";>
+
+<struts>
+
+   <constant name="struts.devMode" value="true" />
+   <constant name="struts.enable.DynamicMethodInvocation" value="false" />
+
+   
+   <package name="wildcardmethodexample" extends="struts-default">
+
+        <!-- Whatever value is before Person for the name of
+        the action will be the name of the method to call in 
+        class PersonAction.  For example action createPerson 
+        will call a method named create in class PersonAction -->
+        
+               <action name="*Person" 
class="org.apache.struts.tutorials.wildcardmethod.action.PersonAction" 
method="{1}">
+                       <result name="success">view.jsp</result>
+                       <result name="input">input.jsp</result>
+               </action>
+               
+   </package>
+
+</struts>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/webapp/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/wildcard-method-selection/src/main/webapp/META-INF/MANIFEST.MF 
b/wildcard-method-selection/src/main/webapp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..254272e
--- /dev/null
+++ b/wildcard-method-selection/src/main/webapp/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/wildcard-method-selection/src/main/webapp/WEB-INF/web.xml 
b/wildcard-method-selection/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..9be994d
--- /dev/null
+++ b/wildcard-method-selection/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";>
+<display-name>Wildcard_Method_Struts2_Mvn</display-name>
+
+  <welcome-file-list>
+      <welcome-file>index.jsp</welcome-file>
+  </welcome-file-list>
+  
+                                        
+    <filter>
+        <filter-name>struts2</filter-name>
+        
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
+    </filter>
+
+     <filter-mapping>
+        <filter-name>struts2</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+    
+</web-app>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/webapp/index.jsp
----------------------------------------------------------------------
diff --git a/wildcard-method-selection/src/main/webapp/index.jsp 
b/wildcard-method-selection/src/main/webapp/index.jsp
new file mode 100644
index 0000000..efdb306
--- /dev/null
+++ b/wildcard-method-selection/src/main/webapp/index.jsp
@@ -0,0 +1 @@
+<% response.sendRedirect("Person.action"); %>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/webapp/input.jsp
----------------------------------------------------------------------
diff --git a/wildcard-method-selection/src/main/webapp/input.jsp 
b/wildcard-method-selection/src/main/webapp/input.jsp
new file mode 100644
index 0000000..442990e
--- /dev/null
+++ b/wildcard-method-selection/src/main/webapp/input.jsp
@@ -0,0 +1,40 @@
+<%@ page language="java" pageEncoding="ISO-8859-1" %>
+<%
+String path = request.getContextPath();
+String basePath = 
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
+%>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <base href="<%=basePath%>">
+    
+    <title>Edit Person</title>
+       <meta http-equiv="pragma" content="no-cache">
+       <meta http-equiv="cache-control" content="no-cache">
+       <meta http-equiv="expires" content="0">    
+
+  </head>
+  
+  <body>
+  <s:if test="id > 0">
+    <h3>Edit Person</h3>
+  </s:if>
+  <s:else>
+       <h3>Create Person</h3>
+  
+  </s:else>
+  
+  <s:form action='saveOrUpdatePerson'>
+  
+       <p><s:textfield name="person.firstName" label="First name" /> <br />
+       <s:textfield name="person.lastName" label="Last name" /> </p>
+       
+       <s:hidden name="person.id" />
+       <s:submit  value="Save" />
+  
+  </s:form>
+    
+   
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/webapp/view.jsp
----------------------------------------------------------------------
diff --git a/wildcard-method-selection/src/main/webapp/view.jsp 
b/wildcard-method-selection/src/main/webapp/view.jsp
new file mode 100644
index 0000000..e619846
--- /dev/null
+++ b/wildcard-method-selection/src/main/webapp/view.jsp
@@ -0,0 +1,60 @@
+<%@ page language="java" pageEncoding="ISO-8859-1" %>
+<%
+String path = request.getContextPath();
+String basePath = 
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
+%>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <base href="<%=basePath%>">    
+    <title>View People</title>
+       <meta http-equiv="pragma" content="no-cache">
+       <meta http-equiv="cache-control" content="no-cache">
+       <meta http-equiv="expires" content="0">    
+
+  </head>
+  
+  <body>
+  <h3>People</h3>
+    
+    
+    <s:if test="personList.size > 0">
+       <ol>
+         <s:iterator value="personList">
+                       <li>
+                               <s:property value="firstName" />
+                               
+                               <s:property value="lastName" /> 
+                               
+                               <%--Put the name of the method we want to call
+                               in front of Person.  This action will cause
+                               the method named edit to be called in the
+                               ActionSupport class (see struts.xml)  --%>
+                               <s:url action="editPerson" var="editUrl">
+                                      <s:param name="id" value="id"/>
+                           </s:url>
+                           
+                <s:url action="deletePerson" var="deleteUrl">
+                                      <s:param name="id" value="id"/>
+                           </s:url>
+                           
+                               <a href="<s:property value='#editUrl' />" 
>Edit</a>
+                               
+                               <a href="<s:property value='#deleteUrl' />" 
>Delete</a>
+                       </li>
+               </s:iterator>
+       </ol>
+    </s:if>
+ 
+       <%--Put the name of the method we want to call
+    in front of Person.  This action will cause
+    the method named create to be called in the
+    ActionSupport class (see struts.xml)  --%>   
+       <s:url action="createPerson" var="newUrl">
+       <s:param name="id" value="0"/>
+     </s:url>
+     
+    <p><a href="<s:property value='#newUrl' />" > Create new person.</a></p>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/README.txt
----------------------------------------------------------------------
diff --git a/wildcard_method_selection/README.txt 
b/wildcard_method_selection/README.txt
deleted file mode 100644
index 67a3f47..0000000
--- a/wildcard_method_selection/README.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-This is the example project referred to in the
-Struts 2 documentation, Wildcard Method tutorial.
-See:  http://struts.apache.org.
-
-To build the application's war file run mvn clean package
-from the project's root folder.
-
-The war file is created in the target sub-folder.
-
-Copy the war file to your Servlet container (e.g. Tomcat, GlassFish) and 
-then startup the Servlet container.
-
-In a web browser go to:  
http://localhost:8080/wildcard_method_selection/Person.action
-
-You should see a web page with People listed.
-

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/pom.xml
----------------------------------------------------------------------
diff --git a/wildcard_method_selection/pom.xml 
b/wildcard_method_selection/pom.xml
deleted file mode 100644
index a76d999..0000000
--- a/wildcard_method_selection/pom.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";
-         xmlns="http://maven.apache.org/POM/4.0.0";
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>struts.apache.org</groupId>
-        <artifactId>struts2examples</artifactId>
-        <version>1.0.0</version>
-    </parent>
-
-    <artifactId>wildcard_method_selection</artifactId>
-
-    <name>Wildcard Method Selection</name>
-
-    <description>Wildcard method selection example application for the
-        Struts 2 getting started tutorials
-    </description>
-    <packaging>war</packaging>
-
-    <build>
-        <finalName>wildcard_method_selection</finalName>
-        <plugins>
-            <plugin>
-                <groupId>org.mortbay.jetty</groupId>
-                <artifactId>jetty-maven-plugin</artifactId>
-                <version>8.1.16.v20140903</version>
-                <configuration>
-                    <stopKey>CTRL+C</stopKey>
-                    <stopPort>8999</stopPort>
-                    <scanIntervalSeconds>10</scanIntervalSeconds>
-                    <scanTargets>
-                        
<scanTarget>src/main/webapp/WEB-INF/web.xml</scanTarget>
-                    </scanTargets>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/action/PersonAction.java
----------------------------------------------------------------------
diff --git 
a/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/action/PersonAction.java
 
b/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/action/PersonAction.java
deleted file mode 100644
index ac3bf53..0000000
--- 
a/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/action/PersonAction.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package org.apache.struts.tutorials.wildcardmethod.action;
-
-import com.opensymphony.xwork2.ActionSupport;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.struts.tutorials.wildcardmethod.model.Person;
-import org.apache.struts.tutorials.wildcardmethod.service.PersonService;
-
-import java.util.List;
-
-
-public class PersonAction extends ActionSupport {
-
-    //Create a Logger object
-    private static final Logger log = LogManager.getLogger(PersonAction.class);
-    private static final long serialVersionUID = 1L;
-
-    Person person;
-    int id;
-    List<Person> personList = PersonService.getPersons();
-    PersonService personService = new PersonService();
-
-    public String execute() throws Exception {
-        log.debug("In execute method");
-        return SUCCESS;
-    }
-
-    public String create() {
-        log.debug("In create method");
-        person = new Person();
-
-        return INPUT;
-    }
-
-    public String edit() {
-        log.debug("In edit method");
-        person = personService.getPerson(id);
-
-        return INPUT;
-    }
-
-    public String saveOrUpdate() {
-        log.debug("In saveOrUpdate method");
-        if (person.getId() > -1) {
-            personService.update(person);
-        } else {
-            personService.save(person);
-        }
-
-        personList = PersonService.getPersons();
-        return SUCCESS;
-    }
-
-
-    public String delete() {
-        log.debug("In delete method");
-        personService.deletePerson(id);
-
-        personList = PersonService.getPersons();
-
-        return SUCCESS;
-    }
-
-
-    public Person getPerson() {
-        return person;
-    }
-
-
-    public void setPerson(Person person) {
-        this.person = person;
-    }
-
-
-    public List<Person> getPersonList() {
-        return personList;
-    }
-
-
-    public void setPersonList(List<Person> personList) {
-        this.personList = personList;
-    }
-
-
-    public int getId() {
-        return id;
-    }
-
-
-    public void setId(int id) {
-        this.id = id;
-    }
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java
----------------------------------------------------------------------
diff --git 
a/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java
 
b/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java
deleted file mode 100644
index 84abec3..0000000
--- 
a/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.apache.struts.tutorials.wildcardmethod.model;
-
-public class Person {
-       
-       private int id;
-       private String firstName;
-       private String lastName;
-       
-       
-       public Person() {
-               
-               this.id = -1;
-               this.firstName = null;
-               this.lastName = null;
-       }
-       
-       
-       public Person(int id, String firstName, String lastName) {
-               super();
-               this.id = id;
-               this.firstName = firstName;
-               this.lastName = lastName;
-       }
-       
-       public int getId() {
-               return id;
-       }
-       public void setId(int id) {
-               this.id = id;
-       }
-       public String getFirstName() {
-               return firstName;
-       }
-       public void setFirstName(String firstName) {
-               this.firstName = firstName;
-       }
-       public String getLastName() {
-               return lastName;
-       }
-       public void setLastName(String lastName) {
-               this.lastName = lastName;
-       }
-       
-       
-       public String toString() {
-               
-               
-               return firstName + " " + lastName;
-               
-       }
-       
-       
-       
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/service/PersonService.java
----------------------------------------------------------------------
diff --git 
a/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/service/PersonService.java
 
b/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/service/PersonService.java
deleted file mode 100644
index 0aa657c..0000000
--- 
a/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/service/PersonService.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.apache.struts.tutorials.wildcardmethod.service;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.struts.tutorials.wildcardmethod.model.Person;
-
-import java.util.*;
-
-
-
-public class PersonService {
-       
-       //Create a Logger object
-       private static final Logger log = 
LogManager.getLogger(PersonService.class);
-
-       private static SortedMap<Integer, Person> people = new TreeMap<>();
-       
-       static {
-               people.put(0, new Person(0, "Steve", "Smith") );
-               people.put(1, new Person(1, "Sue", "Jones") );
-       }
-
-
-       private static List<Person> personList = new ArrayList<>();
-       
-       static{
-               for (Integer id : people.keySet() ) {
-                       personList.add( people.get(id));
-               }
-       }
-       
-       
-       public static List<Person> getPersons() {
-               return personList;
-       }
-       
-       
-    public  void save(Person person) {
-       int newId = getNewId();
-       person.setId( newId );
-       people.put( newId, person);
-       rebuildPersonList();
-    }
-    
-    
-    private int getNewId() {
-       int newId = 0;
-       
-       try {
-         newId = people.lastKey() + 1;
-       } catch (NoSuchElementException ex) {
-                       log.info("Id value set to 0");
-               }
- 
-       return newId;
-       }
-
-
-       public  void update(Person person) {
-       Person tempPerson = people.get( person.getId() );
-       
-       tempPerson.setFirstName( person.getFirstName() );
-       tempPerson.setLastName(person.getLastName() );
-       
-       rebuildPersonList();
-    }
-
-
-       public void deletePerson(int ID) {
-               people.remove(ID);
-               
-               rebuildPersonList();
-       }
-
-
-       public Person getPerson(int id) {
-               return people.get(id);
-       }
-       
- 
-       public static void rebuildPersonList() {
-               personList = new ArrayList<>();
-
-               for (Integer id : people.keySet() ) {
-                       personList.add( people.get(id));
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/wildcard_method_selection/src/main/resources/log4j2.xml 
b/wildcard_method_selection/src/main/resources/log4j2.xml
deleted file mode 100644
index 3d7ad0b..0000000
--- a/wildcard_method_selection/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Configuration>
-    <Appenders>
-        <Console name="STDOUT" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Logger name="com.opensymphony.xwork2" level="info"/>
-        <Logger name="org.apache.struts2" level="info"/>
-        <Logger name="org.apache.struts2.tutorials" level="debug"/>
-        <Root level="warn">
-            <AppenderRef ref="STDOUT"/>
-        </Root>
-    </Loggers>
-</Configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/wildcard_method_selection/src/main/resources/struts.xml 
b/wildcard_method_selection/src/main/resources/struts.xml
deleted file mode 100644
index c8ea023..0000000
--- a/wildcard_method_selection/src/main/resources/struts.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE struts PUBLIC
-    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
-    "http://struts.apache.org/dtds/struts-2.0.dtd";>
-
-<struts>
-
-   <constant name="struts.devMode" value="true" />
-   <constant name="struts.enable.DynamicMethodInvocation" value="false" />
-
-   
-   <package name="wildcardmethodexample" extends="struts-default">
-
-        <!-- Whatever value is before Person for the name of
-        the action will be the name of the method to call in 
-        class PersonAction.  For example action createPerson 
-        will call a method named create in class PersonAction -->
-        
-               <action name="*Person" 
class="org.apache.struts.tutorials.wildcardmethod.action.PersonAction" 
method="{1}">
-                       <result name="success">view.jsp</result>
-                       <result name="input">input.jsp</result>
-               </action>
-               
-   </package>
-
-</struts>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/webapp/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/wildcard_method_selection/src/main/webapp/META-INF/MANIFEST.MF 
b/wildcard_method_selection/src/main/webapp/META-INF/MANIFEST.MF
deleted file mode 100644
index 5e94951..0000000
--- a/wildcard_method_selection/src/main/webapp/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Class-Path: 
-

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/wildcard_method_selection/src/main/webapp/WEB-INF/web.xml 
b/wildcard_method_selection/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 9be994d..0000000
--- a/wildcard_method_selection/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";>
-<display-name>Wildcard_Method_Struts2_Mvn</display-name>
-
-  <welcome-file-list>
-      <welcome-file>index.jsp</welcome-file>
-  </welcome-file-list>
-  
-                                        
-    <filter>
-        <filter-name>struts2</filter-name>
-        
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
-    </filter>
-
-     <filter-mapping>
-        <filter-name>struts2</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-    
-</web-app>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/webapp/index.jsp
----------------------------------------------------------------------
diff --git a/wildcard_method_selection/src/main/webapp/index.jsp 
b/wildcard_method_selection/src/main/webapp/index.jsp
deleted file mode 100644
index efdb306..0000000
--- a/wildcard_method_selection/src/main/webapp/index.jsp
+++ /dev/null
@@ -1 +0,0 @@
-<% response.sendRedirect("Person.action"); %>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/webapp/input.jsp
----------------------------------------------------------------------
diff --git a/wildcard_method_selection/src/main/webapp/input.jsp 
b/wildcard_method_selection/src/main/webapp/input.jsp
deleted file mode 100644
index 741d1d1..0000000
--- a/wildcard_method_selection/src/main/webapp/input.jsp
+++ /dev/null
@@ -1,40 +0,0 @@
-<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
-<%
-String path = request.getContextPath();
-String basePath = 
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
-%>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <base href="<%=basePath%>">
-    
-    <title>Edit Person</title>
-       <meta http-equiv="pragma" content="no-cache">
-       <meta http-equiv="cache-control" content="no-cache">
-       <meta http-equiv="expires" content="0">    
-
-  </head>
-  
-  <body>
-  <s:if test="id > 0">
-    <h3>Edit Person</h3>
-  </s:if>
-  <s:else>
-       <h3>Create Person</h3>
-  
-  </s:else>
-  
-  <s:form action='saveOrUpdatePerson'>
-  
-       <p><s:textfield name="person.firstName" label="First name" /> <br />
-       <s:textfield name="person.lastName" label="Last name" /> </p>
-       
-       <s:hidden name="person.id" />
-       <s:submit  value="Save" />
-  
-  </s:form>
-    
-   
-  </body>
-</html>

Reply via email to