[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