diff options
| -rw-r--r-- | main/src/cgeo/geocaching/connector/ConnectorFactory.java | 31 | ||||
| -rw-r--r-- | tests/src/cgeo/geocaching/connector/ConnectorFactoryTest.java | 6 |
2 files changed, 20 insertions, 17 deletions
diff --git a/main/src/cgeo/geocaching/connector/ConnectorFactory.java b/main/src/cgeo/geocaching/connector/ConnectorFactory.java index fba48c7..3df98e0 100644 --- a/main/src/cgeo/geocaching/connector/ConnectorFactory.java +++ b/main/src/cgeo/geocaching/connector/ConnectorFactory.java @@ -25,13 +25,15 @@ import cgeo.geocaching.geopoint.Viewport; import org.apache.commons.lang3.StringUtils; import org.eclipse.jdt.annotation.NonNull; -import java.lang.reflect.Array; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.List; public final class ConnectorFactory { private static final UnknownConnector UNKNOWN_CONNECTOR = new UnknownConnector(); - private static final IConnector[] CONNECTORS = new IConnector[] { + private static final Collection<IConnector> CONNECTORS = Collections.unmodifiableCollection(Arrays.asList(new IConnector[] { GCConnector.getInstance(), ECConnector.getInstance(), new OCApiLiveConnector("opencaching.de", "www.opencaching.de", "OC", "CC BY-NC-ND, alle Logeinträge © jeweiliger Autor", @@ -53,42 +55,41 @@ public final class ConnectorFactory { new GeopeitusConnector(), new WaymarkingConnector(), UNKNOWN_CONNECTOR // the unknown connector MUST be the last one - }; + })); @NonNull public static final UnknownTrackableConnector UNKNOWN_TRACKABLE_CONNECTOR = new UnknownTrackableConnector(); - private static final TrackableConnector[] TRACKABLE_CONNECTORS = new TrackableConnector[] { + private static final Collection<TrackableConnector> TRACKABLE_CONNECTORS = Collections.unmodifiableCollection(Arrays.asList(new TrackableConnector[] { new GeokretyConnector(), // GK must be first, as it overlaps with the secret codes of travel bugs TravelBugConnector.getInstance(), UNKNOWN_TRACKABLE_CONNECTOR // must be last - }; + })); - private static final ISearchByViewPort[] searchByViewPortConns = getMatchingConnectors(ISearchByViewPort.class); + private static final Collection<ISearchByViewPort> searchByViewPortConns = getMatchingConnectors(ISearchByViewPort.class); - private static final ISearchByCenter[] searchByCenterConns = getMatchingConnectors(ISearchByCenter.class); + private static final Collection<ISearchByCenter> searchByCenterConns = getMatchingConnectors(ISearchByCenter.class); - private static final ISearchByKeyword[] searchByKeywordConns = getMatchingConnectors(ISearchByKeyword.class); + private static final Collection<ISearchByKeyword> searchByKeywordConns = getMatchingConnectors(ISearchByKeyword.class); @SuppressWarnings("unchecked") - private static <T extends IConnector> T[] getMatchingConnectors(final Class<T> clazz) { + private static <T extends IConnector> Collection<T> getMatchingConnectors(final Class<T> clazz) { final List<T> matching = new ArrayList<T>(); for (final IConnector connector : CONNECTORS) { if (clazz.isInstance(connector)) { matching.add((T) connector); } } - T[] result = (T[]) Array.newInstance(clazz, matching.size()); - return matching.toArray(result); + return Collections.unmodifiableCollection(matching); } - public static IConnector[] getConnectors() { + public static Collection<IConnector> getConnectors() { return CONNECTORS; } - public static ISearchByCenter[] getSearchByCenterConnectors() { + public static Collection<ISearchByCenter> getSearchByCenterConnectors() { return searchByCenterConns; } - public static ISearchByKeyword[] getSearchByKeywordConnectors() { + public static Collection<ISearchByKeyword> getSearchByKeywordConnectors() { return searchByKeywordConns; } @@ -175,7 +176,7 @@ public final class ConnectorFactory { return null; } - public static TrackableConnector[] getTrackableConnectors() { + public static Collection<TrackableConnector> getTrackableConnectors() { return TRACKABLE_CONNECTORS; } diff --git a/tests/src/cgeo/geocaching/connector/ConnectorFactoryTest.java b/tests/src/cgeo/geocaching/connector/ConnectorFactoryTest.java index ca396e1..e41e316 100644 --- a/tests/src/cgeo/geocaching/connector/ConnectorFactoryTest.java +++ b/tests/src/cgeo/geocaching/connector/ConnectorFactoryTest.java @@ -5,12 +5,14 @@ import cgeo.geocaching.connector.oc.OCConnector; import cgeo.geocaching.test.AbstractResourceInstrumentationTestCase; import cgeo.geocaching.test.mock.GC1ZXX2; +import java.util.Collection; + public class ConnectorFactoryTest extends AbstractResourceInstrumentationTestCase { public static void testGetConnectors() { - final IConnector[] connectors = ConnectorFactory.getConnectors(); + final Collection<IConnector> connectors = ConnectorFactory.getConnectors(); assertNotNull(connectors); - assertTrue(connectors.length > 0); // unknown connector must exist + assertFalse(connectors.isEmpty()); // unknown connector must exist } public static void testCanHandle() { |
