From 70da30113de92ad3304006ffda13f04ead9f1e57 Mon Sep 17 00:00:00 2001 From: Ted Nathan Husted Date: Tue, 5 Sep 2006 16:37:18 +0000 Subject: [PATCH] WW-1340 Add "tutorial" module to blank, corresponding with "Bootstrap" tutorial in documentation. git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@440388 13f79535-47bb-0310-9956-ffa450edef68 --- apps/blank/pom.xml | 28 ++++----- apps/blank/src/main/java/example/Welcome.java | 57 ------------------- .../src/main/java/tutorial/HelloWorld.java | 37 ++++++++++++ .../main/java/tutorial/Login-validation.xml | 16 ++++++ apps/blank/src/main/java/tutorial/Login.java | 38 +++++++++++++ .../main/java/tutorial/TutorialSupport.java | 9 +++ .../src/main/java/tutorial/package.properties | 7 +++ apps/blank/src/main/resources/struts.xml | 13 ++--- apps/blank/src/main/resources/tutorial.xml | 24 ++++++++ .../blank/src/main/webapp/example/Welcome.jsp | 10 ---- apps/blank/src/main/webapp/index.jsp | 12 +++- .../src/main/webapp/tutorial/HelloWorld.jsp | 11 ++++ apps/blank/src/main/webapp/tutorial/Login.jsp | 15 +++++ apps/blank/src/main/webapp/tutorial/Menu.jsp | 3 + .../src/main/webapp/tutorial/Missing.jsp | 11 ++++ .../src/main/webapp/tutorial/Welcome.jsp | 35 ++++++++++++ .../src/test/java/example/WelcomeTest.java | 36 ------------ .../src/test/java/tutorial/ConfigTest.java | 50 ++++++++++++++++ .../test/java/tutorial/HelloWorldTest.java | 16 ++++++ .../src/test/java/tutorial/LoginTest.java | 22 +++++++ 20 files changed, 324 insertions(+), 126 deletions(-) delete mode 100644 apps/blank/src/main/java/example/Welcome.java create mode 100644 apps/blank/src/main/java/tutorial/HelloWorld.java create mode 100644 apps/blank/src/main/java/tutorial/Login-validation.xml create mode 100644 apps/blank/src/main/java/tutorial/Login.java create mode 100644 apps/blank/src/main/java/tutorial/TutorialSupport.java create mode 100644 apps/blank/src/main/java/tutorial/package.properties create mode 100644 apps/blank/src/main/resources/tutorial.xml delete mode 100644 apps/blank/src/main/webapp/example/Welcome.jsp create mode 100644 apps/blank/src/main/webapp/tutorial/HelloWorld.jsp create mode 100644 apps/blank/src/main/webapp/tutorial/Login.jsp create mode 100644 apps/blank/src/main/webapp/tutorial/Menu.jsp create mode 100644 apps/blank/src/main/webapp/tutorial/Missing.jsp create mode 100644 apps/blank/src/main/webapp/tutorial/Welcome.jsp delete mode 100644 apps/blank/src/test/java/example/WelcomeTest.java create mode 100644 apps/blank/src/test/java/tutorial/ConfigTest.java create mode 100644 apps/blank/src/test/java/tutorial/HelloWorldTest.java create mode 100644 apps/blank/src/test/java/tutorial/LoginTest.java diff --git a/apps/blank/pom.xml b/apps/blank/pom.xml index bac3383d4..9d5d42431 100644 --- a/apps/blank/pom.xml +++ b/apps/blank/pom.xml @@ -3,25 +3,25 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 - org.apache.struts - struts2-apps - 2.0.0-SNAPSHOT + org.apache.struts + struts2-apps + 2.0.0-SNAPSHOT org.apache.struts struts2-blank war Blank Webapp - - - javax.servlet - servlet-api - 2.4 - provided - - + + + javax.servlet + servlet-api + 2.4 + provided + + - + @@ -41,6 +41,6 @@ - - + + diff --git a/apps/blank/src/main/java/example/Welcome.java b/apps/blank/src/main/java/example/Welcome.java deleted file mode 100644 index 8d1b95f37..000000000 --- a/apps/blank/src/main/java/example/Welcome.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * $Id$ - * - * Copyright 2006 The Apache Software Foundation. - * - * Licensed 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. - */ -package example; - -import com.opensymphony.xwork2.ActionSupport; - -/** - * Set welcome message. - * - */ -public class Welcome extends ActionSupport { - - private static final long serialVersionUID = -3881551454078687096L; - - public static final String MESSAGE = "Struts is up and running ..."; - - public String execute() throws Exception { - setMessage(MESSAGE); - return SUCCESS; - } - - /** - * Field for Message property. - */ - private String message; - - /** - * Return Message property. - * @return Message property - */ - public String getMessage() { - return message; - } - - /** - * Set Message property. - * @param message Text to display on Welcome page. - */ - public void setMessage(String message){ - this.message = message; - } -} diff --git a/apps/blank/src/main/java/tutorial/HelloWorld.java b/apps/blank/src/main/java/tutorial/HelloWorld.java new file mode 100644 index 000000000..da9589955 --- /dev/null +++ b/apps/blank/src/main/java/tutorial/HelloWorld.java @@ -0,0 +1,37 @@ +package tutorial; + +/** + * Set welcome message. + */ +public class HelloWorld extends TutorialSupport { + + public static final String MESSAGE = "HelloWorld.message"; + + public String execute() throws Exception { + setMessage(getText(MESSAGE)); + return SUCCESS; + } + + /** + * Field for Message property. + */ + private String message; + + /** + * Return Message property. + * + * @return Message property + */ + public String getMessage() { + return message; + } + + /** + * Set Message property. + * + * @param message Text to display on HelloWorld page. + */ + public void setMessage(String message) { + this.message = message; + } +} diff --git a/apps/blank/src/main/java/tutorial/Login-validation.xml b/apps/blank/src/main/java/tutorial/Login-validation.xml new file mode 100644 index 000000000..4d10a340b --- /dev/null +++ b/apps/blank/src/main/java/tutorial/Login-validation.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/apps/blank/src/main/java/tutorial/Login.java b/apps/blank/src/main/java/tutorial/Login.java new file mode 100644 index 000000000..d20606574 --- /dev/null +++ b/apps/blank/src/main/java/tutorial/Login.java @@ -0,0 +1,38 @@ +package tutorial; + +public class Login extends TutorialSupport { + + public String execute() throws Exception { + + if (isInvalid(getUsername())) return INPUT; + + if (isInvalid(getPassword())) return INPUT; + + return SUCCESS; + } + + private boolean isInvalid(String value) { + return (value == null || value.length() == 0); + } + + private String username; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + private String password; + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + +} \ No newline at end of file diff --git a/apps/blank/src/main/java/tutorial/TutorialSupport.java b/apps/blank/src/main/java/tutorial/TutorialSupport.java new file mode 100644 index 000000000..ce8a58a9b --- /dev/null +++ b/apps/blank/src/main/java/tutorial/TutorialSupport.java @@ -0,0 +1,9 @@ +package tutorial; + +import com.opensymphony.xwork2.ActionSupport; + +/** + * Base Action class for the Tutorial package. + */ +public class TutorialSupport extends ActionSupport { +} diff --git a/apps/blank/src/main/java/tutorial/package.properties b/apps/blank/src/main/java/tutorial/package.properties new file mode 100644 index 000000000..c1203f54c --- /dev/null +++ b/apps/blank/src/main/java/tutorial/package.properties @@ -0,0 +1,7 @@ +password = Password +password.required = Password is required. +username = User Name +username.required = User Name is required. +HelloWorld.message= Struts is up and running ... +Missing.message = This feature is under construction. Please try again in the next interation. + diff --git a/apps/blank/src/main/resources/struts.xml b/apps/blank/src/main/resources/struts.xml index 78bad2ac1..ea5c9ddef 100644 --- a/apps/blank/src/main/resources/struts.xml +++ b/apps/blank/src/main/resources/struts.xml @@ -1,16 +1,13 @@ + "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" + "http://struts.apache.org/dtds/struts-2.0.dtd"> + - + - - /example/{1}.jsp - + - - diff --git a/apps/blank/src/main/resources/tutorial.xml b/apps/blank/src/main/resources/tutorial.xml new file mode 100644 index 000000000..9f61e09db --- /dev/null +++ b/apps/blank/src/main/resources/tutorial.xml @@ -0,0 +1,24 @@ + + + + + + + + /tutorial/HelloWorld.jsp + + + + /tutorial/Login.jsp + Menu + + + + /tutorial/{1}.jsp + + + + + diff --git a/apps/blank/src/main/webapp/example/Welcome.jsp b/apps/blank/src/main/webapp/example/Welcome.jsp deleted file mode 100644 index 788732a62..000000000 --- a/apps/blank/src/main/webapp/example/Welcome.jsp +++ /dev/null @@ -1,10 +0,0 @@ -<%@ taglib prefix="s" uri="/struts-tags" %> - - - - Welcome - - -

