Great stuff eh?

My DBMessageResources already uses OJB as the persistence layer for my impl
:)

You simply run the db scripts (or not, if you will use your own), configure
the OJB files (repository[-*].xml), declare the new factory
class(struts-config.xml), and specify subapp and key (parameter in
<message-resources> and you're off!!! (The readme will explain everything)
I even provide the struts-example modified to demonstrate the new
functionality.

In order to support sub-applications and multiple bundles per subapp,
(correct me here if I stray) multiple MessageResourcesConfig instances are
stored (application scope) and are set into request scope (according to the
selected application or subapp) during the request.

So, with that in mind, any code needing a message, can grab the
MessageResources (only having to specify the bundle key) out of the request
and call getMessage() with whatever replacing params (if any) they have.

See, the MessageResources class has no knowledge of it's existence in a web
application (Struts or other).  In fact, it is configured with a single
String ("parameter" as mentioned above) and call to its factory.  The only
abstract method call to it is:

  getMessage(Locale locale, String key);

How would you determine the correct bundle key (assuming there are no
subapps), and if there are subapps, how would you determine which one (and
the bundle for it as well)?

I chose to use the "parameter" to tell me.

syntax:  parameter="[subapp].[key]"

example: (using default subapp (empty String..."") and default key

  <message-resources
       factory="org.apache.struts.util.DBMessageResourcesFactory"
       parameter="."/>





Funny.....this works great if you are caching the key-value pairs in your
MessageResources class.  But if you are trying to get these from a
database/xml file/whatever, you have to 'work around' this issue.

Additionally, if you depend on lifecycle calls to .... oh, let's say ....
close a connection, you are just SOOL.  And other than modifying the source,
I see no way around it.

This design issue has had me 'bent over a rail' for a few weeks now, as I
ponder alternatives.

I have been slowly coming to the conclusion that MessageResources
implementations might be better off being created by a plugin instead of the
<message-resources> tag.  This would also allow you to use/reuse existing
resources (e.g. connections that might have been configured in the
struts-config) and also provides much needed lifecycle calls.

Your thought?




James Mitchell
Software Engineer/Struts Evangelist
http://www.open-tools.org



> -----Original Message-----
> From: Erik Hatcher [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, October 09, 2002 12:25 AM
> To: Jakarta Commons Developers List
> Subject: Re: Message Resources from database
>
>
> No problem, James.  Take your time!
>
> I'm going to tinker with a proof-of-concept implementation using our own
> persistence mechanism rather than pure JDBC (we're using an O/R mapping
> tool in the middle) and see how quickly I can get something working.
>
> I guess the Commons stuff is not in Struts 1.1 yet, so I'll probably
> build on top of the Struts provided API for now and then refactor to the
> Commons one when its available.
>
> What I'll build will not be generally applicable though since it will be
> using a commercial O/R mapper, but once James stuff is made available
> we'll see if there is a way to generalize what I've done or just switch
> to James code altogether.
>
> Thanks,
>       Erik
>
>
> James Mitchell wrote:
> >>-----Original Message-----
> >>From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]]
> >>Sent: Tuesday, October 08, 2002 7:37 PM
> >>To: Struts Developers List
> >>Subject: RE: Message Resources from database
> >>
> >>
> >>
> >>There was also a message from Erik Hatcher on COMMONS-DEV about adding
> >>this capability to commons-resources.  James, are you subscribed there -
> >>if not, I can forward a note about your progress.
> >>
> >
> >
> > That's fine with me, I was planning to donate this anyway, although my
> > initial implementation supports Strut's sub-apps, so it may need some
> > refactoring for anything more basic.
> >
> > I only have a couple small issues to complete before I post an
> [ANNOUNCE] to
> > the users list.  In the meantime, I'm also trying to finish up
> > XMLMessageResources.
> >
> > For anyone waiting for either of these, I apologize, I stopped
> working on
> > them about a week ago while I was playing around with moving
> from Win2k to
> > Mandrake 8.1 on my laptop.  I'm still trying to get everything
> configured
> > and 'get back into the groove' ;)
> >
> > I'll post something as soon as I can.
> >


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

Reply via email to