http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/resources/log4j.dtd ---------------------------------------------------------------------- diff --git a/unit_testing/src/main/resources/log4j.dtd b/unit_testing/src/main/resources/log4j.dtd deleted file mode 100644 index 1aabd96..0000000 --- a/unit_testing/src/main/resources/log4j.dtd +++ /dev/null @@ -1,227 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<!-- Authors: Chris Taylor, Ceki Gulcu. --> - -<!-- Version: 1.2 --> - -<!-- A configuration element consists of optional renderer -elements,appender elements, categories and an optional root -element. --> - -<!ELEMENT log4j:configuration (renderer*, appender*,plugin*, (category|logger)*,root?, - (categoryFactory|loggerFactory)?)> - -<!-- The "threshold" attribute takes a level value below which --> -<!-- all logging statements are disabled. --> - -<!-- Setting the "debug" enable the printing of internal log4j logging --> -<!-- statements. --> - -<!-- By default, debug attribute is "null", meaning that we not do touch --> -<!-- internal log4j logging settings. The "null" value for the threshold --> -<!-- attribute can be misleading. The threshold field of a repository --> -<!-- cannot be set to null. The "null" value for the threshold attribute --> -<!-- simply means don't touch the threshold field, the threshold field --> -<!-- keeps its old value. --> - -<!ATTLIST log4j:configuration - xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/" - threshold (all|trace|debug|info|warn|error|fatal|off|null) "null" - debug (true|false|null) "null" - reset (true|false) "false" -> - -<!-- renderer elements allow the user to customize the conversion of --> -<!-- message objects to String. --> - -<!ELEMENT renderer EMPTY> -<!ATTLIST renderer - renderedClass CDATA #REQUIRED - renderingClass CDATA #REQUIRED -> - -<!-- Appenders must have a name and a class. --> -<!-- Appenders may contain an error handler, a layout, optional parameters --> -<!-- and filters. They may also reference (or include) other appenders. --> -<!ELEMENT appender (errorHandler?, param*, - rollingPolicy?, triggeringPolicy?, connectionSource?, - layout?, filter*, appender-ref*)> -<!ATTLIST appender - name CDATA #REQUIRED - class CDATA #REQUIRED -> - -<!ELEMENT layout (param*)> -<!ATTLIST layout - class CDATA #REQUIRED -> - -<!ELEMENT filter (param*)> -<!ATTLIST filter - class CDATA #REQUIRED -> - -<!-- ErrorHandlers can be of any class. They can admit any number of --> -<!-- parameters. --> - -<!ELEMENT errorHandler (param*, root-ref?, logger-ref*, appender-ref?)> -<!ATTLIST errorHandler - class CDATA #REQUIRED -> - -<!ELEMENT root-ref EMPTY> - -<!ELEMENT logger-ref EMPTY> -<!ATTLIST logger-ref - ref CDATA #REQUIRED -> - -<!ELEMENT param EMPTY> -<!ATTLIST param - name CDATA #REQUIRED - value CDATA #REQUIRED -> - - -<!-- The priority class is org.apache.log4j.Level by default --> -<!ELEMENT priority (param*)> -<!ATTLIST priority - class CDATA #IMPLIED - value CDATA #REQUIRED -> - -<!-- The level class is org.apache.log4j.Level by default --> -<!ELEMENT level (param*)> -<!ATTLIST level - class CDATA #IMPLIED - value CDATA #REQUIRED -> - - -<!-- If no level element is specified, then the configurator MUST not --> -<!-- touch the level of the named category. --> -<!ELEMENT category (param*,(priority|level)?,appender-ref*)> -<!ATTLIST category - class CDATA #IMPLIED - name CDATA #REQUIRED - additivity (true|false) "true" -> - -<!-- If no level element is specified, then the configurator MUST not --> -<!-- touch the level of the named logger. --> -<!ELEMENT logger (level?,appender-ref*)> -<!ATTLIST logger - name CDATA #REQUIRED - additivity (true|false) "true" -> - - -<!ELEMENT categoryFactory (param*)> -<!ATTLIST categoryFactory - class CDATA #REQUIRED> - -<!ELEMENT loggerFactory (param*)> -<!ATTLIST loggerFactory - class CDATA #REQUIRED> - -<!ELEMENT appender-ref EMPTY> -<!ATTLIST appender-ref - ref CDATA #REQUIRED -> - -<!-- plugins must have a name and class and can have optional parameters --> -<!ELEMENT plugin (param*, connectionSource?)> -<!ATTLIST plugin - name CDATA #REQUIRED - class CDATA #REQUIRED -> - -<!ELEMENT connectionSource (dataSource?, param*)> -<!ATTLIST connectionSource - class CDATA #REQUIRED -> - -<!ELEMENT dataSource (param*)> -<!ATTLIST dataSource - class CDATA #REQUIRED -> - -<!ELEMENT triggeringPolicy ((param|filter)*)> -<!ATTLIST triggeringPolicy - name CDATA #IMPLIED - class CDATA #REQUIRED -> - -<!ELEMENT rollingPolicy (param*)> -<!ATTLIST rollingPolicy - name CDATA #IMPLIED - class CDATA #REQUIRED -> - - -<!-- If no priority element is specified, then the configurator MUST not --> -<!-- touch the priority of root. --> -<!-- The root category always exists and cannot be subclassed. --> -<!ELEMENT root (param*, (priority|level)?, appender-ref*)> - - -<!-- ==================================================================== --> -<!-- A logging event --> -<!-- ==================================================================== --> -<!ELEMENT log4j:eventSet (log4j:event*)> -<!ATTLIST log4j:eventSet - xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/" - version (1.1|1.2) "1.2" - includesLocationInfo (true|false) "true" -> - - - -<!ELEMENT log4j:event (log4j:message, log4j:NDC?, log4j:throwable?, - log4j:locationInfo?, log4j:properties?) > - -<!-- The timestamp format is application dependent. --> -<!ATTLIST log4j:event - logger CDATA #REQUIRED - level CDATA #REQUIRED - thread CDATA #REQUIRED - timestamp CDATA #REQUIRED - time CDATA #IMPLIED -> - -<!ELEMENT log4j:message (#PCDATA)> -<!ELEMENT log4j:NDC (#PCDATA)> - -<!ELEMENT log4j:throwable (#PCDATA)> - -<!ELEMENT log4j:locationInfo EMPTY> -<!ATTLIST log4j:locationInfo - class CDATA #REQUIRED - method CDATA #REQUIRED - file CDATA #REQUIRED - line CDATA #REQUIRED -> - -<!ELEMENT log4j:properties (log4j:data*)> - -<!ELEMENT log4j:data EMPTY> -<!ATTLIST log4j:data - name CDATA #REQUIRED - value CDATA #REQUIRED ->
http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/resources/log4j.xml ---------------------------------------------------------------------- diff --git a/unit_testing/src/main/resources/log4j.xml b/unit_testing/src/main/resources/log4j.xml deleted file mode 100644 index 2100cb2..0000000 --- a/unit_testing/src/main/resources/log4j.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd"> - -<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> - - <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> - <layout class="org.apache.log4j.PatternLayout"> - <param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/> - </layout> - </appender> - - <!-- specify the logging level for loggers from other libraries --> - <logger name="com.opensymphony"> - <level value="DEBUG" /> - </logger> - - <logger name="org.apache.struts2"> - <level value="DEBUG" /> - </logger> - - <!-- for all other loggers log only debug and above log messages --> - <root> - <priority value="INFO"/> - <appender-ref ref="STDOUT" /> - </root> - -</log4j:configuration> - http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/resources/struts.xml ---------------------------------------------------------------------- diff --git a/unit_testing/src/main/resources/struts.xml b/unit_testing/src/main/resources/struts.xml deleted file mode 100644 index 21cc563..0000000 --- a/unit_testing/src/main/resources/struts.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE struts PUBLIC - "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" - "http://struts.apache.org/dtds/struts-2.0.dtd"> - -<struts> - - <constant name="struts.devMode" value="true" /> - - <package name="basicstruts2" extends="struts-default"> - - <!-- If no class attribute is specified the framework will assume success and - render the result index.jsp --> - <!-- If no name value for the result node is specified the success value is the default --> - <action name="index"> - <result>/index.jsp</result> - </action> - - - <action name="register" class="org.apache.struts.register.action.Register" method="execute"> - <result name="success">/thankyou.jsp</result> - <result name="input">/register.jsp</result> - </action> - - </package> - -</struts> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/webapp/META-INF/MANIFEST.MF ---------------------------------------------------------------------- diff --git a/unit_testing/src/main/webapp/META-INF/MANIFEST.MF b/unit_testing/src/main/webapp/META-INF/MANIFEST.MF deleted file mode 100644 index 5e94951..0000000 --- a/unit_testing/src/main/webapp/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/unit_testing/src/main/webapp/WEB-INF/web.xml b/unit_testing/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 794e993..0000000 --- a/unit_testing/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> -<display-name>Struts 2 Unit Testing</display-name> - <welcome-file-list> - <welcome-file>index.jsp</welcome-file> - </welcome-file-list> - - - <filter> - <filter-name>struts2</filter-name> - <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> - </filter> - - <filter-mapping> - <filter-name>struts2</filter-name> - <url-pattern>/*</url-pattern> - </filter-mapping> - -</web-app> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/webapp/index.jsp ---------------------------------------------------------------------- diff --git a/unit_testing/src/main/webapp/index.jsp b/unit_testing/src/main/webapp/index.jsp deleted file mode 100644 index 48d3fc5..0000000 --- a/unit_testing/src/main/webapp/index.jsp +++ /dev/null @@ -1,17 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<%@ taglib prefix="s" uri="/struts-tags" %> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> -<title>Basic Struts 2 Application - Welcome</title> -</head> -<body> -<h1>Welcome To Struts 2!</h1> - - - -<p><a href="register.jsp">Please register</a> for our prize drawing.</p> -</body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/webapp/register.jsp ---------------------------------------------------------------------- diff --git a/unit_testing/src/main/webapp/register.jsp b/unit_testing/src/main/webapp/register.jsp deleted file mode 100644 index a4acb15..0000000 --- a/unit_testing/src/main/webapp/register.jsp +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1" ?> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> -<title>Register</title> -<s:head /> -</head> -<body> -<h3>Register for a prize by completing this form.</h3> - -<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> - -</body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/main/webapp/thankyou.jsp ---------------------------------------------------------------------- diff --git a/unit_testing/src/main/webapp/thankyou.jsp b/unit_testing/src/main/webapp/thankyou.jsp deleted file mode 100644 index 3c845bc..0000000 --- a/unit_testing/src/main/webapp/thankyou.jsp +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1" ?> -<%@ taglib prefix="s" uri="/struts-tags" %> -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> -<title>Registration Successful</title> -</head> -<body> -<h3>Thank you for registering for a prize.</h3> - -<p>Your registration information: <s:property value="personBean" /> </p> - -<p><a href="<s:url action='index' />" >Return to home page</a>.</p> - -</body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/unit_testing/src/test/java/org/apache/struts/register/action/RegisterTest.java ---------------------------------------------------------------------- diff --git a/unit_testing/src/test/java/org/apache/struts/register/action/RegisterTest.java b/unit_testing/src/test/java/org/apache/struts/register/action/RegisterTest.java deleted file mode 100644 index d4e98a5..0000000 --- a/unit_testing/src/test/java/org/apache/struts/register/action/RegisterTest.java +++ /dev/null @@ -1,82 +0,0 @@ -package org.apache.struts.register.action; - - - -import org.apache.struts2.StrutsTestCase; -import org.junit.Test; - -import com.opensymphony.xwork2.ActionProxy; -import com.opensymphony.xwork2.ActionSupport; - -public class RegisterTest extends StrutsTestCase { - - @Test - public void testExecuteValidationPasses() throws Exception { - - request.setParameter("personBean.firstName", "Bruce"); - - request.setParameter("personBean.lastName", "Phillips"); - - request.setParameter("personBean.email", "[email protected]"); - - request.setParameter("personBean.age", "19"); - - ActionProxy actionProxy = getActionProxy("/register.action") ; - - Register action = (Register) actionProxy.getAction(); - - assertNotNull("The action is null but should not be.", action); - - String result = actionProxy.execute(); - - assertEquals("The execute method did not return " + ActionSupport.SUCCESS + " but should have.", ActionSupport.SUCCESS, result); - - } - - @Test - public void testExecuteValidationFailsMissingFirstName() throws Exception { - - request.setParameter("personBean.firstName", "Bruce"); - - request.setParameter("personBean.lastName", "Phillips"); - - request.setParameter("personBean.email", "[email protected]"); - - request.setParameter("personBean.age", "17"); - - ActionProxy actionProxy = getActionProxy("/register.action") ; - - Register action = (Register) actionProxy.getAction(); - - assertNotNull("The action is null but should not be.", action); - - String result = actionProxy.execute(); - - assertEquals("The execute method did not return " + ActionSupport.INPUT + " but should have.", ActionSupport.INPUT, result); - - } - - - @Test - public void testExecuteValidationFailsAgeToYoung() throws Exception { - - - request.setParameter("personBean.lastName", "Phillips"); - - request.setParameter("personBean.email", "[email protected]"); - - request.setParameter("personBean.age", "19"); - - ActionProxy actionProxy = getActionProxy("/register.action") ; - - Register action = (Register) actionProxy.getAction(); - - assertNotNull("The action is null but should not be.", action); - - String result = actionProxy.execute(); - - assertEquals("The execute method did not return " + ActionSupport.INPUT + " but should have.", ActionSupport.INPUT, result); - - } - -} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/README.txt ---------------------------------------------------------------------- diff --git a/using-tags/README.txt b/using-tags/README.txt new file mode 100644 index 0000000..2ebb6ed --- /dev/null +++ b/using-tags/README.txt @@ -0,0 +1,16 @@ +This is the example project referred to in the +Struts 2 documentation, Using Tags tutorial. +See: http://struts.apache.org. + +To build the application's war file run mvn clean package +from the project's root folder. + +The war file is created in the target sub-folder. + +Copy the war file to your Servlet container (e.g. Tomcat, GlassFish) and +then startup the Servlet container. + +In a web browser go to: http://localhost:8080/using-tags/index.action. + +You should see a web page with Welcome to Struts 2! + http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/pom.xml ---------------------------------------------------------------------- diff --git a/using-tags/pom.xml b/using-tags/pom.xml new file mode 100644 index 0000000..4da6604 --- /dev/null +++ b/using-tags/pom.xml @@ -0,0 +1,23 @@ +<?xml version="1.0"?> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>struts.apache.org</groupId> + <artifactId>struts2examples</artifactId> + <version>1.0.0</version> + </parent> + + <artifactId>using-tags</artifactId> + <name>Using Struts 2 Tags</name> + + <description>Struts 2 example application for the Using Struts 2 Tags getting started tutorial</description> + + <packaging>war</packaging> + + <build> + <finalName>using_tags</finalName> + </build> + +</project> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java ---------------------------------------------------------------------- diff --git a/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java b/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java new file mode 100644 index 0000000..2a777be --- /dev/null +++ b/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java @@ -0,0 +1,62 @@ +package org.apache.struts.using_tags.helloworld.action; + + +import com.opensymphony.xwork2.ActionSupport; +import org.apache.struts.using_tags.helloworld.model.MessageStore; + +/** + * Acts as a Struts 2 controller that responds + * to a user action by setting the value + * of the Message model class, and returns a String + * result. + * @author Bruce Phillips + * + */ +public class HelloWorldAction extends ActionSupport { + + private static final long serialVersionUID = 1L; + + /** + * The model class that stores the message + * to display in the view. + */ + private MessageStore messageStore; + + private static int helloCount = 0; + + public int getHelloCount() { + return helloCount; + } + + public void setHelloCount(int helloCount) { + HelloWorldAction.helloCount = helloCount; + } + + /* + * Creates the MessageStore model object, + * increase helloCount by 1 and + * returns success. The MessageStore model + * object will be available to the view. + * (non-Javadoc) + * @see com.opensymphony.xwork2.ActionSupport#execute() + */ + public String execute() throws Exception { + + messageStore = new MessageStore() ; + + helloCount++; + + return SUCCESS; + } + + public MessageStore getMessageStore() { + return messageStore; + } + + public void setMessageStore(MessageStore messageStore) { + this.messageStore = messageStore; + } + + + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java ---------------------------------------------------------------------- diff --git a/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java b/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java new file mode 100644 index 0000000..8870513 --- /dev/null +++ b/using-tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java @@ -0,0 +1,31 @@ +package org.apache.struts.using_tags.helloworld.model; + +/** + * Model class that stores a message. + * @author Bruce Phillips + * + */ +public class MessageStore { + + private String message; + + public MessageStore() { + + setMessage("Hello Struts User"); + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String toString() { + + return message + " (from toString)"; + + } + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/resources/log4j.dtd ---------------------------------------------------------------------- diff --git a/using-tags/src/main/resources/log4j.dtd b/using-tags/src/main/resources/log4j.dtd new file mode 100644 index 0000000..1aabd96 --- /dev/null +++ b/using-tags/src/main/resources/log4j.dtd @@ -0,0 +1,227 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<!-- Authors: Chris Taylor, Ceki Gulcu. --> + +<!-- Version: 1.2 --> + +<!-- A configuration element consists of optional renderer +elements,appender elements, categories and an optional root +element. --> + +<!ELEMENT log4j:configuration (renderer*, appender*,plugin*, (category|logger)*,root?, + (categoryFactory|loggerFactory)?)> + +<!-- The "threshold" attribute takes a level value below which --> +<!-- all logging statements are disabled. --> + +<!-- Setting the "debug" enable the printing of internal log4j logging --> +<!-- statements. --> + +<!-- By default, debug attribute is "null", meaning that we not do touch --> +<!-- internal log4j logging settings. The "null" value for the threshold --> +<!-- attribute can be misleading. The threshold field of a repository --> +<!-- cannot be set to null. The "null" value for the threshold attribute --> +<!-- simply means don't touch the threshold field, the threshold field --> +<!-- keeps its old value. --> + +<!ATTLIST log4j:configuration + xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/" + threshold (all|trace|debug|info|warn|error|fatal|off|null) "null" + debug (true|false|null) "null" + reset (true|false) "false" +> + +<!-- renderer elements allow the user to customize the conversion of --> +<!-- message objects to String. --> + +<!ELEMENT renderer EMPTY> +<!ATTLIST renderer + renderedClass CDATA #REQUIRED + renderingClass CDATA #REQUIRED +> + +<!-- Appenders must have a name and a class. --> +<!-- Appenders may contain an error handler, a layout, optional parameters --> +<!-- and filters. They may also reference (or include) other appenders. --> +<!ELEMENT appender (errorHandler?, param*, + rollingPolicy?, triggeringPolicy?, connectionSource?, + layout?, filter*, appender-ref*)> +<!ATTLIST appender + name CDATA #REQUIRED + class CDATA #REQUIRED +> + +<!ELEMENT layout (param*)> +<!ATTLIST layout + class CDATA #REQUIRED +> + +<!ELEMENT filter (param*)> +<!ATTLIST filter + class CDATA #REQUIRED +> + +<!-- ErrorHandlers can be of any class. They can admit any number of --> +<!-- parameters. --> + +<!ELEMENT errorHandler (param*, root-ref?, logger-ref*, appender-ref?)> +<!ATTLIST errorHandler + class CDATA #REQUIRED +> + +<!ELEMENT root-ref EMPTY> + +<!ELEMENT logger-ref EMPTY> +<!ATTLIST logger-ref + ref CDATA #REQUIRED +> + +<!ELEMENT param EMPTY> +<!ATTLIST param + name CDATA #REQUIRED + value CDATA #REQUIRED +> + + +<!-- The priority class is org.apache.log4j.Level by default --> +<!ELEMENT priority (param*)> +<!ATTLIST priority + class CDATA #IMPLIED + value CDATA #REQUIRED +> + +<!-- The level class is org.apache.log4j.Level by default --> +<!ELEMENT level (param*)> +<!ATTLIST level + class CDATA #IMPLIED + value CDATA #REQUIRED +> + + +<!-- If no level element is specified, then the configurator MUST not --> +<!-- touch the level of the named category. --> +<!ELEMENT category (param*,(priority|level)?,appender-ref*)> +<!ATTLIST category + class CDATA #IMPLIED + name CDATA #REQUIRED + additivity (true|false) "true" +> + +<!-- If no level element is specified, then the configurator MUST not --> +<!-- touch the level of the named logger. --> +<!ELEMENT logger (level?,appender-ref*)> +<!ATTLIST logger + name CDATA #REQUIRED + additivity (true|false) "true" +> + + +<!ELEMENT categoryFactory (param*)> +<!ATTLIST categoryFactory + class CDATA #REQUIRED> + +<!ELEMENT loggerFactory (param*)> +<!ATTLIST loggerFactory + class CDATA #REQUIRED> + +<!ELEMENT appender-ref EMPTY> +<!ATTLIST appender-ref + ref CDATA #REQUIRED +> + +<!-- plugins must have a name and class and can have optional parameters --> +<!ELEMENT plugin (param*, connectionSource?)> +<!ATTLIST plugin + name CDATA #REQUIRED + class CDATA #REQUIRED +> + +<!ELEMENT connectionSource (dataSource?, param*)> +<!ATTLIST connectionSource + class CDATA #REQUIRED +> + +<!ELEMENT dataSource (param*)> +<!ATTLIST dataSource + class CDATA #REQUIRED +> + +<!ELEMENT triggeringPolicy ((param|filter)*)> +<!ATTLIST triggeringPolicy + name CDATA #IMPLIED + class CDATA #REQUIRED +> + +<!ELEMENT rollingPolicy (param*)> +<!ATTLIST rollingPolicy + name CDATA #IMPLIED + class CDATA #REQUIRED +> + + +<!-- If no priority element is specified, then the configurator MUST not --> +<!-- touch the priority of root. --> +<!-- The root category always exists and cannot be subclassed. --> +<!ELEMENT root (param*, (priority|level)?, appender-ref*)> + + +<!-- ==================================================================== --> +<!-- A logging event --> +<!-- ==================================================================== --> +<!ELEMENT log4j:eventSet (log4j:event*)> +<!ATTLIST log4j:eventSet + xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/" + version (1.1|1.2) "1.2" + includesLocationInfo (true|false) "true" +> + + + +<!ELEMENT log4j:event (log4j:message, log4j:NDC?, log4j:throwable?, + log4j:locationInfo?, log4j:properties?) > + +<!-- The timestamp format is application dependent. --> +<!ATTLIST log4j:event + logger CDATA #REQUIRED + level CDATA #REQUIRED + thread CDATA #REQUIRED + timestamp CDATA #REQUIRED + time CDATA #IMPLIED +> + +<!ELEMENT log4j:message (#PCDATA)> +<!ELEMENT log4j:NDC (#PCDATA)> + +<!ELEMENT log4j:throwable (#PCDATA)> + +<!ELEMENT log4j:locationInfo EMPTY> +<!ATTLIST log4j:locationInfo + class CDATA #REQUIRED + method CDATA #REQUIRED + file CDATA #REQUIRED + line CDATA #REQUIRED +> + +<!ELEMENT log4j:properties (log4j:data*)> + +<!ELEMENT log4j:data EMPTY> +<!ATTLIST log4j:data + name CDATA #REQUIRED + value CDATA #REQUIRED +> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/resources/log4j.xml ---------------------------------------------------------------------- diff --git a/using-tags/src/main/resources/log4j.xml b/using-tags/src/main/resources/log4j.xml new file mode 100644 index 0000000..2100cb2 --- /dev/null +++ b/using-tags/src/main/resources/log4j.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd"> + +<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> + + <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> + <layout class="org.apache.log4j.PatternLayout"> + <param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/> + </layout> + </appender> + + <!-- specify the logging level for loggers from other libraries --> + <logger name="com.opensymphony"> + <level value="DEBUG" /> + </logger> + + <logger name="org.apache.struts2"> + <level value="DEBUG" /> + </logger> + + <!-- for all other loggers log only debug and above log messages --> + <root> + <priority value="INFO"/> + <appender-ref ref="STDOUT" /> + </root> + +</log4j:configuration> + http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/resources/struts.xml ---------------------------------------------------------------------- diff --git a/using-tags/src/main/resources/struts.xml b/using-tags/src/main/resources/struts.xml new file mode 100644 index 0000000..f162457 --- /dev/null +++ b/using-tags/src/main/resources/struts.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE struts PUBLIC + "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" + "http://struts.apache.org/dtds/struts-2.0.dtd"> + +<struts> + + <constant name="struts.devMode" value="true" /> + + <package name="basicstruts2" extends="struts-default"> + + <!-- If no class attribute is specified the framework will assume success and + render the result index.jsp --> + <!-- If no name value for the result node is specified the success value is the default --> + <action name="index"> + <result>/index.jsp</result> + </action> + + <!-- If the URL is hello.action the call the execute method of class HelloWorldAction. + If the result returned by the execute method is success render the HelloWorld.jsp --> + <action name="hello" class="org.apache.struts.using_tags.helloworld.action.HelloWorldAction" method="execute"> + <result name="success">/HelloWorld.jsp</result> + </action> + + </package> + +</struts> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/webapp/HelloWorld.jsp ---------------------------------------------------------------------- diff --git a/using-tags/src/main/webapp/HelloWorld.jsp b/using-tags/src/main/webapp/HelloWorld.jsp new file mode 100644 index 0000000..108810c --- /dev/null +++ b/using-tags/src/main/webapp/HelloWorld.jsp @@ -0,0 +1,15 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@ taglib prefix="s" uri="/struts-tags" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Hello World!</title> +</head> +<body> +<h2><s:property value="messageStore.message" /></h2> +<p>I've said hello <s:property value="helloCount" /> times!</p> +<p><s:property value="messageStore" /></p> +</body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/using-tags/src/main/webapp/WEB-INF/web.xml b/using-tags/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..ac8a81b --- /dev/null +++ b/using-tags/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> +<display-name>Using_Tags_Struts2</display-name> + <welcome-file-list> + <welcome-file>index.jsp</welcome-file> + </welcome-file-list> + + + <filter> + <filter-name>struts2</filter-name> + <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>struts2</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + +</web-app> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using-tags/src/main/webapp/index.jsp ---------------------------------------------------------------------- diff --git a/using-tags/src/main/webapp/index.jsp b/using-tags/src/main/webapp/index.jsp new file mode 100644 index 0000000..f9bcea2 --- /dev/null +++ b/using-tags/src/main/webapp/index.jsp @@ -0,0 +1,28 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> +<%@ taglib prefix="s" uri="/struts-tags" %> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Basic Struts 2 Application - Welcome</title> +</head> +<body> +<h1>Welcome To Struts 2!</h1> +<p><a href="<s:url action='hello'/>">Hello World</a></p> +<s:url action="hello" var="helloLink"> + <s:param name="userName">Bruce Phillips</s:param> +</s:url> +<p><a href="${helloLink}">Hello Bruce Phillips</a></p> + +<p>Get your own personal hello by filling out and submitting this form.</p> + +<s:form action="hello"> + + <s:textfield name="userName" label="Your name" /> + + <s:submit value="Submit" /> + +</s:form> +</body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/README.txt ---------------------------------------------------------------------- diff --git a/using_tags/README.txt b/using_tags/README.txt deleted file mode 100644 index 426c32c..0000000 --- a/using_tags/README.txt +++ /dev/null @@ -1,16 +0,0 @@ -This is the example project referred to in the -Struts 2 documentation, Using Tags tutorial. -See: http://struts.apache.org. - -To build the application's war file run mvn clean package -from the project's root folder. - -The war file is created in the target sub-folder. - -Copy the war file to your Servlet container (e.g. Tomcat, GlassFish) and -then startup the Servlet container. - -In a web browser go to: http://localhost:8080/using_tags/index.action. - -You should see a web page with Welcome to Struts 2! - http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/pom.xml ---------------------------------------------------------------------- diff --git a/using_tags/pom.xml b/using_tags/pom.xml deleted file mode 100644 index 54a61c4..0000000 --- a/using_tags/pom.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0"?> -<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>struts.apache.org</groupId> - <artifactId>struts2examples</artifactId> - <version>1.0.0</version> - </parent> - <artifactId>using_tags</artifactId> - <name>using_tags</name> - <description>Struts 2 example application for the - Using Struts 2 Tags getting started tutorial</description> - - <packaging>war</packaging> - - <build> - <finalName>using_tags</finalName> - </build> - -</project> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java ---------------------------------------------------------------------- diff --git a/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java b/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java deleted file mode 100644 index 85017d9..0000000 --- a/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/action/HelloWorldAction.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.apache.struts.using_tags.helloworld.action; - - - -import org.apache.struts.using_tags.helloworld.model.MessageStore; - -import com.opensymphony.xwork2.ActionSupport; - -/** - * Acts as a Struts 2 controller that responds - * to a user action by setting the value - * of the Message model class, and returns a String - * result. - * @author Bruce Phillips - * - */ -public class HelloWorldAction extends ActionSupport { - - private static final long serialVersionUID = 1L; - - /** - * The model class that stores the message - * to display in the view. - */ - private MessageStore messageStore; - - private static int helloCount = 0; - - public int getHelloCount() { - return helloCount; - } - - public void setHelloCount(int helloCount) { - HelloWorldAction.helloCount = helloCount; - } - - /* - * Creates the MessageStore model object, - * increase helloCount by 1 and - * returns success. The MessageStore model - * object will be available to the view. - * (non-Javadoc) - * @see com.opensymphony.xwork2.ActionSupport#execute() - */ - public String execute() throws Exception { - - messageStore = new MessageStore() ; - - helloCount++; - - return SUCCESS; - } - - public MessageStore getMessageStore() { - return messageStore; - } - - public void setMessageStore(MessageStore messageStore) { - this.messageStore = messageStore; - } - - - -} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java ---------------------------------------------------------------------- diff --git a/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java b/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java deleted file mode 100644 index 8870513..0000000 --- a/using_tags/src/main/java/org/apache/struts/using_tags/helloworld/model/MessageStore.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.apache.struts.using_tags.helloworld.model; - -/** - * Model class that stores a message. - * @author Bruce Phillips - * - */ -public class MessageStore { - - private String message; - - public MessageStore() { - - setMessage("Hello Struts User"); - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public String toString() { - - return message + " (from toString)"; - - } - -} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/resources/log4j.dtd ---------------------------------------------------------------------- diff --git a/using_tags/src/main/resources/log4j.dtd b/using_tags/src/main/resources/log4j.dtd deleted file mode 100644 index 1aabd96..0000000 --- a/using_tags/src/main/resources/log4j.dtd +++ /dev/null @@ -1,227 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<!-- Authors: Chris Taylor, Ceki Gulcu. --> - -<!-- Version: 1.2 --> - -<!-- A configuration element consists of optional renderer -elements,appender elements, categories and an optional root -element. --> - -<!ELEMENT log4j:configuration (renderer*, appender*,plugin*, (category|logger)*,root?, - (categoryFactory|loggerFactory)?)> - -<!-- The "threshold" attribute takes a level value below which --> -<!-- all logging statements are disabled. --> - -<!-- Setting the "debug" enable the printing of internal log4j logging --> -<!-- statements. --> - -<!-- By default, debug attribute is "null", meaning that we not do touch --> -<!-- internal log4j logging settings. The "null" value for the threshold --> -<!-- attribute can be misleading. The threshold field of a repository --> -<!-- cannot be set to null. The "null" value for the threshold attribute --> -<!-- simply means don't touch the threshold field, the threshold field --> -<!-- keeps its old value. --> - -<!ATTLIST log4j:configuration - xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/" - threshold (all|trace|debug|info|warn|error|fatal|off|null) "null" - debug (true|false|null) "null" - reset (true|false) "false" -> - -<!-- renderer elements allow the user to customize the conversion of --> -<!-- message objects to String. --> - -<!ELEMENT renderer EMPTY> -<!ATTLIST renderer - renderedClass CDATA #REQUIRED - renderingClass CDATA #REQUIRED -> - -<!-- Appenders must have a name and a class. --> -<!-- Appenders may contain an error handler, a layout, optional parameters --> -<!-- and filters. They may also reference (or include) other appenders. --> -<!ELEMENT appender (errorHandler?, param*, - rollingPolicy?, triggeringPolicy?, connectionSource?, - layout?, filter*, appender-ref*)> -<!ATTLIST appender - name CDATA #REQUIRED - class CDATA #REQUIRED -> - -<!ELEMENT layout (param*)> -<!ATTLIST layout - class CDATA #REQUIRED -> - -<!ELEMENT filter (param*)> -<!ATTLIST filter - class CDATA #REQUIRED -> - -<!-- ErrorHandlers can be of any class. They can admit any number of --> -<!-- parameters. --> - -<!ELEMENT errorHandler (param*, root-ref?, logger-ref*, appender-ref?)> -<!ATTLIST errorHandler - class CDATA #REQUIRED -> - -<!ELEMENT root-ref EMPTY> - -<!ELEMENT logger-ref EMPTY> -<!ATTLIST logger-ref - ref CDATA #REQUIRED -> - -<!ELEMENT param EMPTY> -<!ATTLIST param - name CDATA #REQUIRED - value CDATA #REQUIRED -> - - -<!-- The priority class is org.apache.log4j.Level by default --> -<!ELEMENT priority (param*)> -<!ATTLIST priority - class CDATA #IMPLIED - value CDATA #REQUIRED -> - -<!-- The level class is org.apache.log4j.Level by default --> -<!ELEMENT level (param*)> -<!ATTLIST level - class CDATA #IMPLIED - value CDATA #REQUIRED -> - - -<!-- If no level element is specified, then the configurator MUST not --> -<!-- touch the level of the named category. --> -<!ELEMENT category (param*,(priority|level)?,appender-ref*)> -<!ATTLIST category - class CDATA #IMPLIED - name CDATA #REQUIRED - additivity (true|false) "true" -> - -<!-- If no level element is specified, then the configurator MUST not --> -<!-- touch the level of the named logger. --> -<!ELEMENT logger (level?,appender-ref*)> -<!ATTLIST logger - name CDATA #REQUIRED - additivity (true|false) "true" -> - - -<!ELEMENT categoryFactory (param*)> -<!ATTLIST categoryFactory - class CDATA #REQUIRED> - -<!ELEMENT loggerFactory (param*)> -<!ATTLIST loggerFactory - class CDATA #REQUIRED> - -<!ELEMENT appender-ref EMPTY> -<!ATTLIST appender-ref - ref CDATA #REQUIRED -> - -<!-- plugins must have a name and class and can have optional parameters --> -<!ELEMENT plugin (param*, connectionSource?)> -<!ATTLIST plugin - name CDATA #REQUIRED - class CDATA #REQUIRED -> - -<!ELEMENT connectionSource (dataSource?, param*)> -<!ATTLIST connectionSource - class CDATA #REQUIRED -> - -<!ELEMENT dataSource (param*)> -<!ATTLIST dataSource - class CDATA #REQUIRED -> - -<!ELEMENT triggeringPolicy ((param|filter)*)> -<!ATTLIST triggeringPolicy - name CDATA #IMPLIED - class CDATA #REQUIRED -> - -<!ELEMENT rollingPolicy (param*)> -<!ATTLIST rollingPolicy - name CDATA #IMPLIED - class CDATA #REQUIRED -> - - -<!-- If no priority element is specified, then the configurator MUST not --> -<!-- touch the priority of root. --> -<!-- The root category always exists and cannot be subclassed. --> -<!ELEMENT root (param*, (priority|level)?, appender-ref*)> - - -<!-- ==================================================================== --> -<!-- A logging event --> -<!-- ==================================================================== --> -<!ELEMENT log4j:eventSet (log4j:event*)> -<!ATTLIST log4j:eventSet - xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/" - version (1.1|1.2) "1.2" - includesLocationInfo (true|false) "true" -> - - - -<!ELEMENT log4j:event (log4j:message, log4j:NDC?, log4j:throwable?, - log4j:locationInfo?, log4j:properties?) > - -<!-- The timestamp format is application dependent. --> -<!ATTLIST log4j:event - logger CDATA #REQUIRED - level CDATA #REQUIRED - thread CDATA #REQUIRED - timestamp CDATA #REQUIRED - time CDATA #IMPLIED -> - -<!ELEMENT log4j:message (#PCDATA)> -<!ELEMENT log4j:NDC (#PCDATA)> - -<!ELEMENT log4j:throwable (#PCDATA)> - -<!ELEMENT log4j:locationInfo EMPTY> -<!ATTLIST log4j:locationInfo - class CDATA #REQUIRED - method CDATA #REQUIRED - file CDATA #REQUIRED - line CDATA #REQUIRED -> - -<!ELEMENT log4j:properties (log4j:data*)> - -<!ELEMENT log4j:data EMPTY> -<!ATTLIST log4j:data - name CDATA #REQUIRED - value CDATA #REQUIRED -> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/resources/log4j.xml ---------------------------------------------------------------------- diff --git a/using_tags/src/main/resources/log4j.xml b/using_tags/src/main/resources/log4j.xml deleted file mode 100644 index 2100cb2..0000000 --- a/using_tags/src/main/resources/log4j.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd"> - -<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> - - <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> - <layout class="org.apache.log4j.PatternLayout"> - <param name="ConversionPattern" value="%d %-5p %c.%M:%L - %m%n"/> - </layout> - </appender> - - <!-- specify the logging level for loggers from other libraries --> - <logger name="com.opensymphony"> - <level value="DEBUG" /> - </logger> - - <logger name="org.apache.struts2"> - <level value="DEBUG" /> - </logger> - - <!-- for all other loggers log only debug and above log messages --> - <root> - <priority value="INFO"/> - <appender-ref ref="STDOUT" /> - </root> - -</log4j:configuration> - http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/resources/struts.xml ---------------------------------------------------------------------- diff --git a/using_tags/src/main/resources/struts.xml b/using_tags/src/main/resources/struts.xml deleted file mode 100644 index f162457..0000000 --- a/using_tags/src/main/resources/struts.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE struts PUBLIC - "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" - "http://struts.apache.org/dtds/struts-2.0.dtd"> - -<struts> - - <constant name="struts.devMode" value="true" /> - - <package name="basicstruts2" extends="struts-default"> - - <!-- If no class attribute is specified the framework will assume success and - render the result index.jsp --> - <!-- If no name value for the result node is specified the success value is the default --> - <action name="index"> - <result>/index.jsp</result> - </action> - - <!-- If the URL is hello.action the call the execute method of class HelloWorldAction. - If the result returned by the execute method is success render the HelloWorld.jsp --> - <action name="hello" class="org.apache.struts.using_tags.helloworld.action.HelloWorldAction" method="execute"> - <result name="success">/HelloWorld.jsp</result> - </action> - - </package> - -</struts> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/webapp/HelloWorld.jsp ---------------------------------------------------------------------- diff --git a/using_tags/src/main/webapp/HelloWorld.jsp b/using_tags/src/main/webapp/HelloWorld.jsp deleted file mode 100644 index 108810c..0000000 --- a/using_tags/src/main/webapp/HelloWorld.jsp +++ /dev/null @@ -1,15 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<%@ taglib prefix="s" uri="/struts-tags" %> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> -<title>Hello World!</title> -</head> -<body> -<h2><s:property value="messageStore.message" /></h2> -<p>I've said hello <s:property value="helloCount" /> times!</p> -<p><s:property value="messageStore" /></p> -</body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/using_tags/src/main/webapp/WEB-INF/web.xml b/using_tags/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index ac8a81b..0000000 --- a/using_tags/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> -<display-name>Using_Tags_Struts2</display-name> - <welcome-file-list> - <welcome-file>index.jsp</welcome-file> - </welcome-file-list> - - - <filter> - <filter-name>struts2</filter-name> - <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> - </filter> - - <filter-mapping> - <filter-name>struts2</filter-name> - <url-pattern>/*</url-pattern> - </filter-mapping> - -</web-app> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/using_tags/src/main/webapp/index.jsp ---------------------------------------------------------------------- diff --git a/using_tags/src/main/webapp/index.jsp b/using_tags/src/main/webapp/index.jsp deleted file mode 100644 index f9bcea2..0000000 --- a/using_tags/src/main/webapp/index.jsp +++ /dev/null @@ -1,28 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<%@ taglib prefix="s" uri="/struts-tags" %> -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> -<title>Basic Struts 2 Application - Welcome</title> -</head> -<body> -<h1>Welcome To Struts 2!</h1> -<p><a href="<s:url action='hello'/>">Hello World</a></p> -<s:url action="hello" var="helloLink"> - <s:param name="userName">Bruce Phillips</s:param> -</s:url> -<p><a href="${helloLink}">Hello Bruce Phillips</a></p> - -<p>Get your own personal hello by filling out and submitting this form.</p> - -<s:form action="hello"> - - <s:textfield name="userName" label="Your name" /> - - <s:submit value="Submit" /> - -</s:form> -</body> -</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/README.txt ---------------------------------------------------------------------- diff --git a/wildcard-method-selection/README.txt b/wildcard-method-selection/README.txt new file mode 100644 index 0000000..cd9275d --- /dev/null +++ b/wildcard-method-selection/README.txt @@ -0,0 +1,16 @@ +This is the example project referred to in the +Struts 2 documentation, Wildcard Method tutorial. +See: http://struts.apache.org. + +To build the application's war file run mvn clean package +from the project's root folder. + +The war file is created in the target sub-folder. + +Copy the war file to your Servlet container (e.g. Tomcat, GlassFish) and +then startup the Servlet container. + +In a web browser go to: http://localhost:8080/wildcard-method-selection/Person.action + +You should see a web page with People listed. + http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/pom.xml ---------------------------------------------------------------------- diff --git a/wildcard-method-selection/pom.xml b/wildcard-method-selection/pom.xml new file mode 100644 index 0000000..8b4fe1f --- /dev/null +++ b/wildcard-method-selection/pom.xml @@ -0,0 +1,39 @@ +<?xml version="1.0"?> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>struts.apache.org</groupId> + <artifactId>struts2examples</artifactId> + <version>1.0.0</version> + </parent> + + <artifactId>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> + +</project> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/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 new file mode 100644 index 0000000..4aa0926 --- /dev/null +++ b/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/action/PersonAction.java @@ -0,0 +1,93 @@ +package org.apache.struts.tutorials.wildcardmethod.action; + +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; + + 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 void setId(int id) { + this.id = id; + } +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java ---------------------------------------------------------------------- diff --git a/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java b/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java new file mode 100644 index 0000000..d3e1b8d --- /dev/null +++ b/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java @@ -0,0 +1,55 @@ +package org.apache.struts.tutorials.wildcardmethod.model; + +public class Person { + + private int id; + private String firstName; + private String lastName; + + + public Person() { + + this.id = -1; + this.firstName = null; + this.lastName = null; + } + + + public Person(int id, String firstName, String lastName) { + super(); + this.id = id; + this.firstName = firstName; + this.lastName = lastName; + } + + public int getId() { + return id; + } + public void setId(int id) { + this.id = id; + } + public String getFirstName() { + return firstName; + } + public void setFirstName(String firstName) { + this.firstName = firstName; + } + public String getLastName() { + return lastName; + } + public void setLastName(String lastName) { + this.lastName = lastName; + } + + + public String toString() { + + + return firstName + " " + lastName; + + } + + + + +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/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 new file mode 100644 index 0000000..79d5b5b --- /dev/null +++ b/wildcard-method-selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/service/PersonService.java @@ -0,0 +1,88 @@ +package org.apache.struts.tutorials.wildcardmethod.service; + +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 log = LogManager.getLogger(PersonService.class); + + 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<>(); + + 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) { + 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<>(); + + for (Integer id : people.keySet() ) { + personList.add( people.get(id)); + } + } +} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/resources/log4j2.xml ---------------------------------------------------------------------- diff --git a/wildcard-method-selection/src/main/resources/log4j2.xml b/wildcard-method-selection/src/main/resources/log4j2.xml new file mode 100644 index 0000000..3d7ad0b --- /dev/null +++ b/wildcard-method-selection/src/main/resources/log4j2.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Configuration> + <Appenders> + <Console name="STDOUT" target="SYSTEM_OUT"> + <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> + </Console> + </Appenders> + <Loggers> + <Logger name="com.opensymphony.xwork2" level="info"/> + <Logger name="org.apache.struts2" level="info"/> + <Logger name="org.apache.struts2.tutorials" level="debug"/> + <Root level="warn"> + <AppenderRef ref="STDOUT"/> + </Root> + </Loggers> +</Configuration> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/resources/struts.xml ---------------------------------------------------------------------- diff --git a/wildcard-method-selection/src/main/resources/struts.xml b/wildcard-method-selection/src/main/resources/struts.xml new file mode 100644 index 0000000..d6f1e93 --- /dev/null +++ b/wildcard-method-selection/src/main/resources/struts.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE struts PUBLIC + "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" + "http://struts.apache.org/dtds/struts-2.0.dtd"> + +<struts> + + <constant name="struts.devMode" value="true" /> + <constant name="struts.enable.DynamicMethodInvocation" value="false" /> + + + <package name="wildcardmethodexample" extends="struts-default"> + + <!-- Whatever value is before Person for the name of + the action will be the name of the method to call in + class PersonAction. For example action createPerson + will call a method named create in class PersonAction --> + + <action name="*Person" class="org.apache.struts.tutorials.wildcardmethod.action.PersonAction" method="{1}"> + <result name="success">view.jsp</result> + <result name="input">input.jsp</result> + </action> + + </package> + +</struts> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/webapp/META-INF/MANIFEST.MF ---------------------------------------------------------------------- diff --git a/wildcard-method-selection/src/main/webapp/META-INF/MANIFEST.MF b/wildcard-method-selection/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/wildcard-method-selection/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/wildcard-method-selection/src/main/webapp/WEB-INF/web.xml b/wildcard-method-selection/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..9be994d --- /dev/null +++ b/wildcard-method-selection/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> +<display-name>Wildcard_Method_Struts2_Mvn</display-name> + + <welcome-file-list> + <welcome-file>index.jsp</welcome-file> + </welcome-file-list> + + + <filter> + <filter-name>struts2</filter-name> + <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> + </filter> + + <filter-mapping> + <filter-name>struts2</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + +</web-app> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/webapp/index.jsp ---------------------------------------------------------------------- diff --git a/wildcard-method-selection/src/main/webapp/index.jsp b/wildcard-method-selection/src/main/webapp/index.jsp new file mode 100644 index 0000000..efdb306 --- /dev/null +++ b/wildcard-method-selection/src/main/webapp/index.jsp @@ -0,0 +1 @@ +<% response.sendRedirect("Person.action"); %> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/webapp/input.jsp ---------------------------------------------------------------------- diff --git a/wildcard-method-selection/src/main/webapp/input.jsp b/wildcard-method-selection/src/main/webapp/input.jsp new file mode 100644 index 0000000..442990e --- /dev/null +++ b/wildcard-method-selection/src/main/webapp/input.jsp @@ -0,0 +1,40 @@ +<%@ page language="java" pageEncoding="ISO-8859-1" %> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> +<%@ taglib prefix="s" uri="/struts-tags" %> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> + <head> + <base href="<%=basePath%>"> + + <title>Edit Person</title> + <meta http-equiv="pragma" content="no-cache"> + <meta http-equiv="cache-control" content="no-cache"> + <meta http-equiv="expires" content="0"> + + </head> + + <body> + <s:if test="id > 0"> + <h3>Edit Person</h3> + </s:if> + <s:else> + <h3>Create Person</h3> + + </s:else> + + <s:form action='saveOrUpdatePerson'> + + <p><s:textfield name="person.firstName" label="First name" /> <br /> + <s:textfield name="person.lastName" label="Last name" /> </p> + + <s:hidden name="person.id" /> + <s:submit value="Save" /> + + </s:form> + + + </body> +</html> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard-method-selection/src/main/webapp/view.jsp ---------------------------------------------------------------------- diff --git a/wildcard-method-selection/src/main/webapp/view.jsp b/wildcard-method-selection/src/main/webapp/view.jsp new file mode 100644 index 0000000..e619846 --- /dev/null +++ b/wildcard-method-selection/src/main/webapp/view.jsp @@ -0,0 +1,60 @@ +<%@ page language="java" pageEncoding="ISO-8859-1" %> +<% +String path = request.getContextPath(); +String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> +<%@ taglib prefix="s" uri="/struts-tags" %> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> + <head> + <base href="<%=basePath%>"> + <title>View People</title> + <meta http-equiv="pragma" content="no-cache"> + <meta http-equiv="cache-control" content="no-cache"> + <meta http-equiv="expires" content="0"> + + </head> + + <body> + <h3>People</h3> + + + <s:if test="personList.size > 0"> + <ol> + <s:iterator value="personList"> + <li> + <s:property value="firstName" /> + + <s:property value="lastName" /> + + <%--Put the name of the method we want to call + in front of Person. This action will cause + the method named edit to be called in the + ActionSupport class (see struts.xml) --%> + <s:url action="editPerson" var="editUrl"> + <s:param name="id" value="id"/> + </s:url> + + <s:url action="deletePerson" var="deleteUrl"> + <s:param name="id" value="id"/> + </s:url> + + <a href="<s:property value='#editUrl' />" >Edit</a> + + <a href="<s:property value='#deleteUrl' />" >Delete</a> + </li> + </s:iterator> + </ol> + </s:if> + + <%--Put the name of the method we want to call + in front of Person. This action will cause + the method named create to be called in the + ActionSupport class (see struts.xml) --%> + <s:url action="createPerson" var="newUrl"> + <s:param name="id" value="0"/> + </s:url> + + <p><a href="<s:property value='#newUrl' />" > Create new person.</a></p> + </body> +</html> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/README.txt ---------------------------------------------------------------------- diff --git a/wildcard_method_selection/README.txt b/wildcard_method_selection/README.txt deleted file mode 100644 index 67a3f47..0000000 --- a/wildcard_method_selection/README.txt +++ /dev/null @@ -1,16 +0,0 @@ -This is the example project referred to in the -Struts 2 documentation, Wildcard Method tutorial. -See: http://struts.apache.org. - -To build the application's war file run mvn clean package -from the project's root folder. - -The war file is created in the target sub-folder. - -Copy the war file to your Servlet container (e.g. Tomcat, GlassFish) and -then startup the Servlet container. - -In a web browser go to: http://localhost:8080/wildcard_method_selection/Person.action - -You should see a web page with People listed. - http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/pom.xml ---------------------------------------------------------------------- diff --git a/wildcard_method_selection/pom.xml b/wildcard_method_selection/pom.xml deleted file mode 100644 index a76d999..0000000 --- a/wildcard_method_selection/pom.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0"?> -<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" - xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>struts.apache.org</groupId> - <artifactId>struts2examples</artifactId> - <version>1.0.0</version> - </parent> - - <artifactId>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> - -</project> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/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 deleted file mode 100644 index ac3bf53..0000000 --- a/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/action/PersonAction.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.apache.struts.tutorials.wildcardmethod.action; - -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; - - 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 void setId(int id) { - this.id = id; - } -} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java ---------------------------------------------------------------------- diff --git a/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java b/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java deleted file mode 100644 index 84abec3..0000000 --- a/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/model/Person.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.apache.struts.tutorials.wildcardmethod.model; - -public class Person { - - private int id; - private String firstName; - private String lastName; - - - public Person() { - - this.id = -1; - this.firstName = null; - this.lastName = null; - } - - - public Person(int id, String firstName, String lastName) { - super(); - this.id = id; - this.firstName = firstName; - this.lastName = lastName; - } - - public int getId() { - return id; - } - public void setId(int id) { - this.id = id; - } - public String getFirstName() { - return firstName; - } - public void setFirstName(String firstName) { - this.firstName = firstName; - } - public String getLastName() { - return lastName; - } - public void setLastName(String lastName) { - this.lastName = lastName; - } - - - public String toString() { - - - return firstName + " " + lastName; - - } - - - - -} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/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 deleted file mode 100644 index 0aa657c..0000000 --- a/wildcard_method_selection/src/main/java/org/apache/struts/tutorials/wildcardmethod/service/PersonService.java +++ /dev/null @@ -1,88 +0,0 @@ -package org.apache.struts.tutorials.wildcardmethod.service; - -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 log = LogManager.getLogger(PersonService.class); - - 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<>(); - - 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) { - 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<>(); - - for (Integer id : people.keySet() ) { - personList.add( people.get(id)); - } - } -} http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/resources/log4j2.xml ---------------------------------------------------------------------- diff --git a/wildcard_method_selection/src/main/resources/log4j2.xml b/wildcard_method_selection/src/main/resources/log4j2.xml deleted file mode 100644 index 3d7ad0b..0000000 --- a/wildcard_method_selection/src/main/resources/log4j2.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Configuration> - <Appenders> - <Console name="STDOUT" target="SYSTEM_OUT"> - <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> - </Console> - </Appenders> - <Loggers> - <Logger name="com.opensymphony.xwork2" level="info"/> - <Logger name="org.apache.struts2" level="info"/> - <Logger name="org.apache.struts2.tutorials" level="debug"/> - <Root level="warn"> - <AppenderRef ref="STDOUT"/> - </Root> - </Loggers> -</Configuration> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/resources/struts.xml ---------------------------------------------------------------------- diff --git a/wildcard_method_selection/src/main/resources/struts.xml b/wildcard_method_selection/src/main/resources/struts.xml deleted file mode 100644 index c8ea023..0000000 --- a/wildcard_method_selection/src/main/resources/struts.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE struts PUBLIC - "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" - "http://struts.apache.org/dtds/struts-2.0.dtd"> - -<struts> - - <constant name="struts.devMode" value="true" /> - <constant name="struts.enable.DynamicMethodInvocation" value="false" /> - - - <package name="wildcardmethodexample" extends="struts-default"> - - <!-- Whatever value is before Person for the name of - the action will be the name of the method to call in - class PersonAction. For example action createPerson - will call a method named create in class PersonAction --> - - <action name="*Person" class="org.apache.struts.tutorials.wildcardmethod.action.PersonAction" method="{1}"> - <result name="success">view.jsp</result> - <result name="input">input.jsp</result> - </action> - - </package> - -</struts> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/webapp/META-INF/MANIFEST.MF ---------------------------------------------------------------------- diff --git a/wildcard_method_selection/src/main/webapp/META-INF/MANIFEST.MF b/wildcard_method_selection/src/main/webapp/META-INF/MANIFEST.MF deleted file mode 100644 index 5e94951..0000000 --- a/wildcard_method_selection/src/main/webapp/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/wildcard_method_selection/src/main/webapp/WEB-INF/web.xml b/wildcard_method_selection/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 9be994d..0000000 --- a/wildcard_method_selection/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> -<display-name>Wildcard_Method_Struts2_Mvn</display-name> - - <welcome-file-list> - <welcome-file>index.jsp</welcome-file> - </welcome-file-list> - - - <filter> - <filter-name>struts2</filter-name> - <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> - </filter> - - <filter-mapping> - <filter-name>struts2</filter-name> - <url-pattern>/*</url-pattern> - </filter-mapping> - -</web-app> http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/webapp/index.jsp ---------------------------------------------------------------------- diff --git a/wildcard_method_selection/src/main/webapp/index.jsp b/wildcard_method_selection/src/main/webapp/index.jsp deleted file mode 100644 index efdb306..0000000 --- a/wildcard_method_selection/src/main/webapp/index.jsp +++ /dev/null @@ -1 +0,0 @@ -<% response.sendRedirect("Person.action"); %> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/struts-examples/blob/433ea016/wildcard_method_selection/src/main/webapp/input.jsp ---------------------------------------------------------------------- diff --git a/wildcard_method_selection/src/main/webapp/input.jsp b/wildcard_method_selection/src/main/webapp/input.jsp deleted file mode 100644 index 741d1d1..0000000 --- a/wildcard_method_selection/src/main/webapp/input.jsp +++ /dev/null @@ -1,40 +0,0 @@ -<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> -<% -String path = request.getContextPath(); -String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; -%> -<%@ taglib prefix="s" uri="/struts-tags" %> -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> - <head> - <base href="<%=basePath%>"> - - <title>Edit Person</title> - <meta http-equiv="pragma" content="no-cache"> - <meta http-equiv="cache-control" content="no-cache"> - <meta http-equiv="expires" content="0"> - - </head> - - <body> - <s:if test="id > 0"> - <h3>Edit Person</h3> - </s:if> - <s:else> - <h3>Create Person</h3> - - </s:else> - - <s:form action='saveOrUpdatePerson'> - - <p><s:textfield name="person.firstName" label="First name" /> <br /> - <s:textfield name="person.lastName" label="Last name" /> </p> - - <s:hidden name="person.id" /> - <s:submit value="Save" /> - - </s:form> - - - </body> -</html>
