Author: mrdon
Date: Sat Sep 23 19:27:41 2006
New Revision: 449344

URL: http://svn.apache.org/viewvc?view=rev&rev=449344
Log:
Adds a legacy library to support Struts 1.3 Actions and ActionForms as is 
running in Struts
WW-1452

Added:
    
struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/
    
struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/EditGangsterAction.java
    
struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/GangsterForm.java
    
struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/SaveGangsterAction.java
    struts/struts2/trunk/apps/showcase/src/main/resources/struts-legacy.xml
    struts/struts2/trunk/apps/showcase/src/main/webapp/legacy/
    struts/struts2/trunk/apps/showcase/src/main/webapp/legacy/modelDriven.jsp
    
struts/struts2/trunk/apps/showcase/src/main/webapp/legacy/modelDrivenResult.jsp
    struts/struts2/trunk/legacy/   (with props)
    struts/struts2/trunk/legacy/pom.xml
    struts/struts2/trunk/legacy/src/
    struts/struts2/trunk/legacy/src/main/
    struts/struts2/trunk/legacy/src/main/java/
    struts/struts2/trunk/legacy/src/main/java/org/
    struts/struts2/trunk/legacy/src/main/resources/
    struts/struts2/trunk/legacy/src/main/resources/struts-default.xml
    struts/struts2/trunk/legacy/src/test/
    struts/struts2/trunk/legacy/src/test/java/
    struts/struts2/trunk/legacy/src/test/java/org/
    struts/struts2/trunk/legacy/src/test/java/org/apache/
    struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/
    struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/
    
struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/DynaBeanPropertyAccessorTest.java
    
struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/ScopedModelDrivenInterceptorTest.java
    
struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/StrutsFactoryTest.java
    struts/struts2/trunk/legacy/src/test/resources/
    struts/struts2/trunk/legacy/src/test/resources/org/
    struts/struts2/trunk/legacy/src/test/resources/org/apache/
    struts/struts2/trunk/legacy/src/test/resources/org/apache/struts2/
    struts/struts2/trunk/legacy/src/test/resources/org/apache/struts2/legacy/
    
struts/struts2/trunk/legacy/src/test/resources/org/apache/struts2/legacy/test-struts-factory.xml
      - copied, changed from r449318, 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/test-struts-factory.xml
Modified:
    struts/struts2/trunk/apps/showcase/pom.xml
    struts/struts2/trunk/apps/showcase/src/main/resources/struts.xml
    struts/struts2/trunk/apps/showcase/src/main/webapp/showcase.jsp
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java
    struts/struts2/trunk/pom.xml

Modified: struts/struts2/trunk/apps/showcase/pom.xml
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/pom.xml?view=diff&rev=449344&r1=449343&r2=449344
==============================================================================
--- struts/struts2/trunk/apps/showcase/pom.xml (original)
+++ struts/struts2/trunk/apps/showcase/pom.xml Sat Sep 23 19:27:41 2006
@@ -25,6 +25,13 @@
     <dependencies>
         
         <dependency>
+            <groupId>org.apache.struts</groupId>
+            <artifactId>struts2-legacy</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+
+ 
+        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.4</version>

Added: 
struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/EditGangsterAction.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/EditGangsterAction.java?view=auto&rev=449344
==============================================================================
--- 
struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/EditGangsterAction.java
 (added)
+++ 
struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/EditGangsterAction.java
 Sat Sep 23 19:27:41 2006
@@ -0,0 +1,40 @@
+/*
+ * $Id: Gangster.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 org.apache.struts2.showcase.legacy;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.struts.action.Action;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+
+public class EditGangsterAction extends Action {
+
+    /* (non-Javadoc)
+     * @see 
org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, 
org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, 
javax.servlet.http.HttpServletResponse)
+     */
+    @Override
+    public ActionForward execute(ActionMapping mapping, ActionForm form, 
HttpServletRequest request, HttpServletResponse response) throws Exception {
+        // Some code to load the gangster from the db as necessary
+        return mapping.findForward("success");
+    }
+
+    
+}

Added: 
struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/GangsterForm.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/GangsterForm.java?view=auto&rev=449344
==============================================================================
--- 
struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/GangsterForm.java
 (added)
+++ 
struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/GangsterForm.java
 Sat Sep 23 19:27:41 2006
