csae1152 / openmap

Automatically exported from code.google.com/p/openmap
Other
1 stars 0 forks source link

VPF CoverageTable bug affecting DNC/tiled data and simple needed fix #7

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
When using VPF classes to display DNC (Digital Nautical Chart), coverage is 
tiled, so tile drawing code within LibrarySelectionTable and CoverageTable is 
exercised.  

DNC coverage can have well over 100 features, the bug occurs when you load 
enough features and ALL features are unexpectedly blanked out.

There is a mechanism involving these variables:
public final static CopyOnWriteArraySet<VPFTileDirectory> 
TILE_DIRECTORIES_LACKING_EDG = new CopyOnWriteArraySet<>();
TILE_DIRECTORIES_LACKING_TFT = new CopyOnWriteArraySet<>();
TILE_DIRECTORIES_LACKING_AFT = new CopyOnWriteArraySet<>();
TILE_DIRECTORIES_LACKING_END = new CopyOnWriteArraySet<>();

which are used to mark primitive tables that are not present for a given 
coverage.  The programming error is that these are marked static - meaning if a 
tile directory for ANY coverage is missing one of the primitive tables, it is 
added to the list and now the table is bypassed for ALL coverages. All DNC 
features stop displaying and the bug is unrecoverable without restarting.

The simple fix is to REMOVE the static modifier, and IMO they do not need to be 
public variables either.  This resolves the issue. 

Original issue reported on code.google.com by t...@gowebb.com on 11 Sep 2014 at 6:34