[cvs] expresso commit by rimovm: Fixed issue with

JCorporate Ltd jcorp at jcorporate.com
Sat May 7 06:29:17 UTC 2005


Log Message:
-----------
Fixed issue with newState(String,ExpressoRequest) being recognized as legitimate state handler.

Modified Files:
--------------
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller:
        Controller.java
        Input.java
        Output.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/test:
        ControllerTestFixture.java

Revision Data
-------------
Index: Output.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Output.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Output.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Output.java -u -r1.13 -r1.14
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Output.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Output.java
@@ -160,6 +160,7 @@
      * Deep copy clone the object
      *
      * @return Copy of this current output
+     * @throws CloneNotSupportedException upon cloning error.
      */
     public Object clone()
             throws CloneNotSupportedException {
Index: Controller.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Controller.java,v
retrieving revision 1.114
retrieving revision 1.115
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Controller.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Controller.java -u -r1.114 -r1.115
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Controller.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Controller.java
@@ -231,6 +231,11 @@
         com.jcorporate.expresso.core.controller.ControllerRequest.class
     };
 
+    private static final Class[] newStateParamsWithInterface = {
+        java.lang.String.class,
+        com.jcorporate.expresso.core.controller.ExpressoRequest.class
+    };
+
     /**
      * Used for state interface handlers.
      */
