[jsword-devel] Another patch

DM Smith dmsmith555 at yahoo.com
Wed Jun 30 13:03:26 MST 2004


When I submit a patch, I usually find it easier to wait before doing 
more changes. So I frequently go the Synchronize view and check for updates.

Anyway, thanks for applying it.

Right now I am working on some performance improvements. I have found 
that some code is being invoked redundantly for a single action. By 
fixing it, the program is much more responsive in displaying large passages.

I am also going through and reviewing the use of exceptions.

I have found quite a bit of the following construct:

if (xxx == null)
{
    throw new NullPointerException();
}
xxx.doSomething();

While in a few cases there was a message, it did not add to the meaning.

Where the test represents an expectation of the programmer to do the 
right thing, I am changing it to:
assert xxx != null;
xxx.doSomething();
or getting rid of it all together.

I also have found some overridden methods of the form:
void doSomething()
{
	throw new NullPointerException("Not implemented");
}

I am also changing the signature of setBookData to not throw a 
BookException. It was only needed in one place where the setting Book 
data also displayed the text. In that one case, I have it reporting the 
exception directly.

DM

Joe Walker wrote:
> 
> Hi,
> 
> Just realized that I applied the patch a while ago and forgot to say.
> Thanks, lots of improvements.
> 
> Joe.
> 
> DM Smith wrote:
> 
>> Joe,
>> I have merged your changes and have prepared another patch.
>> This patch has a bunch of bug fixes and updates.
>>
>> Whenever moving the mouse (mouse enter, mouse move, mouse leave) over a
>> checkbox, the checkbox listener was fired. The upshot is that
>> unnecessary work was being repeated.
>> ChangeListner listens for all changes concerning a checkbox not just
>> whether it is set or cleared. ItemListner does just that.
>> Changed code:
>>     DisplaySelectPane
>>     ExceptionPane
>>
>> I improved ExceptionPane to show file name and line number even when 
>> there is source. Ultimately, the line should be highlighted.
>>
>> In Desktop.java the hyperlink listener was on the list twice. I removed
>> one of them.
>>
>> Hebrew text display now works correctly. To do this the following had to
>> be done:
>>   o Compute and store the orientation of the language in BookMetaData.
>>     (Note, this uses Sw*ng to compute it. So this may need changing.)
>>   o Each time a passage viewed, set the viewer's ComponentOrientation.
>>   o Pass the orientation to the XSLT.
>> This caused a bunch of code to change:
>> DesktopActions passes orientation to the XLST.
>> TextPaneBookDataDisplay passes orientation to the XSLT.
>> simple.xsl was changed:
>>   to accept an orientation
>>   to use it to change the layout of the table when there are notes
>>   I also improved this table's layout in general.
>> BookMetaData I added boolean isLeftToRight()
>> DefaultBookMetaData I had it return true and added a task to do it right
>> SwordBookMetaData computes the value of isLeftToRight.
>>
>> Fixed bugs in Msg.properties where ever it occurred:
>> In a MsgFormat a single apostrophe ' is an indicator that everything
>> between it and the next, if there is one, is to be treated as a literal.
>> The symptom that led me to this was that the {0} and {1} for an
>> Exception pane were showing up. To have a single quote, you use two in a
>> row.
>>
>> I also un-escaped double quotes. I think this was an artifact of moving
>> the strings from code to a resource bundle.
>>
>> I also fixed a cut and paste error in a Msg.properties.
>>
>> Based on the earlier thread for EventListenerList, I put it back to the
>> non-Sw*ng version in non-Sw*ng code.
>>
>> Removed "RealFont" from ConfigurableSwingConverter as it was not used.
>>
>> Changed ViewSourcePane to copy from the selected tab.
>>
>> In PathField I changed the "do" methods to have the expected names:
>>   doAddEntry -> doAddPathEntry
>>   doUpdateEntry -> doUpdatePathEntry
>>   doRemoveEntry -> doRemovePathEntry
>>
>> In StringUtil I removed methods that have direct equivalents in apache
>> commons and methods that are not used at all.
>>
>> Fixed a bug in ExceptionPane and did some general improvements.
>>
>> In MapTable I got rid of a couple of error messages by replacing them
>> with asserts.
>>
>> In Project.java I moved a couple of unused/dead symbolic constants to
>> the new limbo/.../BookRoot.
>>
>> There were too many places in the code that were doing the conversion of
>> the byte array to a String.
>> I changed the signature in Backend of
>>     byte[] getRawText(Key)
>> to
>>     String getRawText(Key key, String charset)
>> In support of this I added
>> String SwordUtil.decode(Key key, byte[] data, String charset)
>> and
>> String SwordUtil.clean(Key key, String data)
>> In both cases Key is being passed for reporting purposes only.
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> jsword-devel mailing list
>> jsword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/jsword-devel
> 
> 
> 
> _______________________________________________
> jsword-devel mailing list
> jsword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/jsword-devel
> 



More information about the jsword-devel mailing list