The reason I want to use Exceptions is because currently I am using
LookupDispatchAction, and I have 2 methods, add & save, that both call
the "UploadFile" method.  Currently, the UploadFile method returns
ActionErrors, but it seems to be better coding to have "void uploadFile
throws UploadFileException", rather than "ActionErrors uploadFile".

The current architecture seems to limit 1 exception to only throw 1
message key - being that you define this 1 message key in
struts-config.xml.  What I would like is to throw an exception with a
(key, value) and having this key be used for the exception message.

So in my UploadAction class, rather than having:

        if (fileName == null || fileName.length() == 0) {
            logCat.error("validation error: no file specified");
            errors.add(ActionErrors.GLOBAL_ERROR,
                       new ActionError("errors.required",
                       resources.getMessage("label.mediaFile")));
            return errors;
        }

I'd like to do:

        if (fileName == null || fileName.length() == 0) {
            throw new FileUploadException("errors.required", 
 
resources.getMessage("label.mediaFile"));
        }

My FileUploadException is:

public class FileUploadException extends AppException {

    /**
     * Construct a new instance of this exception for the specified
filename.
     *
     * @param key Key that contains the error message key
     * @param param Parameter value for insertion into message
     */
    public FileUploadException(String key, String param) {
        super(key, param);
    }
}

Does this sound reasonable/doable?

Thanks,

Matt




