You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2020/05/01 08:12:44 UTC

[struts-archetypes] branch master updated: Fixes various small issues with archetypes

This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/struts-archetypes.git


The following commit(s) were added to refs/heads/master by this push:
     new 602469d  Fixes various small issues with archetypes
602469d is described below

commit 602469de302558566717bea71e93e50bfcdbd2b6
Author: Lukasz Lenart <lu...@apache.org>
AuthorDate: Fri May 1 10:12:36 2020 +0200

    Fixes various small issues with archetypes
---
 .../src/main/resources/archetype-resources/pom.xml |  13 +++
 .../archetype-resources/src/main/webapp/js/app.js  |   2 -
 .../src/main/webapp/js/config.js                   |   2 -
 .../src/main/webapp/js/services/DataService.js     |   2 -
 .../src/main/resources/archetype-resources/pom.xml |  13 +++
 .../src/main/java/example/ExampleSupport.java      |   2 -
 .../src/main/java/example/HelloWorld.java          |   2 -
 .../src/main/java/example/Login.java               |   2 -
 .../src/test/java/example/ConfigTest.java          |  49 ++++----
 .../src/test/java/example/HelloWorldTest.java      |  15 +--
 .../src/test/java/example/LoginTest.java           |  28 +++--
 .../src/main/resources/archetype-resources/pom.xml |  13 +++
 .../src/test/java/actions/HelloActionTest.java     |   9 +-
 .../src/test/java/actions/IndexTest.java           |   7 +-
 .../META-INF/maven/archetype-metadata.xml          |  24 ++--
 .../src/main/resources/archetype-resources/pom.xml |  35 +++---
 .../src/main/java/DateConverter.java               |   3 -
 .../src/main/java/HelloWorldAction.java            |   1 -
 .../src/main/java/IndexAction.java                 |   3 -
 .../src/main/resources/applicationContext.xml      |  10 +-
 .../src/main/resources/log4j2.xml                  |   1 -
 .../main/resources/struts-conversion.properties    |   3 +
 .../src/main/resources/struts.properties           | 130 ---------------------
 .../src/main/resources/struts.xml                  |   3 +-
 .../src/main/resources/xwork-conversion.properties |   4 -
 .../src/main/webapp/WEB-INF/decorators/main.jsp    |  13 ---
 26 files changed, 128 insertions(+), 261 deletions(-)

diff --git a/struts2-archetype-angularjs/src/main/resources/archetype-resources/pom.xml b/struts2-archetype-angularjs/src/main/resources/archetype-resources/pom.xml
index cc8cbda..b89b676 100644
--- a/struts2-archetype-angularjs/src/main/resources/archetype-resources/pom.xml
+++ b/struts2-archetype-angularjs/src/main/resources/archetype-resources/pom.xml
@@ -10,6 +10,7 @@
 
     <properties>
         <struts2.version>${supported.struts2.version}</struts2.version>
+        <log4j2.version>2.12.1</log4j2.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
@@ -28,6 +29,18 @@
         </dependency>
 
         <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
+        <dependency>
             <groupId>org.apache.struts</groupId>
             <artifactId>struts2-junit-plugin</artifactId>
             <version>\${struts2.version}</version>
