RE: LookupDispatchAction - loading values from a properties file

2002-12-18 Thread Matt Raible
I think I'll resort to using the ResourceBundle as I can't override
getKeyMethodMap() and throw an IOException:

[javac]
D:\source\appfuse\src\web\org\apache\webapp\actions\BaseAction.java:107:
getKeyMethodMap() in org.apache.web
app.actions.BaseAction cannot override getKeyMethodMap() in
org.apache.struts.actions.LookupDispatchAction; overridden m
ethod does not throw java.io.IOException
[javac] protected Map getKeyMethodMap() throws IOException
[javac]   ^

Thanks,

Matt



> -Original Message-
> From: Erik Hatcher [mailto:[EMAIL PROTECTED]] 
> Sent: Wednesday, December 18, 2002 8:56 AM
> To: Struts Developers List
> Subject: Re: LookupDispatchAction - loading values from a 
> properties file
> 
> 
> I'm not sure where your .properties file lives, but you 
> should be able 
> to do something similar to this:
> 
> Properties props = new Properties();
> InputStream is = this.getClass().getClassLoader().getResourceAsStream
> ("my.properties");
> props.load(is);
> return props;  // since its just a Map also
> 
> 
> 
> Matt Raible wrote:
> > Pardon my ignorance, but your comment about Properties.load got me 
> > interested.  However, I can't seem to figure out how to shorten my 
> > code (guess I haven't done much work with Properties 
> files).  I found 
> > this
> > example:
> > 
> > http://www.javaworld.com/javaworld/javatips/jw-javatip125.html
> > 
> > But it seems to just increase the number of lines ;-)
> > 
> > Matt
> > 
> > 
> >>-Original Message-
> >>From: Erik Hatcher [mailto:[EMAIL PROTECTED]]
> >>Sent: Wednesday, December 18, 2002 7:06 AM
> >>To: Struts Developers List
> >>Subject: Re: LookupDispatchAction - loading values from a 
> >>properties file
> >>
> >>
> >>Matt,
> >>
> >>This looks reasonable.  Generally speaking changing a button mapping
> >>would involve new code, so a recompile is necessary, but as 
> >>you mention 
> >>you are mapping multiple buttons to the same method.
> >>
> >>Although I'd caution against using LookupDispatchAction unless you
> >>really have forms that have multiple submit buttons to submit 
> >>that same 
> >>form data.  If you're simply mapping multiple 
> >>non-form-related actions 
> >>into one class, then I'd argue this is not the right approach.
> >>
> >>Erik
> >>
> >>p.s. It looks like you might be able to save a few lines of code by
> >>using the Properties.load method instead of going through a 
> >>ResourceBundle.  ???
> >>
> >>Matt Raible wrote:
> >>
> >>>I was thinking of loading a properties file for my
> >>
> >>KeyMethodMap in a
> >>
> >>>subclass of LookupDispatchAction.
> >>>
> >>>So this:
> >>>
> >>> * Provides the mapping from resource key to method name
> >>> *
> >>> * @return Resource key / method name map
> >>> */
> >>>protected Map getKeyMethodMap()
> >>>{
> >>>Map map = new HashMap();
> >>>
> >>>map.put("button.add", "add");
> >>>map.put("button.cancel", "cancel");
> >>>map.put("button.copy", "copy");
> >>>map.put("button.save", "save");
> >>>map.put("button.edit", "edit");
> >>>
> >>>return map;
> >>>}
> >>>
> >>>Could be replaced with the following psuedo code:
> >>>
> >>>protected Map getKeyMethodMap()
> >>>{
> >>>Map map = new HashMap();
> >>>ResourceBundle methods = 
> >>>ResourceBundle.getBundle("LookupMethods");
> >>>
> >>>Enumeration keys = methods.getKeys();
> >>>
> >>>while (keys.hasMoreElements()) {
> >>>String key = (String) keys.nextElement();
> >>>map.put(key, methods.getString(key));
> >>>}
> >>>
> >>>return map;
> >>>}
> >>>
> >>>
> >>>Is there any reason(s) why I shouldn't do this?  I think it allows
> >>>greater flexibility for development - so I don't have to 
> re-compile 
> >>>this class everytime I want map a new method.  My last 
> >>
> >>project had 18
> >>
> >>>different mappings for the the different button names - where many
> >>>mapped to the same method.
> >>>
> >>>Thanks,
> >>>
> >>>Matt
> >>>
> >>
> >>
> >>--
> >>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: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]>