> -----Original Message-----
> From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]] 
> Sent: Friday, March 22, 2002 3:12 PM
> To: Struts Developers List; [EMAIL PROTECTED]
> Subject: RE: Declarative Exception Handling - Any Documentation?
> 
> 
> 
> 
> On Wed, 20 Mar 2002, Matt Raible wrote:
> 
> > Date: Wed, 20 Mar 2002 20:27:39 -0700
> > From: Matt Raible <[EMAIL PROTECTED]>
> > Reply-To: Struts Developers List <[EMAIL PROTECTED]>,
> >      [EMAIL PROTECTED]
> > To: 'Struts Developers List' <[EMAIL PROTECTED]>
> > Subject: RE: Declarative Exception Handling - Any Documentation?
> >
> > A little best-practices question...
> >
> > If I have the following 3 errors that can occur when 
> uploading files 
> > in my UploadAction:
> >
> > errors.invalid.transcriptFile=The transcript file \"{0}\" doesn't 
> > appear to be a text file. Please convert it to a text file. 
> > errors.reading.file=An error occurred reading the file 
> \"{0}\", please 
> > try uploading the file again. errors.file.exists=File 
> \"{0}\" already 
> > exists in the asset repository. Select the \"Replace if Exists\" 
> > checkbox to overwrite.
> >
> > What is the best way to use Declarative Exception handling 
> for these - 
> > should I have three different exceptions, or is it possible 
> to have 1 
> > FileUploadException class that can render all 3 error messages?
> >
> 
> I think this really depends on what you want to have happen 
> next.  If you're going to go back to the input form again in 
> all three cases, it's probably just as easy to use a single 
> exception handler for all three scenarios -- if you want to 
> take different actions, you can use different ones.
> 
> Of course, you also have the choice of not throwing an 
> exception at all -- you can do a forward directly from 
> UploadAction to the appropriate place as well.  Using an 
> exception lets you decouple the detection of a problem with 
> the decision of what to do next.  If you already know (in
> UploadAction) where you want to go next, it's probably just 
> as easy to go there directly.
> 
> > Sorry for all the questions - maybe I can help with 
> documentation once 
> > I get this all figured out.  Point me in the right direction to do 
> > this.
> >
> > Matt
> >
> 
> Craig
> 
> 
> > > -----Original Message-----
> > > From: Matt Raible [mailto:[EMAIL PROTECTED]]
> > > Sent: Wednesday, March 20, 2002 8:21 PM
> > > To: 'Struts Developers List'
> > > Subject: RE: Declarative Exception Handling - Any Documentation?
> > >
> > >
> > > After investigating the PasswordExpiredException, I'm a little 
> > > confused. This class uses the following code:
> > >
> > > <code>
> > >     public ExpiredPasswordException(String username) {
> > >         super("error.password.expired", username);
> > >     }
> > > </code>
> > >
> > > But there is no key "error.password.expired" in 
> > > ApplicationResources.properties.  In struts-config.xml there is
> > >
> > > <exception key="expired.password" 
> > > type="org.apache.struts.webapp.example.ExpiredPasswordExceptio
> > > n" path="/changePassword.jsp"/>
> > >
> > > And I found an "expired.password" key, but this is never 
> used. How 
> > > are each designed to be used - simply for logging? There are no 
> > > messages that show up in the log for either of these.
> > >
> > > Here's how I would expect these to be used.
> > >
> > > 1.  If no key is specified in struts-config, then the key 
> > > "error.password.expired" would be used. 2.  This message would be 
> > > attainable with the following JSP code:
> > >
> > > <%-- Error Messages --%>
> > > <logic:messagesPresent>
> > >         <html:messages id="error">
> > >             <bean:write name="error"/><br/>
> > >         </html:messages>
> > > </logic:messagesPresent>
> > >
> > > Is this correct?  Also, is it possible to have a separate 
> > > .properties file for Exception messages?
> > >
> > > This stuff is great, as well as the rest of Struts - 
> awesome to work 
> > > with this stuff.  You all do an awesome job - makes my life a lot 
> > > easier.
> > >
> > > Matt
> > >
> > >
> > > > -----Original Message-----
> > > > From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]]
> > > > Sent: Wednesday, March 20, 2002 5:55 PM
> > > > To: Struts Developers List; [EMAIL PROTECTED]
> > > > Subject: Re: Declarative Exception Handling - Any Documentation?
> > > >
> > > >
> > > >
> > > >
> > > > On Wed, 20 Mar 2002, Matt Raible wrote:
> > > >
> > > > > Date: Wed, 20 Mar 2002 17:18:45 -0700
> > > > > From: Matt Raible <[EMAIL PROTECTED]>
> > > > > Reply-To: Struts Developers List 
> <[EMAIL PROTECTED]>,
> > > > >      [EMAIL PROTECTED]
> > > > > To: [EMAIL PROTECTED]
> > > > > Subject: Declarative Exception Handling - Any Documentation?
> > > > >
> > > > > I *think* declarative exception handling has been 
> added to the 
> > > > > 1.1 beta 1 - correct me if I'm wrong.  If so, where 
> can I find 
> > > > > good documentation and examples on how to use it?  
> This is all I 
> > > > > found:
> > > > >
> > > > >
> > > > http://www.mail-archive.com/struts->
> > > > [EMAIL PROTECTED]/msg04150.htm
> > > > > l
> > > > >
> > > >
> > > > It has.
> > > >
> > > > To use it, you have to use the (new) execute() method in your 
> > > > Actions, instead of perform() -- the signature includes "throws 
> > > > Exception" so that you can throw any kind of exception 
> you wish, 
> > > > and then have the controller catch it.
> > > >
> > > > To configure usage, use the <exception> elements inside a 
> > > > <global-exceptions> section for global definitions, or 
> inside an 
> > > > <action> element for local overrides, analogous to the way 
> > > > forwards work.
> > > >
> > > > A contrived use of this is in the Struts example webapp 
> -- if you 
> > > > enter the username "arithmetic", LogonAction will throw an 
> > > > ArithmeticException. Likewise, if you enter the 
> username "expired" 
> > > > it will throw an ExpiredPasswordException (a business logic 
> > > > exception unique to this webapp).  Only the business logic 
> > > > exception has a defined handler:
> > > >
> > > >   <action path="/logon" ...>
> > > >     <exception key="expired.password"
> > > >
> > > > type="org.apache.struts.webapp.example.ExpiredPasswordException"
> > > >               path="/changePassword.jsp"/>
> > > >   </action>
> > > >
> > > > > Also, will Tiles be adapted as a Plug In?
> > > > >
> > > >
> > > > Makes sense to me ... but I'm not going to have a 
> chance to do it.
> > > >
> > > > > I upgraded my app using 1.1 beta 1 with Tiles & 
> Validator this 
> > > > > afternoon
> > > > > - took me about 10 minutes.  Mostly validator changes.  Nice 
> > > > > work!
> > > > >
> > > >
> > > > Cool!
> > > >
> > > > > Matt
> > > > >
> > > >
> > > > Craig
> > > >
> > >
> >
> >
> > --
> > To unsubscribe, e-mail:   
> <mailto:struts-dev-> [EMAIL PROTECTED]>
> > For 
> additional commands, 
> e-mail: 
> > <mailto:[EMAIL PROTECTED]>
> >
> >
> 
> 
> --
> To unsubscribe, e-mail:   
> <mailto:struts-dev-> [EMAIL PROTECTED]>
> For 
> additional commands, 
> e-mail: <mailto:[EMAIL PROTECTED]>
> 


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to