a new base action which dispatches using reflection
authoridfx <idfx>
Wed, 10 Sep 2003 20:58:27 +0000 (20:58 +0000)
committeridfx <idfx>
Wed, 10 Sep 2003 20:58:27 +0000 (20:58 +0000)
source/mir/core/ui/action/DispatchAction.java [new file with mode: 0755]
source/mir/core/ui/action/admin/AuthenticationAction.java

diff --git a/source/mir/core/ui/action/DispatchAction.java b/source/mir/core/ui/action/DispatchAction.java
new file mode 100755 (executable)
index 0000000..51ac525
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * DispatchAction.java
+ * 
+ * Copyright (C) 2001, 2002, 2003 The Mir-coders group
+ *
+ * This file is part of Mir.
+ *
+ * Mir is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Mir is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Mir; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * In addition, as a special exception, The Mir-coders gives permission to link
+ * the code of this program with  any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two.  You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries.  If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
+ * If you do not wish to do so, delete this exception statement from your version.
+ */
+package mir.core.ui.action;
+
+import java.lang.reflect.Method;
+
+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;
+
+
+/**
+ * DispatchAction<br>
+ * This Action dispatches a call of execute() to a method with a name defined
+ * as parameter in the action mapping. To use this Action you have to define a 
+ * action mapping in the following way:<br>
+ * 
+ * <code><pre>
+ * <action-mappings>
+ *   <action
+ *      parameter="logon"
+ *      path="/logon"
+ *      type="my.action.MyAction"
+ *   ... 
+ *   />
+ *   </action> 
+ * <action-mappings>
+ * </pre></code><br>
+ * If <code>logon.do</code> is called by the user the method <code>logon()</code>
+ * of the class MyAction is called.
+ * 
+ * 
+ * @version $Id: DispatchAction.java,v 1.1 2003/09/10 20:58:27 idfx Exp $
+ * @author idefix
+ */
+public class DispatchAction extends Action {
+
+       /**
+        * Dispatches to a method with a name defined as parameter of the action mapping.
+        * @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)
+        */
+       public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, 
+               HttpServletRequest request, HttpServletResponse response)
+               throws Exception {
+               String parameter = actionMapping.getParameter();
+               Method method = getClass().getDeclaredMethod(parameter, 
+                       new Class[]{ActionMapping.class, ActionForm.class,
+                       HttpServletRequest.class, HttpServletResponse.class});
+               method.setAccessible(true);
+               return (ActionForward) method.invoke(
+                               this, new Object[]{actionMapping, actionForm, request, response});
+       }
+}
index 55f6022..214eca8 100755 (executable)
@@ -48,13 +48,13 @@ import mir.config.MirPropertiesConfiguration;
 import mir.config.MirPropertiesConfiguration.PropertiesConfigExc;
 import mir.core.model.MirUser;
 import mir.core.service.storage.UserService;
+import mir.core.ui.action.DispatchAction;
 import mir.core.ui.servlet.ServletConstants;
 import mir.util.StringRoutines;
 import mircoders.global.MirGlobal;
 import multex.Failure;
 import net.sf.hibernate.SessionFactory;
 
-import org.apache.struts.action.Action;
 import org.apache.struts.action.ActionForm;
 import org.apache.struts.action.ActionForward;
 import org.apache.struts.action.ActionMapping;
@@ -65,9 +65,9 @@ import org.apache.struts.util.MessageResources;
 /**
  * AuthenticationAction
  * @author idefix
- * @version $Id: AuthenticationAction.java,v 1.1 2003/09/07 16:55:00 idfx Exp $
+ * @version $Id: AuthenticationAction.java,v 1.2 2003/09/10 20:58:27 idfx Exp $
  */
-public class AuthenticationAction extends Action {
+public class AuthenticationAction extends DispatchAction {
        private MirPropertiesConfiguration _configuration;
        
        public AuthenticationAction(){
@@ -78,23 +78,6 @@ public class AuthenticationAction extends Action {
                }
        }
        
-       /**
-        * @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)
-        */
-       public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, 
-               HttpServletRequest request, HttpServletResponse response)
-               throws Exception {
-
-               String param = actionMapping.getParameter();
-               if(param.equals("logon")){
-                       return logon(actionMapping, actionForm, request, response);     
-               }
-               if(param.equals("logoff")){
-                       return logoff(actionMapping, actionForm, request, response);    
-               }
-               return null;
-       }
-       
        private ActionForward logon(ActionMapping actionMapping, ActionForm actionForm, 
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {