Patch for MsgBase was [jsword-devel] MsgBase bug

DM Smith jsword-devel@crosswire.org
Thu, 08 Apr 2004 07:30:02 -0400


Joe Walker writes:
>
>
>Thanks for this. I've not had change to look at it, and to be honest I 
>doubt I will this evening, and I'm likely to be a bit short of time 
>tomorrow evening too. Sorry.
>I'll apply it as soon as I can.
>

No problem. Take your time. I know that sometimes the software that I write 
is non-trivial and takes some looking at to understand.

>Have a good vacation!
>
>Joe.
>
>DM Smith wrote:
>>I have fixed the MsgBase bug and design flaw (which I was going to do 
>>after vaction, but I had a "light bulb" experience and did it because it 
>>was so simple.)
>>
>>I also found and fixed a few other small bugs.
>>
>>Here are the changes:
>>The static MsgBase.init is gone and it is removed from all the derived Msg 
>>classes. For this reason there are a lot of files that are in the patch.
>>
>>MsgBase constructor now gets its resources for the derived class and 
>>maintains them in a static map. The static map was the "Ah ha!" I am using 
>>CWClassLoader to do the finding of resources just like in ActionFactory.
>>
>>I made a minor change to how the parameterized string is handled if there 
>>are resources, but it is not found. What it did do was return the key that 
>>was used to do the lookup without calling MessageFormat.format. Now it 
>>calls MessageFormat.
>>
>>I added a toString(Object singleParam) to MsgBase. Most paramaterized 
>>messages only take one argument if any. I changed all the places that 
>>called toString with a single element Object array to use this.
>>
>>I also added Reporter.invoke(..., MsgBase msg, Object singleParam) and 
>>changed all the places that called it wiith a single element Object array.
>>
>>I found a design flaw in what I had done earlier for ActionFactory. I 
>>wanted to be able to derive from it and have the CWClassLoader use the 
>>derived class to do the lookup. It did not. Turns out I needed to add a 
>>constructor to CWClassLoader that takes a Class object for the derived 
>>class.
>>
>>In doing this I split out the inner class to a stand alone and made it a 
>>bit more general. (Many times I start with a specific implementation as an 
>>inner class and then break it out when I have another use.) In this case 
>>the other use turned out to not be needed.
>>
>>I also externalized the messages in desktop.Msg to a ResourceBundle. (This 
>>is was what triggered the changes above.
>>
>>I created the DesktopActionFactory and used it as I described in another 
>>note.
>>
>>I modified AboutPane to replace "OK" with a CWAction. This required adding 
>>a method to DesktopActions to handle the action.
>>
>>_________________________________________________________________
>>FREE pop-up blocking with the new MSN Toolbar – get it now! 
>>http://toolbar.msn.com/go/onm00200415ave/direct/01/
>
>
>_______________________________________________
>jsword-devel mailing list
>jsword-devel@crosswire.org
>http://www.crosswire.org/mailman/listinfo/jsword-devel

_________________________________________________________________
Limited-time offer: Fast, reliable MSN 9 Dial-up Internet access FREE for 2 
months! 
http://join.msn.com/?page=dept/dialup&pgmarket=en-us&ST=1/go/onm00200361ave/direct/01/