[cvs] expresso commit by rimovm: Change Validation Handler to new API Change

JCorporate Ltd jcorp at jcorporate.com
Sat Jun 11 11:15:27 UTC 2005


Log Message:
-----------
Change Validation Handler to new API
Change all instances of stateAllowed() to use new ExpressoRequest API.
Documented changes.

Modified Files:
--------------
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller:
        ControllerException.java
        SecureIfSetController.java
        Transition.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller:
        ErrorHandler.java
        ValidationController.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation:
        ApproveRegistrationValidator.java
        ChangePasswordValidator.java
        LoginEmailValidator.java
        ValidationHandler.java
    expresso/expresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/controller/tests:
        ControllerReflectionTestModel.java
        TestControllerReflectionTestModel.java
    expresso/expresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/dbobj/tests:
        RowSecuredDBObjectTest.java
    expresso/expresso-web/expresso/doc:
        ChangeLog.xml

Revision Data
-------------
Index: ControllerReflectionTestModel.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/controller/tests/ControllerReflectionTestModel.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lexpresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/controller/tests/ControllerReflectionTestModel.java -Lexpresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/controller/tests/ControllerReflectionTestModel.java -u -r1.2 -r1.3
--- expresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/controller/tests/ControllerReflectionTestModel.java
+++ expresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/controller/tests/ControllerReflectionTestModel.java
@@ -18,6 +18,15 @@
         s = new State("test2", "ExpressoRequest/ExpressoResponse signature");
         this.addState(s);
 
+        s = new State("test3", "ServletControllerRequest/ServletControllerResponse signature");
+        this.addState(s);
+
+        s = new State("test4", "ServletControllerRequest/ExpressoResponse signature");
+        this.addState(s);
+
+        s = new State("testX", "State without a handler");
+        this.addState(s);
+
         this.setInitialState("test1");
 
     }
@@ -28,6 +37,14 @@
 
     public void runTest2State(final ExpressoRequest request, final ExpressoResponse response) throws Exception {
         response.add(new Output("This is a test"));
+    }
+
+    public void runTest3State(final ServletControllerRequest request, final ControllerResponse response) throws Exception {
+        response.add(new Output("This is a servlet test"));
+    }
+
+    public void runTest4State(final ServletControllerRequest request, final ExpressoResponse response) throws Exception {
+        response.add(new Output("This is a servlet test"));
     }
 
 
Index: TestControllerReflectionTestModel.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/controller/tests/TestControllerReflectionTestModel.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lexpresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/controller/tests/TestControllerReflectionTestModel.java -Lexpresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/controller/tests/TestControllerReflectionTestModel.java -u -r1.2 -r1.3
--- expresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/controller/tests/TestControllerReflectionTestModel.java
+++ expresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/controller/tests/TestControllerReflectionTestModel.java
@@ -36,5 +36,37 @@
         assertTrue(response.getOutputs().size() == 1);
     }
 
+    public void testRunTest3State() throws Exception {
+        try {
+            ExpressoResponse response = controllerFixture.invokeFacade(ControllerReflectionTestModel.class, new HashMap(),
+                "test3");
+        } catch (NonHandleableException  ex) {
+            assertTrue(ex.getNested() instanceof IllegalArgumentException);
+            assertEquals("argument type mismatch", ex.getNested().getMessage());
+        }
+
+    }
+
+    public void testRunTest4State() throws Exception {
+        try {
+            ExpressoResponse response = controllerFixture.invokeFacade(ControllerReflectionTestModel.class, new HashMap(),
+                "test4");
+        } catch (NonHandleableException  ex) {
+            assertTrue(ex.getNested() instanceof IllegalArgumentException);
+            assertEquals("argument type mismatch", ex.getNested().getMessage());
+        }
+
+    }
+
+    public void testRunTestWithoutHandlerShouldThrowException() {
+        try {
+            controllerFixture.invokeFacade(ControllerReflectionTestModel.class, new HashMap(), "testX");
+            fail("Invocation should have caused exception");
+        } catch (ControllerException ex) {
+            assertTrue(ex.getNested() instanceof NoSuchMethodException);
+        }
+
+    }
+
 
 }
Index: ControllerException.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/ControllerException.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/ControllerException.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/ControllerException.java -u -r1.7 -r1.8
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/ControllerException.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/ControllerException.java
@@ -80,8 +80,7 @@
  * @author Michael Nash
  * @version $Revision$  $Date$
  */
-public class ControllerException
-        extends ChainedException {
+public class ControllerException extends ChainedException {
     /**
      * Constructor
      */
@@ -119,4 +118,4 @@
 
 } /* ControllerException */
 
-/* ControllerException */
\ No newline at end of file
+/* ControllerException */
Index: SecureIfSetController.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/SecureIfSetController.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/SecureIfSetController.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/SecureIfSetController.java -u -r1.9 -r1.10
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/SecureIfSetController.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/SecureIfSetController.java
@@ -105,7 +105,7 @@
      *          upon
      *          error
      */
-    public boolean stateAllowed(String newState, ControllerRequest params)
+    public boolean stateAllowed(String newState, ExpressoRequest params)
             throws com.jcorporate.expresso.core.controller.ControllerException {
         if (isDBConnectionAvailable(params.getDataContext())) {
             return super.stateAllowed(newState, params);
Index: Transition.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Transition.java,v
retrieving revision 1.64
retrieving revision 1.65
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Transition.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Transition.java -u -r1.64 -r1.65
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Transition.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/Transition.java
@@ -121,8 +121,7 @@
  * <p><i>default behavior:</i> Renders as a clickable button</p>
  */
 public class Transition extends ControllerElement implements Cloneable,
-    java.io.Serializable
-{
+    java.io.Serializable {
 
     private static Logger log = Logger.getLogger(Transition.class);
 
@@ -1197,6 +1196,12 @@
 //                    this.getState());
             ActionConfig actionConfig = ConfigManager.getActionConfig("",
                 this.getControllerObject(), this.getState());
+
+            if (actionConfig == null) {
+                throw new ControllerException("Unable to find an action config for: " + this.getControllerObject()
+                    + " with state: " + this.getState() + " please check your struts configuration.");
+            }
+
             response.setRequestPath(actionConfig.getPath());
 
             hserv.sendRedirect(((HttpServletRequest) scr.getServletRequest()).getContextPath() + this.getTheUrl(true));
@@ -1318,7 +1323,7 @@
                 c = ConfigManager.getControllerFactory().getController(this.getControllerObject());
             }
 
-            newResponse = c.newState(getState(), (ControllerRequest)newRequest);
+            newResponse = c.newState(getState(), (ControllerRequest) newRequest);
         }
         if (clear) {
             res.clearOutputCache();
Index: RowSecuredDBObjectTest.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/dbobj/tests/RowSecuredDBObjectTest.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lexpresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/dbobj/tests/RowSecuredDBObjectTest.java -Lexpresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/dbobj/tests/RowSecuredDBObjectTest.java -u -r1.3 -r1.4
--- expresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/dbobj/tests/RowSecuredDBObjectTest.java
+++ expresso-web/WEB-INF/test-src/com/jcorporate/expresso/core/dbobj/tests/RowSecuredDBObjectTest.java
@@ -153,11 +153,13 @@
             RowSecuredDBObjectTest1 test1List = new RowSecuredDBObjectTest1();
             test1List.setDataContext(TestSystemInitializer.getTestContext());
             test1List.deleteAll();
-            RequestRegistry.revertUser();
 
         } catch (DBException de) {
             de.printStackTrace();
             log.error(de);
+        } finally {
+            RequestRegistry.revertUser();
+
         }
     } /* tearDown() */
 
Index: ValidationController.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ValidationController.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ValidationController.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ValidationController.java -u -r1.19 -r1.20
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ValidationController.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ValidationController.java
@@ -81,6 +81,8 @@
 import org.apache.log4j.Logger;
 
 import java.util.Date;
+import com.jcorporate.expresso.core.controller.ExpressoRequest;
+import com.jcorporate.expresso.core.controller.ExpressoResponse;
 
 
 /**
@@ -143,8 +145,7 @@
      * @param response The response created by this state
      * @throws ControllerException Some of the objects used generate this
      */
-    protected void runPromptValidationState(ControllerRequest request,
-                                            ControllerResponse response)
+    protected void runPromptValidationState(ExpressoRequest request, ExpressoResponse response)
             throws ControllerException {
 
         // The name of the context used for the validation entry
@@ -185,8 +186,7 @@
      * @throws DBException            Some of the objects used generate this
      * @throws NonHandleableException Some of the objects used generate this
      */
-    protected ControllerResponse runValidateState(ControllerRequest request,
-                                                  ControllerResponse response)
+    protected void runValidateState(ExpressoRequest request, ExpressoResponse response)
             throws ControllerException,
             DBException,
             NonHandleableException {
@@ -259,9 +259,9 @@
             // If errors were found so far, display the error and prompt mfor corrected input
             if (!errors.isEmpty()) {
                 response.saveErrors(errors);
-                response = this.newState("promptValidation", request);
+                response = this.newExpressoState("promptValidation", request);
                 log.warn("error in validation for code: " + code);
-                return response;
+                return;
             }
 
 // Get the application-specific handler and call the "validated" method on it.
@@ -282,7 +282,7 @@
                         " for validation handler: " + vh.getClass().getName());
             }
 
-            return response;
+            return;
         } catch (AuthValidationException vex) {
             log.error("Error processing validation", vex);
 
@@ -326,11 +326,10 @@
      * @return true if the current is allowed to execute this state, false otherwise
      * @throws ControllerException upon error (this implementation does not)
      */
-    public synchronized boolean stateAllowed(String newState,
-                                             ControllerRequest params)
+    public synchronized boolean stateAllowed(final String newState, final ExpressoRequest myRequest)
             throws ControllerException {
         return true;
     } /* stateAllowed(String) */
 
 
-}
\ No newline at end of file
+}
Index: ErrorHandler.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ErrorHandler.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ErrorHandler.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ErrorHandler.java -u -r1.19 -r1.20
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ErrorHandler.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ErrorHandler.java
@@ -91,6 +91,7 @@
 import com.jcorporate.expresso.kernel.exception.ChainedException;
 import com.jcorporate.expresso.services.dbobj.DBMessage;
 import com.jcorporate.expresso.services.dbobj.Setup;
