James,

I downloaded and took a brief look at your code, as I want to store all 
my messages, query strings, etc. in the database. My particular issue, 
which I think falls under the problem that you talk about below, is that 
  I need to group (or bundle) the messages by the user's role (or 
company/account). Thus, when a user logs in, the menus, labels on the 
screen, and potentially database queries are setup for the session, 
overriding the system wide defaults. So, e.g., if Company A wants all 
the default labels of "Component" to be "Item", when someone from 
Company A logs in, they see "Item", but someone from company B gets the 
default "Component". So I need a means to create/retrieve a set of 
default messages but be able to override the defaults with customizations.

I haven't spent much time thinking about how to accomplish this, so any 
thoughts on the issue would be appreciated.

chaz

James Mitchell wrote:
> 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]>
> 


-- 
Charles E Brault
[EMAIL PROTECTED]
"Where are we going, and why am I in this handbasket?"


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

Reply via email to