Whilst investigating another bug and reading through and trying to understand the code I found that the following structural changes to the code made sense :- * The AreaTreeHandler had several member variables specifically with the remit of tracking the use of Ids in PageViewPorts so this was factored out into a new IDTracker class. * The FlowLayoutManager member variable in PageSequenceLayoutManager was only referenced within PageBreaker so this member variable was moved out to PageBreaker. * The PageBreaker inner class of PageSequenceLayoutManager was getting rather large (larger than its holding class) and had minimal dependencies so I felt it was deserved moving out to the top level. * The PageProvider inner class of PageSequenceLayoutManager had very little dependencies on its holding class and was has been moved to the top level. * I found many instances of an id property and associated getId() accessor method in FObj descendants so it made sense to have this in the base FObj class and remove all other instances. Also added hasId() convenience method. * BasicLinkLayoutManager makes use of new BasicLink has(Internal|External)Destination() convenience methods. * Removed List blockLists argument from the AbstractBreaker/PageBreaker getNextBlockList() protected method as its only usage is the AbstractBreaker blockLists member variable.
Created attachment 20446 [details] patch file
Created attachment 20447 [details] file list
I liked it... very much :) Patch applied. see: http://svn.apache.org/viewvc?view=rev&rev=554094 Nice work, Adrian!
batch transition pre-FOP1.0 resolved+fixed bugs to closed+fixed