- - diff --git a/apps/blank/src/main/webapp/index.jsp b/apps/blank/src/main/webapp/index.jsp index ce45af4c0..9db3dc9e0 100644 --- a/apps/blank/src/main/webapp/index.jsp +++ b/apps/blank/src/main/webapp/index.jsp @@ -1 +1,11 @@ -<% response.sendRedirect(request.getContextPath() + "/Welcome.action"); %> +<%@ taglib prefix="s" uri="/struts-tags" %> + + + + "> + + + +

Loading ...

+ + diff --git a/apps/blank/src/main/webapp/tutorial/HelloWorld.jsp b/apps/blank/src/main/webapp/tutorial/HelloWorld.jsp new file mode 100644 index 000000000..f2734987c --- /dev/null +++ b/apps/blank/src/main/webapp/tutorial/HelloWorld.jsp @@ -0,0 +1,11 @@ +<%@ page contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="s" uri="/struts-tags" %> + + + Hello World! + + + +

+ + diff --git a/apps/blank/src/main/webapp/tutorial/Login.jsp b/apps/blank/src/main/webapp/tutorial/Login.jsp new file mode 100644 index 000000000..71d926bca --- /dev/null +++ b/apps/blank/src/main/webapp/tutorial/Login.jsp @@ -0,0 +1,15 @@ +<%@ page contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="s" uri="/struts-tags" %> + + + Logon + + + + + + + + + + diff --git a/apps/blank/src/main/webapp/tutorial/Menu.jsp b/apps/blank/src/main/webapp/tutorial/Menu.jsp new file mode 100644 index 000000000..a74bd2c76 --- /dev/null +++ b/apps/blank/src/main/webapp/tutorial/Menu.jsp @@ -0,0 +1,3 @@ +<%@ page contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="s" uri="/struts-tags" %> + \ No newline at end of file diff --git a/apps/blank/src/main/webapp/tutorial/Missing.jsp b/apps/blank/src/main/webapp/tutorial/Missing.jsp new file mode 100644 index 000000000..7c01ac9be --- /dev/null +++ b/apps/blank/src/main/webapp/tutorial/Missing.jsp @@ -0,0 +1,11 @@ +<%@ page contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="s" uri="/struts-tags" %> + +Missing Feature + + +

