You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by Steve Peterson <st...@zpfe.com> on 2003/03/02 05:43:38 UTC

moving to commons-resources: design/implementation questions

I have a basic version of MessageResources working on top of the 
commons-resources package.  There are some things that I want to review 
with the team before I submit patches.

1.  implementation approach.

The approach I took for implementation was to implement a new subclass of 
o.a.s.u.MessageResources/MessageResourcesFactory, and change the default 
factory class in MessageResourcesFactory to use the new subclass.  This 
allows us to hook in the new class, but allows existing subclasses of 
PropertyMessageResources/PropertyMessageResourcesFactory will continue to 
work without any changes.

Comments?

2.  o.a.commons.resource.ResourceFactory.getResources() has a "name" 
parameter that is the "logical name" for the resources.  I don't have a 
sense of what sort of name makes sense here, and whether it can be a 
constant or needs a getter/setter (some work involved in that too).

3.  I hardcoded my implementation to use the 
o.a.commons.resources.impl.PropertyResourcesFactory, rather than 
discovering it through the ResourcesFactoryFinder.  Since this is intended 
to be a plug-in replacement for the current property based resources, is 
this OK?

4.  Poking through the code and trying it out, it does not appear that the 
o.a.c.r.impl.PropertyResourcesFactory.createResources() method supports the 
classloader-based approach to locating property files that was implemented 
in o.a.s.u.PropertyMessageResources.loadLocale().  It wants a URL really, 
really bad.  This means that

Messages message = Messages.getMessages("org.apache.struts.taglib.bean");

doesn't work.  Ideas?

5.  When given a null locale, o.a.c.r.Messages.getMessage() tries to append 
en_US to the spec for the properties file, rather than reading the "base" 
property file as the current implementation does.  Is that something to 
change in Messages?

6.  o.a.c.r.Messages.getMessage() returns an undocumented string when can't 
find a specified resource.  To support the returnNull property semantics on 
o.a.s.u.MessageResources, I need to be able to tell when the resource isn't 
found.  It seems like one of these options should be selected:

.  expose the return string so that it can be tested for (ugh...)
.  add a "messageExists()" method on Messages to allow for a test for a 
"null" return (would have to call it every time through)
.  change the semantics of getMessage() to return null when the underlying 
message resource isn't found
.  implement the returnNull() property on Message to allow the behavior to 
be configured.

I think that's everything on my list right now.
Steve



---------------------------------------------------------------------
To unsubscribe, e-mail: struts-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-dev-help@jakarta.apache.org


Re: moving to commons-resources: design/implementation questions

Posted by Steve Peterson <st...@zpfe.com>.
I worked through the showstoppers in my previous email (have to say that a 
little sleep helps) and have uploaded revised unit tests and a complete, 
working implementation of the commons-resources migration.  It has one 
outstanding unit test problem that I won't be able to get to until next week.

http://issues.apache.org/bugzilla/show_bug.cgi?id=16792

S

At 10:43 PM 3/1/2003 -0600, Steve Peterson wrote:
>I have a basic version of MessageResources working on top of the 
>commons-resources package.  There are some things that I want to review 
>with the team before I submit patches.
>
>1.  implementation approach.
>
>The approach I took for implementation was to implement a new subclass of 
>o.a.s.u.MessageResources/MessageResourcesFactory, and change the default 
>factory class in MessageResourcesFactory to use the new subclass.  This 
>allows us to hook in the new class, but allows existing subclasses of 
>PropertyMessageResources/PropertyMessageResourcesFactory will continue to 
>work without any changes.
>
>Comments?
>
>2.  o.a.commons.resource.ResourceFactory.getResources() has a "name" 
>parameter that is the "logical name" for the resources.  I don't have a 
>sense of what sort of name makes sense here, and whether it can be a 
>constant or needs a getter/setter (some work involved in that too).
>
>3.  I hardcoded my implementation to use the 
>o.a.commons.resources.impl.PropertyResourcesFactory, rather than 
>discovering it through the ResourcesFactoryFinder.  Since this is intended 
>to be a plug-in replacement for the current property based resources, is 
>this OK?
>
>4.  Poking through the code and trying it out, it does not appear that the 
>o.a.c.r.impl.PropertyResourcesFactory.createResources() method supports 
>the classloader-based approach to locating property files that was 
>implemented in o.a.s.u.PropertyMessageResources.loadLocale().  It wants a 
>URL really, really bad.  This means that
>
>Messages message = Messages.getMessages("org.apache.struts.taglib.bean");
>
>doesn't work.  Ideas?
>
>5.  When given a null locale, o.a.c.r.Messages.getMessage() tries to 
>append en_US to the spec for the properties file, rather than reading the 
>"base" property file as the current implementation does.  Is that 
>something to change in Messages?
>
>6.  o.a.c.r.Messages.getMessage() returns an undocumented string when 
>can't find a specified resource.  To support the returnNull property 
>semantics on o.a.s.u.MessageResources, I need to be able to tell when the 
>resource isn't found.  It seems like one of these options should be selected:
>
>.  expose the return string so that it can be tested for (ugh...)
>.  add a "messageExists()" method on Messages to allow for a test for a 
>"null" return (would have to call it every time through)
>.  change the semantics of getMessage() to return null when the underlying 
>message resource isn't found
>.  implement the returnNull() property on Message to allow the behavior to 
>be configured.
>
>I think that's everything on my list right now.
>Steve
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: struts-dev-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: struts-dev-help@jakarta.apache.org
>



---------------------------------------------------------------------
To unsubscribe, e-mail: struts-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-dev-help@jakarta.apache.org