aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorMichael Keppler <bananeweizen@gmx.de>2013-12-25 20:32:07 +0100
committerMichael Keppler <bananeweizen@gmx.de>2013-12-25 20:32:07 +0100
commit8767705910606ef4a82a0dbd62be3a09ba5615ac (patch)
tree65d80f5dd4384c9751aa550df2ee0afc3536072c /main
parent8ad11e0e6631001e1566e39a825df09476b8108c (diff)
downloadcgeo-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')
-rw-r--r--main/src/cgeo/geocaching/connector/ConnectorFactory.java3
-rw-r--r--main/src/cgeo/geocaching/connector/capability/ISearchByViewPort.java3
-rw-r--r--main/src/cgeo/geocaching/connector/ec/ECConnector.java3
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConnector.java2
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCLogin.java11
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCMap.java8
-rw-r--r--main/src/cgeo/geocaching/connector/gc/MapTokens.java23
-rw-r--r--main/src/cgeo/geocaching/connector/oc/OCApiLiveConnector.java3
-rw-r--r--main/src/cgeo/geocaching/connector/ox/OXConnector.java3
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java5
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);
}
}