Re: LookupDispatchAction - loading values from a properties file

2002-12-18 Thread Erik Hatcher
I'm not sure where your .properties file lives, but you should be able 
to do something similar to this:

Properties props = new Properties();
InputStream is = this.getClass().getClassLoader().getResourceAsStream
("my.properties");
props.load(is);
return props;  // since its just a Map also



Matt Raible wrote:
Pardon my ignorance, but your comment about Properties.load got me
interested.  However, I can't seem to figure out how to shorten my code
(guess I haven't done much work with Properties files).  I found this
example:

http://www.javaworld.com/javaworld/javatips/jw-javatip125.html

But it seems to just increase the number of lines ;-)

Matt



-Original Message-
From: Erik Hatcher [mailto:[EMAIL PROTECTED]] 
Sent: Wednesday, December 18, 2002 7:06 AM
To: Struts Developers List
Subject: Re: LookupDispatchAction - loading values from a 
properties file


Matt,

This looks reasonable.  Generally speaking changing a button mapping 
would involve new code, so a recompile is necessary, but as 
you mention 
you are mapping multiple buttons to the same method.

Although I'd caution against using LookupDispatchAction unless you 
really have forms that have multiple submit buttons to submit 
that same 
form data.  If you're simply mapping multiple 
non-form-related actions 
into one class, then I'd argue this is not the right approach.

	Erik

p.s. It looks like you might be able to save a few lines of code by 
using the Properties.load method instead of going through a 
ResourceBundle.  ???

Matt Raible wrote:

I was thinking of loading a properties file for my 

KeyMethodMap in a 

subclass of LookupDispatchAction.

So this:

* Provides the mapping from resource key to method name
*
* @return Resource key / method name map
*/
   protected Map getKeyMethodMap()
   {
   Map map = new HashMap();

   map.put("button.add", "add");
   map.put("button.cancel", "cancel");
   map.put("button.copy", "copy");
   map.put("button.save", "save");
   map.put("button.edit", "edit");

   return map;
   }

Could be replaced with the following psuedo code:

   protected Map getKeyMethodMap()
   {
   Map map = new HashMap();
   ResourceBundle methods = 
   ResourceBundle.getBundle("LookupMethods");

   Enumeration keys = methods.getKeys();
   
   while (keys.hasMoreElements()) {
   String key = (String) keys.nextElement();
   map.put(key, methods.getString(key));
   }

   return map;
   }


Is there any reason(s) why I shouldn't do this?  I think it allows 
greater flexibility for development - so I don't have to re-compile 
this class everytime I want map a new method.  My last 

project had 18 

different mappings for the the different button names - where many 
mapped to the same method.

Thanks,

Matt



--
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]>






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




RE: LookupDispatchAction - loading values from a properties file

2002-12-18 Thread Matt Raible
Pardon my ignorance, but your comment about Properties.load got me
interested.  However, I can't seem to figure out how to shorten my code
(guess I haven't done much work with Properties files).  I found this
example:

http://www.javaworld.com/javaworld/javatips/jw-javatip125.html

But it seems to just increase the number of lines ;-)

Matt

