You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by ge...@apache.org on 2005/02/07 02:59:37 UTC

svn commit: r151660 [2/2] - in struts/core/trunk: conf/share/ src/share/org/apache/struts/chain/commands/ src/share/org/apache/struts/chain/commands/servlet/ src/test/org/apache/struts/chain/commands/servlet/

Added: struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/CreateActionForm.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/CreateActionForm.java?view=auto&rev=151660
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/CreateActionForm.java (added)
+++ struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/CreateActionForm.java Sun Feb  6 17:59:31 2005
@@ -0,0 +1,64 @@
+/*
+ * Created on Jan 17, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.apache.struts.chain.commands.servlet;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.action.ActionServlet;
+import org.apache.struts.action.DynaActionForm;
+import org.apache.struts.action.DynaActionFormClass;
+import org.apache.struts.chain.commands.util.ClassUtils;
+import org.apache.struts.chain.contexts.ActionContext;
+import org.apache.struts.chain.contexts.ServletActionContext;
+import org.apache.struts.config.ActionConfig;
+import org.apache.struts.config.FormBeanConfig;
+import org.apache.struts.config.ModuleConfig;
+
+public class CreateActionForm extends
+        org.apache.struts.chain.commands.AbstractCreateActionForm {
+
+    // ------------------------------------------------------ Instance Variables
+    private static final Log log =
+        LogFactory.getLog(CreateActionForm.class);
+
+
+    /* Implement servlet-specific details of creating a new form instance.
+     * @see org.apache.struts.chain.commands.CreateActionForm#createNewFormInstance(org.apache.struts.chain.contexts.ActionContext, org.apache.struts.config.ActionConfig, org.apache.struts.config.FormBeanConfig)
+     */
+    protected ActionForm createNewFormInstance(ActionContext actionCtx,
+            ActionConfig actionConfig, FormBeanConfig formBeanConfig)
+            throws Exception {
+        ActionForm instance;
+        log.trace("Make a new instance of: " + formBeanConfig);
+        // Create a new form bean instance
+        if (formBeanConfig.getDynamic()) {
+            ModuleConfig moduleConfig = actionCtx.getModuleConfig();
+            DynaActionFormClass dynaClass =
+                DynaActionFormClass.createDynaActionFormClass(formBeanConfig);
+            instance = (ActionForm) dynaClass.newInstance();
+            ((DynaActionForm) instance).initialize
+                ((ActionMapping) actionConfig);
+        } else {
+            instance = (ActionForm)
+                ClassUtils.getApplicationInstance(formBeanConfig.getType());
+        }
+
+        // Configure and cache the new instance
+        /** @todo Move this dependency on the Servlet API into a subclass and make this one abstract. 
+         * Then again, ActionForm itself depends on the Servlet API.
+         * */
+        ServletActionContext saContext = (ServletActionContext) actionCtx;
+        ActionServlet servlet = saContext.getActionServlet();
+        instance.setServlet(servlet);
+        actionCtx.setActionForm(instance);
+
+        return instance;
+    }
+
+}

Modified: struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/ExecuteAction.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/ExecuteAction.java?view=diff&r1=151659&r2=151660
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/ExecuteAction.java (original)
+++ struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/ExecuteAction.java Sun Feb  6 17:59:31 2005
@@ -18,13 +18,13 @@
 
 
 import org.apache.commons.chain.Context;
-import org.apache.commons.chain.web.servlet.ServletWebContext;
 import org.apache.struts.action.Action;
 import org.apache.struts.action.ActionForm;
 import org.apache.struts.action.ActionMapping;
 import org.apache.struts.chain.commands.AbstractExecuteAction;
 import org.apache.struts.config.ActionConfig;
 import org.apache.struts.config.ForwardConfig;