diff --git a/struts2-archetype-angularjs/src/main/resources/archetype-resources/src/main/webapp/js/app.js b/struts2-archetype-angularjs/src/main/resources/archetype-resources/src/main/webapp/js/app.js
index 6d2da17..7bae4d8 100644
--- a/struts2-archetype-angularjs/src/main/resources/archetype-resources/src/main/webapp/js/app.js
+++ b/struts2-archetype-angularjs/src/main/resources/archetype-resources/src/main/webapp/js/app.js
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * 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
diff --git a/struts2-archetype-angularjs/src/main/resources/archetype-resources/src/main/webapp/js/config.js b/struts2-archetype-angularjs/src/main/resources/archetype-resources/src/main/webapp/js/config.js
index 9b93aab..2cfb91c 100644
--- a/struts2-archetype-angularjs/src/main/resources/archetype-resources/src/main/webapp/js/config.js
+++ b/struts2-archetype-angularjs/src/main/resources/archetype-resources/src/main/webapp/js/config.js
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * 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
diff --git a/struts2-archetype-angularjs/src/main/resources/archetype-resources/src/main/webapp/js/services/DataService.js b/struts2-archetype-angularjs/src/main/resources/archetype-resources/src/main/webapp/js/services/DataService.js
index 9a8daf1..eadbbff 100644
--- a/struts2-archetype-angularjs/src/main/resources/archetype-resources/src/main/webapp/js/services/DataService.js
+++ b/struts2-archetype-angularjs/src/main/resources/archetype-resources/src/main/webapp/js/services/DataService.js
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * 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
diff --git a/struts2-archetype-blank/src/main/resources/archetype-resources/pom.xml b/struts2-archetype-blank/src/main/resources/archetype-resources/pom.xml
index 756bf7c..c829301 100644
--- a/struts2-archetype-blank/src/main/resources/archetype-resources/pom.xml
+++ b/struts2-archetype-blank/src/main/resources/archetype-resources/pom.xml
@@ -10,6 +10,7 @@
 
     <properties>
         <struts2.version>${supported.struts2.version}</struts2.version>
+        <log4j2.version>2.12.1</log4j2.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
@@ -28,6 +29,18 @@
         </dependency>
 
         <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
+        <dependency>
             <groupId>org.apache.struts</groupId>
             <artifactId>struts2-junit-plugin</artifactId>
             <version>\${struts2.version}</version>
diff --git a/struts2-archetype-blank/src/main/resources/archetype-resources/src/main/java/example/ExampleSupport.java b/struts2-archetype-blank/src/main/resources/archetype-resources/src/main/java/example/ExampleSupport.java
index a442b39..b721a23 100644
--- a/struts2-archetype-blank/src/main/resources/archetype-resources/src/main/java/example/ExampleSupport.java
+++ b/struts2-archetype-blank/src/main/resources/archetype-resources/src/main/java/example/ExampleSupport.java
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * 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
diff --git a/struts2-archetype-blank/src/main/resources/archetype-resources/src/main/java/example/HelloWorld.java b/struts2-archetype-blank/src/main/resources/archetype-resources/src/main/java/example/HelloWorld.java
index 3f01cd4..5d6d553 100644
--- a/struts2-archetype-blank/src/main/resources/archetype-resources/src/main/java/example/HelloWorld.java
+++ b/struts2-archetype-blank/src/main/resources/archetype-resources/src/main/java/example/HelloWorld.java
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * 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
diff --git a/struts2-archetype-blank/src/main/resources/archetype-resources/src/main/java/example/Login.java b/struts2-archetype-blank/src/main/resources/archetype-resources/src/main/java/example/Login.java
index 988d728..379567e 100644
--- a/struts2-archetype-blank/src/main/resources/archetype-resources/src/main/java/example/Login.java
+++ b/struts2-archetype-blank/src/main/resources/archetype-resources/src/main/java/example/Login.java
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * 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
diff --git a/struts2-archetype-blank/src/main/resources/archetype-resources/src/test/java/example/ConfigTest.java b/struts2-archetype-blank/src/main/resources/archetype-resources/src/test/java/example/ConfigTest.java
index 84ffc05..137ebb1 100644
--- a/struts2-archetype-blank/src/main/resources/archetype-resources/src/test/java/example/ConfigTest.java
+++ b/struts2-archetype-blank/src/main/resources/archetype-resources/src/test/java/example/ConfigTest.java
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * 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
@@ -26,37 +24,34 @@ import com.opensymphony.xwork2.config.RuntimeConfiguration;
 import com.opensymphony.xwork2.config.entities.ActionConfig;
 import com.opensymphony.xwork2.config.entities.ResultConfig;
 import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider;
+import org.apache.struts2.StrutsTestCase;
 
