[cvs] expresso commit by mtraum: fix bugs with cactus integration

JCorporate Ltd jcorp at jcorp2.servlets.net
Wed Oct 20 22:07:17 PDT 2004


Log Message:
-----------
fix bugs with cactus integration

Modified Files:
--------------
    expresso/expresso-web/expresso/doc:
        ChangeLog.xml
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/test:
        ActionTestServlet.java
        ControllerTestCase.java

Revision Data
-------------
Index: ChangeLog.xml
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/expresso/doc/ChangeLog.xml,v
retrieving revision 1.259
retrieving revision 1.260
diff -Lexpresso-web/expresso/doc/ChangeLog.xml -Lexpresso-web/expresso/doc/ChangeLog.xml -u -r1.259 -r1.260
--- expresso-web/expresso/doc/ChangeLog.xml
+++ expresso-web/expresso/doc/ChangeLog.xml
@@ -5,6 +5,13 @@
   <project name="Expresso">
     <version name="5.6" releaseDate="Not Yet Released">
       <comment>Continued Updates</comment>
+      <package-changes>
+        <package-update package-name="Cactus" version-number="1.6.1" />
+      </package-changes>
+      <bug-fix title="Cactus integration bug fixes">
+        <explanation>Since struts 1.1 integration, cactus integration has not functionioned. This has been fixed.</explanation>
+        <contributor>Mike Traum</contributor>
+      </bug-fix>
       <misc-change title="Removed @deprecated Functions">
         <explanation>Continued removal of depreciated classes and methods that were @deprecated since 5.3</explanation>
         <contributor>Mike Traum</contributor>
Index: ActionTestServlet.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ActionTestServlet.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ActionTestServlet.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ActionTestServlet.java -u -r1.8 -r1.9
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ActionTestServlet.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ActionTestServlet.java
@@ -82,6 +82,7 @@
  * for testing purposes.
  * @author Michael Rimov
  * @version $Revision$ $Date$
+ * @deprecated since v5.6, no longer compatible with Struts 1.1 
  */
 public class ActionTestServlet
         extends ExpressoActionServlet {
Index: ControllerTestCase.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ControllerTestCase.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ControllerTestCase.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ControllerTestCase.java -u -r1.14 -r1.15
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ControllerTestCase.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ControllerTestCase.java
@@ -68,21 +68,25 @@
 import java.net.HttpURLConnection;
 
 import javax.servlet.ServletException;
+import javax.servlet.http.HttpSession;
 
 import org.apache.cactus.ServletTestCase;
 import org.apache.cactus.WebRequest;
 import org.apache.cactus.WebResponse;
 import org.apache.log4j.Category;
 import org.apache.log4j.Logger;
-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.ActionServlet;
+import org.apache.struts.config.ActionConfig;
+import org.apache.struts.util.RequestUtils;
 import org.apache.xpath.XPathAPI;
 import org.w3c.dom.Document;
 import org.w3c.dom.NodeList;
 
 import com.jcorporate.expresso.core.ExpressoConstants;
+import com.jcorporate.expresso.core.controller.Controller;
 import com.jcorporate.expresso.core.controller.ControllerException;
 import com.jcorporate.expresso.core.controller.ControllerResponse;
 import com.jcorporate.expresso.core.db.DBConnectionPool;
@@ -264,16 +268,22 @@
             throws ServletException, IOException,
             Exception {
         try {
-            ActionTestServlet servlet = ActionTestServlet.getInstance(config);
+            ActionServlet servlet = new ActionServlet();
+            servlet.init(config);
 
-            ActionMapping mapping = ConfigManager.getMapping(theClass,
-                    theState);
-            assertTrue("Got a null action mapping.  Possibly incorrect struts-config.xml setup?",
-                    mapping != null);
-
-            ActionForm form = servlet.processActionForm(mapping, this.request);
-
-            Action controller = null;
+            ActionConfig actionConfig = ConfigManager.getActionConfig(theClass, theState);
+            ActionForm form = RequestUtils.createActionForm(request, (ActionMapping) actionConfig, actionConfig.getModuleConfig(), servlet);
+            if (form != null) {
+                if ("request".equals(actionConfig.getScope())) {
+                    request.setAttribute(actionConfig.getAttribute(), form);
+                }
+                else {
+                    HttpSession session = request.getSession();
+                    session.setAttribute(actionConfig.getAttribute(), form);
+                }
+            }
+            
+            Controller controller = null;
 
             try {
                 controller = ConfigManager.getControllerFactory().getController(
@@ -288,7 +298,7 @@
                             controller.getClass().getName());
                 }
 
-                ActionForward forward = controller.perform(mapping, form,
+                ActionForward forward = controller.execute((ActionMapping) actionConfig, form,
                         request, response);
 
                 //null forward may be desired if a custom response had been set


More information about the cvs mailing list