You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by bu...@apache.org on 2005/06/14 16:04:39 UTC

DO NOT REPLY [Bug 35361] New: - Throw exception when forward not found

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=35361>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=35361

           Summary: Throw exception when forward not found
           Product: Struts
           Version: Unknown
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P3
         Component: Unknown
        AssignedTo: dev@struts.apache.org
        ReportedBy: fzammetti@omnytex.com


Currently, when mapping.findForward() is called in an Action, and the named 
forward is not found (because of a typo, or perhaps because it is dynamically 
determined incorrectly), Struts returns null, which resuls in a blank page, 
and no indication to the developer about what went wrong.

Someone, I forget who (sorry!) recently added some code to log a message in 
such a case, but that was after 1.2.7 was cut.  That would be a step in the 
right direction, but I believe still not optimal.

My feeling, echoed by some on the mailing lists, is that an exception should 
be thrown.  The thinking is that such a situation really shouldn't happen in a 
production application, it should generally be a development-time problem, and 
as such should be easier to track down.  Also, it is pretty much a showstopper 
kind of problem, i.e., not something an app would expect to recover from.  As 
such, an exeption is probably more appropriate than just a log message.

I propose the following change be made... in the ActionMapping class, alter 
the findForward() method as follows:

/**
 * <p>Find and return the <code>ForwardConfig</code> instance defining
 * how forwarding to the specified logical name should be handled. This is
 * performed by checking local and then global configurations for the
 * specified forwarding configuration. If no forwarding configuration
 * can be found, return <code>null</code>.</p>
 *
 * @param name Logical name of the forwarding instance to be returned
 * @throws IllegalStateException If the forward is not found
 */
public ActionForward findForward(String name) throws IllegalStateException {

    ForwardConfig config = findForwardConfig(name);
    if (config == null) {
        config = getModuleConfig().findForwardConfig(name);
    }
    if (null == config) {
      throw new IllegalStateException("Forward not found: " + name);
    }
    return ((ActionForward) config);

 }

Arguably there is a more appropriate exception type than 
IllegalStateException, and I have no problem if someone has a better 
suggestion.  This is clearly a trivial change, but one I believe will make 
life easier on developers

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

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