You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by hu...@apache.org on 2004/03/27 19:21:30 UTC
cvs commit: jakarta-commons-sandbox/chain/apps/mailreader/src/java/org/apache/commons/chain/mailreader ActionHelper.java ActionHelperBase.java CommandAction.java
husted 2004/03/27 10:21:30
Modified: chain/apps/mailreader build.xml
chain/apps/mailreader/src/java/org/apache/commons/chain/mailreader
ActionHelper.java ActionHelperBase.java
CommandAction.java
Log:
Extend design of CommandAction
Revision Changes Path
1.2 +5 -0 jakarta-commons-sandbox/chain/apps/mailreader/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/chain/apps/mailreader/build.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- build.xml 25 Mar 2004 12:35:00 -0000 1.1
+++ build.xml 27 Mar 2004 18:21:30 -0000 1.2
@@ -20,6 +20,11 @@
<param name="maven.goal" value="war:webapp" />
</antcall>
</target>
+ <target description="Test classes" name="test">
+ <antcall target="maven">
+ <param name="maven.goal" value="test" />
+ </antcall>
+ </target>
<target description="Build webapp documentation" name="site">
<antcall target="maven">
<param name="maven.goal" value="site" />
1.2 +4 -2 jakarta-commons-sandbox/chain/apps/mailreader/src/java/org/apache/commons/chain/mailreader/ActionHelper.java
Index: ActionHelper.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/chain/apps/mailreader/src/java/org/apache/commons/chain/mailreader/ActionHelper.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ActionHelper.java 27 Mar 2004 03:56:20 -0000 1.1
+++ ActionHelper.java 27 Mar 2004 18:21:30 -0000 1.2
@@ -114,6 +114,8 @@
*/
public Locale getLocale();
+ public void setLocale(Locale locale);
+
/**
* <p>
* The transaction token stored in this session, if it is used.
1.2 +5 -8 jakarta-commons-sandbox/chain/apps/mailreader/src/java/org/apache/commons/chain/mailreader/ActionHelperBase.java
Index: ActionHelperBase.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/chain/apps/mailreader/src/java/org/apache/commons/chain/mailreader/ActionHelperBase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ActionHelperBase.java 27 Mar 2004 03:56:20 -0000 1.1
+++ ActionHelperBase.java 27 Mar 2004 18:21:30 -0000 1.2
@@ -19,7 +19,6 @@
*/
package org.apache.commons.chain.mailreader;
-import org.apache.commons.chain.impl.ContextBase;
import org.apache.struts.Globals;
import org.apache.struts.action.*;
import org.apache.struts.upload.MultipartRequestWrapper;
@@ -135,15 +134,14 @@
* Do not call other methods without setting these first!
* This is also called by the convenience constructor.
*
- * @param application - The associated ServletContext.
* @param request - The associated HTTP request.
* @param response - The associated HTTP response.
*/
public void setResources(
- ServletContext application,
HttpServletRequest request,
HttpServletResponse response) {
+ ServletContext application = request.getSession().getServletContext();
setApplication(application);
setRequest(request);
setResponse(response);
@@ -154,12 +152,11 @@
}
public ActionHelperBase(
- ServletContext application,
HttpServletRequest request,
HttpServletResponse response) {
super();
- this.setResources(application, request, response);
+ this.setResources(request, response);
}
1.3 +88 -6 jakarta-commons-sandbox/chain/apps/mailreader/src/java/org/apache/commons/chain/mailreader/CommandAction.java
Index: CommandAction.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/chain/apps/mailreader/src/java/org/apache/commons/chain/mailreader/CommandAction.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CommandAction.java 27 Mar 2004 03:58:02 -0000 1.2
+++ CommandAction.java 27 Mar 2004 18:21:30 -0000 1.3
@@ -1,12 +1,15 @@
package org.apache.commons.chain.mailreader;
-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.*;
+import org.apache.commons.chain.Catalog;
+import org.apache.commons.chain.Context;
+import org.apache.commons.chain.impl.ContextBase;
+import org.apache.commons.chain.mailreader.commands.MailReader;
+import org.apache.commons.chain.mailreader.commands.MailReaderBase;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.util.Locale;
/**
* <p>
@@ -26,9 +29,88 @@
*/
public class CommandAction extends Action {
- public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
+ /**
+ * <p>
+ * Return the default {@link org.apache.commons.chain.Catalog}.
+ * </p>
+ * @return Default Catalog
+ * @throws java.lang.UnsupportedOperationException if ControllerContext is
+ * null.
+ */
+ public Catalog getCatalog(HttpServletRequest request){
- throw new RuntimeException("TODO: Implement CommandAction");
+ return (Catalog) request.getSession().getServletContext().getAttribute(Catalog.CATALOG_KEY);
+
+ }
+
+ public ViewContext getContext(ActionHelper helper, ActionForm form) {
+
+ Locale locale = helper.getLocale();
+ Context input = getInput(form);
+ return new MailReaderBase(locale,input);
+
+ }
+
+
+ public Context getInput(ActionForm form) {
+ DynaActionForm dyna = (DynaActionForm) form;
+ return new ContextBase(dyna.getMap());
+ }
+
+ public void conformInput(ActionHelper helper, ViewContext context) {
+ Context input = context.getInput();
+ ActionMapping mapping = helper.getMapping();
+ HttpServletRequest request = helper.getRequest();
+ String formScope = mapping.getScope();
+ String name = mapping.getName();
+ if (helper.isRequestScope()) request.setAttribute(name,input);
+ else request.getSession().setAttribute(name,input);
+ }
+
+ public void conformState(ActionHelper helper, ViewContext context) {
+ helper.setLocale(context.getLocale());
}
+ public ActionForward findSuccess(ActionMapping mapping) {
+ return mapping.findForward("success");
+ }
+
+ public ActionForward execute(ActionMapping mapping,
+ ActionForm form,
+ HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+
+ // create ActionHelper
+ ActionHelper helper = new ActionHelperBase(request,response);
+ // return execute(helper); // ContextAction
+
+ // TODO: obtain database reference
+ // forward = preCommand(helper); if (forward!=null) return forward;
+
+ // create mailreader context, using ActionHelper methods
+ ViewContext context = getContext(helper,form);
+
+ // execute command
+ String name = mapping.getName();
+ boolean stop = getCatalog(request).getCommand(name).execute(context);
+
+ // update state from mailreader context
+ conformInput(helper,context);
+ conformState(helper,context);
+
+ // TODO: Expose any output
+ // TODO: Expose any status messages,
+ // TODO: Expose any error messages and find input
+ // location = postCommand(helper,context);
+
+ // find success
+ return helper.findSuccess();
+ }
+
+ // ModuleContext -> state for a module (mappings, messages) : ReadOnly
+ // ClientContext -> runtime input for this request/client (locale,form) : ReadWrite
+ // ActionContext -> ClientState, ModuleState
+
+ // StrutsContext -> state for entire Struts application : ReadWrite
+ // StrutsContext.createActionContext(request);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org