+import com.jcorporate.expresso.core.controller.ExpressoRequest;
 
 
 /**
@@ -415,7 +416,7 @@
      * @throws ControllerException upon error
      */
     public synchronized boolean stateAllowed(String newState,
-                                             ControllerRequest params)
+                                             ExpressoRequest params)
             throws ControllerException {
         return true;
     } /* stateAllowed(String) */
Index: ChangePasswordValidator.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ChangePasswordValidator.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ChangePasswordValidator.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ChangePasswordValidator.java -u -r1.19 -r1.20
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ChangePasswordValidator.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ChangePasswordValidator.java
@@ -79,6 +79,8 @@
 import com.jcorporate.expresso.core.misc.StringUtil;
 import com.jcorporate.expresso.core.security.User;
 import com.jcorporate.expresso.services.dbobj.Setup;
+import com.jcorporate.expresso.core.controller.ExpressoResponse;
+import com.jcorporate.expresso.core.controller.ExpressoRequest;
 
 
 /**
@@ -152,7 +154,7 @@
             if (localeCountry != null && localeLanguage != null) {
                 locale = new Locale(localeLanguage, localeCountry);
             }
-            
+
             // Send email notification
             if (locale != null) {
                 ValidationEntry.notifyByEmail(dbName,
@@ -192,8 +194,8 @@
      * @throws NonHandleableException for fatal error
      * @see com.jcorporate.expresso.services.controller.ValidationController
      */
-    public ControllerResponse validated(Hashtable params,
-                                        ControllerRequest request, ControllerResponse response, Controller ctlr)
+    public ExpressoResponse validated(Hashtable params,
+                                        ExpressoRequest request, ExpressoResponse response, Controller ctlr)
             throws ControllerException, NonHandleableException {
         // The db context for the user (Note: this is different from the Validation entry context, which
         // could very well be in a different DB context)
@@ -219,5 +221,5 @@
 
         return response;
     }
-    
+
 }
Index: ValidationHandler.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ValidationHandler.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ValidationHandler.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ValidationHandler.java -u -r1.10 -r1.11
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ValidationHandler.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ValidationHandler.java
@@ -77,6 +77,8 @@
 import com.jcorporate.expresso.core.controller.NonHandleableException;
 
 import java.util.Hashtable;
+import com.jcorporate.expresso.core.controller.ExpressoRequest;
+import com.jcorporate.expresso.core.controller.ExpressoResponse;
 
 
 /**
@@ -85,7 +87,8 @@
  * class, or a controller could implement this interface directly as well.
  * Creation date: (9/23/2001 9:32:19 PM) Author: Shash Chatterjee
  */
-public interface ValidationHandler {
+public interface ValidationHandler
+{
     /**
      * This method is used to allow the application-specific handler to notify
      * the "validator(s)" of an action they need to take. This method is
@@ -98,8 +101,7 @@
      *               request
      * @see com.jcorporate.expresso.services.job.ValidationJob
      */
-    public void notify(Hashtable params, String URL)
-            throws AuthValidationException;
+    public void notify(Hashtable params, String URL) throws AuthValidationException;
 
     /**
      * This method is used to complete the application-specific action after
@@ -119,7 +121,9 @@
      * @throws NonHandleableException upon fatal error
      * @see com.jcorporate.expresso.services.controller.ValidationController
      */
-    public ControllerResponse validated(Hashtable params,
-                                        ControllerRequest request, ControllerResponse response, Controller ctlr)
-            throws ControllerException, NonHandleableException;
+    public ExpressoResponse validated(Hashtable params,
+        ExpressoRequest request, ExpressoResponse response, Controller ctlr) throws ControllerException,
+        NonHandleableException;
+
+
 }
Index: LoginEmailValidator.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/LoginEmailValidator.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/LoginEmailValidator.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/LoginEmailValidator.java -u -r1.18 -r1.19
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/LoginEmailValidator.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/LoginEmailValidator.java
@@ -66,11 +66,10 @@
 import java.util.Hashtable;
 import java.util.Locale;
 import java.util.Vector;
-
 import com.jcorporate.expresso.core.controller.Controller;
 import com.jcorporate.expresso.core.controller.ControllerException;
-import com.jcorporate.expresso.core.controller.ControllerRequest;
-import com.jcorporate.expresso.core.controller.ControllerResponse;
+import com.jcorporate.expresso.core.controller.ExpressoRequest;
+import com.jcorporate.expresso.core.controller.ExpressoResponse;
 import com.jcorporate.expresso.core.controller.NonHandleableException;
 import com.jcorporate.expresso.core.controller.Transition;
 import com.jcorporate.expresso.core.db.DBException;
@@ -140,14 +139,14 @@
                 loginName, URL, Setup.getValue(dbName, "CompanyName"),
                 Setup.getValue(dbName, "HomePageURL")
             };
-            
+
             String localeCountry = (String) params.get(ValidationEntry.PRM_LOC_COUNTRY);
             String localeLanguage = (String) params.get(ValidationEntry.PRM_LOC_LANGUAGE);
             Locale locale = null;
             if (localeCountry != null && localeLanguage != null) {
                 locale = new Locale(localeLanguage, localeCountry);
             }
-            
+
             // Send email notification
             if (locale != null) {
                 ValidationEntry.notifyByEmail(dbName,
@@ -162,9 +161,9 @@
                         addresses,
                         Messages.getString("loginReqSubject"),
                         Messages.getString("loginReqEM1", args));
-                
+
             }
