From ec7b47684c89264f4347f2601a83d602162cb817 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Tue, 23 Jun 2015 12:21:37 +1200 Subject: Fix resource leaking in geocoders --- .../traccar/geocode/GisgraphyReverseGeocoder.java | 40 ++++++++-------------- 1 file changed, 14 insertions(+), 26 deletions(-) (limited to 'src/org/traccar/geocode/GisgraphyReverseGeocoder.java') diff --git a/src/org/traccar/geocode/GisgraphyReverseGeocoder.java b/src/org/traccar/geocode/GisgraphyReverseGeocoder.java index 9d513a6f5..392a11e66 100644 --- a/src/org/traccar/geocode/GisgraphyReverseGeocoder.java +++ b/src/org/traccar/geocode/GisgraphyReverseGeocoder.java @@ -23,45 +23,33 @@ import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; -public class GisgraphyReverseGeocoder implements ReverseGeocoder { - - private final String url; +public class GisgraphyReverseGeocoder extends JsonReverseGeocoder { public GisgraphyReverseGeocoder() { this("http://services.gisgraphy.com/street/streetsearch"); } public GisgraphyReverseGeocoder(String url) { - this.url = url + "?format=json&lat=%f&lng=%f&from=1&to=1"; + super(url + "?format=json&lat=%f&lng=%f&from=1&to=1"); } @Override - public String getAddress(AddressFormat format, double latitude, double longitude) { - - try { - Address address = new Address(); - URLConnection conn = new URL(String.format(url, latitude, longitude)).openConnection(); - - JsonObject json = Json.createReader(new InputStreamReader(conn.getInputStream())).readObject(); - JsonObject result = json.getJsonArray("result").getJsonObject(0); - - if (result.containsKey("name")) { - address.setStreet(result.getString("name")); - } - if (result.containsKey("isIn")) { - address.setSettlement(result.getString("isIn")); - } - if (result.containsKey("countryCode")) { - address.setCountry(result.getString("countryCode")); - } + protected Address parseAddress(JsonObject json) { + Address address = new Address(); - return format.format(address); + JsonObject result = json.getJsonArray("result").getJsonObject(0); - } catch(Exception error) { - Log.warning(error); + if (result.containsKey("name")) { + address.setStreet(result.getString("name")); + } + if (result.containsKey("isIn")) { + address.setSettlement(result.getString("isIn")); + } + if (result.containsKey("countryCode")) { + address.setCountry(result.getString("countryCode")); } - return null; + return address; } } -- cgit v1.2.3