You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by jo...@apache.org on 2015/06/12 16:27:17 UTC

[1/2] struts-examples git commit: Switch to log4j2 in all examples which are using log4j

Repository: struts-examples
Updated Branches:
  refs/heads/master c91792787 -> a66c0865e


http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/wildcard_method_selection/src/main/resources/log4j.dtd
----------------------------------------------------------------------
diff --git a/wildcard_method_selection/src/main/resources/log4j.dtd b/wildcard_method_selection/src/main/resources/log4j.dtd
deleted file mode 100644
index 8868820..0000000
--- a/wildcard_method_selection/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/a66c0865/wildcard_method_selection/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/wildcard_method_selection/src/main/resources/log4j.xml b/wildcard_method_selection/src/main/resources/log4j.xml
deleted file mode 100644
index ea94c42..0000000
--- a/wildcard_method_selection/src/main/resources/log4j.xml
+++ /dev/null
@@ -1,35 +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.SimpleLayout"/>
-    </appender>
-    
-
-    <!-- specify the logging level for loggers from other libraries -->
-    <logger name="com.opensymphony">
-    	<level value="ERROR" />
-    </logger>
-
-    <logger name="org.apache.struts2">
-    	 <level value="ERROR" />
-    </logger>
-    
-      <!-- log only ERROR and above messages for loggers with
-    a name of the name value below -->
-    <logger name="org.apache.struts.tutorials">
-    	<level value="DEGUG" />
-    </logger>
-
-  
-
-   <!-- for all other loggers log only info and above log messages -->
-     <root>
-        <priority value="WARN"/> 
-        <appender-ref ref="STDOUT" /> 
-     </root> 
-    
-</log4j:configuration> 
-

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/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/a66c0865/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
index 7951a40..9be994d 100644
--- a/wildcard_method_selection/src/main/webapp/WEB-INF/web.xml
+++ b/wildcard_method_selection/src/main/webapp/WEB-INF/web.xml
@@ -1,8 +1,9 @@
 <?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>input.jsp</welcome-file>
+      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
   
   					 

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/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


[2/2] struts-examples git commit: Switch to log4j2 in all examples which are using log4j

Posted by jo...@apache.org.
Switch to log4j2 in all examples which are using log4j


Project: http://git-wip-us.apache.org/repos/asf/struts-examples/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts-examples/commit/a66c0865
Tree: http://git-wip-us.apache.org/repos/asf/struts-examples/tree/a66c0865
Diff: http://git-wip-us.apache.org/repos/asf/struts-examples/diff/a66c0865

Branch: refs/heads/master
Commit: a66c0865e8a3a8870c8e5183e439a08ee0a5b89e
Parents: c917927
Author: Johannes Geppert <jo...@apache.org>
Authored: Fri Jun 12 16:27:15 2015 +0200
Committer: Johannes Geppert <jo...@apache.org>
Committed: Fri Jun 12 16:27:15 2015 +0200

