diff --git a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java index f0251725..54b23285 100644 --- a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java @@ -181,7 +181,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider // System.out.println(uri.toString()); - final CharSequence page = ParserUtils.scrape(uri.toString(), false, null, "UTF-8", null); + final CharSequence page = ParserUtils.scrape(uri.toString(), false, null, UTF_8, null); try { @@ -2297,7 +2297,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider else { uri.append("&type_").append(paramSuffix).append("=").append(locationTypeValue(location)); - uri.append("&name_").append(paramSuffix).append("=").append(ParserUtils.urlEncode(locationValue(location), "ISO-8859-1")); + uri.append("&name_").append(paramSuffix).append("=").append(ParserUtils.urlEncode(locationValue(location), ISO_8859_1)); } } diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index 96d728aa..27341eb5 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -18,8 +18,9 @@ package de.schildbach.pte; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; @@ -68,14 +69,13 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider { protected final static String SERVER_PRODUCT = "hafas"; - private static final String DEFAULT_ENCODING = "ISO-8859-1"; private static final String PROD = "hafas"; private final String apiUri; private final int numProductBits; private final String accessId; - private final String jsonEncoding; - private final String xmlMlcResEncoding; + private final Charset jsonEncoding; + private final Charset xmlMlcResEncoding; private static class Context implements QueryConnectionsContext { @@ -101,8 +101,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } } - public AbstractHafasProvider(final String apiUri, final int numProductBits, final String accessId, final String jsonEncoding, - final String xmlMlcResEncoding) + public AbstractHafasProvider(final String apiUri, final int numProductBits, final String accessId, final Charset jsonEncoding, + final Charset xmlMlcResEncoding) { this.apiUri = apiUri; this.numProductBits = numProductBits; @@ -116,8 +116,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider this.apiUri = apiUri; this.numProductBits = numProductBits; this.accessId = accessId; - this.jsonEncoding = DEFAULT_ENCODING; - this.xmlMlcResEncoding = DEFAULT_ENCODING; + this.jsonEncoding = ISO_8859_1; + this.xmlMlcResEncoding = ISO_8859_1; } protected TimeZone timeZone() @@ -243,16 +243,17 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider // System.out.println(ParserUtils.scrape(apiUri, true, wrap(request), null, false)); - InputStream is = null; + Reader reader = null; + try { - is = ParserUtils.scrapeInputStream(apiUri, wrap(request), null, 3); + reader = new InputStreamReader(ParserUtils.scrapeInputStream(apiUri, wrap(request), null, 3), ISO_8859_1); final List results = new ArrayList(); final XmlPullParserFactory factory = XmlPullParserFactory.newInstance(System.getProperty(XmlPullParserFactory.PROPERTY_NAME), null); final XmlPullParser pp = factory.newPullParser(); - pp.setInput(is, DEFAULT_ENCODING); + pp.setInput(reader); assertResC(pp); XmlPullUtil.enter(pp); @@ -288,8 +289,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } finally { - if (is != null) - is.close(); + if (reader != null) + reader.close(); } } @@ -374,15 +375,15 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider protected final List xmlLocationList(final String uri) throws IOException { - InputStream is = null; + Reader reader = null; try { - is = ParserUtils.scrapeInputStream(uri); + reader = new InputStreamReader(ParserUtils.scrapeInputStream(uri), UTF_8); final XmlPullParserFactory factory = XmlPullParserFactory.newInstance(System.getProperty(XmlPullParserFactory.PROPERTY_NAME), null); final XmlPullParser pp = factory.newPullParser(); - pp.setInput(is, "UTF-8"); + pp.setInput(reader); final List results = new ArrayList(); @@ -440,8 +441,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } finally { - if (is != null) - is.close(); + if (reader != null) + reader.close(); } } @@ -454,15 +455,15 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider // ParserUtils.printXml(ParserUtils.scrape(apiUri, true, wrap(request), mlcResEncoding, false)); - InputStream is = null; + Reader reader = null; try { - is = ParserUtils.scrapeInputStream(apiUri, wrap(request), null, 3); + reader = new InputStreamReader(ParserUtils.scrapeInputStream(apiUri, wrap(request), null, 3), xmlMlcResEncoding); final XmlPullParserFactory factory = XmlPullParserFactory.newInstance(System.getProperty(XmlPullParserFactory.PROPERTY_NAME), null); final XmlPullParser pp = factory.newPullParser(); - pp.setInput(is, xmlMlcResEncoding); + pp.setInput(reader); final List results = new ArrayList(); @@ -523,8 +524,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } finally { - if (is != null) - is.close(); + if (reader != null) + reader.close(); } } @@ -536,8 +537,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider try { - reader = new StringReplaceReader(new InputStreamReader(ParserUtils.scrapeInputStream(uri), DEFAULT_ENCODING), "Ringbahn ->", - "Ringbahn ->"); + reader = new StringReplaceReader(new InputStreamReader(ParserUtils.scrapeInputStream(uri), ISO_8859_1), "Ringbahn ->", "Ringbahn ->"); reader.replace("Ringbahn <-", "Ringbahn <-"); // System.out.println(uri); @@ -823,15 +823,15 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider // System.out.println(request); // ParserUtils.printXml(ParserUtils.scrape(apiUri, true, wrap(request), null, null)); - InputStream is = null; + Reader reader = null; try { - is = ParserUtils.scrapeInputStream(apiUri, wrap(request), null, 3); + reader = new InputStreamReader(ParserUtils.scrapeInputStream(apiUri, wrap(request), null, 3), ISO_8859_1); final XmlPullParserFactory factory = XmlPullParserFactory.newInstance(System.getProperty(XmlPullParserFactory.PROPERTY_NAME), null); final XmlPullParser pp = factory.newPullParser(); - pp.setInput(is, DEFAULT_ENCODING); + pp.setInput(reader); assertResC(pp); final String product = XmlPullUtil.attr(pp, "prod").split(" ")[0]; @@ -1165,8 +1165,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } finally { - if (is != null) - is.close(); + if (reader != null) + reader.close(); } } diff --git a/enabler/src/de/schildbach/pte/AbstractNetworkProvider.java b/enabler/src/de/schildbach/pte/AbstractNetworkProvider.java index 1484d9e5..b66e7623 100644 --- a/enabler/src/de/schildbach/pte/AbstractNetworkProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractNetworkProvider.java @@ -17,6 +17,8 @@ package de.schildbach.pte; +import java.nio.charset.Charset; + import de.schildbach.pte.dto.Point; import de.schildbach.pte.dto.Style; @@ -25,6 +27,9 @@ import de.schildbach.pte.dto.Style; */ public abstract class AbstractNetworkProvider implements NetworkProvider { + protected static final Charset UTF_8 = Charset.forName("UTF-8"); + protected static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1"); + public Style lineStyle(final String line) { if (line.length() == 0) diff --git a/enabler/src/de/schildbach/pte/BahnProvider.java b/enabler/src/de/schildbach/pte/BahnProvider.java index 07e63e9a..26ad90b4 100644 --- a/enabler/src/de/schildbach/pte/BahnProvider.java +++ b/enabler/src/de/schildbach/pte/BahnProvider.java @@ -149,11 +149,10 @@ public final class BahnProvider extends AbstractHafasProvider } private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/dn?getstop=1&REQ0JourneyStopsS0A=255&S=%s?&js=true&"; - private static final String ENCODING = "ISO-8859-1"; public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return jsonGetStops(uri); } diff --git a/enabler/src/de/schildbach/pte/BvgProvider.java b/enabler/src/de/schildbach/pte/BvgProvider.java index d19f67ca..34137488 100644 --- a/enabler/src/de/schildbach/pte/BvgProvider.java +++ b/enabler/src/de/schildbach/pte/BvgProvider.java @@ -169,7 +169,7 @@ public final class BvgProvider extends AbstractHafasProvider final int parsedId = Integer.parseInt(mOwn.group(1)); final int parsedLon = (int) (Float.parseFloat(mOwn.group(2)) * 1E6); final int parsedLat = (int) (Float.parseFloat(mOwn.group(3)) * 1E6); - final String[] parsedPlaceAndName = splitPlaceAndName(ParserUtils.urlDecode(mOwn.group(4), "ISO-8859-1")); + final String[] parsedPlaceAndName = splitPlaceAndName(ParserUtils.urlDecode(mOwn.group(4), ISO_8859_1)); stations.add(new Location(LocationType.STATION, parsedId, parsedLat, parsedLon, parsedPlaceAndName[0], parsedPlaceAndName[1])); } @@ -454,8 +454,6 @@ public final class BvgProvider extends AbstractHafasProvider return xmlMLcReq(constraint); } - private static final String URL_ENCODING = "ISO-8859-1"; - private String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep, final String products) { @@ -468,8 +466,8 @@ public final class BvgProvider extends AbstractHafasProvider uri.append("?start=Suchen"); - uri.append("&REQ0JourneyStopsS0ID=").append(ParserUtils.urlEncode(locationId(from), URL_ENCODING)); - uri.append("&REQ0JourneyStopsZ0ID=").append(ParserUtils.urlEncode(locationId(to), URL_ENCODING)); + uri.append("&REQ0JourneyStopsS0ID=").append(ParserUtils.urlEncode(locationId(from), ISO_8859_1)); + uri.append("&REQ0JourneyStopsZ0ID=").append(ParserUtils.urlEncode(locationId(to), ISO_8859_1)); if (via != null) { @@ -487,11 +485,11 @@ public final class BvgProvider extends AbstractHafasProvider uri.append("&REQ0JourneyStops1.0Y=").append(via.lat); if (via.name == null) uri.append("&REQ0JourneyStops1.0O=").append( - ParserUtils.urlEncode(String.format(Locale.ENGLISH, "%.6f, %.6f", via.lat / 1E6, via.lon / 1E6), URL_ENCODING)); + ParserUtils.urlEncode(String.format(Locale.ENGLISH, "%.6f, %.6f", via.lat / 1E6, via.lon / 1E6), ISO_8859_1)); } else if (via.name != null) { - uri.append("&REQ0JourneyStops1.0G=").append(ParserUtils.urlEncode(via.name, URL_ENCODING)); + uri.append("&REQ0JourneyStops1.0G=").append(ParserUtils.urlEncode(via.name, ISO_8859_1)); if (via.type != LocationType.ANY) uri.append('!'); } diff --git a/enabler/src/de/schildbach/pte/DsbProvider.java b/enabler/src/de/schildbach/pte/DsbProvider.java index 2a771810..0769c945 100644 --- a/enabler/src/de/schildbach/pte/DsbProvider.java +++ b/enabler/src/de/schildbach/pte/DsbProvider.java @@ -154,11 +154,10 @@ public class DsbProvider extends AbstractHafasProvider } private static final String AUTOCOMPLETE_URI = "http://xmlopen.rejseplanen.dk/bin/rest.exe/location.name?input=%s"; - private static final String ENCODING = "ISO-8859-1"; public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return xmlLocationList(uri); } diff --git a/enabler/src/de/schildbach/pte/NriProvider.java b/enabler/src/de/schildbach/pte/NriProvider.java index d43a7d7b..9d23921b 100644 --- a/enabler/src/de/schildbach/pte/NriProvider.java +++ b/enabler/src/de/schildbach/pte/NriProvider.java @@ -156,11 +156,10 @@ public class NriProvider extends AbstractHafasProvider private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/ony?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=255&REQ0JourneyStopsS0B=5&REQ0JourneyStopsB=12&getstop=1&noSession=yes&REQ0JourneyStopsS0G=%s?&js=true&"; - private static final String ENCODING = "ISO-8859-1"; public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return jsonGetStops(uri); } diff --git a/enabler/src/de/schildbach/pte/NvvProvider.java b/enabler/src/de/schildbach/pte/NvvProvider.java index 300039d2..19957ed0 100644 --- a/enabler/src/de/schildbach/pte/NvvProvider.java +++ b/enabler/src/de/schildbach/pte/NvvProvider.java @@ -35,7 +35,7 @@ public class NvvProvider extends AbstractHafasProvider public NvvProvider() { - super(API_BASE + "query.exe/dn", 17, null, "UTF-8", "UTF-8"); + super(API_BASE + "query.exe/dn", 17, null, UTF_8, UTF_8); } public NetworkId id() diff --git a/enabler/src/de/schildbach/pte/OebbProvider.java b/enabler/src/de/schildbach/pte/OebbProvider.java index eeb88e3e..8d828473 100644 --- a/enabler/src/de/schildbach/pte/OebbProvider.java +++ b/enabler/src/de/schildbach/pte/OebbProvider.java @@ -35,7 +35,6 @@ public class OebbProvider extends AbstractHafasProvider { public static final NetworkId NETWORK_ID = NetworkId.OEBB; private static final String API_BASE = "http://fahrplan.oebb.at/bin/"; - private static final String URL_ENCODING = "ISO-8859-1"; public OebbProvider() { @@ -186,7 +185,7 @@ public class OebbProvider extends AbstractHafasProvider public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), URL_ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return jsonGetStops(uri); } diff --git a/enabler/src/de/schildbach/pte/PlProvider.java b/enabler/src/de/schildbach/pte/PlProvider.java index c762324a..ab254100 100644 --- a/enabler/src/de/schildbach/pte/PlProvider.java +++ b/enabler/src/de/schildbach/pte/PlProvider.java @@ -38,7 +38,7 @@ public class PlProvider extends AbstractHafasProvider public PlProvider() { - super(API_BASE + "query.exe/pn", 7, null, null, "UTF-8"); + super(API_BASE + "query.exe/pn", 7, null, null, UTF_8); } public NetworkId id() diff --git a/enabler/src/de/schildbach/pte/RmvProvider.java b/enabler/src/de/schildbach/pte/RmvProvider.java index 852f6705..26a6feb4 100644 --- a/enabler/src/de/schildbach/pte/RmvProvider.java +++ b/enabler/src/de/schildbach/pte/RmvProvider.java @@ -48,7 +48,7 @@ public class RmvProvider extends AbstractHafasProvider public RmvProvider() { - super(API_BASE + "query.exe/dn", 16, null, "UTF-8", null); + super(API_BASE + "query.exe/dn", 16, null, UTF_8, null); } public NetworkId id() @@ -298,11 +298,10 @@ public class RmvProvider extends AbstractHafasProvider } private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/dn?getstop=1&REQ0JourneyStopsS0A=255&S=%s?&js=true&"; - private static final String ENCODING = "ISO-8859-1"; public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return jsonGetStops(uri); } diff --git a/enabler/src/de/schildbach/pte/RtProvider.java b/enabler/src/de/schildbach/pte/RtProvider.java index 2559ae4b..2379b7e2 100644 --- a/enabler/src/de/schildbach/pte/RtProvider.java +++ b/enabler/src/de/schildbach/pte/RtProvider.java @@ -36,7 +36,7 @@ public class RtProvider extends AbstractHafasProvider public RtProvider() { - super(API_BASE + "query.exe/dn", 10, null, "UTF-8", null); + super(API_BASE + "query.exe/dn", 10, null, UTF_8, null); } public NetworkId id() @@ -148,11 +148,10 @@ public class RtProvider extends AbstractHafasProvider } private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/dn?getstop=1&REQ0JourneyStopsS0A=255&S=%s?&js=true&"; - private static final String ENCODING = "ISO-8859-1"; public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return jsonGetStops(uri); } diff --git a/enabler/src/de/schildbach/pte/SbbProvider.java b/enabler/src/de/schildbach/pte/SbbProvider.java index 178dfdef..dd05ca94 100644 --- a/enabler/src/de/schildbach/pte/SbbProvider.java +++ b/enabler/src/de/schildbach/pte/SbbProvider.java @@ -143,11 +143,10 @@ public class SbbProvider extends AbstractHafasProvider } private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/dn?getstop=1&REQ0JourneyStopsS0A=255&S=%s?&js=true&"; - private static final String ENCODING = "ISO-8859-1"; public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return jsonGetStops(uri); } diff --git a/enabler/src/de/schildbach/pte/SeProvider.java b/enabler/src/de/schildbach/pte/SeProvider.java index bc7bd4bf..fbc5c636 100644 --- a/enabler/src/de/schildbach/pte/SeProvider.java +++ b/enabler/src/de/schildbach/pte/SeProvider.java @@ -39,7 +39,7 @@ public class SeProvider extends AbstractHafasProvider public SeProvider() { - super(API_BASE + "query.exe/sn", 14, null, "UTF-8", null); + super(API_BASE + "query.exe/sn", 14, null, UTF_8, null); } public NetworkId id() @@ -191,11 +191,10 @@ public class SeProvider extends AbstractHafasProvider private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/sny?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=7&getstop=1&noSession=yes&REQ0JourneyStopsB=12&REQ0JourneyStopsS0G=&S=%s"; - private static final String ENCODING = "ISO-8859-1"; public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return jsonGetStops(uri); } diff --git a/enabler/src/de/schildbach/pte/SeptaProvider.java b/enabler/src/de/schildbach/pte/SeptaProvider.java index 52797333..1910d2a0 100644 --- a/enabler/src/de/schildbach/pte/SeptaProvider.java +++ b/enabler/src/de/schildbach/pte/SeptaProvider.java @@ -289,11 +289,10 @@ public class SeptaProvider extends AbstractHafasProvider private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/dny?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=255&REQ0JourneyStopsB=12&S=%s?&js=true&"; - private static final String ENCODING = "ISO-8859-1"; public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return jsonGetStops(uri); } diff --git a/enabler/src/de/schildbach/pte/ShProvider.java b/enabler/src/de/schildbach/pte/ShProvider.java index 3cc2fe69..d95bcf25 100644 --- a/enabler/src/de/schildbach/pte/ShProvider.java +++ b/enabler/src/de/schildbach/pte/ShProvider.java @@ -50,7 +50,7 @@ public class ShProvider extends AbstractHafasProvider public ShProvider() { - super(API_BASE + "query.exe/dn", 10, null, null, "UTF-8"); + super(API_BASE + "query.exe/dn", 10, null, null, UTF_8); } public NetworkId id() diff --git a/enabler/src/de/schildbach/pte/SncbProvider.java b/enabler/src/de/schildbach/pte/SncbProvider.java index 75733f4e..322a7156 100644 --- a/enabler/src/de/schildbach/pte/SncbProvider.java +++ b/enabler/src/de/schildbach/pte/SncbProvider.java @@ -134,11 +134,10 @@ public class SncbProvider extends AbstractHafasProvider private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/nny?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=255&REQ0JourneyStopsB=12&S=%s?&js=true&"; - private static final String ENCODING = "ISO-8859-1"; public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return jsonGetStops(uri); } diff --git a/enabler/src/de/schildbach/pte/StockholmProvider.java b/enabler/src/de/schildbach/pte/StockholmProvider.java index e38e1bbd..75e88d18 100644 --- a/enabler/src/de/schildbach/pte/StockholmProvider.java +++ b/enabler/src/de/schildbach/pte/StockholmProvider.java @@ -158,11 +158,10 @@ public class StockholmProvider extends AbstractHafasProvider private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/sny?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=7&getstop=1&noSession=yes&REQ0JourneyStopsB=12&REQ0JourneyStopsS0G=&S=%s"; - private static final String ENCODING = "ISO-8859-1"; public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return jsonGetStops(uri); } diff --git a/enabler/src/de/schildbach/pte/VbbProvider.java b/enabler/src/de/schildbach/pte/VbbProvider.java index c0ad3ee1..1874efc8 100644 --- a/enabler/src/de/schildbach/pte/VbbProvider.java +++ b/enabler/src/de/schildbach/pte/VbbProvider.java @@ -164,11 +164,10 @@ public class VbbProvider extends AbstractHafasProvider } private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/dn?getstop=1&REQ0JourneyStopsS0A=255&S=%s?&js=true&"; - private static final String ENCODING = "ISO-8859-1"; public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return jsonGetStops(uri); } diff --git a/enabler/src/de/schildbach/pte/VbnProvider.java b/enabler/src/de/schildbach/pte/VbnProvider.java index 21f99751..4978dd89 100644 --- a/enabler/src/de/schildbach/pte/VbnProvider.java +++ b/enabler/src/de/schildbach/pte/VbnProvider.java @@ -149,11 +149,10 @@ public class VbnProvider extends AbstractHafasProvider private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/dny?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=255&REQ0JourneyStopsS0B=5&REQ0JourneyStopsB=12&getstop=1&noSession=yes&REQ0JourneyStopsS0G=%s?&js=true&"; - private static final String ENCODING = "ISO-8859-1"; public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return jsonGetStops(uri); } diff --git a/enabler/src/de/schildbach/pte/VgsProvider.java b/enabler/src/de/schildbach/pte/VgsProvider.java index 80ec541e..98350dc5 100644 --- a/enabler/src/de/schildbach/pte/VgsProvider.java +++ b/enabler/src/de/schildbach/pte/VgsProvider.java @@ -300,11 +300,10 @@ public class VgsProvider extends AbstractHafasProvider private static final String AUTOCOMPLETE_URI = API_BASE + "ajax-getstop.exe/eny?start=1&tpl=suggest2json&REQ0JourneyStopsS0A=1&getstop=1&noSession=yes&REQ0JourneyStopsB=12&REQ0JourneyStopsS0G=%s?&js=true&"; - private static final String ENCODING = "ISO-8859-1"; public List autocompleteStations(final CharSequence constraint) throws IOException { - final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ENCODING)); + final String uri = String.format(AUTOCOMPLETE_URI, ParserUtils.urlEncode(constraint.toString(), ISO_8859_1)); return jsonGetStops(uri); } diff --git a/enabler/src/de/schildbach/pte/ZvvProvider.java b/enabler/src/de/schildbach/pte/ZvvProvider.java index 048e60bb..71adde3f 100644 --- a/enabler/src/de/schildbach/pte/ZvvProvider.java +++ b/enabler/src/de/schildbach/pte/ZvvProvider.java @@ -37,7 +37,7 @@ public class ZvvProvider extends AbstractHafasProvider public ZvvProvider() { - super(API_BASE + "query.exe/dn", 10, null, "UTF-8", "UTF-8"); + super(API_BASE + "query.exe/dn", 10, null, UTF_8, UTF_8); } public NetworkId id() diff --git a/enabler/src/de/schildbach/pte/util/ParserUtils.java b/enabler/src/de/schildbach/pte/util/ParserUtils.java index b1f69abb..20a5c92a 100644 --- a/enabler/src/de/schildbach/pte/util/ParserUtils.java +++ b/enabler/src/de/schildbach/pte/util/ParserUtils.java @@ -29,6 +29,7 @@ import java.net.SocketTimeoutException; import java.net.URL; import java.net.URLDecoder; import java.net.URLEncoder; +import java.nio.charset.Charset; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -50,7 +51,7 @@ public final class ParserUtils private static final int SCRAPE_INITIAL_CAPACITY = 4096; private static final int SCRAPE_CONNECT_TIMEOUT = 5000; private static final int SCRAPE_READ_TIMEOUT = 15000; - private static final String SCRAPE_DEFAULT_ENCODING = "ISO-8859-1"; + private static final Charset SCRAPE_DEFAULT_ENCODING = Charset.forName("ISO-8859-1"); private static final int SCRAPE_PAGE_EMPTY_THRESHOLD = 2; private static String stateCookie; @@ -65,13 +66,13 @@ public final class ParserUtils return scrape(url, false, null, null, null); } - public static final CharSequence scrape(final String url, final boolean isPost, final String request, String encoding, + public static final CharSequence scrape(final String url, final boolean isPost, final String request, Charset encoding, final String sessionCookieName) throws IOException { return scrape(url, isPost, request, encoding, sessionCookieName, 3); } - public static final CharSequence scrape(final String urlStr, final boolean isPost, final String request, String encoding, + public static final CharSequence scrape(final String urlStr, final boolean isPost, final String request, Charset encoding, final String sessionCookieName, int tries) throws IOException { if (encoding == null) @@ -432,11 +433,11 @@ public final class ParserUtils } } - public static String urlEncode(final String str, final String enc) + public static String urlEncode(final String str, final Charset encoding) { try { - return URLEncoder.encode(str, enc); + return URLEncoder.encode(str, encoding.name()); } catch (final UnsupportedEncodingException x) { @@ -444,11 +445,11 @@ public final class ParserUtils } } - public static String urlDecode(final String str, final String enc) + public static String urlDecode(final String str, final Charset encoding) { try { - return URLDecoder.decode(str, enc); + return URLDecoder.decode(str, encoding.name()); } catch (final UnsupportedEncodingException x) {