aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/cgeo/geocaching/maps/MapProviderFactory.java45
-rw-r--r--tests/src/cgeo/geocaching/test/mock/MockedCache.java11
-rw-r--r--tests/src/cgeo/geocaching/utils/MemorySubjectTest.java3
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>();
}