I have uploaded a couple of patches under JIRA (388) in which I made a handful 
of refactors.   If I did things correctly, they should all be correctness 
preserving, causing no net change in functionality, fixing compiler warnings, 
improving clarity and reducing LOC.

Namely, these are the refactors I performed:
(Some) unused methods removed.
(Some) unused variables removed.
Extracting common code into methods.
Replacing iterator usage with the enhanced for loop (for each).
Added generic usage to internal methods/fields.  (Internal use appeared to be 
non-controversial, and might ease future development.)
Removed unused imports.

After these refactors, which mostly address compiler warnings, I ran FindBugs 
and addressed a handful of its concerns as well.

I confined my changes to outrigger/space packages.   If anyone finds the 
changes of value, I can comb through other packages; if not, it's no big loss.

A few other notes from my passthrough:
1) outrigger.MatchSetProxy has an unsynched critical region that can cause 
getSnapshot to fail in normal operation.
2) How much performance is gained via the special cases within 
outrigger.TxnState vs. a vanilla implementation?
3) Several of the "Constrainable" classes have the private method 
"getProxyTrustIterator" which is never used.   Is this safe to remove?
4) Many of the server-side constants (many used in transaction handling) could 
be replaced with enumerations.   Didn't do anything about that, but it's 
something to consider.
5) FindBugs marked several cases of fields that were only "usually" 
synchronized, but I didn't address any of these; they'll require some deeper 
consideration.

Anyway, thought I'd toss this in, since the refactoring process helps with my 
own familiarization process.   All the better if someone else can benefit.  

One last thing, I don't yet have the tests running.   So a run through the 
tests before committing would be advisable.

jamesG

Reply via email to