summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobrun <tobrun@mapbox.com>2017-04-11 00:44:18 +0200
committerGitHub <noreply@github.com>2017-04-11 00:44:18 +0200
commitd7f9378bca4bb6b4a6b3871b0e42961cae6a847b (patch)
tree0f4b8cf12c2b371ae558557fa341c3960d72c2f7
parent6b29b2bde6048669eaa7ad79446915d2e34c4233 (diff)
downloadqtlocation-mapboxgl-d7f9378bca4bb6b4a6b3871b0e42961cae6a847b.tar.gz
[android] - avoid nullpointer by validating Mapbox.java creation when validating accessTokens. (#8680)
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java18
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/MapboxConfigurationException.java (renamed from platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/InvalidAccessTokenException.java)17
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/MapboxTest.java4
3 files changed, 23 insertions, 16 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java
index 83d04e7023..83e2be3a69 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java
@@ -7,7 +7,7 @@ import android.support.annotation.NonNull;
import android.text.TextUtils;
import com.mapbox.mapboxsdk.constants.MapboxConstants;
-import com.mapbox.mapboxsdk.exceptions.InvalidAccessTokenException;
+import com.mapbox.mapboxsdk.exceptions.MapboxConfigurationException;
import com.mapbox.mapboxsdk.location.LocationSource;
import com.mapbox.mapboxsdk.net.ConnectivityReceiver;
import com.mapbox.services.android.telemetry.MapboxTelemetry;
@@ -55,20 +55,30 @@ public final class Mapbox {
* @return Mapbox Access Token
*/
public static String getAccessToken() {
+ validateMapbox();
validateAccessToken();
return INSTANCE.accessToken;
}
/**
+ * Runtime validation of Mapbox creation.
+ */
+ private static void validateMapbox() throws MapboxConfigurationException {
+ if (INSTANCE == null) {
+ throw new MapboxConfigurationException();
+ }
+ }
+
+ /**
* Runtime validation of Access Token.
*
- * @throws InvalidAccessTokenException exception thrown when not using a valid accessToken
+ * @throws MapboxConfigurationException exception thrown when not using a valid accessToken
*/
- private static void validateAccessToken() throws InvalidAccessTokenException {
+ private static void validateAccessToken() throws MapboxConfigurationException {
String accessToken = INSTANCE.accessToken;
if (TextUtils.isEmpty(accessToken) || (!accessToken.toLowerCase(MapboxConstants.MAPBOX_LOCALE).startsWith("pk.")
&& !accessToken.toLowerCase(MapboxConstants.MAPBOX_LOCALE).startsWith("sk."))) {
- throw new InvalidAccessTokenException();
+ throw new MapboxConfigurationException();
}
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/InvalidAccessTokenException.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/MapboxConfigurationException.java
index 95851fc1d2..74bceb196c 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/InvalidAccessTokenException.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/MapboxConfigurationException.java
@@ -1,21 +1,18 @@
package com.mapbox.mapboxsdk.exceptions;
import android.content.Context;
-import android.os.Bundle;
-
-import com.mapbox.mapboxsdk.maps.MapView;
/**
- * A {@code InvalidAccessTokenException} is thrown by {@link com.mapbox.mapboxsdk.maps.MapboxMap}
- * when there is either no access token set before {@link MapView#onCreate(Bundle)} or an invalid access token
- * is set in {@link com.mapbox.mapboxsdk.Mapbox#getInstance(Context, String)}
- *
- * @see MapView#onCreate(Bundle)
+ * A MapboxConfigurationException is thrown by MapboxMap when the SDK hasn't been properly initialised.
+ * <p>
+ * This occurs either when {@link com.mapbox.mapboxsdk.Mapbox} is not correctly initialised or the provided access token
+ * through {@link com.mapbox.mapboxsdk.Mapbox#getInstance(Context, String)} isn't valid.
+ * </p>
* @see com.mapbox.mapboxsdk.Mapbox#getInstance(Context, String)
*/
-public class InvalidAccessTokenException extends RuntimeException {
+public class MapboxConfigurationException extends RuntimeException {
- public InvalidAccessTokenException() {
+ public MapboxConfigurationException() {
super("\nUsing MapView requires setting a valid access token. Use Mapbox.getInstance(Context context, "
+ "String accessToken) to provide one. "
+ "\nPlease see https://www.mapbox.com/help/create-api-access-token/ to learn how to create one."
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/MapboxTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/MapboxTest.java
index 0c1f28515d..6ee5c157b9 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/MapboxTest.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/MapboxTest.java
@@ -4,7 +4,7 @@ import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
-import com.mapbox.mapboxsdk.exceptions.InvalidAccessTokenException;
+import com.mapbox.mapboxsdk.exceptions.MapboxConfigurationException;
import org.junit.Before;
import org.junit.Test;
@@ -39,7 +39,7 @@ public class MapboxTest {
assertSame(accessToken, Mapbox.getAccessToken());
}
- @Test(expected = InvalidAccessTokenException.class)
+ @Test(expected = MapboxConfigurationException.class)
public void testGetInvalidAccessToken() {
final String accessToken = "dummy";
injectMapboxSingleton(accessToken);