> -Original Message-
> From: Erik Hatcher [mailto:[EMAIL PROTECTED]] 
> Sent: Wednesday, December 18, 2002 7:06 AM
> To: Struts Developers List
> Subject: Re: LookupDispatchAction - loading values from a 
> properties file
> 
> 
> Matt,
> 
> This looks reasonable.  Generally speaking changing a button mapping 
> would involve new code, so a recompile is necessary, but as 
> you mention 
> you are mapping multiple buttons to the same method.
> 
> Although I'd caution against using LookupDispatchAction unless you 
> really have forms that have multiple submit buttons to submit 
> that same 
> form data.  If you're simply mapping multiple 
> non-form-related actions 
> into one class, then I'd argue this is not the right approach.
> 
>   Erik
> 
> p.s. It looks like you might be able to save a few lines of code by 
> using the Properties.load method instead of going through a 
> ResourceBundle.  ???
> 
> Matt Raible wrote:
> > I was thinking of loading a properties file for my 
> KeyMethodMap in a 
> > subclass of LookupDispatchAction.
> > 
> > So this:
> > 
> >  * Provides the mapping from resource key to method name
> >  *
> >  * @return Resource key / method name map
> >  */
> > protected Map getKeyMethodMap()
> > {
> > Map map = new HashMap();
> > 
> > map.put("button.add", "add");
> > map.put("button.cancel", "cancel");
> > map.put("button.copy", "copy");
> > map.put("button.save", "save");
> > map.put("button.edit", "edit");
> > 
> > return map;
> > }
> > 
> > Could be replaced with the following psuedo code:
> > 
> > protected Map getKeyMethodMap()
> > {
> > Map map = new HashMap();
> > ResourceBundle methods = 
> > ResourceBundle.getBundle("LookupMethods");
> > 
> > Enumeration keys = methods.getKeys();
> > 
> > while (keys.hasMoreElements()) {
> > String key = (String) keys.nextElement();
> > map.put(key, methods.getString(key));
> > }
> > 
> > return map;
> > }
> > 
> > 
> > Is there any reason(s) why I shouldn't do this?  I think it allows 
> > greater flexibility for development - so I don't have to re-compile 
> > this class everytime I want map a new method.  My last 
> project had 18 
> > different mappings for the the different button names - where many 
> > mapped to the same method.
> > 
> > Thanks,
> > 
> > Matt
> > 
> 
> 
> --
> 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]>




Re: LookupDispatchAction - loading values from a properties file

2002-12-18 Thread Erik Hatcher
Matt,

This looks reasonable.  Generally speaking changing a button mapping 
would involve new code, so a recompile is necessary, but as you mention 
you are mapping multiple buttons to the same method.

Although I'd caution against using LookupDispatchAction unless you 
really have forms that have multiple submit buttons to submit that same 
form data.  If you're simply mapping multiple non-form-related actions 
into one class, then I'd argue this is not the right approach.

	Erik

p.s. It looks like you might be able to save a few lines of code by 
using the Properties.load method instead of going through a 
ResourceBundle.  ???

Matt Raible wrote:
I was thinking of loading a properties file for my KeyMethodMap in a
subclass of LookupDispatchAction.

So this:

 * Provides the mapping from resource key to method name
 *
 * @return Resource key / method name map
 */
protected Map getKeyMethodMap()
{
Map map = new HashMap();

map.put("button.add", "add");
map.put("button.cancel", "cancel");
map.put("button.copy", "copy");
map.put("button.save", "save");
map.put("button.edit", "edit");

return map;
}

Could be replaced with the following psuedo code:

protected Map getKeyMethodMap()
{
Map map = new HashMap();
ResourceBundle methods = 
ResourceBundle.getBundle("LookupMethods");

Enumeration keys = methods.getKeys();

while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
map.put(key, methods.getString(key));
}

return map;
}


Is there any reason(s) why I shouldn't do this?  I think it allows
greater flexibility for development - so I don't have to re-compile this
class everytime I want map a new method.  My last project had 18
different mappings for the the different button names - where many
mapped to the same method.

Thanks,

Matt



--
To unsubscribe, e-mail:   
For additional commands, e-mail: