From 2c6c6eccf2c45bf87e16c45e3bac9872f53c12c3 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sat, 31 Dec 2016 11:13:49 +1300 Subject: Implement geolocation error handling --- src/org/traccar/LocationProviderHandler.java | 16 +++++++++------- src/org/traccar/location/LocationProvider.java | 2 +- src/org/traccar/location/OpenCellIdLocationProvider.java | 6 +++--- src/org/traccar/location/UniversalLocationProvider.java | 6 ++---- test/org/traccar/location/LocationProviderTest.java | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/org/traccar/LocationProviderHandler.java b/src/org/traccar/LocationProviderHandler.java index 5f07358ec..ca3094ac2 100644 --- a/src/org/traccar/LocationProviderHandler.java +++ b/src/org/traccar/LocationProviderHandler.java @@ -20,6 +20,7 @@ import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelUpstreamHandler; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.MessageEvent; +import org.traccar.helper.Log; import org.traccar.location.LocationProvider; import org.traccar.model.Position; @@ -40,8 +41,8 @@ public class LocationProviderHandler implements ChannelUpstreamHandler { return; } - final MessageEvent e = (MessageEvent) evt; - Object message = e.getMessage(); + final MessageEvent event = (MessageEvent) evt; + Object message = event.getMessage(); if (message instanceof Position) { final Position position = (Position) message; if ((position.getOutdated() || processInvalidPositions && !position.getValid()) @@ -55,19 +56,20 @@ public class LocationProviderHandler implements ChannelUpstreamHandler { position.setLatitude(latitude); position.setLongitude(longitude); position.setAccuracy(accuracy); - Channels.fireMessageReceived(ctx, position, e.getRemoteAddress()); + Channels.fireMessageReceived(ctx, position, event.getRemoteAddress()); } @Override - public void onFailure() { - Channels.fireMessageReceived(ctx, position, e.getRemoteAddress()); + public void onFailure(Throwable e) { + Log.warning("Geolocation failed", e); + Channels.fireMessageReceived(ctx, position, event.getRemoteAddress()); } }); } else { - Channels.fireMessageReceived(ctx, position, e.getRemoteAddress()); + Channels.fireMessageReceived(ctx, position, event.getRemoteAddress()); } } else { - Channels.fireMessageReceived(ctx, message, e.getRemoteAddress()); + Channels.fireMessageReceived(ctx, message, event.getRemoteAddress()); } } diff --git a/src/org/traccar/location/LocationProvider.java b/src/org/traccar/location/LocationProvider.java index 47b9f8909..ed1494ec3 100644 --- a/src/org/traccar/location/LocationProvider.java +++ b/src/org/traccar/location/LocationProvider.java @@ -23,7 +23,7 @@ public interface LocationProvider { void onSuccess(double latitude, double longitude, double accuracy); - void onFailure(); + void onFailure(Throwable e); } diff --git a/src/org/traccar/location/OpenCellIdLocationProvider.java b/src/org/traccar/location/OpenCellIdLocationProvider.java index b45797b80..a9f815399 100644 --- a/src/org/traccar/location/OpenCellIdLocationProvider.java +++ b/src/org/traccar/location/OpenCellIdLocationProvider.java @@ -55,7 +55,7 @@ public class OpenCellIdLocationProvider implements LocationProvider { json.getJsonNumber("lat").doubleValue(), json.getJsonNumber("lon").doubleValue(), 0); } else { - callback.onFailure(); + callback.onFailure(new IllegalArgumentException("Coordinates are missing")); } } return null; @@ -63,12 +63,12 @@ public class OpenCellIdLocationProvider implements LocationProvider { @Override public void onThrowable(Throwable t) { - callback.onFailure(); + callback.onFailure(t); } }); } else { - callback.onFailure(); + callback.onFailure(new IllegalArgumentException("No network information")); } } diff --git a/src/org/traccar/location/UniversalLocationProvider.java b/src/org/traccar/location/UniversalLocationProvider.java index 7f7028545..63ab681e7 100644 --- a/src/org/traccar/location/UniversalLocationProvider.java +++ b/src/org/traccar/location/UniversalLocationProvider.java @@ -19,7 +19,6 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.ning.http.client.AsyncCompletionHandler; import com.ning.http.client.Response; import org.traccar.Context; -import org.traccar.helper.Log; import org.traccar.model.Network; import javax.json.Json; @@ -54,12 +53,11 @@ public class UniversalLocationProvider implements LocationProvider { @Override public void onThrowable(Throwable t) { - callback.onFailure(); + callback.onFailure(t); } }); } catch (JsonProcessingException e) { - Log.warning(e); - callback.onFailure(); + callback.onFailure(e); } } diff --git a/test/org/traccar/location/LocationProviderTest.java b/test/org/traccar/location/LocationProviderTest.java index aec210c84..c4357e1d6 100644 --- a/test/org/traccar/location/LocationProviderTest.java +++ b/test/org/traccar/location/LocationProviderTest.java @@ -30,7 +30,7 @@ public class LocationProviderTest extends BaseTest { } @Override - public void onFailure() { + public void onFailure(Throwable e) { Assert.fail(); } }); -- cgit v1.2.3