@@ -735,7 +740,7 @@
      * @throws ServletException upon fatal error for handling the exception
      */
     protected void handleException(HttpServletRequest req,
-        ControllerRequest creq, String dbName,
+        ExpressoRequest creq, String dbName,
         String userName, Throwable theException) throws ServletException {
         if (StringUtil.notNull(dbName).equals("")) {
             dbName = "default";
@@ -904,8 +909,8 @@
     /* Stash the original URL that we asked for in the session,
      * so that if we log in and want to try again, it's available
      */
-    protected void addRequestedURLtoSession(HttpServletRequest req,
-        ControllerRequest creq) throws ControllerException {
+    protected void addRequestedURLtoSession(final HttpServletRequest req
+        , final ExpressoRequest creq) throws ControllerException {
         PersistentSession session = creq.getSession();
 
         if (session != null) {
@@ -921,7 +926,7 @@
      * @param req the servlet request
      * @return String the request URL
      */
-    protected String getRequestURL(HttpServletRequest req) {
+    protected String getRequestURL(final HttpServletRequest req) {
         String origUrl = StringUtil.notNull(req.getRequestURI());
 
         if (req.getQueryString() != null) {
@@ -939,7 +944,7 @@
      * @throws ControllerException upon error.
      */
     protected void addRegDomainParamtoSession(HttpServletRequest req,
-        ControllerRequest creq,
+        ExpressoRequest creq,
         String regDomain) throws ControllerException {
         PersistentSession session = creq.getSession();
 
@@ -1086,8 +1091,9 @@
      * @throws ControllerException
      * @throws NonHandleableException
      */
-    public ControllerResponse newState(String newState, final ControllerRequest request) throws ControllerException, NonHandleableException {
-        return (ControllerResponse)newExpressoState(newState, request);
+    public ControllerResponse newState(String newState, final ControllerRequest request) throws ControllerException
+        , NonHandleableException {
+        return (ControllerResponse) newExpressoState(newState, request);
     }
 
     /**
@@ -1108,7 +1114,8 @@
      * @throws NonHandleableException if the error should not be handled
      *                                by an error controller
      */
-    public ExpressoResponse newExpressoState(String newState, final ExpressoRequest myRequest) throws ControllerException,
+    public ExpressoResponse newExpressoState(String newState
+        , final ExpressoRequest myRequest) throws ControllerException,
         NonHandleableException {
         newState = StringUtil.notNull(newState);
 
@@ -1118,7 +1125,7 @@
         }
         if (newState.length() == 0) {
             if (getInitialState() != null) {
-                return newState(getInitialState(), (ControllerRequest)myRequest);
+                return newState(getInitialState(), (ControllerRequest) myRequest);
             } else {
                 throw new ControllerException("You must specify a " +
                     "non-blank state. No default initial state is specified.");
@@ -1145,7 +1152,7 @@
         if (!newState.equals("")) {
 
             try {
-                if (controllerSecurityTransition == null && !stateAllowed(newState, (ControllerRequest)myRequest)) {
+                if (controllerSecurityTransition == null && !stateAllowed(newState, (ControllerRequest) myRequest)) {
                     DelayThread.delay();
                     throw new SecurityException("State '" +
                         nextState.getDescription() +
@@ -1201,7 +1208,7 @@
                 //Any return to sender transitions while in 'final mode' will return to the 'final' state.
                 myRequest.setParameter(RETURN_TO_SENDER_TRAN, returnToSender);
 
-                ExpressoResponse statusResponse = newState(oneHandleState.getName(),(ControllerRequest)myRequest);
+                ExpressoResponse statusResponse = newState(oneHandleState.getName(), (ControllerRequest) myRequest);
 
                 if (!statusResponse.getCurrentState().getName().equals(oneHandleState.getName())) {
                     return statusResponse; //The handler didn't return cleanly so bail out.
@@ -1353,10 +1360,18 @@
             } catch (NoSuchMethodException nsme) {
                 try {
 
-// test to see if this method exists in thisClass
-                    thisClass.getDeclaredMethod("newState",
-                        newStateParams);
-
+                    // test to see if this method exists in thisClass
+                    //If newState exists as either (String,ControllerRequest)
+                    //or (String,ExpressoRequest) AND IS PUBLIC
+                    //then it will be invoked next.  Otherwise, we have
+                    //to throw an exception.
+                    try {
+                        thisClass.getMethod("newState",
+                            newStateParams);
+                    } catch(NoSuchMethodException ex2) {
+                        thisClass.getMethod("newState",
+                            newStateParamsWithInterface);
+                    }
 // it does exist, since no exception thrown.  give feedback
                     if (log.isDebugEnabled()) {
                         log.debug("Method '" + nextState.getHandlerName() +
@@ -2127,7 +2142,8 @@
 
             // Retrieve the final action forward derived from the
             // controller state method
-            ActionForward fwd = getActionForward((ServletControllerRequest)req, finalConfig, (ServletControllerResponse)res);
+            ActionForward fwd = getActionForward((ServletControllerRequest) req, finalConfig
+                , (ServletControllerResponse) res);
 
             if (log.isInfoEnabled()) {
                 endTimer(beginTimer, request);
@@ -2432,8 +2448,8 @@
      * @param request   The source of the variables for the state form.
      * @throws ControllerException upon <code>BeanUtils.populate()</code> error
      */
-    protected void populateStateForm(StateForm stateForm,
-        ControllerRequest request) throws ControllerException {
+    protected void populateStateForm(final StateForm stateForm
+        , final ExpressoRequest request) throws ControllerException {
         try {
             BeanUtils.populate(stateForm, request.getAllParameters());
         } catch (Exception e) {
@@ -2450,7 +2466,7 @@
      * @param nextState The state to check against
      * @return the previous prompt state
      */
-    protected String previousPromptState(State nextState) {
+    protected String previousPromptState(final State nextState) {
         String previousPrompt = null;
         int i = promptStates.indexOf(nextState);
 
@@ -2773,9 +2789,9 @@
      * @throws NonHandleableException upon fatal error
      */
     public ExpressoResponse setCurrentState(String newState,
-        ControllerRequest params) throws ControllerException,
+        ExpressoRequest params) throws ControllerException,
         NonHandleableException {
-        return newState(newState, params);
+        return newState(newState, (ControllerRequest)params);
     }
 
 
@@ -2990,7 +3006,7 @@
                 "' in controller '" + getClass().getName() + "'");
         }
 
-        ExpressoResponse newResponse = newState(newState, (ControllerRequest)req);
+        ExpressoResponse newResponse = newState(newState, (ControllerRequest) req);
 
         if (clear) {
             res.clearOutputCache();
@@ -3092,9 +3108,8 @@
      * @param redirectURL The URL to redirect the browser to.
      * @throws IOException upon redirect error.
      */
-    public void redirectRequest(ControllerRequest request,
-        ControllerResponse response,
-        String redirectURL) throws IOException {
+    public void redirectRequest(final ExpressoRequest request, final ExpressoResponse response
+        , final String redirectURL) throws IOException {
         response.setCustomResponse(true); // tell expresso not to forward to jsp after finishing controller method
         ServletControllerRequest sr = (ServletControllerRequest) request;
         HttpServletResponse httpResponse = (HttpServletResponse) sr.getServletResponse();
@@ -3111,8 +3126,7 @@
      * @param isSecure  should the request be secure.
      * @return true if this state should be toggled for protocol
      */
-    private boolean checkSsl(HttpServletRequest aRequest,
-        HttpServletResponse aResponse,
+    private boolean checkSsl(final HttpServletRequest aRequest, final HttpServletResponse aResponse,
         boolean isSecure) {
 
         String redirectString = null;
@@ -3174,7 +3188,7 @@
      * @param request The request we are processing
      * @return transaction token usually cryptographically created
      */
-    protected String generateToken(ControllerRequest request) {
+    protected String generateToken(final ExpressoRequest request) {
         if (request instanceof ServletControllerRequest) {
             ServletControllerRequest scr = (ServletControllerRequest) request;
             return super.generateToken((HttpServletRequest) scr.getServletRequest());
@@ -3204,7 +3218,7 @@
      * @see #resetToken
      * @see #saveToken
      */
-    protected boolean isTokenValid(ControllerRequest request) {
+    protected boolean isTokenValid(final ExpressoRequest request) {
         if (request instanceof ServletControllerRequest) {
             ServletControllerRequest scr = (ServletControllerRequest) request;
             return super.isTokenValid((HttpServletRequest) scr.getServletRequest());
@@ -3224,7 +3238,7 @@
      * @see #saveToken
      * @see #isTokenValid
      */
-    protected void resetToken(ControllerRequest request) {
+    protected void resetToken(final ExpressoRequest request) {
         if (request instanceof ServletControllerRequest) {
             ServletControllerRequest scr = (ServletControllerRequest) request;
             super.resetToken(scr.getHttpServletRequest());
@@ -3239,7 +3253,7 @@
      * @see #resetToken
      * @see #isTokenValid
      */
-    protected void saveToken(ControllerRequest request) {
+    protected void saveToken(final ExpressoRequest request) {
         if (request instanceof ServletControllerRequest) {
             ServletControllerRequest scr = (ServletControllerRequest) request;
             super.saveToken(scr.getHttpServletRequest());
@@ -3255,7 +3269,7 @@
      * @param paramName key to look for among all parameters
      * @return an array of String objects containing all of the values the given request parameter has, or null if the parameter does not exist.
      */
-    public static String[] getParamValues(ServletControllerRequest request, String paramName) {
+    public static String[] getParamValues(final ServletControllerRequest request, final String paramName) {
         return request.getParamValues(paramName);
     }
 }
Index: Input.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Input.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Input.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Input.java -u -r1.36 -r1.37
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Input.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Input.java
@@ -68,20 +68,17 @@
 package com.jcorporate.expresso.core.controller;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Vector;
-
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
 import com.jcorporate.expresso.core.cache.Cacheable;
 import com.jcorporate.expresso.core.dbobj.ValidValue;
 import com.jcorporate.expresso.core.misc.ConfigManager;
 import com.jcorporate.expresso.core.misc.StringUtil;
 import com.jcorporate.expresso.kernel.util.FastStringBuffer;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 
 /**
@@ -276,6 +273,8 @@
      * Clones the input as per standard java.lang.Object specifications
      *
      * @return java.lang.Object which is actually an Input.
+     * @throws java.lang.CloneNotSupportedException if unable to clone the
+     * object.
      */
     public Object clone()
             throws CloneNotSupportedException {
@@ -645,7 +644,7 @@
      * @param response The controller response where the form cache may exist
      * @throws ControllerException upon error
      */
-    public void setDefaultValue(final ControllerResponse response)
+    public void setDefaultValue(final ExpressoResponse response)
             throws ControllerException {
         setDefaultValue(response.getFormCache(this.getName()));
     }
Index: ControllerTestFixture.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ControllerTestFixture.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ControllerTestFixture.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ControllerTestFixture.java -u -r1.2 -r1.3
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ControllerTestFixture.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/services/test/ControllerTestFixture.java
@@ -114,7 +114,7 @@
      */
     public ExpressoResponse invokeFacade(final Class controllerClass, final Map parameters, final String state) throws ControllerException, NonHandleableException {
         Controller controller = null;
-        ControllerRequest request = null;
+        ExpressoRequest request = null;
         try {
             controller = buildController(controllerClass);
             request = buildControllerRequest(parameters, state);
@@ -135,7 +135,7 @@
      * @throws ControllerException upon internal error.
      * @throws DBException upon User query error.
      */
-    public ControllerRequest buildControllerRequest(final Map parameters, final String state) throws ControllerException, DBException {
+    public ExpressoRequest buildControllerRequest(final Map parameters, final String state) throws ControllerException, DBException {
         ControllerRequest controllerRequest = new ControllerRequest();
 
         buildRequestRegistry(SuperUser.INSTANCE);


More information about the cvs mailing list