diff --git a/android/java/MapboxGLAndroidSDK/build.gradle b/android/java/MapboxGLAndroidSDK/build.gradle index 806134394..ebfe98cd8 100644 --- a/android/java/MapboxGLAndroidSDK/build.gradle +++ b/android/java/MapboxGLAndroidSDK/build.gradle @@ -31,6 +31,7 @@ dependencies { compile 'commons-validator:commons-validator:1.4.1' compile 'com.android.support:support-annotations:21.0.3' compile 'com.android.support:support-v4:21.0.3' + compile 'com.squareup.okhttp:okhttp:2.2.0' } android { diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/lib/constants/MapboxConstants.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/lib/constants/MapboxConstants.java new file mode 100644 index 000000000..4816dbf4d --- /dev/null +++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/lib/constants/MapboxConstants.java @@ -0,0 +1,10 @@ +package com.mapbox.mapboxgl.lib.constants; + +import java.util.Locale; + +public class MapboxConstants { + + // Default Locale for data processing (ex: String.toLowerCase(MAPBOX_LOCALE, "foo")) + public static final Locale MAPBOX_LOCALE = Locale.US; + +} diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/lib/util/JavaFileSource.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/lib/util/JavaFileSource.java new file mode 100644 index 000000000..1081657b0 --- /dev/null +++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/lib/util/JavaFileSource.java @@ -0,0 +1,47 @@ +package com.mapbox.mapboxgl.lib.util; + +import com.mapbox.mapboxgl.lib.constants.MapboxConstants; +import com.squareup.okhttp.Callback; +import com.squareup.okhttp.OkHttpClient; +import com.squareup.okhttp.Request; + +public class JavaFileSource { + + private static JavaFileSource instance = null; + + // Single reference to OkHttp for performance gains + private OkHttpClient client; + + /** + * Private Constructor to support Singleton pattern + */ + private JavaFileSource() { + super(); + client = new OkHttpClient(); + } + + /** + * Get the singleton instance of JavaFileSource + * @return Reference to the Singleton Instance of JavaFileSource + */ + public static JavaFileSource getInstance() { + if (instance == null) { + instance = new JavaFileSource(); + } + return instance; + } + + /** + * Make an HTTP Request + * @param resourceUrl URL to resource + * @param callback Callback class + */ + public void request(final String resourceUrl, final Callback callback) { + Request request = new Request.Builder().url(resourceUrl).tag(resourceUrl.toLowerCase(MapboxConstants.MAPBOX_LOCALE)).build(); + client.newCall(request).enqueue(callback); + } + + public void cancel(final String resourceUrl) { + client.cancel(resourceUrl.toLowerCase(MapboxConstants.MAPBOX_LOCALE)); + } +}