Version 3.10.0

hirondelle.web4j.model
Class AppException

Object
  extended by Throwable
      extended by Exception
          extended by ServletException
              extended by hirondelle.web4j.model.AppException
All Implemented Interfaces:
MessageList, Serializable
Direct Known Subclasses:
DAOException, ModelCtorException

public class AppException
extends ServletException
implements MessageList

Base class for most exceptions defined by WEB4J.

Differs from most exception classes in that multiple error messages may be used, instead of just one. Used in JSPs to inform the user of error conditions, usually related to user input validations.

See Also:
Serialized Form

Constructor Summary
AppException()
           
AppException(String aMessage, Throwable aThrowable)
          Constructor.
 
Method Summary
 void add(AppException ex)
          Add all AppResponseMessages attached to aAppEx to this list.
 void add(String aErrorMessage)
          Add a simple AppResponseMessage to this list.
 void add(String aErrorMessage, Object... aParams)
          Add a compound AppResponseMessage to this list.
 boolean getIsDisplayable()
          Return true only if messages exist and MessageList.getMessagesForSingleDisplay() has not yet been called.
 List<AppResponseMessage> getMessages()
          Return an unmodifiable List of AppResponseMessages.
 List<AppResponseMessage> getMessagesForSingleDisplay()
          Render the messages in a JSP.
 boolean isEmpty()
          Return true only if there are no messages in this list.
 boolean isNotEmpty()
          Return the negation of MessageList.isEmpty().
 String toString()
          Intended for debugging only.
 
Methods inherited from class ServletException
getRootCause
 
Methods inherited from class Throwable
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AppException

public AppException()

AppException

public AppException(String aMessage,
                    Throwable aThrowable)
Constructor.

Parameters:
aMessage - text describing the problem. Must have content.
aThrowable - root cause underlying the problem.
Method Detail

add

public final void add(String aErrorMessage)
Description copied from interface: MessageList
Add a simple AppResponseMessage to this list.

The argument satisfies the same conditions as AppResponseMessage.forSimple(java.lang.String).

Specified by:
add in interface MessageList

add

public final void add(String aErrorMessage,
                      Object... aParams)
Description copied from interface: MessageList
Add a compound AppResponseMessage to this list.

The arguments satisfy the same conditions as AppResponseMessage.forCompound(java.lang.String, java.lang.Object...).

Specified by:
add in interface MessageList

add

public final void add(AppException ex)
Description copied from interface: MessageList
Add all AppResponseMessages attached to aAppEx to this list.

Specified by:
add in interface MessageList

isEmpty

public boolean isEmpty()
Description copied from interface: MessageList
Return true only if there are no messages in this list.

Note that this method name conflicts with the empty keyword of JSTL. Thus, MessageList.isNotEmpty() is supplied as an alternative.

Specified by:
isEmpty in interface MessageList

isNotEmpty

public final boolean isNotEmpty()
Description copied from interface: MessageList
Return the negation of MessageList.isEmpty().

Specified by:
isNotEmpty in interface MessageList

getIsDisplayable

public final boolean getIsDisplayable()
Description copied from interface: MessageList
Return true only if messages exist and MessageList.getMessagesForSingleDisplay() has not yet been called.

Specified by:
getIsDisplayable in interface MessageList

getMessages

public final List<AppResponseMessage> getMessages()
Description copied from interface: MessageList
Return an unmodifiable List of AppResponseMessages.

JSPs must call MessageList.getMessagesForSingleDisplay() instead of this method.

Specified by:
getMessages in interface MessageList

getMessagesForSingleDisplay

public List<AppResponseMessage> getMessagesForSingleDisplay()
Description copied from interface: MessageList
Render the messages in a JSP.

JSPs must call this method when rendering messages.

This method solves the following problem. Some messages need to survive a redirect. This is implemented in WEB4J by placing the messages in session scope. However, the messages should be displayed to the user only once. So the problem arises of what to do with session-scope messages once they have been displayed.

Here, the technique used is to keep the object in session scope, but if the rendering task is performed a second time on the same messages (that is, if this method is called a second time on the same object), an empty List is returned, and no text will be rendered. This is an unusual policy for an object.

Specified by:
getMessagesForSingleDisplay in interface MessageList
Returns:
if this is the first time this method is called, return the same result as MessageList.getMessages() - otherwise, return an empty List.

toString

public String toString()
Intended for debugging only.

Overrides:
toString in class Throwable

Version 3.10.0

Copyright Hirondelle Systems. Published September 20, 2008 - User Guide - All Docs.