+ +

+ + diff --git a/apps/blank/src/main/webapp/tutorial/Welcome.jsp b/apps/blank/src/main/webapp/tutorial/Welcome.jsp new file mode 100644 index 000000000..6d84e6434 --- /dev/null +++ b/apps/blank/src/main/webapp/tutorial/Welcome.jsp @@ -0,0 +1,35 @@ +<%@ page contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="s" uri="/struts-tags" %> + + + Welcome + " rel="stylesheet" + type="text/css"/> + + + +

Commands

+ + +

Languages

+ + + + + diff --git a/apps/blank/src/test/java/example/WelcomeTest.java b/apps/blank/src/test/java/example/WelcomeTest.java deleted file mode 100644 index 63cbbdb34..000000000 --- a/apps/blank/src/test/java/example/WelcomeTest.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * $Id: WelcomeTest.java 418530 2006-07-01 23:58:13Z mrdon $ - * - * Copyright 2006 The Apache Software Foundation. - * - * Licensed 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. - */ -package example; - -import junit.framework.TestCase; -import com.opensymphony.xwork2.Action; -import com.opensymphony.xwork2.ActionSupport; - -/** - * WelcomeTest - * - */ -public class WelcomeTest extends TestCase { - - public void testWelcome() throws Exception { - Welcome welcome = new Welcome(); - String result = welcome.execute(); - assertEquals(ActionSupport.SUCCESS, result); - assertEquals(welcome.getMessage(), Welcome.MESSAGE); - } -} diff --git a/apps/blank/src/test/java/tutorial/ConfigTest.java b/apps/blank/src/test/java/tutorial/ConfigTest.java new file mode 100644 index 000000000..08cd32f5e --- /dev/null +++ b/apps/blank/src/test/java/tutorial/ConfigTest.java @@ -0,0 +1,50 @@ +package tutorial; + +import com.opensymphony.xwork2.ActionSupport; +import com.opensymphony.xwork2.XWorkTestCase; +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 java.util.Map; + +public class ConfigTest extends XWorkTestCase { + + protected void AssertSuccess(String result) throws Exception { + assertTrue("Expected a success result!", + ActionSupport.SUCCESS.equals(result)); + } + + protected void setUp() throws Exception { + super.setUp(); + XmlConfigurationProvider c = new XmlConfigurationProvider("struts.xml"); + configurationManager.addConfigurationProvider(c); + configurationManager.reload(); + } + + protected ActionConfig assertClass(String action_name, String class_name) { + RuntimeConfiguration configuration = configurationManager.getConfiguration().getRuntimeConfiguration(); + ActionConfig config = configuration.getActionConfig("", action_name); + assertNotNull("Mssing action", config); + assertTrue("Wrong class name: [" + config.getClassName() + "]", + class_name.equals(config.getClassName())); + return config; + } + + 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"); + if (value == null) + value = (String) params.get("location"); + assertTrue("Wrong result value: [" + value + "]", + result_value.equals(value)); + } + + public void testConfig() throws Exception { + assertNotNull(configurationManager); + } + +} diff --git a/apps/blank/src/test/java/tutorial/HelloWorldTest.java b/apps/blank/src/test/java/tutorial/HelloWorldTest.java new file mode 100644 index 000000000..0127e2fb2 --- /dev/null +++ b/apps/blank/src/test/java/tutorial/HelloWorldTest.java @@ -0,0 +1,16 @@ +package tutorial; + +import com.opensymphony.xwork2.ActionSupport; +import junit.framework.TestCase; + +public class HelloWorldTest extends TestCase { + + public void testHelloWorld() throws Exception { + HelloWorld hello_world = new HelloWorld(); + 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())); + } +} diff --git a/apps/blank/src/test/java/tutorial/LoginTest.java b/apps/blank/src/test/java/tutorial/LoginTest.java new file mode 100644 index 000000000..cd22c8c54 --- /dev/null +++ b/apps/blank/src/test/java/tutorial/LoginTest.java @@ -0,0 +1,22 @@ +package tutorial; + +import com.opensymphony.xwork2.ActionSupport; +import com.opensymphony.xwork2.config.entities.ActionConfig; + +public class LoginTest extends ConfigTest { + + public void FIXME_testLoginConfig() throws Exception { + ActionConfig config = assertClass("Login", "tutorial.Login"); + assertResult(config, ActionSupport.SUCCESS, "Menu"); + assertResult(config, ActionSupport.INPUT, "/tutorial/Login.jsp"); + } + + public void testLoginSubmit() throws Exception { + Login login = new Login(); + login.setUsername("username"); + login.setPassword("password"); + String result = login.execute(); + AssertSuccess(result); + } + +}