diff options
| -rw-r--r-- | main/src/cgeo/geocaching/maps/MapProviderFactory.java | 45 | ||||
| -rw-r--r-- | tests/src/cgeo/geocaching/test/mock/MockedCache.java | 11 | ||||
| -rw-r--r-- | tests/src/cgeo/geocaching/utils/MemorySubjectTest.java | 3 |
3 files changed, 24 insertions, 35 deletions
diff --git a/main/src/cgeo/geocaching/maps/MapProviderFactory.java b/main/src/cgeo/geocaching/maps/MapProviderFactory.java index 3fb6ed0..7c0c8e5 100644 --- a/main/src/cgeo/geocaching/maps/MapProviderFactory.java +++ b/main/src/cgeo/geocaching/maps/MapProviderFactory.java @@ -15,12 +15,10 @@ public class MapProviderFactory { private final static int GOOGLEMAP_BASEID = 30; private final static int MFMAP_BASEID = 40; - private static MapProviderFactory instance = null; + private final static MapProvider[] mapProviders; + private final static SortedMap<Integer, MapSource> mapSources; - private final MapProvider[] mapProviders; - private SortedMap<Integer, MapSource> mapSources; - - private MapProviderFactory() { + static { // add GoogleMapProvider only if google api is available in order to support x86 android emulator if (isGoogleMapsInstalled()) { mapProviders = new MapProvider[] { new GoogleMapProvider(GOOGLEMAP_BASEID), new MapsforgeMapProvider(MFMAP_BASEID) }; @@ -45,29 +43,16 @@ public class MapProviderFactory { return googleMaps; } - private static synchronized void initInstance() { - if (null == instance) { - instance = new MapProviderFactory(); - } - } - - private static MapProviderFactory getInstance() { - if (null == instance) { - initInstance(); - } - return instance; - } - public static SortedMap<Integer, MapSource> getMapSources() { - return getInstance().mapSources; + return mapSources; } public static boolean isValidSourceId(int sourceId) { - return getInstance().mapSources.containsKey(sourceId); + return mapSources.containsKey(sourceId); } public static boolean isSameActivity(int sourceId1, int sourceId2) { - for (MapProvider mp : getInstance().mapProviders) { + for (MapProvider mp : mapProviders) { if (mp.isMySource(sourceId1) && mp.isMySource(sourceId2)) { return mp.isSameActivity(sourceId1, sourceId2); } @@ -76,17 +61,17 @@ public class MapProviderFactory { } public static MapProvider getMapProvider(int sourceId) { - for (MapProvider mp : getInstance().mapProviders) { + for (MapProvider mp : mapProviders) { if (mp.isMySource(sourceId)) { return mp; } } - return getInstance().mapProviders[0]; + return mapProviders[0]; } public static int getSourceOrdinalFromId(int sourceId) { int sourceOrdinal = 0; - for (int key : getInstance().mapSources.keySet()) { + for (int key : mapSources.keySet()) { if (sourceId == key) { return sourceOrdinal; } @@ -97,20 +82,18 @@ public class MapProviderFactory { public static int getSourceIdFromOrdinal(int sourceOrdinal) { int count = 0; - for (int key : getInstance().mapSources.keySet()) { + for (int key : mapSources.keySet()) { if (sourceOrdinal == count) { return key; } count++; } - return getInstance().mapSources.firstKey(); + return mapSources.firstKey(); } public static void addMapviewMenuItems(Menu parentMenu, int groupId, int currentSource) { - SortedMap<Integer, MapSource> mapSources = getInstance().mapSources; - - for (int key : mapSources.keySet()) { - parentMenu.add(groupId, key, 0, mapSources.get(key).getName()).setCheckable(true).setChecked(key == currentSource); + for (Integer key : mapSources.keySet()) { + parentMenu.add(groupId, key, 0, mapSources.get(key).getName()).setCheckable(true).setChecked(key.intValue() == currentSource); } } @@ -119,6 +102,6 @@ public class MapProviderFactory { } public static MapSource getMapSource(int sourceId) { - return getInstance().mapSources.get(sourceId); + return mapSources.get(Integer.valueOf(sourceId)); } } diff --git a/tests/src/cgeo/geocaching/test/mock/MockedCache.java b/tests/src/cgeo/geocaching/test/mock/MockedCache.java index 21f67e6..352c34d 100644 --- a/tests/src/cgeo/geocaching/test/mock/MockedCache.java +++ b/tests/src/cgeo/geocaching/test/mock/MockedCache.java @@ -8,6 +8,7 @@ import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.utils.BaseUtils; import org.apache.commons.lang3.StringUtils; +import org.mapsforge.core.IOUtils; import java.io.BufferedReader; import java.io.IOException; @@ -54,9 +55,11 @@ public abstract class MockedCache implements ICache { } public static String readCachePage(final String geocode) { + InputStream is = null; + BufferedReader br = null; try { - final InputStream is = MockedCache.class.getResourceAsStream("/cgeo/geocaching/test/mock/" + geocode + ".html"); - final BufferedReader br = new BufferedReader(new InputStreamReader(is), 150000); + is = MockedCache.class.getResourceAsStream("/cgeo/geocaching/test/mock/" + geocode + ".html"); + br = new BufferedReader(new InputStreamReader(is), 150000); final StringBuilder buffer = new StringBuilder(); String line; @@ -65,10 +68,12 @@ public abstract class MockedCache implements ICache { buffer.append(line).append('\n'); } - br.close(); return BaseUtils.replaceWhitespace(buffer.toString()); } catch (IOException e) { e.printStackTrace(); + } finally { + IOUtils.closeQuietly(is); + IOUtils.closeQuietly(br); } return null; } diff --git a/tests/src/cgeo/geocaching/utils/MemorySubjectTest.java b/tests/src/cgeo/geocaching/utils/MemorySubjectTest.java index 30e4f60..7b30180 100644 --- a/tests/src/cgeo/geocaching/utils/MemorySubjectTest.java +++ b/tests/src/cgeo/geocaching/utils/MemorySubjectTest.java @@ -19,7 +19,8 @@ public class MemorySubjectTest extends AndroidTestCase { private MemorySubject<Integer> memorySubject; @Override - public void setUp() { + public void setUp() throws Exception { + super.setUp(); observer = new Observer(); memorySubject = new MemorySubject<Integer>(); } |