@@ -0,0 +1,87 @@
+package org.apache.struts2.showcase.legacy;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.struts.action.ActionErrors;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.action.ActionMessage;
+
+public class GangsterForm extends ActionForm {
+    
+    private String name;
+    private String age;
+    private String description;
+    private boolean bustedBefore;
+    
+    /* (non-Javadoc)
+     * @see 
org.apache.struts.action.ActionForm#reset(org.apache.struts.action.ActionMapping,
 javax.servlet.http.HttpServletRequest)
+     */
+    @Override
+    public void reset(ActionMapping arg0, HttpServletRequest arg1) {
+        bustedBefore = false;
+    }
+    
+    /* (non-Javadoc)
+     * @see 
org.apache.struts.action.ActionForm#validate(org.apache.struts.action.ActionMapping,
 javax.servlet.http.HttpServletRequest)
+     */
+    @Override
+    public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) {
+        ActionErrors errors = new ActionErrors();
+        if (name == null || name.length() == 0) {
+            errors.add("name", new ActionMessage("The name must not be 
blank"));
+        }
+        return errors;
+    }
+    
+    /**
+     * @return the age
+     */
+    public String getAge() {
+        return age;
+    }
+    /**
+     * @param age the age to set
+     */
+    public void setAge(String age) {
+        this.age = age;
+    }
+    /**
+     * @return the bustedBefore
+     */
+    public boolean isBustedBefore() {
+        return bustedBefore;
+    }
+    /**
+     * @param bustedBefore the bustedBefore to set
+     */
+    public void setBustedBefore(boolean bustedBefore) {
+        this.bustedBefore = bustedBefore;
+    }
+    /**
+     * @return the description
+     */
+    public String getDescription() {
+        return description;
+    }
+    /**
+     * @param description the description to set
+     */
+    public void setDescription(String description) {
+        this.description = description;
+    }
+    /**
+     * @return the name
+     */
+    public String getName() {
+        return name;
+    }
+    /**
+     * @param name the name to set
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+    
+    
+}

Added: 
struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/SaveGangsterAction.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/SaveGangsterAction.java?view=auto&rev=449344
==============================================================================
--- 
struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/SaveGangsterAction.java
 (added)
+++ 
struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/legacy/SaveGangsterAction.java
 Sat Sep 23 19:27:41 2006
@@ -0,0 +1,48 @@
+/*
+ * $Id: Gangster.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 org.apache.struts2.showcase.legacy;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.struts.action.Action;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.action.ActionMessage;
+import org.apache.struts.action.ActionMessages;
+
+public class SaveGangsterAction extends Action {
+
+    /* (non-Javadoc)
+     * @see 
org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, 
org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, 
javax.servlet.http.HttpServletResponse)
+     */
+    @Override
+    public ActionForward execute(ActionMapping mapping, ActionForm form, 
HttpServletRequest request, HttpServletResponse response) throws Exception {
+        
+        // Some code to save the gangster to the db as necessary
+        GangsterForm gform = (GangsterForm) form;
+        ActionMessages messages = new ActionMessages();
+        messages.add("msg", new ActionMessage("Gangster "+gform.getName()+" 
added successfully"));
+        addMessages(request, messages);
+        
+        return mapping.findForward("success");
+    }
+
+    
+}

Added: struts/struts2/trunk/apps/showcase/src/main/resources/struts-legacy.xml
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/resources/struts-legacy.xml?view=auto&rev=449344
==============================================================================
--- struts/struts2/trunk/apps/showcase/src/main/resources/struts-legacy.xml 
(added)
+++ struts/struts2/trunk/apps/showcase/src/main/resources/struts-legacy.xml Sat 
Sep 23 19:27:41 2006
@@ -0,0 +1,47 @@
+<?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>
+       <package name="legacy" extends="struts-default,struts-legacy-default" 
namespace="/legacy">
+           
+           <interceptors>
+               <interceptor name="gangsterForm" 
class="org.apache.struts2.legacy.ScopedModelDrivenInterceptor">
+                       <param name="scope">request</param>
+                       <param name="name">gangsterForm</param>
+                       <param 
name="className">org.apache.struts2.showcase.legacy.GangsterForm</param>
+               </interceptor>
+           
+               <interceptor-stack name="legacy">
+                       <interceptor-ref name="static-params"/>
+                       <interceptor-ref name="gangsterForm"/>
+                       <interceptor-ref name="model-driven"/>
+                <interceptor-ref name="actionForm-reset"/>
+                <interceptor-ref name="basicStack"/>
+                <interceptor-ref name="actionForm-validation"/>
+                <interceptor-ref name="workflow"/>
+               </interceptor-stack>
+           </interceptors>
+           
+           <default-interceptor-ref name="legacy" />
+           <default-action-ref name="editGangster" />
+           
+           <!-- Diplay entry page that uses Model-Driven technique -->
+               <action name="editGangster" 
class="org.apache.struts2.legacy.LegacyAction">
+               <param 
name="className">org.apache.struts2.showcase.legacy.EditGangsterAction</param>
+                       <result>modelDriven.jsp</result>
+               </action>
+               
+               <!-- Display the result page whose content is populated using 
the Model-Driven technique -->
+               <action name="saveGangster" 
class="org.apache.struts2.legacy.LegacyAction">
+               <param 
name="className">org.apache.struts2.showcase.legacy.SaveGangsterAction</param>
+               <param name="validate">true</param>
+                       <result name="input">modelDriven.jsp</result>
+                       <result>modelDrivenResult.jsp</result>
+               </action>
+           
+       </package>
+</struts>      
+       
\ No newline at end of file

Modified: struts/struts2/trunk/apps/showcase/src/main/resources/struts.xml
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/resources/struts.xml?view=diff&rev=449344&r1=449343&r2=449344
==============================================================================
--- struts/struts2/trunk/apps/showcase/src/main/resources/struts.xml (original)
+++ struts/struts2/trunk/apps/showcase/src/main/resources/struts.xml Sat Sep 23 
19:27:41 2006
@@ -38,6 +38,8 @@
     
     <include file="struts-model-driven.xml" />
     
+    <include file="struts-legacy.xml" />
+    
     <include file="struts-filedownload.xml" />
     
     <include file="struts-conversion.xml" />

Added: struts/struts2/trunk/apps/showcase/src/main/webapp/legacy/modelDriven.jsp
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/legacy/modelDriven.jsp?view=auto&rev=449344
==============================================================================
--- struts/struts2/trunk/apps/showcase/src/main/webapp/legacy/modelDriven.jsp 
(added)
+++ struts/struts2/trunk/apps/showcase/src/main/webapp/legacy/modelDriven.jsp 
Sat Sep 23 19:27:41 2006
@@ -0,0 +1,31 @@
+<[EMAIL PROTECTED] prefix="s" uri="/struts-tags" %>
+
+<html>
+<head>
+<title>Showcase - Legacy Example</title>
+<s:head/>
+</head>
+<body>
+
+<s:form action="saveGangster" method="POST" namespace="/legacy">
+    
+    <s:textfield 
+            label="Gangster Name"
+            name="name" />
+    <s:textfield
+            label="Gangster Age"
+            name="age" />
+    <s:checkbox
+            label="Gangster Busted Before"
+            name="bustedBefore" />
+    <s:textarea
+            cols="30"
+            rows="5"
+            label="Gangster Description"
+            name="description" />           
+    <s:submit />
+    
+</s:form>
+
+</body>
+</html>
\ No newline at end of file

Added: 
struts/struts2/trunk/apps/showcase/src/main/webapp/legacy/modelDrivenResult.jsp
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/legacy/modelDrivenResult.jsp?view=auto&rev=449344
==============================================================================
--- 
struts/struts2/trunk/apps/showcase/src/main/webapp/legacy/modelDrivenResult.jsp 
(added)
+++ 
struts/struts2/trunk/apps/showcase/src/main/webapp/legacy/modelDrivenResult.jsp 
Sat Sep 23 19:27:41 2006
@@ -0,0 +1,24 @@
+<[EMAIL PROTECTED] prefix="s" uri="/struts-tags" %>
+
+<html>
+<head>
+<title>Showcase - Legacy Example</title>
+<s:head/>
+</head>
+<body>
+       <s:actionmessage />
+    <s:label 
+            label="Gangster Name" 
+            name="name" /><br/>
+    <s:label 
+            label="Gangster Age"
+            name="age" /><br/>
+    <s:label
+            label="Busted Before"
+            name="bustedBefore" /><br/>
+    <s:label
+            label="Gangster Description"
+            name="description" /><br/>
+
+</body>
+</html>

Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/showcase.jsp
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/showcase.jsp?view=diff&rev=449344&r1=449343&r2=449344
==============================================================================
--- struts/struts2/trunk/apps/showcase/src/main/webapp/showcase.jsp (original)
+++ struts/struts2/trunk/apps/showcase/src/main/webapp/showcase.jsp Sat Sep 23 
19:27:41 2006
@@ -66,6 +66,9 @@
         <!--  JavaServer Faces -->
         <li><s:url id="url" value="/jsf" /><s:a href="%{#url}">JavaServer 
Faces Example</s:a></li>
         
+        <!--  Legacy -->
+        <li><s:url id="url" value="/legacy" /><s:a href="%{#url}">Legacy 
Struts 1.3 Example</s:a></li>
+        
         <!--  Chat (AJAX) Example -->
         <li><s:url id="url" value="/chat" /><s:a href="%{#url}">Chat (AJAX) 
Example</s:a></li>
         

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java?view=diff&rev=449344&r1=449343&r2=449344
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java 
(original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java 
Sat Sep 23 19:27:41 2006
@@ -50,10 +50,10 @@
     /** The default includeParams method to generate Struts URLs */
     public static final String STRUTS_URL_INCLUDEPARAMS = 
"struts.url.includeParams";
 
-    /** The com.opensymphony.xwork.ObjectFactory implementation class */
+    /** The com.opensymphony.xwork2.ObjectFactory implementation class */
     public static final String STRUTS_OBJECTFACTORY = "struts.objectFactory";
     
-    /** The com.opensymphony.xwork.util.ObjectTypeDeterminer implementation 
class */
+    /** The com.opensymphony.xwork2.util.ObjectTypeDeterminer implementation 
class */
     public static final String STRUTS_OBJECTTYPEDETERMINER = 
"struts.objectTypeDeterminer";
 
     /** The package containing actions that use Rife continuations */

Propchange: struts/struts2/trunk/legacy/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Sep 23 19:27:41 2006
@@ -0,0 +1 @@
+target

Added: struts/struts2/trunk/legacy/pom.xml
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/legacy/pom.xml?view=auto&rev=449344
==============================================================================
--- struts/struts2/trunk/legacy/pom.xml (added)
+++ struts/struts2/trunk/legacy/pom.xml Sat Sep 23 19:27:41 2006
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.struts</groupId>
+        <artifactId>struts2-parent</artifactId>
+        <version>2.0.0-SNAPSHOT</version>
+    </parent>
+    <groupId>org.apache.struts</groupId>
+    <artifactId>struts2-legacy</artifactId>
+    <packaging>jar</packaging>
+    <name>Struts Legacy</name>
+    
+    <distributionManagement>
+        <site>
+            <id>apache-site</id>
+            
<url>scp://people.apache.org/www/struts.apache.org/2.x/struts-legacy</url>
+        </site>
+    </distributionManagement>
+    
+    <dependencies>
+               <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+                       <version>3.8.1</version>
+                       <scope>test</scope>
+               </dependency>
+    
+        <dependency>
+           <groupId>javax.servlet</groupId>
+           <artifactId>servlet-api</artifactId>
+           <version>2.4</version>
+           <scope>provided</scope>
+        </dependency>
+    
+        <dependency>
+            <groupId>org.apache.struts</groupId>
+            <artifactId>struts2-core</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.struts</groupId>
+            <artifactId>struts-core</artifactId>
+            <version>1.3.5</version>
+        </dependency>
+      
+        <dependency>
+            <groupId>mockobjects</groupId>
+            <artifactId>mockobjects-core</artifactId>
+            <version>0.09</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>

Added: struts/struts2/trunk/legacy/src/main/resources/struts-default.xml
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/legacy/src/main/resources/struts-default.xml?view=auto&rev=449344
==============================================================================
--- struts/struts2/trunk/legacy/src/main/resources/struts-default.xml (added)
+++ struts/struts2/trunk/legacy/src/main/resources/struts-default.xml Sat Sep 
23 19:27:41 2006
@@ -0,0 +1,16 @@
+<?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>
+    <package name="struts-legacy-default">
+
+        <interceptors>
+            <interceptor name="actionForm-reset" 
class="org.apache.struts2.legacy.ActionFormResetInterceptor"/>
+            <interceptor name="actionForm-validation" 
class="org.apache.struts2.legacy.ActionFormValidationInterceptor"/>
+        </interceptors>
+    </package>
+
+</struts>

Added: 
struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/DynaBeanPropertyAccessorTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/DynaBeanPropertyAccessorTest.java?view=auto&rev=449344
==============================================================================
--- 
struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/DynaBeanPropertyAccessorTest.java
 (added)
+++ 
struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/DynaBeanPropertyAccessorTest.java
 Sat Sep 23 19:27:41 2006
@@ -0,0 +1,134 @@
+package org.apache.struts2.legacy;
+
+import junit.framework.*;
+import java.io.*;
+import java.util.*;
+import org.apache.commons.beanutils.*;
+
+import ognl.*;
+
+/**  Description of the Class */
+public class DynaBeanPropertyAccessorTest extends TestCase {
+
+    protected DynaBean bean = null;
+    
+    public DynaBeanPropertyAccessorTest(String name) throws Exception {
+        super(name);
+    }
+
+
+    public static void main(String args[]) {
+        junit.textui.TestRunner.run(DynaBeanPropertyAccessorTest.class);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+
+        // Instantiate a new DynaBean instance
+        DynaClass dynaClass = createDynaClass();
+        bean = dynaClass.newInstance();
+
+        // Initialize the DynaBean's property values (like TestBean)
+        bean.set("booleanProperty", new Boolean(true));
+        bean.set("booleanSecond", new Boolean(true));
+        bean.set("doubleProperty", new Double(321.0));
+        bean.set("floatProperty", new Float((float) 123.0));
+        int intArray[] = { 0, 10, 20, 30, 40 };
+        bean.set("intArray", intArray);
+        int intIndexed[] = { 0, 10, 20, 30, 40 };
+        bean.set("intIndexed", intIndexed);
+        bean.set("intProperty", new Integer(123));
+        List listIndexed = new ArrayList();
+        listIndexed.add("String 0");
+        listIndexed.add("String 1");
+        listIndexed.add("String 2");
+        listIndexed.add("String 3");
+        listIndexed.add("String 4");
+        bean.set("listIndexed", listIndexed);
+        bean.set("longProperty", new Long((long) 321));
+        HashMap mappedProperty = new HashMap();
+        mappedProperty.put("First Key", "First Value");
+        mappedProperty.put("Second Key", "Second Value");
+        bean.set("mappedProperty", mappedProperty);
+        HashMap mappedIntProperty = new HashMap();
+        mappedIntProperty.put("One", new Integer(1));
+        mappedIntProperty.put("Two", new Integer(2));
+        bean.set("mappedIntProperty", mappedIntProperty);
+        // Property "nullProperty" is not initialized, so it should return null
+        bean.set("shortProperty", new Short((short) 987));
+        String stringArray[] =
+                { "String 0", "String 1", "String 2", "String 3", "String 4" };
+        bean.set("stringArray", stringArray);
+        String stringIndexed[] =
+                { "String 0", "String 1", "String 2", "String 3", "String 4" };
+        bean.set("stringIndexed", stringIndexed);
+        bean.set("stringProperty", "This is a string");
+
+    }
+
+
+
+
+    public void testGetProperty() throws Exception {
+        
+        DynaBeanPropertyAccessor trans = new DynaBeanPropertyAccessor();
+        assertTrue("This is a string".equals(trans.getProperty(null, bean, 
"stringProperty"))); 
+        assertTrue(trans.getProperty(null, bean, "listIndexed") instanceof 
List); 
+        
+    }
+
+    public void testSetProperty() throws Exception {
+        
+        DynaBeanPropertyAccessor trans = new DynaBeanPropertyAccessor();
+        trans.setProperty(null, bean, "stringProperty", "bob");
+        assertTrue("bob".equals(trans.getProperty(null, bean, 
"stringProperty"))); 
+        
+    }
+
+    public void testOGNL() throws Exception {
+        
+        OgnlRuntime.setPropertyAccessor(DynaBean.class, new 
DynaBeanPropertyAccessor());
+
+        assertTrue("This is a string".equals(Ognl.getValue("stringProperty", 
bean)));
+
+    }
+
+
+    /**
+     * Create and return a <code>DynaClass</code> instance for our test
+     * <code>DynaBean</code>.
+     */
+    protected DynaClass createDynaClass() {
+
+        int intArray[] = new int[0];
+        String stringArray[] = new String[0];
+
+        DynaClass dynaClass = new BasicDynaClass
+                ("TestDynaClass", null,
+                        new DynaProperty[]{
+                            new DynaProperty("booleanProperty", Boolean.TYPE),
+                            new DynaProperty("booleanSecond", Boolean.TYPE),
+                            new DynaProperty("doubleProperty", Double.TYPE),
+                            new DynaProperty("floatProperty", Float.TYPE),
+                            new DynaProperty("intArray", intArray.getClass()),
+                            new DynaProperty("intIndexed", 
intArray.getClass()),
+                            new DynaProperty("intProperty", Integer.TYPE),
+                            new DynaProperty("listIndexed", List.class),
+                            new DynaProperty("longProperty", Long.TYPE),
+                            new DynaProperty("mappedProperty", Map.class),
+                            new DynaProperty("mappedIntProperty", Map.class),
+                            new DynaProperty("nullProperty", String.class),
+                            new DynaProperty("shortProperty", Short.TYPE),
+                            new DynaProperty("stringArray", 
stringArray.getClass()),
+                            new DynaProperty("stringIndexed", 
stringArray.getClass()),
+                            new DynaProperty("stringProperty", String.class),
+                        });
+        return (dynaClass);
+
+    }
+
+
+}
+

Added: 
struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/ScopedModelDrivenInterceptorTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/ScopedModelDrivenInterceptorTest.java?view=auto&rev=449344
==============================================================================
--- 
struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/ScopedModelDrivenInterceptorTest.java
 (added)
+++ 
struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/ScopedModelDrivenInterceptorTest.java
 Sat Sep 23 19:27:41 2006
@@ -0,0 +1,53 @@
+package org.apache.struts2.legacy;
+
+import junit.framework.*;
+import java.io.*;
+import java.util.*;
+import org.apache.commons.beanutils.*;
+import com.opensymphony.xwork2.ObjectFactory;
+import ognl.*;
+
+/**  Description of the Class */
+public class ScopedModelDrivenInterceptorTest extends TestCase {
+
+    protected ScopedModelDrivenInterceptor inter = null;
+    
+    public ScopedModelDrivenInterceptorTest(String name) throws Exception {
+        super(name);
+    }
+
+
+    public static void main(String args[]) {
+        junit.textui.TestRunner.run(ScopedModelDrivenInterceptorTest.class);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+    
+        inter = new ScopedModelDrivenInterceptor();
+    }
+
+
+
+
+    public void testResolveModel() throws Exception {
+        ObjectFactory factory = ObjectFactory.getObjectFactory();
+        Object obj = inter.resolveModel(factory, null, "java.lang.String", 
"request", null);
+        assertNotNull(obj);
+        assertTrue(obj instanceof String);
+
+        HashMap session = new HashMap();
+        obj = inter.resolveModel(factory, session, "java.lang.String", 
"session", "foo");
+        assertNotNull(obj);
+        assertTrue(obj instanceof String);
+        assertTrue(obj == session.get("foo"));
+
+        obj = inter.resolveModel(factory, session, "java.lang.String", 
"session", "foo");
+        assertNotNull(obj);
+        assertTrue(obj instanceof String);
+        assertTrue(obj == session.get("foo"));
+    }
+}
+

Added: 
struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/StrutsFactoryTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/StrutsFactoryTest.java?view=auto&rev=449344
==============================================================================
--- 
struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/StrutsFactoryTest.java
 (added)
+++ 
struts/struts2/trunk/legacy/src/test/java/org/apache/struts2/legacy/StrutsFactoryTest.java
 Sat Sep 23 19:27:41 2006
@@ -0,0 +1,231 @@
+package org.apache.struts2.legacy;
+
+import junit.framework.*;
+import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider;
+import com.opensymphony.xwork2.config.ConfigurationManager;
+import com.opensymphony.xwork2.config.Configuration;
+import com.opensymphony.xwork2.config.ConfigurationProvider;
+import com.opensymphony.xwork2.config.entities.PackageConfig;
+import com.opensymphony.xwork2.config.entities.ResultConfig;
+import com.opensymphony.xwork2.config.entities.ExceptionMappingConfig;
+import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts.action.*;
+import org.apache.struts.config.*;
+import org.apache.struts2.config.StrutsXMLConfigurationProvider;
+
+import java.io.InputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+
+/**
+ * Test of StrutsFactory, which creates Struts 1.x wrappers around XWork 
config objects.
+ */
+public class StrutsFactoryTest extends TestCase {
+
+    private static final String PACKAGE_NAME = "org/apache/struts2/legacy";
+    
+    protected StrutsFactory factory = null;
+    protected Configuration config;
+
+    public StrutsFactoryTest(String name) throws Exception {
+        super(name);
+    }
+
+
+    public static void main(String args[]) {
+        junit.textui.TestRunner.run(StrutsFactoryTest.class);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() {
+        ConfigurationManager manager = new ConfigurationManager();
+        ConfigurationProvider provider = new 
StrutsXMLConfigurationProvider(PACKAGE_NAME + "/test-struts-factory.xml", true);
+        manager.addConfigurationProvider(provider);
+        config = manager.getConfiguration();
+        factory = new StrutsFactory(config);
+    }
+
+    /**
+     * Test the creation of a Struts 1.x ModuleConfig wrapper around an XWork 
PackageConfig.
+     * The PackageConfig is loaded from test-struts-factory.xml.
+     */
+    public void testCreateModuleConfig() {
+        ModuleConfig moduleConfig = factory.createModuleConfig(PACKAGE_NAME);
+        assertNotNull(moduleConfig);
+        
+        assertEquals("/"+PACKAGE_NAME, moduleConfig.getPrefix());
+        
+        ActionConfig actionConfig = moduleConfig.findActionConfig("/action1");
+        assertNotNull(actionConfig);
+        assertEquals("/action1", actionConfig.getPath());
+        
+        ActionConfig[] actionConfigs = moduleConfig.findActionConfigs();
+        assertNotNull(actionConfigs);
+        assertEquals(2, actionConfigs.length);
+        
+        ExceptionConfig exceptionConfig = 
moduleConfig.findExceptionConfig(Exception.class.getName());
+        assertNotNull(exceptionConfig);
+        assertEquals(Exception.class.getName(), exceptionConfig.getType());
+        
+        ExceptionConfig[] exceptionConfigs = 
moduleConfig.findExceptionConfigs();
+        assertNotNull(exceptionConfigs);
+        assertEquals(1, exceptionConfigs.length);
+        
+        ForwardConfig fwdConfig = 
moduleConfig.findForwardConfig("globalResult");
+        assertNotNull(fwdConfig);
+        assertEquals("globalResult", fwdConfig.getName());
+        
+        // These methods are currently not implemented -- replace as 
functionality is added.
+        assertNYI(moduleConfig, "getControllerConfig", null);
+        assertNYI(moduleConfig, "getActionFormBeanClass", null);
+        assertNYI(moduleConfig, "getActionMappingClass", null);
+        assertNYI(moduleConfig, "getActionForwardClass", null);
+        assertNYI(moduleConfig, "findException", Class.class);
+        assertNYI(moduleConfig, "findFormBeanConfig", String.class);
+        assertNYI(moduleConfig, "findFormBeanConfigs", null);
+        assertNYI(moduleConfig, "findMessageResourcesConfig", String.class);
+        assertNYI(moduleConfig, "findMessageResourcesConfigs", null);
+        assertNYI(moduleConfig, "findPlugInConfigs", null);
+    }
+    
+    /**
+     * Test the creation of a Struts 1.x ActionMapping wrapper around an XWork 
ActionConfig.
+     * The ActionConfig is loaded from test-struts-factory.xml.
+     */
+    public void testCreateActionMapping() {
+        PackageConfig packageConfig = config.getPackageConfig(PACKAGE_NAME);
+        com.opensymphony.xwork2.config.entities.ActionConfig actionConfig =
+                (com.opensymphony.xwork2.config.entities.ActionConfig) 
packageConfig.getActionConfigs().get("action1");
+        ActionMapping mapping = factory.createActionMapping(actionConfig);
+        assertNotNull(mapping);
+
+        assertNotNull(mapping.findForward("result1"));
+        assertNotNull(mapping.findForwardConfig("result2"));
+
+        ForwardConfig[] configs = mapping.findForwardConfigs();
+        assertNotNull(configs);
+        assertEquals(2, configs.length);
+
+        String[] forwards = mapping.findForwards();
+        assertNotNull(forwards);
+        assertEquals(2, forwards.length);
+        
+        ActionForward fwd = mapping.findForward("result1");
+        assertNotNull(fwd);
+        assertEquals("result1", fwd.getName());
+
+        assertNotNull(mapping.findException(NullPointerException.class));
+        
assertNotNull(mapping.findExceptionConfig("java.lang.IllegalStateException"));
+
+        ExceptionConfig[] exceptionConfigs = mapping.findExceptionConfigs();
+        assertNotNull(exceptionConfigs);
+        assertEquals(3, exceptionConfigs.length);
+        
+        ModuleConfig moduleConfig = mapping.getModuleConfig();
+        assertNotNull(moduleConfig);
+        
+        // For now, the path will be null if the ActionMapping was created on 
its own (as opposed to from a
+        // WrapperModuleConfig, which knows the path).
+        assertNull(mapping.getPath());
+        
+        // These methods are currently not implemented -- replace as 
functionality is added.
+        assertNYI(mapping, "getInputForward", null);
+        assertNYI(mapping, "getAttribute", null);
+        assertNYI(mapping, "getForward", null);
+        assertNYI(mapping, "getInclude", null);
+        assertNYI(mapping, "getInput", null);
+        assertNYI(mapping, "getMultipartClass", null);
+        assertNYI(mapping, "getName", null);
+        assertNYI(mapping, "getParameter", null);
+        assertNYI(mapping, "getPrefix", null);
+        assertNYI(mapping, "getRoles", null);
+        assertNYI(mapping, "getRoleNames", null);
+        assertNYI(mapping, "getScope", null);
+        assertNYI(mapping, "getSuffix", null);
+        assertNYI(mapping, "getType", null);
+        assertNYI(mapping, "getUnknown", null);
+        assertNYI(mapping, "getValidate", null);
+    }
+
+    /**
+     * Test the creation of a Struts 1.x ActionForward wrapper around an XWork 
ResultConfig.
+     * The ResultConfig is loaded from test-struts-factory.xml.
+     */
+    public void testCreateActionForward() {
+        PackageConfig packageConfig = config.getPackageConfig(PACKAGE_NAME);
+        ResultConfig resultConfig = (ResultConfig) 
packageConfig.getGlobalResultConfigs().get("globalResult");
+        ActionForward fwd = factory.createActionForward(resultConfig);
+        assertNotNull(fwd);
+        assertEquals("globalResult", fwd.getName());
+        
+        // These methods are currently not implemented -- replace as 
functionality is added.
+        assertNYI(fwd, "getPath", null);
+        assertNYI(fwd, "getModule", null);
+        assertNYI(fwd, "getRedirect", null);
+    }
+
+    /**
+     * Test the creation of a Struts 1.x ExceptionConfig wrapper around an 
XWork ExceptionHandlerConfig.
+     * The ExceptionConfig is loaded from test-struts-factory.xml.
+     */
+    public void testCreateExceptionConfig() {
+        PackageConfig packageConfig = config.getPackageConfig(PACKAGE_NAME);
+        ExceptionMappingConfig cfg = (ExceptionMappingConfig) 
packageConfig.getGlobalExceptionMappingConfigs().get(0);
+        ExceptionConfig exceptionConfig = factory.createExceptionConfig(cfg);
+        assertNotNull(exceptionConfig);
+        assertEquals(Exception.class.getName(), exceptionConfig.getType());
+
+        assertNYI(exceptionConfig, "getBundle", null);
+        assertNYI(exceptionConfig, "getHandler", null);
+        assertNYI(exceptionConfig, "getKey", null);
+        assertNYI(exceptionConfig, "getPath", null);
+        assertNYI(exceptionConfig, "getScope", null);
+    }
+
+    public void testConvertErrors() throws Exception {
+
+        ActionMessage err1 = new ActionMessage("error1");
+        ActionMessage err2 = new ActionMessage("error2", new Integer(1));
+        ActionErrors errors = new ActionErrors();
+        errors.add(errors.GLOBAL_MESSAGE, err1);
+        errors.add("foo", err2);
+
+        ActionSupport action = new ActionSupport();
+        factory.convertErrors(errors, action);
+
+        assertTrue(1 == action.getActionErrors().size());
+        assertTrue(1 == action.getFieldErrors().size());
+    }
+
+    /**
+     * Assert that the given method throws UnsupportedOperationException.
+     */
+    private void assertNYI(Object o, String methodName, Class argType) {
+        try {
+            Class[] argTypes = argType != null ? new Class[]{argType} : null;
+            
+            Object[] args = null;
+            if (argType != null) {
+                if (Class.class == argType) {
+                    args = new Object[]{argType};
+                } else {
+                    args = new Object[]{argType.newInstance()};
+                }
+            }
+            o.getClass().getMethod(methodName, argTypes).invoke(o, args);
+        } catch (InvocationTargetException e) {
+            Throwable cause = e.getCause();
+            assertEquals(cause.getMessage(), 
UnsupportedOperationException.class, cause.getClass());
+            
+            // OK -- it's what we expected
+            return;
+        } catch (Exception e) {
+            fail(e.getClass().getName() + ": " + e.getMessage());
+        }
+
+        fail("Expected UnsupportedOperationException for " + methodName + "() 
on " + o.getClass().getName());
+    }
+}

Copied: 
struts/struts2/trunk/legacy/src/test/resources/org/apache/struts2/legacy/test-struts-factory.xml
 (from r449318, 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/test-struts-factory.xml)
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/legacy/src/test/resources/org/apache/struts2/legacy/test-struts-factory.xml?view=diff&rev=449344&p1=struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/test-struts-factory.xml&r1=449318&p2=struts/struts2/trunk/legacy/src/test/resources/org/apache/struts2/legacy/test-struts-factory.xml&r2=449344
==============================================================================
--- 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/test-struts-factory.xml
 (original)
+++ 
struts/struts2/trunk/legacy/src/test/resources/org/apache/struts2/legacy/test-struts-factory.xml
 Sat Sep 23 19:27:41 2006
@@ -1,11 +1,14 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" 
"http://www.opensymphony.com/xwork/xwork-1.1.dtd";>
+<?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";>
         
 <!-- Used by the TestStrutsFactory TestCase. -->
-<xwork>
-  <package name="/org/apache/ti/legacy" namespace="/org/apache/ti/legacy">
+<struts>
+  <package name="org/apache/struts2/legacy" 
namespace="/org/apache/struts2/legacy">
     <result-types>
-      <result-type 
class="com.opensymphony.webwork.dispatcher.ServletDispatcherResult" 
name="servletDispatcherResult"/>
+      <result-type 
class="org.apache.struts2.dispatcher.ServletDispatcherResult" 
name="servletDispatcherResult"/>
     </result-types>
     <global-results>
       <result name="globalResult" type="servletDispatcherResult">
@@ -18,7 +21,7 @@
         exception="java.lang.Exception"
         result="globalResult"/>
     </global-exception-mappings>
-    <action class="com.opensymphony.xwork.ActionSupport" name="action1">
+    <action class="com.opensymphony.xwork2.ActionSupport" name="action1">
       <result name="result1" type="servletDispatcherResult">
         <param name="location">result1.jsp</param>
       </result>
@@ -34,7 +37,7 @@
         exception="java.lang.IllegalStateException"
         result="anotherResult"/>
     </action>
-    <action class="com.opensymphony.xwork.ActionSupport" name="action2"/>
+    <action class="com.opensymphony.xwork2.ActionSupport" name="action2"/>
   </package>
-</xwork>
+</struts>
 

Modified: struts/struts2/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/pom.xml?view=diff&rev=449344&r1=449343&r2=449344
==============================================================================
--- struts/struts2/trunk/pom.xml (original)
+++ struts/struts2/trunk/pom.xml Sat Sep 23 19:27:41 2006
@@ -77,6 +77,7 @@
 
     <modules>
         <module>core</module>
+        <module>legacy</module>
         <!--<module>assembly</module>-->
         <module>api</module>
     </modules>


Reply via email to