----------------------------------------------------------------------
 annotations/pom.xml                             |  61 +++--
 .../main/java/example/actions/HelloAction.java  |  65 +++---
 .../java/example/actions/RegisterAction.java    |  81 +++----
 .../src/main/java/example/model/Person.java     |  36 ++-
 annotations/src/main/resources/log4j.dtd        | 227 -------------------
 annotations/src/main/resources/log4j.xml        |  28 ---
 annotations/src/main/resources/log4j2.xml       |  16 ++
 .../webapp/WEB-INF/content/hello-success.jsp    |  11 +-
 .../src/main/webapp/WEB-INF/content/index.jsp   |   1 +
 .../webapp/WEB-INF/content/register-input.jsp   |  28 +--
 .../webapp/WEB-INF/content/register-success.jsp |  10 +-
 annotations/src/main/webapp/WEB-INF/web.xml     |  36 +--
 blank/src/main/webapp/WEB-INF/web.xml           |   2 +-
 .../apache/struts/edit/action/EditAction.java   |  60 +----
 exclude_parameters/src/main/resources/log4j.dtd | 227 -------------------
 exclude_parameters/src/main/resources/log4j.xml |  28 ---
 .../src/main/resources/log4j2.xml               |  16 ++
 pom.xml                                         |   7 +-
 .../apache/struts/edit/action/EditAction.java   | 191 +++++++---------
 .../src/main/resources/log4j.dtd                | 227 -------------------
 .../src/main/resources/log4j.xml                |  28 ---
 .../src/main/resources/log4j2.xml               |  16 ++
 .../org/apache/struts/example/MovieAction.java  |  19 +-
 .../src/main/resources/log4j.dtd                | 227 -------------------
 .../src/main/resources/log4j.xml                |  28 ---
 .../src/main/resources/log4j2.xml               |  16 ++
 wildcard_method_selection/pom.xml               |  54 +++--
 .../wildcardmethod/action/PersonAction.java     | 194 +++++++---------
 .../wildcardmethod/service/PersonService.java   |  73 ++----
 .../src/main/resources/log4j.dtd                | 227 -------------------
 .../src/main/resources/log4j.xml                |  35 ---
 .../src/main/resources/log4j2.xml               |  16 ++
 .../src/main/webapp/WEB-INF/web.xml             |   3 +-
 .../src/main/webapp/index.jsp                   |   1 +
 34 files changed, 467 insertions(+), 1828 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/annotations/pom.xml
----------------------------------------------------------------------
diff --git a/annotations/pom.xml b/annotations/pom.xml
index 3396449..98a1d45 100644
--- a/annotations/pom.xml
+++ b/annotations/pom.xml
@@ -1,33 +1,46 @@
 <?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>
+        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>annotations</artifactId>
+    <artifactId>annotations</artifactId>
 
-	<name>annotations</name>
+    <name>Annotations with Convention Plugin</name>
 
-	<description>Annotations example application for the 
-  Struts 2 getting started tutorials</description>
-	<packaging>war</packaging>
-	<build>
-		<finalName>annotations</finalName>
-	</build>
+    <description>Annotations example application for the Struts 2 getting started tutorials</description>
+    <packaging>war</packaging>
 
-	<dependencies>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.struts</groupId>
+            <artifactId>struts2-convention-plugin</artifactId>
+            <version>${struts2.version}</version>
+        </dependency>
+    </dependencies>
 
-
-		<dependency>
-			<groupId>org.apache.struts</groupId>
-			<artifactId>struts2-convention-plugin</artifactId>
-			<version>${struts2.version}</version>
-		</dependency>
-	</dependencies>
+    <build>
+        <finalName>annotations</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/a66c0865/annotations/src/main/java/example/actions/HelloAction.java
----------------------------------------------------------------------
diff --git a/annotations/src/main/java/example/actions/HelloAction.java b/annotations/src/main/java/example/actions/HelloAction.java
index 03f7eab..91c2c9d 100644
--- a/annotations/src/main/java/example/actions/HelloAction.java
+++ b/annotations/src/main/java/example/actions/HelloAction.java
@@ -1,48 +1,41 @@
 package example.actions;
 
-import org.apache.log4j.Logger;
-
-
 import com.opensymphony.xwork2.ActionSupport;
-
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 /**
  * Acts as a controller to handle actions
  * related to registering a user.
- * @author bruce phillips
  *
+ * @author bruce phillips
  */
 public class HelloAction extends ActionSupport {
-	
-	private static final long serialVersionUID = 1L;
-	
-	private static final Logger logger = Logger.getLogger( HelloAction.class.getName() );
-	
-	private String message;
-	
-		
-	public String execute() throws Exception {
-		
-		logger.info("In execute method of class Hello");
-		
-		message = "Hello from Struts 2 with no XML configuration.";
-		
-		return SUCCESS;
-		
-	}
-
-
-	public void setMessage(String message) {
-		this.message = message;
-	}
-
-
-	public String getMessage() {
-		return message;
-	}
-	
-
-
-	
+
+    private static final long serialVersionUID = 1L;
+
+    private static final Logger log = LogManager.getLogger(HelloAction.class);
+
+    private String message;
+
+
+    public String execute() throws Exception {
+
+        log.info("In execute method of class Hello");
+
+        message = "Hello from Struts 2 with no XML configuration.";
+
+        return SUCCESS;
+    }
+
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+
+    public String getMessage() {
+        return message;
+    }
 
 
 }

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/annotations/src/main/java/example/actions/RegisterAction.java
----------------------------------------------------------------------
diff --git a/annotations/src/main/java/example/actions/RegisterAction.java b/annotations/src/main/java/example/actions/RegisterAction.java
index 50d19ee..42e5f32 100644
--- a/annotations/src/main/java/example/actions/RegisterAction.java
+++ b/annotations/src/main/java/example/actions/RegisterAction.java
@@ -1,58 +1,49 @@
 package example.actions;
 
