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));
-                       
                }
-        
-        
-               
-               
        }
-       
-
 }

Reply via email to