struts-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jo...@apache.org
Subject [09/16] struts-examples git commit: Unify artifact names and use "-" instead of "_"
Date Sun, 14 Jun 2015 10:53:21 GMT
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message-resource/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/message-resource/src/main/resources/struts.xml b/message-resource/src/main/resources/struts.xml
new file mode 100644
index 0000000..6afdf20
--- /dev/null
+++ b/message-resource/src/main/resources/struts.xml
@@ -0,0 +1,37 @@
+<?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.custom.i18n.resources" value="global" />
+
+	<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.helloworld.action.HelloWorldAction" method="execute">
+			<result name="success">/HelloWorld.jsp</result>
+		</action>
+		
+	<action name="registerInput" class="org.apache.struts.register.action.Register" method="input" >
+		<result name="input">/register.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/message-resource/src/main/webapp/HelloWorld.jsp
----------------------------------------------------------------------
diff --git a/message-resource/src/main/webapp/HelloWorld.jsp b/message-resource/src/main/webapp/HelloWorld.jsp
new file mode 100644
index 0000000..75e150d
--- /dev/null
+++ b/message-resource/src/main/webapp/HelloWorld.jsp
@@ -0,0 +1,19 @@
+<%@ 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>
+<h1><s:text name="greeting" /></h1>
+<h2><s:property value="messageStore.message" /></h2>
+<p>I've said hello <s:property value="helloCount" /> times!</p>
+<p><s:property value="messageStore" /></p>
+<p><a href="<s:url action='index' />" >Return to home page</a>.</p>
+<hr />
+<s:text name="contact" />
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message-resource/src/main/webapp/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/message-resource/src/main/webapp/META-INF/MANIFEST.MF b/message-resource/src/main/webapp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..254272e
--- /dev/null
+++ b/message-resource/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/message-resource/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/message-resource/src/main/webapp/WEB-INF/web.xml b/message-resource/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..315ec50
--- /dev/null
+++ b/message-resource/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>Message Resource</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/message-resource/src/main/webapp/index.jsp
----------------------------------------------------------------------
diff --git a/message-resource/src/main/webapp/index.jsp b/message-resource/src/main/webapp/index.jsp
new file mode 100644
index 0000000..ba96d1e
--- /dev/null
+++ b/message-resource/src/main/webapp/index.jsp
@@ -0,0 +1,43 @@
+<%@ 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>
+
+<s:url action="registerInput" var="registerInputLink" >
+ <s:param name="request_locale">en</s:param>
+</s:url>
+<p><a href="${registerInputLink}">Please register</a> for our prize drawing.</p>
+
+<h3>Registro espa�ol</h3>
+<s:url action="registerInput" var="registerInputLinkES">
+    <s:param name="request_locale">es</s:param>
+</s:url>
+<p><a href="${registerInputLinkES}">Por favor, reg�strese</a> para nuestro sorteo</p>
+
+<hr />
+<s:text name="contact" />
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message-resource/src/main/webapp/register.jsp
----------------------------------------------------------------------
diff --git a/message-resource/src/main/webapp/register.jsp b/message-resource/src/main/webapp/register.jsp
new file mode 100644
index 0000000..f56ca4e
--- /dev/null
+++ b/message-resource/src/main/webapp/register.jsp
@@ -0,0 +1,29 @@
+<?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>
+<h1><s:text name="greeting" /></h1>
+<h3><s:text name="instructions" /></h3>
+
+<s:form action="register">
+
+ 	  <s:textfield key="personBean.firstName"  />
+ 	  <s:textfield  key="personBean.lastName"  />
+ 	  <s:textfield key="personBean.email"  />  
+ 	  <s:textfield key="personBean.age"  />
+ 	  
+   	  <s:submit key="submit" />
+   	  
+</s:form>	
+ <hr />
+<s:text name="contact" />
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message-resource/src/main/webapp/thankyou.jsp
----------------------------------------------------------------------
diff --git a/message-resource/src/main/webapp/thankyou.jsp b/message-resource/src/main/webapp/thankyou.jsp
new file mode 100644
index 0000000..2b8fb9c
--- /dev/null
+++ b/message-resource/src/main/webapp/thankyou.jsp
@@ -0,0 +1,20 @@
+<?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><s:text name="thankyou" /></h3>
+
+<p>Your registration information: <s:property value="personBean" /> </p>
+
+<p><a href="<s:url action='index' />" >Return to home page</a>.</p>
+<hr />
+<s:text name="contact" />
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message_resource/README.txt
----------------------------------------------------------------------
diff --git a/message_resource/README.txt b/message_resource/README.txt
deleted file mode 100644
index d7d59f8..0000000
--- a/message_resource/README.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-This is the example project referred to in the
-Struts 2 documentation, Message Resource 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/message_resource/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/message_resource/pom.xml
----------------------------------------------------------------------
diff --git a/message_resource/pom.xml b/message_resource/pom.xml
deleted file mode 100644
index 8666d3b..0000000
--- a/message_resource/pom.xml
+++ /dev/null
@@ -1,23 +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>message_resource</artifactId>
-
-  <name>Message resource</name>
-
-<description>Message resource example application for the 
-  Struts 2 getting started tutorials</description>
-  <packaging>war</packaging>
-  
-      <build>
-		<finalName>message_resource</finalName>
-	</build>
-
-</project>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message_resource/src/main/java/org/apache/struts/helloworld/action/HelloWorldAction.java
----------------------------------------------------------------------
diff --git a/message_resource/src/main/java/org/apache/struts/helloworld/action/HelloWorldAction.java b/message_resource/src/main/java/org/apache/struts/helloworld/action/HelloWorldAction.java
deleted file mode 100644
index 92fda49..0000000
--- a/message_resource/src/main/java/org/apache/struts/helloworld/action/HelloWorldAction.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.apache.struts.helloworld.action;
-
-import org.apache.struts.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;
-	}
-	
-	private String userName;
-
-	public String getUserName() {
-		return userName;
-	}
-
-	public void setUserName(String userName) {
-		this.userName = userName;
-	}
-
-	/*
-	 * 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() ;
-		
-		//Action included a query string parameter of userName
-		//or a form field with name of userName
-		if (userName != null) {
-			
-			messageStore.setMessage( messageStore.getMessage() + " " + userName);
-			
-		}
-		
-		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/message_resource/src/main/java/org/apache/struts/helloworld/model/MessageStore.java
----------------------------------------------------------------------
diff --git a/message_resource/src/main/java/org/apache/struts/helloworld/model/MessageStore.java b/message_resource/src/main/java/org/apache/struts/helloworld/model/MessageStore.java
deleted file mode 100644
index b7fceeb..0000000
--- a/message_resource/src/main/java/org/apache/struts/helloworld/model/MessageStore.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.apache.struts.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/message_resource/src/main/java/org/apache/struts/register/action/Register.java
----------------------------------------------------------------------
diff --git a/message_resource/src/main/java/org/apache/struts/register/action/Register.java b/message_resource/src/main/java/org/apache/struts/register/action/Register.java
deleted file mode 100644
index 2d987cb..0000000
--- a/message_resource/src/main/java/org/apache/struts/register/action/Register.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.apache.struts.register.action;
-
-import org.apache.struts.register.model.Person;
-
-import com.opensymphony.xwork2.ActionSupport;
-
-/**
- * Acts as a controller to handle actions
- * related to registering a user.
- * @author bruce phillips
- *
- */
-public class Register extends ActionSupport {
-	
-	private static final long serialVersionUID = 1L;
-	
-	private Person personBean;
-
-	
-	public String execute() throws Exception {
-		
-		//call Service class to store personBean's state in database
-		
-		return SUCCESS;
-		
-	}
-	
-	public void validate(){
-		
-		if ( personBean.getFirstName().length() == 0 ){	
-
-			addFieldError( "personBean.firstName", "First name is required." );
-			
-		}
-		
-				
-		if ( personBean.getEmail().length() == 0 ){	
-
-			addFieldError( "personBean.email", "Email is required." );
-			
-		}
-		
-		if ( personBean.getAge() < 18 ){	
-
-			addFieldError( "personBean.age", "Age is required and must be 18 or older" );
-			
-		}
-		
-		
-	}
-
-	
-	public Person getPersonBean() {
-		
-		return personBean;
-		
-	}
-	
-	public void setPersonBean(Person person) {
-		
-		personBean = person;
-		
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message_resource/src/main/java/org/apache/struts/register/model/Person.java
----------------------------------------------------------------------
diff --git a/message_resource/src/main/java/org/apache/struts/register/model/Person.java b/message_resource/src/main/java/org/apache/struts/register/model/Person.java
deleted file mode 100644
index 3020bbb..0000000
--- a/message_resource/src/main/java/org/apache/struts/register/model/Person.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package org.apache.struts.register.model;
-
-
-/**
- * Models a Person who registers.
- * @author bruce phillips
- *
- */
-public class Person
-{
-    private String firstName;
-    private String lastName;
-    private String email;
-    private int age;
-
-    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 getEmail()
-    {
-        return email;
-    }
-
-    public void setEmail(String email)
-    {
-        this.email = email;
-    }
-
-    public int getAge()
-    {
-        return age;
-    }
-
-    public void setAge( int age)
-    {
-        this.age = age;
-    }
-
-
-    public String toString()
-    {
-        return "First Name: " + getFirstName() + " Last Name:  " + getLastName() + 
-        " Email:      " + getEmail() + " Age:      " + getAge() ;
-    }
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message_resource/src/main/resources/global.properties
----------------------------------------------------------------------
diff --git a/message_resource/src/main/resources/global.properties b/message_resource/src/main/resources/global.properties
deleted file mode 100644
index 6b21b29..0000000
--- a/message_resource/src/main/resources/global.properties
+++ /dev/null
@@ -1 +0,0 @@
-contact=For assistance contact <a href='mailto:contact@email.com'>contact@email.com</a>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message_resource/src/main/resources/global_es.properties
----------------------------------------------------------------------
diff --git a/message_resource/src/main/resources/global_es.properties b/message_resource/src/main/resources/global_es.properties
deleted file mode 100644
index fa01513..0000000
--- a/message_resource/src/main/resources/global_es.properties
+++ /dev/null
@@ -1 +0,0 @@
-contact=Para asistencia, comun�quese <a href='mailto:comun�quese@email.com'>comun�quese@email.com</a>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message_resource/src/main/resources/log4j.dtd
----------------------------------------------------------------------
diff --git a/message_resource/src/main/resources/log4j.dtd b/message_resource/src/main/resources/log4j.dtd
deleted file mode 100644
index 1aabd96..0000000
--- a/message_resource/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/message_resource/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/message_resource/src/main/resources/log4j.xml b/message_resource/src/main/resources/log4j.xml
deleted file mode 100644
index 2100cb2..0000000
--- a/message_resource/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/message_resource/src/main/resources/org/apache/struts/package.properties
----------------------------------------------------------------------
diff --git a/message_resource/src/main/resources/org/apache/struts/package.properties b/message_resource/src/main/resources/org/apache/struts/package.properties
deleted file mode 100644
index 4ac5698..0000000
--- a/message_resource/src/main/resources/org/apache/struts/package.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-greeting=Welcome to The Wonderful World of Struts 2
-instructions=Register for a prize by completing this form.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message_resource/src/main/resources/org/apache/struts/package_es.properties
----------------------------------------------------------------------
diff --git a/message_resource/src/main/resources/org/apache/struts/package_es.properties b/message_resource/src/main/resources/org/apache/struts/package_es.properties
deleted file mode 100644
index 8f0857c..0000000
--- a/message_resource/src/main/resources/org/apache/struts/package_es.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-greeting=Bienvenido al maravilloso mundo de Struts 2
-instructions=Reg�strese para obtener un premio por completar este formulario.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message_resource/src/main/resources/org/apache/struts/register/action/Register.properties
----------------------------------------------------------------------
diff --git a/message_resource/src/main/resources/org/apache/struts/register/action/Register.properties b/message_resource/src/main/resources/org/apache/struts/register/action/Register.properties
deleted file mode 100644
index 767e5db..0000000
--- a/message_resource/src/main/resources/org/apache/struts/register/action/Register.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-personBean.firstName=First name
-personBean.lastName=Last name
-personBean.age=Age
-personBean.email=Email
-thankyou=Thank you for registering %{personBean.firstName}.
-submit=Register
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message_resource/src/main/resources/org/apache/struts/register/action/Register_es.properties
----------------------------------------------------------------------
diff --git a/message_resource/src/main/resources/org/apache/struts/register/action/Register_es.properties b/message_resource/src/main/resources/org/apache/struts/register/action/Register_es.properties
deleted file mode 100644
index b72712f..0000000
--- a/message_resource/src/main/resources/org/apache/struts/register/action/Register_es.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-personBean.firstName=Nombre
-personBean.lastName=Apellidos
-personBean.age=Edad
-personBean.email=Correo
-thankyou=Gracias por registrarse %{personBean.firstName}.
-submit=someter
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message_resource/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/message_resource/src/main/resources/struts.xml b/message_resource/src/main/resources/struts.xml
deleted file mode 100644
index 6afdf20..0000000
--- a/message_resource/src/main/resources/struts.xml
+++ /dev/null
@@ -1,37 +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.custom.i18n.resources" value="global" />
-
-	<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.helloworld.action.HelloWorldAction" method="execute">
-			<result name="success">/HelloWorld.jsp</result>
-		</action>
-		
-	<action name="registerInput" class="org.apache.struts.register.action.Register" method="input" >
-		<result name="input">/register.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/message_resource/src/main/webapp/HelloWorld.jsp
----------------------------------------------------------------------
diff --git a/message_resource/src/main/webapp/HelloWorld.jsp b/message_resource/src/main/webapp/HelloWorld.jsp
deleted file mode 100644
index 75e150d..0000000
--- a/message_resource/src/main/webapp/HelloWorld.jsp
+++ /dev/null
@@ -1,19 +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>
-<h1><s:text name="greeting" /></h1>
-<h2><s:property value="messageStore.message" /></h2>
-<p>I've said hello <s:property value="helloCount" /> times!</p>
-<p><s:property value="messageStore" /></p>
-<p><a href="<s:url action='index' />" >Return to home page</a>.</p>
-<hr />
-<s:text name="contact" />
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message_resource/src/main/webapp/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/message_resource/src/main/webapp/META-INF/MANIFEST.MF b/message_resource/src/main/webapp/META-INF/MANIFEST.MF
deleted file mode 100644
index 5e94951..0000000
--- a/message_resource/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/message_resource/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/message_resource/src/main/webapp/WEB-INF/web.xml b/message_resource/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 315ec50..0000000
--- a/message_resource/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>Message Resource</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/message_resource/src/main/webapp/index.jsp
----------------------------------------------------------------------
diff --git a/message_resource/src/main/webapp/index.jsp b/message_resource/src/main/webapp/index.jsp
deleted file mode 100644
index 8abcfb5..0000000
--- a/message_resource/src/main/webapp/index.jsp
+++ /dev/null
@@ -1,42 +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>
-
-<s:url action="registerInput" var="registerInputLink" >
- <s:param name="request_locale">en</s:param>
-</s:url>
-<p><a href="${registerInputLink}">Please register</a> for our prize drawing.</p>
-<h3>Registro espa�ol</h3>
-<s:url action="registerInput" var="registerInputLinkES">
-    <s:param name="request_locale">es</s:param>
-</s:url>
-<p><a href="${registerInputLinkES}">Por favor, reg�strese</a> para nuestro sorteo</p>
-
-<hr />
-<s:text name="contact" />
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message_resource/src/main/webapp/register.jsp
----------------------------------------------------------------------
diff --git a/message_resource/src/main/webapp/register.jsp b/message_resource/src/main/webapp/register.jsp
deleted file mode 100644
index f56ca4e..0000000
--- a/message_resource/src/main/webapp/register.jsp
+++ /dev/null
@@ -1,29 +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>
-<h1><s:text name="greeting" /></h1>
-<h3><s:text name="instructions" /></h3>
-
-<s:form action="register">
-
- 	  <s:textfield key="personBean.firstName"  />
- 	  <s:textfield  key="personBean.lastName"  />
- 	  <s:textfield key="personBean.email"  />  
- 	  <s:textfield key="personBean.age"  />
- 	  
-   	  <s:submit key="submit" />
-   	  
-</s:form>	
- <hr />
-<s:text name="contact" />
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/message_resource/src/main/webapp/thankyou.jsp
----------------------------------------------------------------------
diff --git a/message_resource/src/main/webapp/thankyou.jsp b/message_resource/src/main/webapp/thankyou.jsp
deleted file mode 100644
index 2b8fb9c..0000000
--- a/message_resource/src/main/webapp/thankyou.jsp
+++ /dev/null
@@ -1,20 +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><s:text name="thankyou" /></h3>
-
-<p>Your registration information: <s:property value="personBean" /> </p>
-
-<p><a href="<s:url action='index' />" >Return to home page</a>.</p>
-<hr />
-<s:text name="contact" />
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 2b99e14..e3c4943 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,28 +44,28 @@
         <module>jboss-blank</module>
         <module>mailreader</module>
         <module>helloworld</module>
-        <module>using_tags</module>
+        <module>using-tags</module>
         <module>coding-actions</module>
-        <module>form_processing</module>
-        <module>form_validation</module>
-        <module>message_resource</module>
-        <module>exception_handling</module>
+        <module>form-processing</module>
+        <module>form-validation</module>
+        <module>message-resource</module>
+        <module>exception-handling</module>
         <module>debugging-struts</module>
-        <module>form_tags</module>
-        <module>form_xml_validation</module>
+        <module>form-tags</module>
+        <module>form-xml-validation</module>
         <module>control-tags</module>
-        <module>wildcard_method_selection</module>
+        <module>wildcard-method-selection</module>
         <module>themes</module>
-        <module>spring_struts</module>
+        <module>spring-struts</module>
         <module>annotations</module>
         <module>interceptors</module>
-        <module>unit_testing</module>
-        <module>http_session</module>
-        <module>preparable_interface</module>
-        <module>exclude_parameters</module>
+        <module>unit-testing</module>
+        <module>http-session</module>
+        <module>preparable-interface</module>
+        <module>exclude-parameters</module>
         <module>restful2actionmapper</module>
         <module>bean-validation</module>
-        <module>themes_override</module>
+        <module>themes-override</module>
     </modules>
 
     <dependencies>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/README.txt
----------------------------------------------------------------------
diff --git a/preparable-interface/README.txt b/preparable-interface/README.txt
new file mode 100644
index 0000000..067c0d8
--- /dev/null
+++ b/preparable-interface/README.txt
@@ -0,0 +1,16 @@
+This is the example project referred to in the
+Struts 2 documentation, Preparable Interface 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/preparable-interface/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/preparable-interface/pom.xml
----------------------------------------------------------------------
diff --git a/preparable-interface/pom.xml b/preparable-interface/pom.xml
new file mode 100644
index 0000000..ee7d994
--- /dev/null
+++ b/preparable-interface/pom.xml
@@ -0,0 +1,24 @@
+<?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>preparable-interface</artifactId>
+
+    <name>Preparable Interface</name>
+
+    <description>Struts 2 example application for the preparable interface getting started tutorial</description>
+
+    <packaging>war</packaging>
+
+    <build>
+        <finalName>preparable-interface</finalName>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/src/main/java/org/apache/struts/edit/action/EditAction.java
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/java/org/apache/struts/edit/action/EditAction.java b/preparable-interface/src/main/java/org/apache/struts/edit/action/EditAction.java
new file mode 100644
index 0000000..1d9f288
--- /dev/null
+++ b/preparable-interface/src/main/java/org/apache/struts/edit/action/EditAction.java
@@ -0,0 +1,96 @@
+package org.apache.struts.edit.action;
+
+import com.opensymphony.xwork2.ActionSupport;
+import com.opensymphony.xwork2.Preparable;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.struts.edit.model.Person;
+import org.apache.struts.edit.model.State;
+import org.apache.struts.edit.service.CarModelsService;
+import org.apache.struts.edit.service.CarModelsServiceHardCoded;
+import org.apache.struts.edit.service.EditService;
+import org.apache.struts.edit.service.EditServiceInMemory;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Acts as a controller to handle actions
+ * related to editing a Person.
+ *
+ * @author bruce phillips
+ */
+public class EditAction extends ActionSupport implements Preparable {
+
+    private static Logger log = LogManager.getLogger(EditAction.class);
+    private static final long serialVersionUID = 1L;
+
+    private EditService editService = new EditServiceInMemory();
+    private CarModelsService carModelsService = new CarModelsServiceHardCoded();
+
+    private Person personBean;
+    private String[] sports = {"football", "baseball", "basketball"};
+    private String[] genders = {"male", "female", "not sure"};
+    private List<State> states;
+    private String[] carModelsAvailable;
+
+
+    @Override
+    public void prepare() throws Exception {
+        log.debug("In prepare method...");
+        carModelsAvailable = carModelsService.getCarModels();
+        setPersonBean(editService.getPerson());
+    }
+
+    public void prepareExecute() {
+        log.debug("In prepareExecute method...");
+    }
+
+    public String execute() throws Exception {
+        log.debug("In execute method...");
+        editService.savePerson(getPersonBean());
+        return SUCCESS;
+    }
+
+    public void prepareInput() {
+        log.debug("In prepareInput method...");
+    }
+
+    public String input() throws Exception {
+        log.debug("In input method...");
+        return INPUT;
+    }
+
+    public Person getPersonBean() {
+        return personBean;
+    }
+
+    public void setPersonBean(Person person) {
+        personBean = person;
+    }
+
+    public List<String> getSports() {
+        return Arrays.asList(sports);
+    }
+
+    public List<String> getGenders() {
+        return Arrays.asList(genders);
+    }
+
+    public List<State> getStates() {
+
+        states = new ArrayList<>();
+        states.add(new State("AZ", "Arizona"));
+        states.add(new State("CA", "California"));
+        states.add(new State("FL", "Florida"));
+        states.add(new State("KS", "Kansas"));
+        states.add(new State("NY", "New York"));
+
+        return states;
+    }
+
+    public String[] getCarModelsAvailable() {
+        return carModelsAvailable;
+    }
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/src/main/java/org/apache/struts/edit/model/Person.java
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/java/org/apache/struts/edit/model/Person.java b/preparable-interface/src/main/java/org/apache/struts/edit/model/Person.java
new file mode 100644
index 0000000..2d127eb
--- /dev/null
+++ b/preparable-interface/src/main/java/org/apache/struts/edit/model/Person.java
@@ -0,0 +1,121 @@
+package org.apache.struts.edit.model;
+
+import java.util.Arrays;
+
+
+
+/**
+ * Models a Person who registers.
+ * @author bruce phillips
+ *
+ */
+public class Person
+{
+    private String firstName;
+    private String lastName;
+    private String sport;
+    private String gender;
+    private String residency;
+    private boolean over21;
+    private String [] carModels;
+    private String email;
+    private String phoneNumber;
+   
+ 
+
+    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 void setSport(String sport) {
+		this.sport = sport;
+	}
+
+	public void setGender(String gender) {
+		this.gender = gender;
+	}
+
+	public String getGender() {
+		return gender;
+	}
+
+	public String getSport() {
+		return sport;
+	}
+
+	public void setResidency(String residency) {
+		this.residency = residency;
+	}
+
+	public String getResidency() {
+		return residency;
+	}
+
+	public void setOver21(boolean over21) {
+		this.over21 = over21;
+	}
+
+	public boolean isOver21() {
+		return over21;
+	}
+
+	public void setCarModels(String [] carModels) {
+		this.carModels = carModels;
+	}
+
+	public String [] getCarModels() {
+		return carModels;
+	}
+
+	public String toString()
+    {
+        return "First Name: " + getFirstName() + " | " +
+        " Last Name:  " + getLastName() + " | " +
+        " Favorite Sport: " + getSport() + " | " +
+        " Gender: " + getGender() + " | " +  
+        " Residency: " + getResidency() + " | " +
+        " Over 21: " + isOver21()  + " | " +
+        " Car models: " + Arrays.asList( getCarModels() ) + " | " +
+        " Email: " + getEmail() + " | " +
+        " Phone: " + getPhoneNumber();
+        
+        
+    }
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setPhoneNumber(String phoneNumber) {
+		this.phoneNumber = phoneNumber;
+	}
+
+	public String getPhoneNumber() {
+		return phoneNumber;
+	}
+
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/src/main/java/org/apache/struts/edit/model/State.java
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/java/org/apache/struts/edit/model/State.java b/preparable-interface/src/main/java/org/apache/struts/edit/model/State.java
new file mode 100644
index 0000000..8746add
--- /dev/null
+++ b/preparable-interface/src/main/java/org/apache/struts/edit/model/State.java
@@ -0,0 +1,35 @@
+package org.apache.struts.edit.model;
+
+public class State {
+	
+	private String stateAbbr;
+	
+	private String stateName;
+	
+	public State (String stateAbbr, String stateName) {
+		this.stateAbbr = stateAbbr;
+		this.stateName = stateName;
+	}
+
+	public void setStateAbbr(String stateAbbr) {
+		this.stateAbbr = stateAbbr;
+	}
+
+	public String getStateAbbr() {
+		return stateAbbr;
+	}
+
+	public void setStateName(String stateName) {
+		this.stateName = stateName;
+	}
+
+	public String getStateName() {
+		return stateName;
+	}
+	
+	public String toString() {
+		return getStateAbbr() ;
+	}
+	
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/src/main/java/org/apache/struts/edit/service/CarModelsService.java
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/java/org/apache/struts/edit/service/CarModelsService.java b/preparable-interface/src/main/java/org/apache/struts/edit/service/CarModelsService.java
new file mode 100644
index 0000000..e931dbe
--- /dev/null
+++ b/preparable-interface/src/main/java/org/apache/struts/edit/service/CarModelsService.java
@@ -0,0 +1,18 @@
+/**
+ * 
+ */
+package org.apache.struts.edit.service;
+
+/**
+ * Specifies what methods a CarModelService
+ * class must implement to provide information
+ * about car models.
+ * @author bphillips
+ *
+ */
+public interface CarModelsService {
+	
+	
+	String [] getCarModels() ;
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java b/preparable-interface/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java
new file mode 100644
index 0000000..7d7eb20
--- /dev/null
+++ b/preparable-interface/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java
@@ -0,0 +1,22 @@
+package org.apache.struts.edit.service;
+
+/**
+ * Provides information on car models using data hard-coded
+ * in this class.
+ * @author bphillips
+ *
+ */
+public class CarModelsServiceHardCoded implements CarModelsService {
+	
+
+	@Override
+	public String[] getCarModels() {
+		
+		String [] carModelsAvailable = {"Ford","Chrysler","Toyota","Nissan"};
+		
+		return carModelsAvailable ;
+		
+		
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/src/main/java/org/apache/struts/edit/service/EditService.java
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/java/org/apache/struts/edit/service/EditService.java b/preparable-interface/src/main/java/org/apache/struts/edit/service/EditService.java
new file mode 100644
index 0000000..79d759a
--- /dev/null
+++ b/preparable-interface/src/main/java/org/apache/struts/edit/service/EditService.java
@@ -0,0 +1,12 @@
+package org.apache.struts.edit.service;
+
+import org.apache.struts.edit.model.Person;
+
+public interface EditService {
+	
+	
+	Person getPerson() ;
+
+	void savePerson(Person personBean);
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java b/preparable-interface/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
new file mode 100644
index 0000000..b0821fb
--- /dev/null
+++ b/preparable-interface/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
@@ -0,0 +1,60 @@
+package org.apache.struts.edit.service;
+
+
+
+import org.apache.struts.edit.model.Person;
+
+/**
+ * Implement Services needed to edit and save
+ * a Person object's state.  In this implementation
+ * the Person object's state is stored in memory
+ * @author brucephillips
+ *
+ */
+
+public class EditServiceInMemory implements EditService {
+	
+	
+	private static Person person ;
+	private static String [] carModels = {"Ford","Nissan"};
+
+	
+	static {
+		
+		person = new Person();
+		person.setFirstName("Bruce");
+		person.setLastName("Phillips");
+		person.setEmail("bphillips@ku.edu");
+		person.setSport("basketball");
+		person.setGender("not sure");
+		person.setResidency("KS");
+		person.setOver21(true);		
+		person.setCarModels( carModels);	
+		person.setPhoneNumber("123-456-9999");
+
+		
+
+	}
+
+	
+	public Person getPerson() {
+		
+		return EditServiceInMemory.person;
+	}
+
+
+	public void savePerson(Person personBean) {
+
+		EditServiceInMemory.person.setFirstName(personBean.getFirstName() );
+		EditServiceInMemory.person.setLastName(personBean.getLastName() );
+		EditServiceInMemory.person.setSport(personBean.getSport() );
+		EditServiceInMemory.person.setGender( personBean.getGender() );
+		EditServiceInMemory.person.setResidency( personBean.getResidency() );
+		EditServiceInMemory.person.setOver21( personBean.isOver21() );
+		EditServiceInMemory.person.setCarModels(personBean.getCarModels() );
+		EditServiceInMemory.person.setEmail( personBean.getEmail() );
+		EditServiceInMemory.person.setPhoneNumber( personBean.getPhoneNumber() );
+
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/resources/log4j2.xml b/preparable-interface/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..d7c09f9
--- /dev/null
+++ b/preparable-interface/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.edit" 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/preparable-interface/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml b/preparable-interface/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
new file mode 100644
index 0000000..0a884ff
--- /dev/null
+++ b/preparable-interface/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
@@ -0,0 +1,35 @@
+<!DOCTYPE validators PUBLIC
+         "-//Apache Struts//XWork Validator 1.0.3//EN"
+           "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+ <validator type="requiredstring">
+ 	<param name="fieldname">personBean.firstName</param>
+ 	<message>First name is required.</message>
+ </validator>
+  <validator type="requiredstring">
+ 	<param name="fieldname">personBean.lastName</param>
+ 	<message>Last name is required.</message>
+ </validator>
+ <validator type="requiredstring">
+ 	<param name="fieldname">personBean.email</param>
+ 	<message>Email address is required.</message>
+ </validator>
+ <validator type="email">
+ 	<param name="fieldname">personBean.email</param>
+ 	<message>Email address not valid.</message>
+ </validator>
+ <validator type="requiredstring">
+ 	<param name="fieldname">personBean.phoneNumber</param>
+ 	<message>Phone number is required.</message>
+ </validator>
+<validator type="regex">
+	<param name="fieldname">personBean.phoneNumber</param>
+	<param name="regex"><![CDATA[\d{3}-\d{3}-\d{4}]]></param>
+	<message>Phone number must be entered as 999-999-9999.</message>
+</validator>
+<validator type="fieldexpression">
+	<param name="fieldname">personBean.carModels</param>
+	<param name="expression"><![CDATA[personBean.carModels.length > 0]]></param>
+	<message>You must select at least one car model.</message>
+</validator>
+</validators>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/src/main/resources/org/apache/struts/edit/action/EditAction.properties
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/resources/org/apache/struts/edit/action/EditAction.properties b/preparable-interface/src/main/resources/org/apache/struts/edit/action/EditAction.properties
new file mode 100644
index 0000000..1b36d51
--- /dev/null
+++ b/preparable-interface/src/main/resources/org/apache/struts/edit/action/EditAction.properties
@@ -0,0 +1,10 @@
+personBean.firstName=First name
+personBean.lastName=Last name
+personBean.email=Email address
+personBean.phoneNumber=Phone number (999-999-9999)
+personBean.sport=Favorite sport
+personBean.gender=Gender
+personBean.residency=State resident
+personBean.over21=21 or older
+personBean.carModels=Car models owned
+submit=Save Changes
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/resources/struts.xml b/preparable-interface/src/main/resources/struts.xml
new file mode 100644
index 0000000..893019d
--- /dev/null
+++ b/preparable-interface/src/main/resources/struts.xml
@@ -0,0 +1,30 @@
+<?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="edit" class="org.apache.struts.edit.action.EditAction" method="input">
+	    	<result name="input">/edit.jsp</result>
+	    </action>
+	    
+	    <action name="save" class="org.apache.struts.edit.action.EditAction" method="execute">
+	        <result name="input">/edit.jsp</result>
+	    	<result name="success">/thankyou.jsp</result>
+	    </action>
+
+	</package>
+
+</struts>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/src/main/webapp/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/webapp/META-INF/MANIFEST.MF b/preparable-interface/src/main/webapp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..254272e
--- /dev/null
+++ b/preparable-interface/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/preparable-interface/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/webapp/WEB-INF/web.xml b/preparable-interface/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..1790bae
--- /dev/null
+++ b/preparable-interface/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>Preparable Interface</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/preparable-interface/src/main/webapp/edit.jsp
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/webapp/edit.jsp b/preparable-interface/src/main/webapp/edit.jsp
new file mode 100644
index 0000000..67a9901
--- /dev/null
+++ b/preparable-interface/src/main/webapp/edit.jsp
@@ -0,0 +1,30 @@
+<%@ 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>
+<s:head />
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Struts 2 Form Tags - Edit Person</title>
+</head>
+<body>
+<h1>Update Information</h1>
+
+<p>Use the form below to edit your information.</p>
+
+<s:form action="save" method="post">
+<s:textfield key="personBean.firstName" /> 
+<s:textfield key="personBean.lastName" /> 
+<s:textfield key="personBean.email" />
+<s:textfield key="personBean.phoneNumber" />
+<s:select key="personBean.sport" list="sports" />
+<s:radio key="personBean.gender" list="genders" />
+<s:select key="personBean.residency" list="states" listKey="stateAbbr" listValue="stateName" />
+<s:checkbox key="personBean.over21" />
+<s:checkboxlist key="personBean.carModels" list="carModelsAvailable" />
+<s:submit key="submit" />
+</s:form>
+
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/src/main/webapp/index.jsp
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/webapp/index.jsp b/preparable-interface/src/main/webapp/index.jsp
new file mode 100644
index 0000000..88209d8
--- /dev/null
+++ b/preparable-interface/src/main/webapp/index.jsp
@@ -0,0 +1,16 @@
+<%@ 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>Struts 2 Form Tags - Welcome</title>
+</head>
+<body>
+<h1>Welcome To Struts 2!</h1>
+
+<p><a href='<s:url action="edit" />' >Edit your information</a></p>
+
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable-interface/src/main/webapp/thankyou.jsp
----------------------------------------------------------------------
diff --git a/preparable-interface/src/main/webapp/thankyou.jsp b/preparable-interface/src/main/webapp/thankyou.jsp
new file mode 100644
index 0000000..5fa306f
--- /dev/null
+++ b/preparable-interface/src/main/webapp/thankyou.jsp
@@ -0,0 +1,21 @@
+<?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>Update Successful</title>
+</head>
+<body>
+
+<h1>Updated Information</h1>
+
+
+<p>Your 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/preparable_interface/README.txt
----------------------------------------------------------------------
diff --git a/preparable_interface/README.txt b/preparable_interface/README.txt
deleted file mode 100644
index 53aa897..0000000
--- a/preparable_interface/README.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-This is the example project referred to in the
-Struts 2 documentation, Preparable Interface 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/preparable_interface/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/preparable_interface/pom.xml
----------------------------------------------------------------------
diff --git a/preparable_interface/pom.xml b/preparable_interface/pom.xml
deleted file mode 100644
index 6a73556..0000000
--- a/preparable_interface/pom.xml
+++ /dev/null
@@ -1,24 +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>preparable_interface</artifactId>
-
-  <name>Preparable Interface</name>
-  
-   <description>Struts 2 example application for the
-  preparable interface getting started tutorial</description>
-
-  <packaging>war</packaging>
-  
-  	<build>
-		<finalName>preparable_interface</finalName>
-	</build>
-  
-</project>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/java/org/apache/struts/edit/action/EditAction.java
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/java/org/apache/struts/edit/action/EditAction.java b/preparable_interface/src/main/java/org/apache/struts/edit/action/EditAction.java
deleted file mode 100644
index 1d9f288..0000000
--- a/preparable_interface/src/main/java/org/apache/struts/edit/action/EditAction.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package org.apache.struts.edit.action;
-
-import com.opensymphony.xwork2.ActionSupport;
-import com.opensymphony.xwork2.Preparable;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.struts.edit.model.Person;
-import org.apache.struts.edit.model.State;
-import org.apache.struts.edit.service.CarModelsService;
-import org.apache.struts.edit.service.CarModelsServiceHardCoded;
-import org.apache.struts.edit.service.EditService;
-import org.apache.struts.edit.service.EditServiceInMemory;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Acts as a controller to handle actions
- * related to editing a Person.
- *
- * @author bruce phillips
- */
-public class EditAction extends ActionSupport implements Preparable {
-
-    private static Logger log = LogManager.getLogger(EditAction.class);
-    private static final long serialVersionUID = 1L;
-
-    private EditService editService = new EditServiceInMemory();
-    private CarModelsService carModelsService = new CarModelsServiceHardCoded();
-
-    private Person personBean;
-    private String[] sports = {"football", "baseball", "basketball"};
-    private String[] genders = {"male", "female", "not sure"};
-    private List<State> states;
-    private String[] carModelsAvailable;
-
-
-    @Override
-    public void prepare() throws Exception {
-        log.debug("In prepare method...");
-        carModelsAvailable = carModelsService.getCarModels();
-        setPersonBean(editService.getPerson());
-    }
-
-    public void prepareExecute() {
-        log.debug("In prepareExecute method...");
-    }
-
-    public String execute() throws Exception {
-        log.debug("In execute method...");
-        editService.savePerson(getPersonBean());
-        return SUCCESS;
-    }
-
-    public void prepareInput() {
-        log.debug("In prepareInput method...");
-    }
-
-    public String input() throws Exception {
-        log.debug("In input method...");
-        return INPUT;
-    }
-
-    public Person getPersonBean() {
-        return personBean;
-    }
-
-    public void setPersonBean(Person person) {
-        personBean = person;
-    }
-
-    public List<String> getSports() {
-        return Arrays.asList(sports);
-    }
-
-    public List<String> getGenders() {
-        return Arrays.asList(genders);
-    }
-
-    public List<State> getStates() {
-
-        states = new ArrayList<>();
-        states.add(new State("AZ", "Arizona"));
-        states.add(new State("CA", "California"));
-        states.add(new State("FL", "Florida"));
-        states.add(new State("KS", "Kansas"));
-        states.add(new State("NY", "New York"));
-
-        return states;
-    }
-
-    public String[] getCarModelsAvailable() {
-        return carModelsAvailable;
-    }
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/java/org/apache/struts/edit/model/Person.java
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/java/org/apache/struts/edit/model/Person.java b/preparable_interface/src/main/java/org/apache/struts/edit/model/Person.java
deleted file mode 100644
index 2d127eb..0000000
--- a/preparable_interface/src/main/java/org/apache/struts/edit/model/Person.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package org.apache.struts.edit.model;
-
-import java.util.Arrays;
-
-
-
-/**
- * Models a Person who registers.
- * @author bruce phillips
- *
- */
-public class Person
-{
-    private String firstName;
-    private String lastName;
-    private String sport;
-    private String gender;
-    private String residency;
-    private boolean over21;
-    private String [] carModels;
-    private String email;
-    private String phoneNumber;
-   
- 
-
-    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 void setSport(String sport) {
-		this.sport = sport;
-	}
-
-	public void setGender(String gender) {
-		this.gender = gender;
-	}
-
-	public String getGender() {
-		return gender;
-	}
-
-	public String getSport() {
-		return sport;
-	}
-
-	public void setResidency(String residency) {
-		this.residency = residency;
-	}
-
-	public String getResidency() {
-		return residency;
-	}
-
-	public void setOver21(boolean over21) {
-		this.over21 = over21;
-	}
-
-	public boolean isOver21() {
-		return over21;
-	}
-
-	public void setCarModels(String [] carModels) {
-		this.carModels = carModels;
-	}
-
-	public String [] getCarModels() {
-		return carModels;
-	}
-
-	public String toString()
-    {
-        return "First Name: " + getFirstName() + " | " +
-        " Last Name:  " + getLastName() + " | " +
-        " Favorite Sport: " + getSport() + " | " +
-        " Gender: " + getGender() + " | " +  
-        " Residency: " + getResidency() + " | " +
-        " Over 21: " + isOver21()  + " | " +
-        " Car models: " + Arrays.asList( getCarModels() ) + " | " +
-        " Email: " + getEmail() + " | " +
-        " Phone: " + getPhoneNumber();
-        
-        
-    }
-
-	public void setEmail(String email) {
-		this.email = email;
-	}
-
-	public String getEmail() {
-		return email;
-	}
-
-	public void setPhoneNumber(String phoneNumber) {
-		this.phoneNumber = phoneNumber;
-	}
-
-	public String getPhoneNumber() {
-		return phoneNumber;
-	}
-
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/java/org/apache/struts/edit/model/State.java
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/java/org/apache/struts/edit/model/State.java b/preparable_interface/src/main/java/org/apache/struts/edit/model/State.java
deleted file mode 100644
index 8746add..0000000
--- a/preparable_interface/src/main/java/org/apache/struts/edit/model/State.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.struts.edit.model;
-
-public class State {
-	
-	private String stateAbbr;
-	
-	private String stateName;
-	
-	public State (String stateAbbr, String stateName) {
-		this.stateAbbr = stateAbbr;
-		this.stateName = stateName;
-	}
-
-	public void setStateAbbr(String stateAbbr) {
-		this.stateAbbr = stateAbbr;
-	}
-
-	public String getStateAbbr() {
-		return stateAbbr;
-	}
-
-	public void setStateName(String stateName) {
-		this.stateName = stateName;
-	}
-
-	public String getStateName() {
-		return stateName;
-	}
-	
-	public String toString() {
-		return getStateAbbr() ;
-	}
-	
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/java/org/apache/struts/edit/service/CarModelsService.java
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/java/org/apache/struts/edit/service/CarModelsService.java b/preparable_interface/src/main/java/org/apache/struts/edit/service/CarModelsService.java
deleted file mode 100644
index e931dbe..0000000
--- a/preparable_interface/src/main/java/org/apache/struts/edit/service/CarModelsService.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * 
- */
-package org.apache.struts.edit.service;
-
-/**
- * Specifies what methods a CarModelService
- * class must implement to provide information
- * about car models.
- * @author bphillips
- *
- */
-public interface CarModelsService {
-	
-	
-	String [] getCarModels() ;
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java b/preparable_interface/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java
deleted file mode 100644
index 7d7eb20..0000000
--- a/preparable_interface/src/main/java/org/apache/struts/edit/service/CarModelsServiceHardCoded.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.apache.struts.edit.service;
-
-/**
- * Provides information on car models using data hard-coded
- * in this class.
- * @author bphillips
- *
- */
-public class CarModelsServiceHardCoded implements CarModelsService {
-	
-
-	@Override
-	public String[] getCarModels() {
-		
-		String [] carModelsAvailable = {"Ford","Chrysler","Toyota","Nissan"};
-		
-		return carModelsAvailable ;
-		
-		
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/java/org/apache/struts/edit/service/EditService.java
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/java/org/apache/struts/edit/service/EditService.java b/preparable_interface/src/main/java/org/apache/struts/edit/service/EditService.java
deleted file mode 100644
index f52e053..0000000
--- a/preparable_interface/src/main/java/org/apache/struts/edit/service/EditService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.apache.struts.edit.service;
-
-import org.apache.struts.edit.model.Person;
-
-public interface EditService {
-	
-	
-	Person getPerson() ;
-
-	void savePerson(Person personBean);
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java b/preparable_interface/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
deleted file mode 100644
index 8fd35e2..0000000
--- a/preparable_interface/src/main/java/org/apache/struts/edit/service/EditServiceInMemory.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.apache.struts.edit.service;
-
-
-
-import org.apache.struts.edit.model.Person;
-
-/**
- * Implement Services needed to edit and save
- * a Person object's state.  In this implementation
- * the Person object's state is stored in memory
- * @author brucephillips
- *
- */
-
-public class EditServiceInMemory implements EditService {
-	
-	
-	private static Person person ;
-	private static String [] carModels = {"Ford","Nissan"};
-
-	
-	static {
-		
-		person = new Person();
-		person.setFirstName("Bruce");
-		person.setLastName("Phillips");
-		person.setEmail("bphillips@ku.edu");
-		person.setSport("basketball");
-		person.setGender("not sure");
-		person.setResidency("KS");
-		person.setOver21(true);		
-		person.setCarModels( carModels);	
-		person.setPhoneNumber("123-456-9999");
-
-		
-
-	}
-
-	
-	public Person getPerson() {
-		
-		return EditServiceInMemory.person;
-	}
-
-
-	public void savePerson(Person personBean) {
-
-		EditServiceInMemory.person.setFirstName(personBean.getFirstName() );
-		EditServiceInMemory.person.setLastName(personBean.getLastName() );
-		EditServiceInMemory.person.setSport(personBean.getSport() );
-		EditServiceInMemory.person.setGender( personBean.getGender() );
-		EditServiceInMemory.person.setResidency( personBean.getResidency() );
-		EditServiceInMemory.person.setOver21( personBean.isOver21() );
-		EditServiceInMemory.person.setCarModels(personBean.getCarModels() );
-		EditServiceInMemory.person.setEmail( personBean.getEmail() );
-		EditServiceInMemory.person.setPhoneNumber( personBean.getPhoneNumber() );
-
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/resources/log4j2.xml b/preparable_interface/src/main/resources/log4j2.xml
deleted file mode 100644
index d7c09f9..0000000
--- a/preparable_interface/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.edit" 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/preparable_interface/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml b/preparable_interface/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
deleted file mode 100644
index 0a884ff..0000000
--- a/preparable_interface/src/main/resources/org/apache/struts/edit/action/EditAction-validation.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE validators PUBLIC
-         "-//Apache Struts//XWork Validator 1.0.3//EN"
-           "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
-<validators>
- <validator type="requiredstring">
- 	<param name="fieldname">personBean.firstName</param>
- 	<message>First name is required.</message>
- </validator>
-  <validator type="requiredstring">
- 	<param name="fieldname">personBean.lastName</param>
- 	<message>Last name is required.</message>
- </validator>
- <validator type="requiredstring">
- 	<param name="fieldname">personBean.email</param>
- 	<message>Email address is required.</message>
- </validator>
- <validator type="email">
- 	<param name="fieldname">personBean.email</param>
- 	<message>Email address not valid.</message>
- </validator>
- <validator type="requiredstring">
- 	<param name="fieldname">personBean.phoneNumber</param>
- 	<message>Phone number is required.</message>
- </validator>
-<validator type="regex">
-	<param name="fieldname">personBean.phoneNumber</param>
-	<param name="regex"><![CDATA[\d{3}-\d{3}-\d{4}]]></param>
-	<message>Phone number must be entered as 999-999-9999.</message>
-</validator>
-<validator type="fieldexpression">
-	<param name="fieldname">personBean.carModels</param>
-	<param name="expression"><![CDATA[personBean.carModels.length > 0]]></param>
-	<message>You must select at least one car model.</message>
-</validator>
-</validators>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/resources/org/apache/struts/edit/action/EditAction.properties
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/resources/org/apache/struts/edit/action/EditAction.properties b/preparable_interface/src/main/resources/org/apache/struts/edit/action/EditAction.properties
deleted file mode 100644
index 83f400a..0000000
--- a/preparable_interface/src/main/resources/org/apache/struts/edit/action/EditAction.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-personBean.firstName=First name
-personBean.lastName=Last name
-personBean.email=Email address
-personBean.phoneNumber=Phone number (999-999-9999)
-personBean.sport=Favorite sport
-personBean.gender=Gender
-personBean.residency=State resident
-personBean.over21=21 or older
-personBean.carModels=Car models owned
-submit=Save Changes
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/resources/struts.xml b/preparable_interface/src/main/resources/struts.xml
deleted file mode 100644
index 893019d..0000000
--- a/preparable_interface/src/main/resources/struts.xml
+++ /dev/null
@@ -1,30 +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="edit" class="org.apache.struts.edit.action.EditAction" method="input">
-	    	<result name="input">/edit.jsp</result>
-	    </action>
-	    
-	    <action name="save" class="org.apache.struts.edit.action.EditAction" method="execute">
-	        <result name="input">/edit.jsp</result>
-	    	<result name="success">/thankyou.jsp</result>
-	    </action>
-
-	</package>
-
-</struts>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/preparable_interface/src/main/webapp/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/webapp/META-INF/MANIFEST.MF b/preparable_interface/src/main/webapp/META-INF/MANIFEST.MF
deleted file mode 100644
index 5e94951..0000000
--- a/preparable_interface/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/preparable_interface/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/webapp/WEB-INF/web.xml b/preparable_interface/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 1790bae..0000000
--- a/preparable_interface/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>Preparable Interface</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>


Mime
View raw message