-import java.util.Map;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.struts2.StrutsTestCase;
 
 public class ConfigTest extends StrutsTestCase {
 
-    protected void assertSuccess(String result) throws Exception {
-        assertTrue("Expected a success result!",
-                ActionSupport.SUCCESS.equals(result));
+    protected void assertSuccess(String result) {
+        assertEquals("Expected a success result!", ActionSupport.SUCCESS, result);
     }
 
-    protected void assertInput(String result) throws Exception {
-        assertTrue("Expected an input result!",
-                ActionSupport.INPUT.equals(result));
+    protected void assertInput(String result) {
+        assertEquals("Expected an input result!", ActionSupport.INPUT, result);
     }
 
-    protected Map assertFieldErrors(ActionSupport action) throws Exception {
+    protected Map<String, List<String>> assertFieldErrors(ActionSupport action) {
         assertTrue(action.hasFieldErrors());
         return action.getFieldErrors();
     }
 
-    protected void assertFieldError(Map field_errors, String field_name, String error_message) {
-
-        List errors = (List) field_errors.get(field_name);
-        assertNotNull("Expected errors for " + field_name, errors);
-        assertTrue("Expected errors for " + field_name, errors.size()>0);
+    protected void assertFieldError(Map<String, List<String>> fieldErrors, String fieldName, String errorMessage) {
+        List<String> errors = fieldErrors.get(fieldName);
+        assertNotNull("Expected errors for " + fieldName, errors);
+        assertTrue("Expected errors for " + fieldName, errors.size() > 0);
         // TODO: Should be a loop
-        assertEquals(error_message,errors.get(0));
-
+        assertEquals(errorMessage, errors.get(0));
     }
 
     protected void setUp() throws Exception {
@@ -70,8 +65,7 @@ public class ConfigTest extends StrutsTestCase {
         RuntimeConfiguration configuration = configurationManager.getConfiguration().getRuntimeConfiguration();
         ActionConfig config = configuration.getActionConfig(namespace, action_name);
         assertNotNull("Mssing action", config);
-        assertTrue("Wrong class name: [" + config.getClassName() + "]",
-                class_name.equals(config.getClassName()));
+        assertEquals("Wrong class name: [" + config.getClassName() + "]", class_name, config.getClassName());
         return config;
     }
 
@@ -79,18 +73,17 @@ public class ConfigTest extends StrutsTestCase {
         return assertClass("", action_name, class_name);
     }
 
-    protected void assertResult(ActionConfig config, String result_name, String result_value) {
-        Map results = config.getResults();
-        ResultConfig result = (ResultConfig) results.get(result_name);
-        Map params = result.getParams();
-        String value = (String) params.get("actionName");
+    protected void assertResult(ActionConfig config, String resultName, String resultValue) {
+        Map<String, ResultConfig> results = config.getResults();
+        ResultConfig result = results.get(resultName);
+        Map<String, String> params = result.getParams();
+        String value = params.get("actionName");
         if (value == null)
-            value = (String) params.get("location");
-        assertTrue("Wrong result value: [" + value + "]",
-                result_value.equals(value));
+            value = params.get("location");
+        assertEquals("Wrong result value: [" + value + "]", resultValue, value);
     }
 
-    public void testConfig() throws Exception {
+    public void testConfig() {
         assertNotNull(configurationManager);
     }
 
diff --git a/struts2-archetype-blank/src/main/resources/archetype-resources/src/test/java/example/HelloWorldTest.java b/struts2-archetype-blank/src/main/resources/archetype-resources/src/test/java/example/HelloWorldTest.java
index 27397a9..a5ca567 100644
--- a/struts2-archetype-blank/src/main/resources/archetype-resources/src/test/java/example/HelloWorldTest.java
+++ b/struts2-archetype-blank/src/main/resources/archetype-resources/src/test/java/example/HelloWorldTest.java
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * 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
@@ -28,12 +26,11 @@ import org.apache.struts2.StrutsTestCase;
 public class HelloWorldTest extends StrutsTestCase {
 
     public void testHelloWorld() throws Exception {
-        HelloWorld hello_world = container.inject(HelloWorld.class);
-        ActionContext.getContext().getContainer().inject(hello_world);
-        String result = hello_world.execute();
-        assertTrue("Expected a success result!",
-                ActionSupport.SUCCESS.equals(result));
-        assertTrue("Expected the default message!",
-                hello_world.getText(HelloWorld.MESSAGE).equals(hello_world.getMessage()));
+        HelloWorld helloWorld = container.inject(HelloWorld.class);
+        ActionContext.getContext().getContainer().inject(helloWorld);
+        String result = helloWorld.execute();
+        assertEquals("Expected a success result!", ActionSupport.SUCCESS, result);
+        assertEquals("Expected the default message!", helloWorld.getText(HelloWorld.MESSAGE), helloWorld.getMessage());
     }
+
 }
diff --git a/struts2-archetype-blank/src/main/resources/archetype-resources/src/test/java/example/LoginTest.java b/struts2-archetype-blank/src/main/resources/archetype-resources/src/test/java/example/LoginTest.java
index d12faad..88f9445 100644
--- a/struts2-archetype-blank/src/main/resources/archetype-resources/src/test/java/example/LoginTest.java
+++ b/struts2-archetype-blank/src/main/resources/archetype-resources/src/test/java/example/LoginTest.java
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * 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
@@ -21,17 +19,19 @@
 
 package ${package}.example;
 
+import com.opensymphony.xwork2.ActionProxy;
 import com.opensymphony.xwork2.ActionSupport;
 import com.opensymphony.xwork2.config.entities.ActionConfig;
 
+import java.util.List;
 import java.util.Map;
 
 public class LoginTest extends ConfigTest {
 
-    public void FIXME_testLoginConfig() throws Exception {
-        ActionConfig config = assertClass("example", "Login_input", "example.Login");
+    public void testLoginConfig() {
+        ActionConfig config = assertClass("/example", "Login_input", "${package}.Login");
         assertResult(config, ActionSupport.SUCCESS, "Menu");
-        assertResult(config, ActionSupport.INPUT, "/example/Login.jsp");
+        assertResult(config, ActionSupport.INPUT, "/WEB-INF/example/Login.jsp");
     }
 
     public void testLoginSubmit() throws Exception {
@@ -42,14 +42,18 @@ public class LoginTest extends ConfigTest {
         assertSuccess(result);
     }
 
-    // Needs access to an envinronment that includes validators
-    public void FIXME_testLoginSubmitInput() throws Exception {
-        Login login = container.inject(Login.class);
-        String result = login.execute();
+    public void testLoginSubmitInput() throws Exception {
+        // given
+        ActionProxy proxy = getActionProxy("/example/Login");
+
+        // when
+        String result = proxy.execute();
+
+        // then
         assertInput(result);
-        Map errors = assertFieldErrors(login);
-        assertFieldError(errors,"username","Username is required.");
-        assertFieldError(errors,"password","Password is required.");
+        Map<String, List<String>> errors = assertFieldErrors((ActionSupport) proxy.getAction());
+        assertFieldError(errors, "username", "User Name is required.");
+        assertFieldError(errors, "password", "Password is required.");
     }
 
 }
diff --git a/struts2-archetype-convention/src/main/resources/archetype-resources/pom.xml b/struts2-archetype-convention/src/main/resources/archetype-resources/pom.xml
index 9c85b4d..42025a2 100644
--- a/struts2-archetype-convention/src/main/resources/archetype-resources/pom.xml
+++ b/struts2-archetype-convention/src/main/resources/archetype-resources/pom.xml
@@ -10,6 +10,7 @@
 
     <properties>
         <struts2.version>${supported.struts2.version}</struts2.version>
+        <log4j2.version>2.12.1</log4j2.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
@@ -28,6 +29,18 @@
         </dependency>
 
         <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
+        <dependency>
             <groupId>org.apache.struts</groupId>
             <artifactId>struts2-junit-plugin</artifactId>
             <version>\${struts2.version}</version>
diff --git a/struts2-archetype-convention/src/main/resources/archetype-resources/src/test/java/actions/HelloActionTest.java b/struts2-archetype-convention/src/main/resources/archetype-resources/src/test/java/actions/HelloActionTest.java
index 8b83735..a789216 100644
--- a/struts2-archetype-convention/src/main/resources/archetype-resources/src/test/java/actions/HelloActionTest.java
+++ b/struts2-archetype-convention/src/main/resources/archetype-resources/src/test/java/actions/HelloActionTest.java
@@ -7,13 +7,12 @@ import com.opensymphony.xwork2.ActionSupport;
 
 public class HelloActionTest extends StrutsTestCase {
 
-    public void testHelloAction() throws Exception {
+    public void testHelloAction() {
         HelloAction hello = new HelloAction();
         ActionContext.getContext().getContainer().inject(hello);
         String result = hello.execute();
-        assertTrue("Expected a success result!",
-                ActionSupport.SUCCESS.equals(result));
-        assertTrue("Expected the default message!",
-                hello.getText(HelloAction.MESSAGE).equals(hello.getMessage()));
+        assertEquals("Expected a success result!", ActionSupport.SUCCESS, result);
+        assertEquals("Expected the default message!", hello.getText(HelloAction.MESSAGE), hello.getMessage());
     }
+
 }
diff --git a/struts2-archetype-convention/src/main/resources/archetype-resources/src/test/java/actions/IndexTest.java b/struts2-archetype-convention/src/main/resources/archetype-resources/src/test/java/actions/IndexTest.java
index 2c02a70..517062a 100644
--- a/struts2-archetype-convention/src/main/resources/archetype-resources/src/test/java/actions/IndexTest.java
+++ b/struts2-archetype-convention/src/main/resources/archetype-resources/src/test/java/actions/IndexTest.java
@@ -5,10 +5,11 @@ import org.apache.struts2.StrutsTestCase;
 
 public class IndexTest extends StrutsTestCase {
 
-    public void testIndex() throws Exception {
+    public void testIndex() {
         Index index = new Index();
         String result = index.execute();
-        assertTrue("Expected a success result!", ActionSupport.SUCCESS.equals(result));
-        assertTrue("Expected the 'hello' action name!!", "hello".equals(index.getRedirectName()));
+        assertEquals("Expected a success result!", ActionSupport.SUCCESS, result);
+        assertEquals("Expected the 'hello' action name!!", "hello", index.getRedirectName());
     }
+
 }
diff --git a/struts2-archetype-starter/src/main/resources/META-INF/maven/archetype-metadata.xml b/struts2-archetype-starter/src/main/resources/META-INF/maven/archetype-metadata.xml
index 565b0aa..bbd463a 100644
--- a/struts2-archetype-starter/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/struts2-archetype-starter/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<archetype-descriptor name="struts2-archetype-starter">
+<archetype-descriptor name="struts2-archetype-convention">
+
     <fileSets>
         <fileSet filtered="true" packaged="true">
             <directory>src/main/java</directory>
@@ -15,17 +16,11 @@
             </includes>
         </fileSet>
 
-        <fileSet filtered="false" packaged="false">
-            <directory>src/main/resources</directory>
-            <includes>
-                <include>**/*.properties</include>
-            </includes>
-        </fileSet>
-
         <fileSet filtered="true" packaged="false">
             <directory>src/main/resources</directory>
             <includes>
-                <include>**/struts.xml</include>
+                <include>**/*.xml</include>
+                <include>**/*.properties</include>
             </includes>
         </fileSet>
 
@@ -33,21 +28,16 @@
             <directory>src/main/webapp</directory>
             <includes>
                 <include>**/*.jsp</include>
+                <include>**/*.css</include>
             </includes>
         </fileSet>
 
-        <fileSet filtered="false" packaged="false">
-            <directory>src/main/webapp</directory>
-            <includes>
-                <include>**/index.html</include>
-            </includes>
-        </fileSet>
-
-        <fileSet filtered="false" packaged="false">
+        <fileSet filtered="true" packaged="false">
             <directory>src/main/webapp/WEB-INF</directory>
             <includes>
                 <include>**/*.xml</include>
             </includes>
         </fileSet>
     </fileSets>
+
 </archetype-descriptor>
diff --git a/struts2-archetype-starter/src/main/resources/archetype-resources/pom.xml b/struts2-archetype-starter/src/main/resources/archetype-resources/pom.xml
index 6bb869b..6627fd0 100644
--- a/struts2-archetype-starter/src/main/resources/archetype-resources/pom.xml
+++ b/struts2-archetype-starter/src/main/resources/archetype-resources/pom.xml
@@ -12,19 +12,11 @@
 
     <properties>
         <struts2.version>${supported.struts2.version}</struts2.version>
+        <log4j2.version>2.12.1</log4j2.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
     <dependencies>
-        <!-- Junit -->
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>test</scope>
-        </dependency>
-
-        <!--  Struts 2 -->
         <dependency>
             <groupId>org.apache.struts</groupId>
             <artifactId>struts2-core</artifactId>
@@ -49,7 +41,18 @@
             <version>\${struts2.version}</version>
         </dependency>
 
-        <!-- Servlet & Jsp -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
@@ -64,20 +67,26 @@
             <scope>provided</scope>
         </dependency>
 
-
-        <!-- Jakarta Commons -->
         <dependency>
             <groupId>commons-fileupload</groupId>
             <artifactId>commons-fileupload</artifactId>
             <version>1.3.3</version>
         </dependency>
 
-        <!-- Dwr -->
         <dependency>
             <groupId>uk.ltd.getahead</groupId>
             <artifactId>dwr</artifactId>
             <version>1.1-beta-3</version>
         </dependency>
+
+        <!-- Tests -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+            <scope>test</scope>
+        </dependency>
+
     </dependencies>
 
     <build>
diff --git a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/java/DateConverter.java b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/java/DateConverter.java
index 0998cca..a0c0902 100644
--- a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/java/DateConverter.java
+++ b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/java/DateConverter.java
@@ -23,9 +23,6 @@ import java.util.Map;
 import java.util.Date;
 import com.opensymphony.xwork2.conversion.TypeConversionException;
 
-/**
- * 
- */
 public class DateConverter extends StrutsTypeConverter {
     public Object convertFromString(Map context, String[] values, Class toClass) {
         if (values != null && values.length > 0 && values[0] != null && values[0].length() > 0) {
diff --git a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/java/HelloWorldAction.java b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/java/HelloWorldAction.java
index b50e7ef..6874e63 100644
--- a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/java/HelloWorldAction.java
+++ b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/java/HelloWorldAction.java
@@ -23,7 +23,6 @@ import com.opensymphony.xwork2.validator.annotations.RequiredFieldValidator;
 import com.opensymphony.xwork2.conversion.annotations.Conversion;
 import com.opensymphony.xwork2.conversion.annotations.TypeConversion;
 
-@Validation()
 @Conversion()
 public class HelloWorldAction extends ActionSupport {
     
diff --git a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/java/IndexAction.java b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/java/IndexAction.java
index 91446de..c5197f5 100644
--- a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/java/IndexAction.java
+++ b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/java/IndexAction.java
@@ -20,9 +20,6 @@ import java.util.Date;
 import com.opensymphony.xwork2.conversion.annotations.Conversion;
 import com.opensymphony.xwork2.conversion.annotations.TypeConversion;
 
-/**
- * 
- */
 @Conversion()
 public class IndexAction extends ActionSupport {
     
diff --git a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/applicationContext.xml b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/applicationContext.xml
index 88c31b2..2449c40 100644
--- a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/applicationContext.xml
+++ b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/applicationContext.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE beans PUBLIC 
-	"-//SPRING//DTD BEAN//EN" 
-	"http://www.springframework.org/dtd/spring-beans.dtd">
-	
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "springframework.org/dtd/spring-beans-2.0.dtd">
+
 <beans>
-	<!-- Example of SAF2 action instantiated by Spring -->
-    <bean id="helloWorldAction" class="${package}.HelloWorldAction" singleton="false" />
+    <!-- Example of Struts action instantiated by Spring -->
+    <bean id="helloWorldAction" class="com.demo.HelloWorldAction" scope="prototype"/>
 </beans>
 
diff --git a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/log4j2.xml b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/log4j2.xml
index d0cdc6d..6d27d12 100644
--- a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/log4j2.xml
+++ b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/log4j2.xml
@@ -6,7 +6,6 @@
         </Console>
     </Appenders>
     <Loggers>
-        <Logger name="com.opensymphony.sitemesh" level="info"/>
         <Logger name="com.opensymphony.xwork2" level="info"/>
         <Logger name="org.apache.struts2" level="info"/>
         <Logger name="\${groupId}" level="debug"/>
diff --git a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/struts-conversion.properties b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/struts-conversion.properties
new file mode 100644
index 0000000..6074ee7
--- /dev/null
+++ b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/struts-conversion.properties
@@ -0,0 +1,3 @@
+# Global conversion goes here
+# eg.
+java.util.Date=${package}.DateConverter
diff --git a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/struts.properties b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/struts.properties
deleted file mode 100644
index 11328c9..0000000
--- a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/struts.properties
+++ /dev/null
@@ -1,130 +0,0 @@
-### START SNIPPET: complete_file
-
-### Struts 2.0 default properties
-###(can be overridden by a struts.properties file in the root of the classpath)
-###
-
-### This can be used to set your default locale and encoding scheme
-# struts.locale=en_US
-struts.i18n.encoding=UTF-8
-
-### if specified, the default object factory can be overridden here
-### Note: short-hand notation is supported in some cases, such as "spring"
-###       Alternatively, you can provide a com.opensymphony.xwork2.ObjectFactory subclass name here  
-struts.objectFactory = spring
-
-### specifies the autoWiring logic when using the SpringObjectFactory.
-### valid values are: name, type, auto, and constructor (name is the default)
-struts.objectFactory.spring.autoWire = name
-
-### indicates to the struts-action-2.0-spring integration if Class instances should be cached
-### this should, until a future Spring release makes it possible, be left as true
-### unless you know exactly what you are doing!
-### valid values are: true, false (true is the default)
-struts.objectFactory.spring.useClassCache = true
-
-### if specified, the default object type determiner can be overridden here
-### Note: short-hand notation is supported in some cases, such as "tiger" or "notiger"
-###       Alternatively, you can provide a com.opensymphony.xwork2.util.ObjectTypeDeterminer implementation name here
-### Note: if you have the xwork2-tiger.jar within your classpath, GenericsObjectTypeDeterminer is used by default
-###       To disable tiger support use the "notiger" property value here.
-#struts.objectTypeDeterminer = tiger
-#struts.objectTypeDeterminer = notiger
-
-### Parser to handle HTTP POST requests, encoded using the MIME-type multipart/form-data
-# struts.multipart.parser=cos
-# struts.multipart.parser=pell
-struts.multipart.parser=jakarta
-# uses javax.servlet.context.tempdir by default
-struts.multipart.saveDir=
-struts.multipart.maxSize=2097152
-
-### Load custom property files (does not override struts.properties!)
-# struts.custom.properties=application,com/webwork/extension/custom
-
-### How request URLs are mapped to and from actions
-struts.mapper.class=org.apache.struts2.dispatcher.mapper.DefaultActionMapper
-
-### Used by the DefaultActionMapper
-### You may provide a comma separated list, e.g. struts.action.extension=action,jnlp,do
-struts.action.extension=action
-
-### Used by FilterDispatcher
-### If true then SAF serves static content from inside its jar. 
-### If false then the static content must be available at <context_path>/struts
-struts.serve.static=true
-
-### Used by FilterDispatcher
-### This is good for development where one wants changes to the static content be
-### fetch on each request. 
-### NOTE: This will only have effect if struts.serve.static=true
-### If true -> SAF will write out header for static contents such that they will
-###             be cached by web browsers (using Date, Cache-Content, Pragma, Expires)
-###             headers).
-### If false -> SAF will write out header for static contents such that they are
-###            NOT to be cached by web browser (using Cache-Content, Pragma, Expires
-###            headers)
-struts.serve.static.browserCache=true
-
-### use alternative syntax that requires %{} in most places
-### to evaluate expressions for String attributes for tags
-struts.tag.altSyntax=true
-
-### when set to true, Struts 2.0 will act much more friendly for developers. This
-### includes:
-### - struts.i18n.reload = true
-### - struts.configuration.xml.reload = true
-### - raising various debug or ignorable problems to errors
-###   For example: normally a request to foo.action?someUnknownField=true should
-###                be ignored (given that any value can come from the web and it
-###                should not be trusted). However, during development, it may be
-###                useful to know when these errors are happening and be told of
-###                them right away.
-struts.devMode = false
-
-### when set to true, resource bundles will be reloaded on _every_ request.
-### this is good during development, but should never be used in production
-struts.i18n.reload=false
-
-### Standard UI theme
-### Change this to reflect which path should be used for JSP control tag templates by default
-struts.ui.theme=xhtml
-struts.ui.templateDir=template
-#sets the default template type. Either ftl, vm, or jsp
-struts.ui.templateSuffix=ftl
-
-### Configuration reloading
-### This will cause the configuration to reload struts.xml when it is changed
-struts.configuration.xml.reload=false
-
-### Location of velocity.properties file.  defaults to velocity.properties
-# struts.velocity.configfile = velocity.properties
-
-### Comma separated list of VelocityContext classnames to chain to the StrutsVelocityContext
-# struts.velocity.contexts =
-
-### used to build URLs, such as the UrlTag
-struts.url.http.port = 80
-struts.url.https.port = 443
-
-### Load custom default resource bundles
-# struts.custom.i18n.resources=testmessages,testmessages2
-struts.custom.i18n.resources=globalmessages
-
-### workaround for some app servers that don't handle HttpServletRequest.getParameterMap()
-### often used for WebLogic, Orion, and OC4J
-struts.dispatcher.parametersWorkaround = false
-
-### configure the Freemarker Manager class to be used
-### Allows user to plug-in customised Freemarker Manager if necessary
-### MUST extends off org.apache.struts2.views.freemarker.FreemarkerManager
-#struts.freemarker.manager.classname=org.apache.struts2.views.freemarker.FreemarkerManager
-
-### See the StrutsBeanWrapper javadocs for more information
-struts.freemarker.wrapper.altMap=true
-
-### configure the XSLTResult class to use stylesheet caching.
-### Set to true for developers and false for production.
-struts.xslt.nocache=false
-
-### END SNIPPET: complete_file
diff --git a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/struts.xml b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/struts.xml
index 8eef17a..3f6cc4f 100644
--- a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/struts.xml
+++ b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/struts.xml
@@ -5,6 +5,7 @@
 
 <struts>
 
+    <constant name="struts.devMode" value="true"/>
     <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
 
     <package name="myPackage" extends="struts-default">
@@ -16,7 +17,7 @@
         </action>
 
         <action name="helloWorld" class="helloWorldAction">
-            <result name="input">/jsp/index.jsp</result>
+            <result name="input">/WEB-INF/jsp/index.jsp</result>
             <result>/WEB-INF/jsp/helloWorld.jsp</result>
         </action>
 
diff --git a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/xwork-conversion.properties b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/xwork-conversion.properties
deleted file mode 100644
index e4f632b..0000000
--- a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/resources/xwork-conversion.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-# SAF2 global conversion goes here
-# eg.
-# java.util.Date=com.myComp.myApp.DateConverter
-
diff --git a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/decorators/main.jsp b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/decorators/main.jsp
index 77aaaae..9b35935 100644
--- a/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/decorators/main.jsp
+++ b/struts2-archetype-starter/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/decorators/main.jsp
@@ -11,19 +11,6 @@
 <head>
 	<title><decorator:title default="Struts Starter"/></title>
     <link href="<s:url value='/styles/main.css'/>" rel="stylesheet" type="text/css" media="all"/>
-    <link href="<s:url value='/struts/niftycorners/niftyCorners.css'/>" rel="stylesheet" type="text/css"/>
-    <link href="<s:url value='/struts/niftycorners/niftyPrint.css'/>" rel="stylesheet" type="text/css" media="print"/>
-    <script language="JavaScript" type="text/javascript" src="<s:url value='/struts/niftycorners/nifty.js'/>"></script>
-	<script language="JavaScript" type="text/javascript">
-        window.onload = function(){
-            if(!NiftyCheck()) {
-                return;
-            }
-            // perform niftycorners rounding
-            // eg.
-            // Rounded("blockquote","tr bl","#ECF1F9","#CDFFAA","smooth border #88D84F");
-        }
-    </script>
     <decorator:head/>
 </head>
 <body id="page-home">