+import org.apache.struts.chain.contexts.ServletActionContext;
 
 
 /**
@@ -58,11 +58,11 @@
                                     ActionForm actionForm)
         throws Exception {
 
-        ServletWebContext swcontext = (ServletWebContext) context;
+        ServletActionContext saContext = (ServletActionContext) context;
         return (action.execute((ActionMapping) actionConfig,
                                actionForm,
-                               swcontext.getRequest(),
-                               swcontext.getResponse()));
+                               saContext.getRequest(),
+                               saContext.getResponse()));
 
     }
 

Modified: struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/PerformForward.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/PerformForward.java?view=diff&r1=151659&r2=151660
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/PerformForward.java (original)
+++ struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/PerformForward.java Sun Feb  6 17:59:31 2005
@@ -19,6 +19,7 @@
 
 import javax.servlet.RequestDispatcher;
 import javax.servlet.http.HttpServletRequest;
+
 import org.apache.commons.chain.Context;
 import org.apache.commons.chain.web.servlet.ServletWebContext;
 import org.apache.struts.chain.commands.AbstractPerformForward;

Modified: struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/PerformInclude.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/PerformInclude.java?view=diff&r1=151659&r2=151660
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/PerformInclude.java (original)
+++ struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/PerformInclude.java Sun Feb  6 17:59:31 2005
@@ -20,7 +20,7 @@
 import javax.servlet.RequestDispatcher;
 import javax.servlet.http.HttpServletRequest;
 import org.apache.commons.chain.Context;
-import org.apache.commons.chain.web.servlet.ServletWebContext;
+import org.apache.struts.chain.contexts.ServletActionContext;
 import org.apache.struts.chain.commands.AbstractPerformInclude;
 import org.apache.struts.upload.MultipartRequestWrapper;
 
@@ -48,7 +48,7 @@
     protected void perform(Context context, String uri)
         throws Exception {
 
-        ServletWebContext swcontext = (ServletWebContext) context;
+        ServletActionContext swcontext = (ServletActionContext) context;
         
         // Get the underlying request in the case of a multipart wrapper
         HttpServletRequest request = swcontext.getRequest();

Modified: struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/PopulateActionForm.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/PopulateActionForm.java?view=diff&r1=151659&r2=151660
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/PopulateActionForm.java (original)
+++ struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/PopulateActionForm.java Sun Feb  6 17:59:31 2005
@@ -17,16 +17,16 @@
 package org.apache.struts.chain.commands.servlet;
 
 
-import org.apache.commons.chain.Context;
-import org.apache.commons.chain.web.servlet.ServletWebContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.struts.Globals;
 import org.apache.struts.action.ActionForm;
 import org.apache.struts.action.ActionMapping;
 import org.apache.struts.chain.commands.AbstractPopulateActionForm;
+import org.apache.struts.chain.contexts.ActionContext;
+import org.apache.struts.chain.contexts.ServletActionContext;
 import org.apache.struts.config.ActionConfig;
 import org.apache.struts.util.RequestUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 /**
  * <p>Populate the form bean (if any) for this request.  Sets the multipart
@@ -43,28 +43,26 @@
     // ------------------------------------------------------- Protected Methods
 
 
-    protected void populate(Context context,
+    protected void populate(ActionContext context,
                          ActionConfig actionConfig,
                          ActionForm actionForm) throws Exception
     {
-        ServletWebContext swcontext = (ServletWebContext) context;
-        RequestUtils.populate(actionForm, actionConfig.getPrefix(), actionConfig.getSuffix(), swcontext.getRequest());
+        ServletActionContext saContext = (ServletActionContext) context;
+        RequestUtils.populate(actionForm, actionConfig.getPrefix(), actionConfig.getSuffix(), saContext.getRequest());
     }
 
-    protected void reset(Context context,
+    protected void reset(ActionContext context,
                          ActionConfig actionConfig,
                          ActionForm actionForm) {
 
-        ServletWebContext swcontext = (ServletWebContext) context;
-        actionForm.reset((ActionMapping) actionConfig, swcontext.getRequest());
+        ServletActionContext saContext = (ServletActionContext) context;
+        actionForm.reset((ActionMapping) actionConfig, saContext.getRequest());
 
         // Set the multipart class
         if (actionConfig.getMultipartClass() != null) {
-            swcontext.getRequestScope().put(Globals.MULTIPART_KEY,
+            saContext.getRequestScope().put(Globals.MULTIPART_KEY,
                                  actionConfig.getMultipartClass());
         }
 
     }
-
-
 }

Modified: struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/RequestNoCache.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/RequestNoCache.java?view=diff&r1=151659&r2=151660
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/RequestNoCache.java (original)
+++ struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/RequestNoCache.java Sun Feb  6 17:59:31 2005
@@ -19,8 +19,8 @@
 
 import javax.servlet.http.HttpServletResponse;
 import org.apache.commons.chain.Context;
-import org.apache.commons.chain.web.servlet.ServletWebContext;
 import org.apache.struts.chain.commands.AbstractRequestNoCache;
+import org.apache.struts.chain.contexts.ServletActionContext;
 
 
 /**
@@ -38,8 +38,8 @@
 
     protected void requestNoCache(Context context) {
 
-        ServletWebContext swcontext = (ServletWebContext) context;
-        HttpServletResponse response = swcontext.getResponse();
+        ServletActionContext sacontext = (ServletActionContext) context;
+        HttpServletResponse response = sacontext.getResponse();
         
         response.setHeader("Pragma", "No-cache");
         response.setHeader("Cache-Control", "no-cache,no-store,max-age=0");

Modified: struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/SelectAction.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/SelectAction.java?view=diff&r1=151659&r2=151660
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/SelectAction.java (original)
+++ struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/SelectAction.java Sun Feb  6 17:59:31 2005
@@ -19,10 +19,10 @@
 
 import javax.servlet.http.HttpServletRequest;
 import org.apache.commons.chain.Context;
-import org.apache.commons.chain.web.servlet.ServletWebContext;
 import org.apache.struts.chain.commands.AbstractSelectAction;
 import org.apache.struts.chain.Constants;
 import org.apache.struts.config.ModuleConfig;
+import org.apache.struts.chain.contexts.ServletActionContext;
 
 
 /**
@@ -40,8 +40,8 @@
 
     protected String getPath(Context context) {
 
-        ServletWebContext swcontext = (ServletWebContext) context;
-        HttpServletRequest request = swcontext.getRequest();
+        ServletActionContext saContext = (ServletActionContext) context;
+        HttpServletRequest request = saContext.getRequest();
         String path = null;
         boolean extension = false;
 
@@ -66,8 +66,7 @@
         }
 
         // Strip the module prefix and extension (if any)
-        ModuleConfig moduleConfig = (ModuleConfig)
-            swcontext.get(getModuleConfigKey());
+        ModuleConfig moduleConfig = saContext.getModuleConfig();
         String prefix = moduleConfig.getPrefix();
         if (!path.startsWith(prefix)) {
             throw new IllegalArgumentException("Path does not start with '" +

Modified: struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/SelectLocale.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/SelectLocale.java?view=diff&r1=151659&r2=151660
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/SelectLocale.java (original)
+++ struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/SelectLocale.java Sun Feb  6 17:59:31 2005
@@ -20,9 +20,11 @@
 import java.util.Locale;
 import javax.servlet.http.HttpSession;
 import org.apache.commons.chain.Context;
-import org.apache.commons.chain.web.servlet.ServletWebContext;
 import org.apache.struts.Globals;
 import org.apache.struts.chain.commands.AbstractSelectLocale;
+import org.apache.struts.chain.contexts.ServletActionContext;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.logging.Log;
 
 
 /**
@@ -34,6 +36,8 @@
 public class SelectLocale extends AbstractSelectLocale {
 
 
+    private static final Log log = LogFactory.getLog(SelectLocale.class);
+
     // ------------------------------------------------------- Protected Methods
 
 
@@ -44,17 +48,17 @@
      */
     protected Locale getLocale(Context context) {
 
-        ServletWebContext swcontext = (ServletWebContext) context;
+        ServletActionContext saContext = (ServletActionContext) context;
 
         // Has a Locale already been selected?
-        HttpSession session = swcontext.getRequest().getSession();
+        HttpSession session = saContext.getRequest().getSession();
         Locale locale = (Locale) session.getAttribute(Globals.LOCALE_KEY);
         if (locale != null) {
             return (locale);
         }
 
         // Select and cache the Locale to be used
-        locale = swcontext.getRequest().getLocale();
+        locale = saContext.getRequest().getLocale();
         if (locale == null) {
             locale = Locale.getDefault();
         }

Modified: struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/SetContentType.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/SetContentType.java?view=diff&r1=151659&r2=151660
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/SetContentType.java (original)
+++ struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/SetContentType.java Sun Feb  6 17:59:31 2005
@@ -19,8 +19,8 @@
 
 import javax.servlet.http.HttpServletResponse;
 import org.apache.commons.chain.Context;
-import org.apache.commons.chain.web.servlet.ServletWebContext;
 import org.apache.struts.chain.commands.AbstractSetContentType;
+import org.apache.struts.chain.contexts.ServletActionContext;
 
 
 /**
@@ -39,7 +39,7 @@
 
     protected void setContentType(Context context, String contentType) {
 
-        ServletWebContext swcontext = (ServletWebContext) context;
+        ServletActionContext swcontext = (ServletActionContext) context;
         HttpServletResponse response = swcontext.getResponse();
         
         response.setContentType(contentType);

Modified: struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/ValidateActionForm.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/ValidateActionForm.java?view=diff&r1=151659&r2=151660
==============================================================================
--- struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/ValidateActionForm.java (original)
+++ struts/core/trunk/src/share/org/apache/struts/chain/commands/servlet/ValidateActionForm.java Sun Feb  6 17:59:31 2005
@@ -18,15 +18,14 @@
 
 
 import org.apache.commons.chain.Context;
-import org.apache.commons.chain.web.servlet.ServletWebContext;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.struts.action.ActionErrors;
 import org.apache.struts.action.ActionForm;
 import org.apache.struts.action.ActionMapping;
 import org.apache.struts.chain.commands.AbstractValidateActionForm;
+import org.apache.struts.chain.contexts.ServletActionContext;
 import org.apache.struts.config.ActionConfig;
-import org.apache.struts.Globals;
 
 
 /**
@@ -63,9 +62,9 @@
                                     ActionConfig actionConfig,
                                     ActionForm actionForm) {
 
-        ServletWebContext swcontext = (ServletWebContext) context;
+        ServletActionContext saContext = (ServletActionContext) context;
         ActionErrors errors = (actionForm.validate((ActionMapping) actionConfig,
-                                    swcontext.getRequest()));
+                                    saContext.getRequest()));
 
         // Special handling for multipart request
         if (errors != null && !errors.isEmpty()) {
@@ -76,13 +75,6 @@
                 actionForm.getMultipartRequestHandler().rollback();
             }
         }
-
-        // Saving the errors is not part of the contract for this method,
-        // but the idea of the HttpServletRequest is not present in the
-        // abstract parent of this class.  Put this in now so that it
-        // at least gets done -- and then see if other developers have
-        // opinions about whether this is good, bad, or at least acceptable.
-        swcontext.getRequest().setAttribute(Globals.ERROR_KEY, errors);
 
         return errors;
 

Added: struts/core/trunk/src/test/org/apache/struts/chain/commands/servlet/TestAuthorizeAction.java
URL: http://svn.apache.org/viewcvs/struts/core/trunk/src/test/org/apache/struts/chain/commands/servlet/TestAuthorizeAction.java?view=auto&rev=151660
==============================================================================
--- struts/core/trunk/src/test/org/apache/struts/chain/commands/servlet/TestAuthorizeAction.java (added)
+++ struts/core/trunk/src/test/org/apache/struts/chain/commands/servlet/TestAuthorizeAction.java Sun Feb  6 17:59:31 2005
@@ -0,0 +1,108 @@
+package org.apache.struts.chain.commands.servlet;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.chain.web.servlet.ServletWebContext;
+import org.apache.struts.chain.commands.UnauthorizedActionException;
+import org.apache.struts.chain.contexts.ServletActionContext;
+import org.apache.struts.config.ActionConfig;
+import org.apache.struts.mock.MockActionServlet;
+import org.apache.struts.mock.MockHttpServletRequest;
+import org.apache.struts.mock.MockHttpServletResponse;
+import org.apache.struts.mock.MockPrincipal;
+import org.apache.struts.mock.MockServletConfig;
+import org.apache.struts.mock.MockServletContext;
+
+/* JUnitTest case for class: org.apache.struts.chain.commands.servlet.AuthorizeAction */
+public class TestAuthorizeAction extends TestCase {
+
+    MockHttpServletRequest request = null;
+    MockPrincipal principal = null;
+
+    ServletWebContext swContext = null;
+    ServletActionContext saContext = null;
+    AuthorizeAction command = null;
+
+    public TestAuthorizeAction(String _name) {
+        super(_name);
+    }
+
+
+    /* setUp method for test case */
+    protected void setUp() throws Exception {
+        this.request = new MockHttpServletRequest();
+        this.principal = new MockPrincipal("Mr. Macri", new String[]{ "administrator" });
+        this.request.setUserPrincipal(principal);
+        MockServletConfig servletConfig = new MockServletConfig();
+        MockServletContext servletContext = new MockServletContext();
+        MockActionServlet servlet = new MockActionServlet(servletContext, servletConfig);
+        servlet.initInternal();
+
+        this.swContext = new ServletWebContext(servletContext, request, new MockHttpServletResponse());
+        this.saContext = new ServletActionContext(swContext);
+
+        this.saContext.setActionServlet(servlet);
+        this.command = new AuthorizeAction();
+    }
+
+    /* tearDown method for test case */
+    protected void tearDown() {
+    }
+
+    public void testAuthorizeOneRole() throws Exception {
+        ActionConfig config = new ActionConfig();
+        config.setPath("/testAuthorizeOneRole");
+        config.setRoles("administrator");
+        this.saContext.setActionConfig(config);
+        boolean result = command.execute(saContext);
+        assertFalse(result);
+    }
+
+    public void testAuthorizeOneOfManyRoles() throws Exception {
+        ActionConfig config = new ActionConfig();
+        config.setPath("/testAuthorizeOneOfManyRoles");
+        config.setRoles("administrator,roustabout,memory");
+        this.saContext.setActionConfig(config);
+        boolean result = command.execute(saContext);
+        assertFalse(result);
+    }
+
+    public void testAuthorizeNoRoles() throws Exception {
+        ActionConfig config = new ActionConfig();
+        config.setPath("/testAuthorizeNoRoles");
+        this.saContext.setActionConfig(config);
+        boolean result = command.execute(saContext);
+        assertFalse(result);
+    }
+
+    public void testNotAuthorizedOneRole() throws Exception {
+        ActionConfig config = new ActionConfig();
+        config.setPath("/testNotAuthorizedOneRole");
+        config.setRoles("roustabout");
+        this.saContext.setActionConfig(config);
+        try {
+            boolean result = command.execute(saContext);
+        }
+        catch (UnauthorizedActionException ex) {
+        }
+    }
+
+    public void testNotAuthorizedOneOfManyRoles() throws Exception {
+        ActionConfig config = new ActionConfig();
+        config.setPath("/testNotAuthorizedOneOfManyRoles");
+        config.setRoles("roustabout,memory");
+        this.saContext.setActionConfig(config);
+        try {
+            boolean result = command.execute(saContext);
+        }
+        catch (UnauthorizedActionException ex) {
+        }
+    }
+
+
+    /* Executes the test case */
+    public static void main(String[] argv) {
+        String[] testCaseList = {TestAuthorizeAction.class.getName()};
+        junit.textui.TestRunner.main(testCaseList);
+    }
+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org