From 3ed32b34d9deb20795b9b67ad43a516135934482 Mon Sep 17 00:00:00 2001 From: Sarah Lensing Date: Fri, 30 Jun 2017 09:51:17 -0400 Subject: [PATCH] Log Exceptions (#230) * log exceptions * update location availability documentation * better log.e --- .../lost/api/FusedLocationProviderApi.java | 2 ++ .../FusedLocationProviderApiImpl.java | 31 ++++++++++++------- .../FusedLocationProviderServiceDelegate.java | 6 ++-- .../FusedLocationServiceCallbackManager.java | 7 +++-- 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/lost/src/main/java/com/mapzen/android/lost/api/FusedLocationProviderApi.java b/lost/src/main/java/com/mapzen/android/lost/api/FusedLocationProviderApi.java index 34a7aa9..9d4564c 100644 --- a/lost/src/main/java/com/mapzen/android/lost/api/FusedLocationProviderApi.java +++ b/lost/src/main/java/com/mapzen/android/lost/api/FusedLocationProviderApi.java @@ -37,6 +37,8 @@ public interface FusedLocationProviderApi { * Network location is enabled and the {@link android.location.LocationManager} has a last known * Network location * + * This method can return null if there is a problem getting the availability. + * * @param client The client to return availability for. * @return The availability of location data. * @throws IllegalStateException if the client is not connected at the time of this call. diff --git a/lost/src/main/java/com/mapzen/android/lost/internal/FusedLocationProviderApiImpl.java b/lost/src/main/java/com/mapzen/android/lost/internal/FusedLocationProviderApiImpl.java index a44f79d..958a0b6 100644 --- a/lost/src/main/java/com/mapzen/android/lost/internal/FusedLocationProviderApiImpl.java +++ b/lost/src/main/java/com/mapzen/android/lost/internal/FusedLocationProviderApiImpl.java @@ -20,6 +20,7 @@ import android.os.IBinder; import android.os.Looper; import android.os.RemoteException; +import android.util.Log; import java.util.List; import java.util.Map; @@ -31,6 +32,7 @@ public class FusedLocationProviderApiImpl extends ApiImpl implements FusedLocationProviderApi, EventCallbacks, ServiceConnection { + private static final String TAG = FusedLocationProviderApiImpl.class.getSimpleName(); private Context context; private FusedLocationServiceConnectionManager serviceConnectionManager; private FusedLocationServiceCallbackManager serviceCallbackManager; @@ -123,19 +125,25 @@ public boolean isConnected() { @Override public Location getLastLocation(LostApiClient client) { throwIfNotConnected(client); + Location location = null; try { - return service.getLastLocation(); + location = service.getLastLocation(); } catch (RemoteException e) { - throw new RuntimeException(e); + Log.e(TAG, "Error occurred trying to get last Location", e); + } finally { + return location; } } @Override public LocationAvailability getLocationAvailability(LostApiClient client) { throwIfNotConnected(client); + LocationAvailability availability = null; try { - return service.getLocationAvailability(); + availability = service.getLocationAvailability(); } catch (RemoteException e) { - throw new RuntimeException(e); + Log.e(TAG, "Error occurred trying to get LocationAvailability", e); + } finally { + return availability; } } @@ -179,7 +187,7 @@ private void requestLocationUpdatesInternal(LocationRequest request) { try { service.requestLocationUpdates(request); } catch (RemoteException e) { - throw new RuntimeException(e); + Log.e(TAG, "Error occurred trying to request location updates", e); } } @@ -190,7 +198,7 @@ private void removeLocationUpdatesInternal(List requests) { try { service.removeLocationUpdates(requests); } catch (RemoteException e) { - throw new RuntimeException(e); + Log.e(TAG, "Error occurred trying to remove location updates", e); } } @@ -244,7 +252,8 @@ private void checkAllListenersPendingIntentsAndCallbacks() { try { service.setMockMode(isMockMode); } catch (RemoteException e) { - throw new RuntimeException(e); + String mode = isMockMode ? "enabled" : "disabled"; + Log.e(TAG, "Error occurred trying to set mock mode " + mode, e); } return new SimplePendingResult(true); } @@ -255,7 +264,7 @@ private void checkAllListenersPendingIntentsAndCallbacks() { try { service.setMockLocation(mockLocation); } catch (RemoteException e) { - throw new RuntimeException(e); + Log.e(TAG, "Error occurred trying to set mock location", e); } return new SimplePendingResult(true); } @@ -266,7 +275,7 @@ private void checkAllListenersPendingIntentsAndCallbacks() { try { service.setMockTrace(path, filename); } catch (RemoteException e) { - throw new RuntimeException(e); + Log.e(TAG, "Error occurred trying to set mock trace", e); } return new SimplePendingResult(true); } @@ -288,7 +297,7 @@ void registerRemoteCallback() { try { service.init(remoteCallback); } catch (RemoteException e) { - throw new RuntimeException(e); + Log.e(TAG, "Error occurred trying to register remote callback", e); } } } @@ -298,7 +307,7 @@ void unregisterRemoteCallback() { try { service.init(null); } catch (RemoteException e) { - throw new RuntimeException(e); + Log.e(TAG, "Error occurred trying to unregister remote callback", e); } } } diff --git a/lost/src/main/java/com/mapzen/android/lost/internal/FusedLocationProviderServiceDelegate.java b/lost/src/main/java/com/mapzen/android/lost/internal/FusedLocationProviderServiceDelegate.java index 5a2b0c6..f742cef 100644 --- a/lost/src/main/java/com/mapzen/android/lost/internal/FusedLocationProviderServiceDelegate.java +++ b/lost/src/main/java/com/mapzen/android/lost/internal/FusedLocationProviderServiceDelegate.java @@ -10,6 +10,7 @@ import android.os.Looper; import android.os.RemoteException; import android.support.annotation.RequiresPermission; +import android.util.Log; import java.io.File; import java.util.List; @@ -19,6 +20,7 @@ public class FusedLocationProviderServiceDelegate implements LocationEngine.Callback { + private static final String TAG = FusedLocationProviderServiceDelegate.class.getSimpleName(); private Context context; private boolean mockMode; @@ -76,7 +78,7 @@ public void reportLocation(Location location) { try { callback.onLocationChanged(location); } catch (RemoteException e) { - throw new RuntimeException(e); + Log.e(TAG, "Error occurred trying to report a new Location", e); } } } @@ -130,7 +132,7 @@ private void notifyLocationAvailabilityChanged() { try { callback.onLocationAvailabilityChanged(availability); } catch (RemoteException e) { - throw new RuntimeException(e); + Log.e(TAG, "Error occurred trying to report a new LocationAvailability", e); } } } diff --git a/lost/src/main/java/com/mapzen/android/lost/internal/FusedLocationServiceCallbackManager.java b/lost/src/main/java/com/mapzen/android/lost/internal/FusedLocationServiceCallbackManager.java index 7395033..e0a47b5 100644 --- a/lost/src/main/java/com/mapzen/android/lost/internal/FusedLocationServiceCallbackManager.java +++ b/lost/src/main/java/com/mapzen/android/lost/internal/FusedLocationServiceCallbackManager.java @@ -6,9 +6,12 @@ import android.content.Context; import android.location.Location; import android.os.RemoteException; +import android.util.Log; import java.util.ArrayList; +import static android.content.ContentValues.TAG; + /** * Handles callbacks received in {@link FusedLocationProviderApiImpl} from * {@link FusedLocationProviderService}. @@ -29,11 +32,11 @@ void onLocationChanged(Context context, Location location, LostClientManager cli ReportedChanges changes = clientManager.reportLocationChanged(location); - LocationAvailability availability; + LocationAvailability availability = null; try { availability = service.getLocationAvailability(); } catch (RemoteException e) { - throw new RuntimeException(e); + Log.e(TAG, "Error occurred trying to get LocationAvailability", e); } ArrayList locations = new ArrayList<>();