-            
+
 
         } catch (DBException dbe) {
             throw new AuthValidationException("DB error accessing user \"" +
@@ -191,8 +190,7 @@
      * @throws NonHandleableException upon fatal error
      * @see com.jcorporate.expresso.services.controller.ValidationController
      */
-    public ControllerResponse validated(Hashtable params,
-                                        ControllerRequest request, ControllerResponse response, Controller ctlr)
+    public ExpressoResponse validated(Hashtable params, ExpressoRequest request, ExpressoResponse response, Controller ctlr)
             throws ControllerException, NonHandleableException {
         // The db context for the user (Note: this is different from the Validation entry context, which
         // could very well be in a different DB context)
Index: ApproveRegistrationValidator.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ApproveRegistrationValidator.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ApproveRegistrationValidator.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ApproveRegistrationValidator.java -u -r1.20 -r1.21
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ApproveRegistrationValidator.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/services/validation/ApproveRegistrationValidator.java
@@ -79,6 +79,8 @@
 import java.util.Hashtable;
 import java.util.StringTokenizer;
 import java.util.Vector;
+import com.jcorporate.expresso.core.controller.ExpressoRequest;
+import com.jcorporate.expresso.core.controller.ExpressoResponse;
 
 
 /**
@@ -199,8 +201,8 @@
      * @throws ControllerException ControllerException
      * @see com.jcorporate.expresso.services.controller.ValidationController
      */
-    public ControllerResponse validated(Hashtable params,
-                                        ControllerRequest request, ControllerResponse response, Controller ctlr)
+    public ExpressoResponse validated(Hashtable params,
+                                        ExpressoRequest request, ExpressoResponse response, Controller ctlr)
             throws ControllerException, NonHandleableException {
         // The db context for the user (Note: this is different from the Validation entry context, which
         // could very well be in a different DB context)
Index: ChangeLog.xml
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/expresso/doc/ChangeLog.xml,v
retrieving revision 1.310
retrieving revision 1.311
diff -Lexpresso-web/expresso/doc/ChangeLog.xml -Lexpresso-web/expresso/doc/ChangeLog.xml -u -r1.310 -r1.311
--- expresso-web/expresso/doc/ChangeLog.xml
+++ expresso-web/expresso/doc/ChangeLog.xml
@@ -5,13 +5,13 @@
 	<project name="Expresso">
 		<version name="5.7" releaseDate="Not released yet">
 			<comment>Continued Updates</comment>
-            <bug-fix title="MultiDBObject uses use getMappedDataContext()">
-                <explanation>MultiDBObject uses use getMappedDataContext() in order to
+			<bug-fix title="MultiDBObject uses use getMappedDataContext()">
+				<explanation>MultiDBObject uses use getMappedDataContext() in order to
                  set its db context; default behavior is unchanged if you do not use a
                 mapped context
                 </explanation>
-                <contributor>Larry Hamel for alex bolgarov</contributor>
-            </bug-fix>
+				<contributor>Larry Hamel for alex bolgarov</contributor>
+			</bug-fix>
 			<new-feature title="IfErrorExists tag now supports the 'inverse' attribue">
 				<explanation>The IfErrorExists tag contained in the expresso taglib now supports inverse.
                 </explanation>
@@ -21,7 +21,8 @@
 				<explanation>The struts extended tags now support xhtml in the same way is is supported under struts, through the use
 				of &lt;html:html xhtml="true"&gt;.
                 </explanation>
-				<contributor>Mark Kikken, Mike Traum</contributor>
+				<contributor>Mark Kikken</contributor>
+				<contributor>Mike Traum</contributor>
 			</new-feature>
 			<new-feature title="DBTool now has the ability to add a schema">
 				<explanation>DBTool is a command line tool to create database tables and populate values based on a schema. Prior to this addition, it
@@ -241,6 +242,18 @@
 			</api-change>
 			<api-change title="ExpressoRequest/ExpressoResponse Interfaces">
 				<explanation>Expresso can now use state handlers based off of new Interfaces called ExpressoRequest/ExpressoResponse.  Most of the methods found in ControllerRequest/Response still exist, but by using the interfaces, you gain the ability to create proxy objects for unit testing.</explanation>
+				<contributor>Michael Rimov</contributor>
+			</api-change>
+			<api-change title="NonHanleableException now is a RuntimeException">
+				<explanation>NonHandleableException derives from ChainedRuntimeException which now derives from RuntimeException.  What this means is that its use is completely optional in both method signatures and handling.  NonHandleableException will probably be phased out since it was never really used even back in Expresso 4.0 when it was first introduced.</explanation>
+				<contributor>Michael Rimov</contributor>
+			</api-change>
+			<api-change title="ValidationHandler Signature Changed">
+				<explanation>Due to the switching of ValidationController to ExpressoRequest/ExpressoResponse, you will need to change your ValidationHandler signatures to use ExpressoRequest and Expresso Response.</explanation>
+				<contributor>Michael Rimov</contributor>
+			</api-change>
+			<api-change title="isStateAllowed should change to ExpressoRequest signature">
+				<explanation>If you override stateAllowed() in your DBController class, then you will need to update its signature to stateAllowed(final String newState, final ExpressoRequest myRequest) or it may not get properly called.</explanation>
 				<contributor>Michael Rimov</contributor>
 			</api-change>
 			<bug-fix title="MultiDBObject handles otherDB map">


More information about the cvs mailing list