diff options
| author | Michael Keppler <bananeweizen@gmx.de> | 2013-12-25 20:32:07 +0100 |
|---|---|---|
| committer | Michael Keppler <bananeweizen@gmx.de> | 2013-12-25 20:32:07 +0100 |
| commit | 8767705910606ef4a82a0dbd62be3a09ba5615ac (patch) | |
| tree | 65d80f5dd4384c9751aa550df2ee0afc3536072c /main/src | |
| parent | 8ad11e0e6631001e1566e39a825df09476b8108c (diff) | |
| download | cgeo-8767705910606ef4a82a0dbd62be3a09ba5615ac.zip cgeo-8767705910606ef4a82a0dbd62be3a09ba5615ac.tar.gz cgeo-8767705910606ef4a82a0dbd62be3a09ba5615ac.tar.bz2 | |
fix findbugs issue
* refactor map tokens to be a concrete type, as we already had a bad
null check in there
Diffstat (limited to 'main/src')
10 files changed, 49 insertions, 15 deletions
diff --git a/main/src/cgeo/geocaching/connector/ConnectorFactory.java b/main/src/cgeo/geocaching/connector/ConnectorFactory.java index 2877eda..fba48c7 100644 --- a/main/src/cgeo/geocaching/connector/ConnectorFactory.java +++ b/main/src/cgeo/geocaching/connector/ConnectorFactory.java @@ -10,6 +10,7 @@ import cgeo.geocaching.connector.capability.ISearchByKeyword; import cgeo.geocaching.connector.capability.ISearchByViewPort; import cgeo.geocaching.connector.ec.ECConnector; import cgeo.geocaching.connector.gc.GCConnector; +import cgeo.geocaching.connector.gc.MapTokens; import cgeo.geocaching.connector.oc.OCApiConnector; import cgeo.geocaching.connector.oc.OCApiConnector.ApiSupport; import cgeo.geocaching.connector.oc.OCApiLiveConnector; @@ -154,7 +155,7 @@ public final class ConnectorFactory { } /** @see ISearchByViewPort#searchByViewport */ - public static SearchResult searchByViewport(final @NonNull Viewport viewport, final String[] tokens) { + public static SearchResult searchByViewport(final @NonNull Viewport viewport, final MapTokens tokens) { final SearchResult result = new SearchResult(); for (final ISearchByViewPort connector : searchByViewPortConns) { if (connector.isActive()) { diff --git a/main/src/cgeo/geocaching/connector/capability/ISearchByViewPort.java b/main/src/cgeo/geocaching/connector/capability/ISearchByViewPort.java index c04e9ed..7981ba8 100644 --- a/main/src/cgeo/geocaching/connector/capability/ISearchByViewPort.java +++ b/main/src/cgeo/geocaching/connector/capability/ISearchByViewPort.java @@ -2,10 +2,11 @@ package cgeo.geocaching.connector.capability; import cgeo.geocaching.SearchResult; import cgeo.geocaching.connector.IConnector; +import cgeo.geocaching.connector.gc.MapTokens; import cgeo.geocaching.geopoint.Viewport; import org.eclipse.jdt.annotation.NonNull; public interface ISearchByViewPort extends IConnector { - public SearchResult searchByViewport(final @NonNull Viewport viewport, final String[] tokens); + public SearchResult searchByViewport(final @NonNull Viewport viewport, final MapTokens tokens); } diff --git a/main/src/cgeo/geocaching/connector/ec/ECConnector.java b/main/src/cgeo/geocaching/connector/ec/ECConnector.java index 518bc35..3c66d7d 100644 --- a/main/src/cgeo/geocaching/connector/ec/ECConnector.java +++ b/main/src/cgeo/geocaching/connector/ec/ECConnector.java @@ -13,6 +13,7 @@ import cgeo.geocaching.connector.capability.ILogin; import cgeo.geocaching.connector.capability.ISearchByCenter; import cgeo.geocaching.connector.capability.ISearchByGeocode; import cgeo.geocaching.connector.capability.ISearchByViewPort; +import cgeo.geocaching.connector.gc.MapTokens; import cgeo.geocaching.enumerations.LogType; import cgeo.geocaching.enumerations.StatusCode; import cgeo.geocaching.geopoint.Geopoint; @@ -92,7 +93,7 @@ public class ECConnector extends AbstractConnector implements ISearchByGeocode, } @Override - public SearchResult searchByViewport(@NonNull Viewport viewport, String[] tokens) { + public SearchResult searchByViewport(@NonNull Viewport viewport, final MapTokens tokens) { final Collection<Geocache> caches = ECApi.searchByBBox(viewport); if (caches == null) { return null; diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java index f642dab..4349d5d 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java +++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java @@ -169,7 +169,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode, } @Override - public SearchResult searchByViewport(@NonNull Viewport viewport, String[] tokens) { + public SearchResult searchByViewport(@NonNull Viewport viewport, final MapTokens tokens) { return GCMap.searchByViewport(viewport, tokens); } diff --git a/main/src/cgeo/geocaching/connector/gc/GCLogin.java b/main/src/cgeo/geocaching/connector/gc/GCLogin.java index 7699552..e072c8f 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCLogin.java +++ b/main/src/cgeo/geocaching/connector/gc/GCLogin.java @@ -468,13 +468,18 @@ public class GCLogin extends AbstractLogin { return !StringUtils.contains(uri, "cache_details"); } - /** Get user session & session token from the Live Map. Needed for following requests */ - public static String[] getMapTokens() { + /** + * Get user session & session token from the Live Map. Needed for following requests. + * + * @return first is user session, second is session token + */ + public static @NonNull + MapTokens getMapTokens() { final HttpResponse response = Network.getRequest(GCConstants.URL_LIVE_MAP); final String data = Network.getResponseData(response); final String userSession = TextUtils.getMatch(data, GCConstants.PATTERN_USERSESSION, ""); final String sessionToken = TextUtils.getMatch(data, GCConstants.PATTERN_SESSIONTOKEN, ""); - return new String[] { userSession, sessionToken }; + return new MapTokens(userSession, sessionToken); } } diff --git a/main/src/cgeo/geocaching/connector/gc/GCMap.java b/main/src/cgeo/geocaching/connector/gc/GCMap.java index 1854024..aabeb56 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCMap.java +++ b/main/src/cgeo/geocaching/connector/gc/GCMap.java @@ -1,9 +1,9 @@ package cgeo.geocaching.connector.gc; +import cgeo.geocaching.CgeoApplication; import cgeo.geocaching.DataStore; import cgeo.geocaching.Geocache; import cgeo.geocaching.SearchResult; -import cgeo.geocaching.CgeoApplication; import cgeo.geocaching.enumerations.CacheSize; import cgeo.geocaching.enumerations.CacheType; import cgeo.geocaching.enumerations.LiveMapStrategy.Strategy; @@ -254,7 +254,7 @@ public class GCMap { * Live map tokens * @return */ - public static SearchResult searchByViewport(final Viewport viewport, final String[] tokens) { + public static SearchResult searchByViewport(final Viewport viewport, final MapTokens tokens) { int speed = (int) CgeoApplication.getInstance().currentGeo().getSpeed() * 60 * 60 / 1000; // in km/h Strategy strategy = Settings.getLiveMapStrategy(); if (strategy == Strategy.AUTO) { @@ -284,7 +284,7 @@ public class GCMap { * Strategy for data retrieval and parsing, @see Strategy * @return */ - private static SearchResult searchByViewport(final Viewport viewport, final String[] tokens, Strategy strategy) { + private static SearchResult searchByViewport(final Viewport viewport, final MapTokens tokens, Strategy strategy) { Log.d("GCMap.searchByViewport" + viewport.toString()); final SearchResult searchResult = new SearchResult(); @@ -310,7 +310,7 @@ public class GCMap { "ep", "1", "app", "cgeo"); if (tokens != null) { - params.put("k", tokens[0], "st", tokens[1]); + params.put("k", tokens.getUserSession(), "st", tokens.getSessionToken()); } if (Settings.isExcludeMyCaches()) { // works only for PM params.put("hf", "1", "hh", "1"); // hide found, hide hidden diff --git a/main/src/cgeo/geocaching/connector/gc/MapTokens.java b/main/src/cgeo/geocaching/connector/gc/MapTokens.java new file mode 100644 index 0000000..78ce4cb --- /dev/null +++ b/main/src/cgeo/geocaching/connector/gc/MapTokens.java @@ -0,0 +1,23 @@ +package cgeo.geocaching.connector.gc; + +import android.util.Pair; + +/** + * Wrapper type to make map tokens more type safe than with a String array. + * + */ +public final class MapTokens extends Pair<String, String> { + + public MapTokens(String userSession, String sessionToken) { + super(userSession, sessionToken); + } + + public String getUserSession() { + return first; + } + + public String getSessionToken() { + return second; + } + +} diff --git a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java index b038e8c..b45f809 100644 --- a/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java +++ b/main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java @@ -10,6 +10,7 @@ import cgeo.geocaching.connector.capability.ILogin; import cgeo.geocaching.connector.capability.ISearchByCenter; import cgeo.geocaching.connector.capability.ISearchByKeyword; import cgeo.geocaching.connector.capability.ISearchByViewPort; +import cgeo.geocaching.connector.gc.MapTokens; import cgeo.geocaching.connector.oc.UserInfo.UserInfoStatus; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.geopoint.Viewport; @@ -46,7 +47,7 @@ public class OCApiLiveConnector extends OCApiConnector implements ISearchByCente } @Override - public SearchResult searchByViewport(@NonNull Viewport viewport, String[] tokens) { + public SearchResult searchByViewport(@NonNull Viewport viewport, MapTokens tokens) { return new SearchResult(OkapiClient.getCachesBBox(viewport, this)); } diff --git a/main/src/cgeo/geocaching/connector/ox/OXConnector.java b/main/src/cgeo/geocaching/connector/ox/OXConnector.java index 81d491c..7d4cf7f 100644 --- a/main/src/cgeo/geocaching/connector/ox/OXConnector.java +++ b/main/src/cgeo/geocaching/connector/ox/OXConnector.java @@ -8,6 +8,7 @@ import cgeo.geocaching.connector.capability.ISearchByCenter; import cgeo.geocaching.connector.capability.ISearchByGeocode; import cgeo.geocaching.connector.capability.ISearchByKeyword; import cgeo.geocaching.connector.capability.ISearchByViewPort; +import cgeo.geocaching.connector.gc.MapTokens; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.geopoint.Viewport; import cgeo.geocaching.loaders.RecaptchaReceiver; @@ -83,7 +84,7 @@ public class OXConnector extends AbstractConnector implements ISearchByCenter, I } @Override - public SearchResult searchByViewport(@NonNull Viewport viewport, String[] tokens) { + public SearchResult searchByViewport(@NonNull Viewport viewport, final MapTokens tokens) { return createSearchResult(OpenCachingApi.searchByBoundingBox(viewport)); } diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java index f4243da..927ff28 100644 --- a/main/src/cgeo/geocaching/maps/CGeoMap.java +++ b/main/src/cgeo/geocaching/maps/CGeoMap.java @@ -12,6 +12,7 @@ import cgeo.geocaching.Waypoint; import cgeo.geocaching.activity.ActivityMixin; import cgeo.geocaching.connector.ConnectorFactory; import cgeo.geocaching.connector.gc.GCLogin; +import cgeo.geocaching.connector.gc.MapTokens; import cgeo.geocaching.connector.gc.Tile; import cgeo.geocaching.enumerations.CacheType; import cgeo.geocaching.enumerations.LiveMapStrategy.Strategy; @@ -138,7 +139,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto // status data /** Last search result used for displaying header */ private SearchResult lastSearchResult = null; - private String[] tokens = null; + private MapTokens tokens = null; private boolean noMapTokenShowed = false; // map status data private boolean followMyLocation = false; @@ -1167,7 +1168,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto if (tokens == null) { tokens = GCLogin.getMapTokens(); - if (noMapTokenHandler != null && tokens == null) { + if (noMapTokenHandler != null && (StringUtils.isEmpty(tokens.getUserSession()) || StringUtils.isEmpty(tokens.getSessionToken()))) { noMapTokenHandler.sendEmptyMessage(0); } } |