-import org.apache.log4j.Logger;
-import org.apache.struts2.convention.annotation.Action;
-
 import com.opensymphony.xwork2.ActionSupport;
-
 import example.model.Person;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.struts2.convention.annotation.Action;
 
 /**
  * Acts as a controller to handle actions
  * related to registering a user.
- * @author bruce phillips
  *
+ * @author bruce phillips
  */
 public class RegisterAction extends ActionSupport {
-	
-	private static final long serialVersionUID = 1L;
-	
-	private static final Logger logger = Logger.getLogger( RegisterAction.class.getName() );
-	
-	private Person personBean;
-	
-	@Action("register-input")
-	public String input() throws Exception {
-
-		logger.info("In input method of class RegisterAction");
-		
-		return INPUT;
-
-	}
-
-	public String execute() throws Exception {
-		
-		logger.info("In execute method of class RegisterAction");
-		
-		//call Service class to store personBean's state in database
-		
-		return SUCCESS;
-		
-	}
-	
-
-
-	
-	public Person getPersonBean() {
-		
-		return personBean;
-		
-	}
-	
-	public void setPersonBean(Person person) {
-		
-		personBean = person;
-		
-	}
+
+    private static final long serialVersionUID = 1L;
+
+    private static final Logger log = LogManager.getLogger(RegisterAction.class);
+
+    private Person personBean;
+
+    @Action("register-input")
+    public String input() throws Exception {
+
+        log.info("In input method of class RegisterAction");
+
+        return INPUT;
+    }
+
+    public String execute() throws Exception {
+
+        log.info("In execute method of class RegisterAction");
+
+        //call Service class to store personBean's state in database
+
+        return SUCCESS;
+    }
+
+
+    public Person getPersonBean() {
+        return personBean;
+    }
+
+    public void setPersonBean(Person person) {
+        personBean = person;
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/annotations/src/main/java/example/model/Person.java
----------------------------------------------------------------------
diff --git a/annotations/src/main/java/example/model/Person.java b/annotations/src/main/java/example/model/Person.java
index 010f9ef..92669e3 100644
--- a/annotations/src/main/java/example/model/Person.java
+++ b/annotations/src/main/java/example/model/Person.java
@@ -3,60 +3,50 @@ package example.model;
 
 /**
  * Models a Person who registers.
- * @author bruce phillips
  *
+ * @author bruce phillips
  */
-public class Person
-{
+public class Person {
     private String firstName;
     private String lastName;
     private String email;
     private int age;
 
-    public String getFirstName()
-    {
+    public String getFirstName() {
         return firstName;
     }
 
-    public void setFirstName(String firstName)
-    {
+    public void setFirstName(String firstName) {
         this.firstName = firstName;
     }
 
-    public String getLastName()
-    {
+    public String getLastName() {
         return lastName;
     }
 
-    public void setLastName(String lastName)
-    {
+    public void setLastName(String lastName) {
         this.lastName = lastName;
     }
 
-    public String getEmail()
-    {
+    public String getEmail() {
         return email;
     }
 
-    public void setEmail(String email)
-    {
+    public void setEmail(String email) {
         this.email = email;
     }
 
-    public int getAge()
-    {
+    public int getAge() {
         return age;
     }
 
-    public void setAge( int age)
-    {
+    public void setAge(int age) {
         this.age = age;
     }
 
 
-    public String toString()
-    {
-        return "First Name: " + getFirstName() + " Last Name:  " + getLastName() + 
-        " Email:      " + getEmail() + " Age:      " + getAge() ;
+    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/a66c0865/annotations/src/main/resources/log4j.dtd
----------------------------------------------------------------------
diff --git a/annotations/src/main/resources/log4j.dtd b/annotations/src/main/resources/log4j.dtd
deleted file mode 100644
index 1aabd96..0000000
--- a/annotations/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/a66c0865/annotations/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/annotations/src/main/resources/log4j.xml b/annotations/src/main/resources/log4j.xml
deleted file mode 100644
index 2100cb2..0000000
--- a/annotations/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/a66c0865/annotations/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/annotations/src/main/resources/log4j2.xml b/annotations/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..3b08ab1
--- /dev/null
+++ b/annotations/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="example" level="debug"/>
+        <Root level="info">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/annotations/src/main/webapp/WEB-INF/content/hello-success.jsp
----------------------------------------------------------------------
diff --git a/annotations/src/main/webapp/WEB-INF/content/hello-success.jsp b/annotations/src/main/webapp/WEB-INF/content/hello-success.jsp
index 00119be..b02f233 100644
--- a/annotations/src/main/webapp/WEB-INF/content/hello-success.jsp
+++ b/annotations/src/main/webapp/WEB-INF/content/hello-success.jsp
@@ -1,19 +1,18 @@
 <?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"%>
+         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>Hello</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+    <title>Hello</title>
 </head>
 <body>
-<h3><s:property value="message" /></h3>
+<h3><s:property value="message"/></h3>
 
 
-
-<p><a href="index.jsp" >Return to home page</a>.</p>
+<p><a href="index.jsp">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/a66c0865/annotations/src/main/webapp/WEB-INF/content/index.jsp
----------------------------------------------------------------------
diff --git a/annotations/src/main/webapp/WEB-INF/content/index.jsp b/annotations/src/main/webapp/WEB-INF/content/index.jsp
new file mode 100644
index 0000000..08ef1fc
--- /dev/null
+++ b/annotations/src/main/webapp/WEB-INF/content/index.jsp
@@ -0,0 +1 @@
+<% response.sendRedirect("/index.jsp"); %>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/annotations/src/main/webapp/WEB-INF/content/register-input.jsp
----------------------------------------------------------------------
diff --git a/annotations/src/main/webapp/WEB-INF/content/register-input.jsp b/annotations/src/main/webapp/WEB-INF/content/register-input.jsp
index ab6562f..7ec62b7 100644
--- a/annotations/src/main/webapp/WEB-INF/content/register-input.jsp
+++ b/annotations/src/main/webapp/WEB-INF/content/register-input.jsp
@@ -1,27 +1,27 @@
 <?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"%>
+         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 />
+    <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: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>
 
- 	  <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/a66c0865/annotations/src/main/webapp/WEB-INF/content/register-success.jsp
----------------------------------------------------------------------
diff --git a/annotations/src/main/webapp/WEB-INF/content/register-success.jsp b/annotations/src/main/webapp/WEB-INF/content/register-success.jsp
index 174f0ad..c9c0e52 100644
--- a/annotations/src/main/webapp/WEB-INF/content/register-success.jsp
+++ b/annotations/src/main/webapp/WEB-INF/content/register-success.jsp
@@ -1,19 +1,19 @@
 <?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"%>
+         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>
+    <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>Your registration information: <s:property value="personBean"/></p>
 
-<p><a href="index.jsp" >Return to home page</a>.</p>
+<p><a href="index.jsp">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/a66c0865/annotations/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/annotations/src/main/webapp/WEB-INF/web.xml b/annotations/src/main/webapp/WEB-INF/web.xml
index 84ed515..f67db04 100644
--- a/annotations/src/main/webapp/WEB-INF/web.xml
+++ b/annotations/src/main/webapp/WEB-INF/web.xml
@@ -1,25 +1,25 @@
 <?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>annotations</display-name>
-	<welcome-file-list>
-		<welcome-file>index.jsp</welcome-file>
-	</welcome-file-list>
+         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>annotations</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>
-		<init-param>
-			<param-name>struts.devMode</param-name>
-			<param-value>true</param-value>
-		</init-param>
-	</filter>
+    <filter>
+        <filter-name>struts2</filter-name>
+        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
+        <init-param>
+            <param-name>struts.devMode</param-name>
+            <param-value>true</param-value>
+        </init-param>
+    </filter>
 
-	<filter-mapping>
-		<filter-name>struts2</filter-name>
-		<url-pattern>/*</url-pattern>
-	</filter-mapping>
+    <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/a66c0865/blank/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/blank/src/main/webapp/WEB-INF/web.xml b/blank/src/main/webapp/WEB-INF/web.xml
index f15252b..301bcb2 100644
--- a/blank/src/main/webapp/WEB-INF/web.xml
+++ b/blank/src/main/webapp/WEB-INF/web.xml
@@ -16,7 +16,7 @@
     </filter-mapping>
 
     <welcome-file-list>
-        <welcome-file>index.html</welcome-file>
+        <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>
 
     <!-- Restricts access to pure JSP files - access available only via Struts action -->

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/exclude_parameters/src/main/java/org/apache/struts/edit/action/EditAction.java
----------------------------------------------------------------------
diff --git a/exclude_parameters/src/main/java/org/apache/struts/edit/action/EditAction.java b/exclude_parameters/src/main/java/org/apache/struts/edit/action/EditAction.java
index a576a9d..0383bbc 100644
--- a/exclude_parameters/src/main/java/org/apache/struts/edit/action/EditAction.java
+++ b/exclude_parameters/src/main/java/org/apache/struts/edit/action/EditAction.java
@@ -1,10 +1,9 @@
 package org.apache.struts.edit.action;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.log4j.Logger;
+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;
@@ -12,8 +11,9 @@ import org.apache.struts.edit.service.CarModelsServiceHardCoded;
 import org.apache.struts.edit.service.EditService;
 import org.apache.struts.edit.service.EditServiceInMemory;
 
-import com.opensymphony.xwork2.ActionSupport;
-import com.opensymphony.xwork2.Preparable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * Acts as a controller to handle actions
@@ -22,98 +22,64 @@ import com.opensymphony.xwork2.Preparable;
  *
  */
 public class EditAction extends ActionSupport implements Preparable {
-	
-	private static Logger log = Logger.getLogger( EditAction.class.getName() );
-	
+
+	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.info("In prepare method...");
-		
 		carModelsAvailable = carModelsService.getCarModels() ;
-		
 		setPersonBean( editService.getPerson() );
-
 	}
 
 	public void prepareExecute() {
-		
 		log.info("In prepareExecute method...");
-		
-		
 	}
 	
 	public String execute() throws Exception {
-		
 		log.info ("In execute method...");
-		
 	    editService.savePerson( getPersonBean() );
-		
 		return SUCCESS;
-		
 	}
 	
 	public void prepareInput() {
-		
 		log.info("In prepareInput method...");
-		
 	}
 	
 	public String input() throws Exception {
-		
 		log.info("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<State>();
+
+		states = new ArrayList<>();
 		states.add( new State("AZ", "Arizona") );
 		states.add( new State("CA", "California") );
 		states.add( new State("FL", "Florida") );
@@ -123,11 +89,7 @@ public class EditAction extends ActionSupport implements Preparable {
 		return states;
 	}
 
-
-
 	public String [] getCarModelsAvailable() {
 		return carModelsAvailable;
 	}
-
-
 }

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/exclude_parameters/src/main/resources/log4j.dtd
----------------------------------------------------------------------
diff --git a/exclude_parameters/src/main/resources/log4j.dtd b/exclude_parameters/src/main/resources/log4j.dtd
deleted file mode 100644
index 1aabd96..0000000
--- a/exclude_parameters/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/a66c0865/exclude_parameters/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/exclude_parameters/src/main/resources/log4j.xml b/exclude_parameters/src/main/resources/log4j.xml
deleted file mode 100644
index 2100cb2..0000000
--- a/exclude_parameters/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/a66c0865/exclude_parameters/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/exclude_parameters/src/main/resources/log4j2.xml b/exclude_parameters/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..d7c09f9
--- /dev/null
+++ b/exclude_parameters/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/a66c0865/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 2e355a9..86ee2cb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,6 @@
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <struts2.version>2.3.25-SNAPSHOT</struts2.version>
-        <log4j.version>1.2.17</log4j.version>
         <log4j2.version>2.3</log4j2.version>
     </properties>
 
@@ -78,9 +77,9 @@
         </dependency>
 
         <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>${log4j.version}</version>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
         </dependency>
 
     </dependencies>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/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
index a576a9d..1d9f288 100644
--- 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
@@ -1,10 +1,9 @@
 package org.apache.struts.edit.action;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.log4j.Logger;
+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;
@@ -12,122 +11,86 @@ import org.apache.struts.edit.service.CarModelsServiceHardCoded;
 import org.apache.struts.edit.service.EditService;
 import org.apache.struts.edit.service.EditServiceInMemory;
 
-import com.opensymphony.xwork2.ActionSupport;
-import com.opensymphony.xwork2.Preparable;
+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
  *
+ * @author bruce phillips
  */
 public class EditAction extends ActionSupport implements Preparable {
-	
-	private static Logger log = Logger.getLogger( EditAction.class.getName() );
-	
-	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.info("In prepare method...");
-		
-		carModelsAvailable = carModelsService.getCarModels() ;
-		
-		setPersonBean( editService.getPerson() );
-
-	}
-
-	public void prepareExecute() {
-		
-		log.info("In prepareExecute method...");
-		
-		
-	}
-	
-	public String execute() throws Exception {
-		
-		log.info ("In execute method...");
-		
-	    editService.savePerson( getPersonBean() );
-		
-		return SUCCESS;
-		
-	}
-	
-	public void prepareInput() {
-		
-		log.info("In prepareInput method...");
-		
-	}
-	
-	public String input() throws Exception {
-		
-		log.info("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<State>();
-		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;
-	}
 
+    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/a66c0865/preparable_interface/src/main/resources/log4j.dtd
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/resources/log4j.dtd b/preparable_interface/src/main/resources/log4j.dtd
deleted file mode 100644
index 1aabd96..0000000
--- a/preparable_interface/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/a66c0865/preparable_interface/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/preparable_interface/src/main/resources/log4j.xml b/preparable_interface/src/main/resources/log4j.xml
deleted file mode 100644
index 2100cb2..0000000
--- a/preparable_interface/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/a66c0865/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/a66c0865/restful2actionmapper/src/main/java/org/apache/struts/example/MovieAction.java
----------------------------------------------------------------------
diff --git a/restful2actionmapper/src/main/java/org/apache/struts/example/MovieAction.java b/restful2actionmapper/src/main/java/org/apache/struts/example/MovieAction.java
index 82773ae..76b1cfb 100644
--- a/restful2actionmapper/src/main/java/org/apache/struts/example/MovieAction.java
+++ b/restful2actionmapper/src/main/java/org/apache/struts/example/MovieAction.java
@@ -1,13 +1,12 @@
 package org.apache.struts.example;
 
-import org.apache.log4j.Logger;
-
 import com.opensymphony.xwork2.ActionSupport;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public class MovieAction extends ActionSupport {
-	
-	private static final Logger LOGGER = Logger.getLogger(MovieAction.class.getName() );
 
+	private static final Logger log = LogManager.getLogger(MovieAction.class.getName());
 	private static final long serialVersionUID = 1L;
 	
 	private String id;
@@ -19,11 +18,8 @@ public class MovieAction extends ActionSupport {
 	 * @return success
 	 */
 	public String view() {
-		
-		LOGGER.debug("Value of id is " + id);
-		
+		log.debug("Value of id is " + id);
 		return SUCCESS;
-		
 	}
 	
 	/**
@@ -32,12 +28,8 @@ public class MovieAction extends ActionSupport {
 	 * @return
 	 */
 	public String index() {
-		
-		
-		LOGGER.debug("Value of id is " + id);
-		
+		log.debug("Value of id is " + id);
 		return SUCCESS;
-		
 	}
 
 	public String getId() {
@@ -47,5 +39,4 @@ public class MovieAction extends ActionSupport {
 	public void setId(String id) {
 		this.id = id;
 	}
-
 }

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/restful2actionmapper/src/main/resources/log4j.dtd
----------------------------------------------------------------------
diff --git a/restful2actionmapper/src/main/resources/log4j.dtd b/restful2actionmapper/src/main/resources/log4j.dtd
deleted file mode 100755
index 1aabd96..0000000
--- a/restful2actionmapper/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/a66c0865/restful2actionmapper/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/restful2actionmapper/src/main/resources/log4j.xml b/restful2actionmapper/src/main/resources/log4j.xml
deleted file mode 100755
index aac92af..0000000
--- a/restful2actionmapper/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.struts.example">
-    	 <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/a66c0865/restful2actionmapper/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/restful2actionmapper/src/main/resources/log4j2.xml b/restful2actionmapper/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..b92f2ea
--- /dev/null
+++ b/restful2actionmapper/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.example" 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/a66c0865/wildcard_method_selection/pom.xml
----------------------------------------------------------------------
diff --git a/wildcard_method_selection/pom.xml b/wildcard_method_selection/pom.xml
index d8c0881..a76d999 100644
--- a/wildcard_method_selection/pom.xml
+++ b/wildcard_method_selection/pom.xml
@@ -1,22 +1,40 @@
 <?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>
+<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>
+    <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>
 
-  <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>
-	</build>
- 
 </project>

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/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
index 55cdfda..ac3bf53 100644
--- 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
@@ -1,129 +1,93 @@
 package org.apache.struts.tutorials.wildcardmethod.action;
 
-import java.util.List;
-
-import org.apache.log4j.Logger;
+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;
 
-import com.opensymphony.xwork2.ActionSupport;
+    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 class PersonAction extends ActionSupport {
-	
-	//Create a Logger object
-	private static final Logger logger = Logger.getLogger( PersonAction.class.getName() );
-
-	
-	private static final long serialVersionUID = 1L;
-
-	Person person ;
-	
-	int id ;
-	
-	List<Person> personList = PersonService.getPersons();
-	
-	PersonService personService = new PersonService();
-	
-	public String execute() throws Exception {
-	
-		logger.debug("In execute method");
-		return SUCCESS;
-	}
-	
-	
-	public String create() {
-		
-		logger.debug("In create method");
-		person = new Person();
-		
-		return INPUT;
-		
-		
-	}
-	
-	
-	public String edit() {
-		
-		    logger.debug("In edit method");
-		    person = personService.getPerson(id);
-		
-			return INPUT;
-
-		
-	}
-	
-	
-	public String saveOrUpdate() {
-		
-
-		logger.debug("In saveOrUpdate method");
-		if ( person.getId()  > -1 ) {
-			
-			personService.update(person) ;
-			
-			
-		} else {
-			
-			personService.save(person);
-		}
-		
-		
-		personList = PersonService.getPersons() ;
-		
-		return SUCCESS;
-
-	
-	}
-	
-	
-	public String delete() {
-		
-		logger.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;
-	}
-	
-	
-	
-	
 
+    public void setId(int id) {
+        this.id = id;
+    }
 }

http://git-wip-us.apache.org/repos/asf/struts-examples/blob/a66c0865/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
index 4e85eb7..0aa657c 100644
--- 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
@@ -1,133 +1,88 @@
 package org.apache.struts.tutorials.wildcardmethod.service;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.apache.log4j.Logger;
+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 logger = Logger.getLogger( PersonService.class.getName() );
+	private static final Logger log = LogManager.getLogger(PersonService.class);
 
-	
-	private static SortedMap<Integer, Person> people = new TreeMap<Integer, Person>();
+	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<Person>();
+
+
+	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) {
-    		
-    		logger.info("Id value set to 0");
-    		
-    	}
+			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<Person>();
-    	
-        for (Integer id : people.keySet() ) {
- 			
+		personList = new ArrayList<>();
+
+		for (Integer id : people.keySet() ) {
  			personList.add( people.get(id));
- 			
  		}
-        
-        
-		
-		
 	}
-	
-
 }