From 4c64746e755c22bca109dbabf0e1599a639b8f1e Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Tue, 20 Sep 2016 23:14:33 +0200 Subject: [PATCH] Switch to Java 7. Notes regarding Android compatibility: - The 'try-with-resources' language feature needs API level 19, so don't use it. All other language features can be used back to API level 8. - The JDK 1.7 API still isn't fully implemented, so better stick with 1.6 for now. --- .travis.yml | 2 +- enabler/build.gradle | 4 ++-- .../src/de/schildbach/pte/AbstractEfaProvider.java | 11 +++++++++++ .../src/de/schildbach/pte/AbstractHafasProvider.java | 11 +++++++++++ .../de/schildbach/pte/AbstractNavitiaProvider.java | 7 +++++++ .../de/schildbach/pte/AbstractNetworkProvider.java | 5 +++++ .../src/de/schildbach/pte/AbstractTsiProvider.java | 7 +++++++ enabler/src/de/schildbach/pte/HslProvider.java | 7 +++++++ enabler/src/de/schildbach/pte/VrsProvider.java | 8 ++++++++ enabler/src/de/schildbach/pte/dto/Departure.java | 1 + enabler/src/de/schildbach/pte/dto/Line.java | 1 + .../src/de/schildbach/pte/dto/SuggestedLocation.java | 1 + enabler/src/de/schildbach/pte/util/HttpClient.java | 1 + .../de/schildbach/pte/live/VrsProviderLiveTest.java | 1 + service/build.gradle | 4 ++-- 15 files changed, 66 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index fba85ec1..0a7d90c5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ # configuration for https://travis-ci.org/schildbach/public-transport-enabler sudo: false language: java -jdk: openjdk6 +jdk: openjdk7 diff --git a/enabler/build.gradle b/enabler/build.gradle index 1d8a2d73..d0d5e982 100644 --- a/enabler/build.gradle +++ b/enabler/build.gradle @@ -23,8 +23,8 @@ sourceSets { } compileJava { - sourceCompatibility '1.5' - targetCompatibility '1.5' + sourceCompatibility '1.7' + targetCompatibility '1.7' } test { diff --git a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java index 5005f6c8..6a49906c 100644 --- a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java @@ -125,10 +125,12 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { this.context = context; } + @Override public boolean canQueryLater() { return context != null; } + @Override public boolean canQueryEarlier() { return false; // TODO enable earlier querying } @@ -373,6 +375,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { XmlPullUtil.enter(pp, "itdStopFinderRequest"); processItdOdv(pp, "sf", new ProcessItdOdvCallback() { + @Override public void location(final String nameState, final Location location, final int matchQuality) { locations.add(new SuggestedLocation(location, matchQuality)); } @@ -649,6 +652,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { } } + @Override public SuggestLocationsResult suggestLocations(final CharSequence constraint) throws IOException { return jsonStopfinderRequest(new Location(LocationType.ANY, null, null, constraint.toString())); } @@ -824,6 +828,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { return null; } + @Override public NearbyLocationsResult queryNearbyLocations(final EnumSet types, final Location location, final int maxDistance, final int maxLocations) throws IOException { if (location.hasLocation()) @@ -873,6 +878,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { final List stations = new ArrayList(); final String nameState = processItdOdv(pp, "dm", new ProcessItdOdvCallback() { + @Override public void location(final String nameState, final Location location, final int matchQuality) { if (location.type == LocationType.STATION) { if ("identified".equals(nameState)) @@ -1391,6 +1397,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { + "' trainType='" + trainType + "' trainNum='" + trainNum + "' trainName='" + trainName + "'"); } + @Override public QueryDeparturesResult queryDepartures(final String stationId, final @Nullable Date time, final int maxDepartures, final boolean equivs) throws IOException { checkNotNull(Strings.emptyToNull(stationId)); @@ -1458,6 +1465,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { XmlPullUtil.optSkip(pp, "itdMessage"); final String nameState = processItdOdv(pp, "dm", new ProcessItdOdvCallback() { + @Override public void location(final String nameState, final Location location, final int matchQuality) { if (location.type == LocationType.STATION) if (findStationDepartures(result.stationDepartures, location.id) == null) @@ -2016,6 +2024,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { uri.append("&coordListOutputFormat=STRING"); } + @Override public QueryTripsResult queryTrips(final Location from, final @Nullable Location via, final Location to, final Date date, final boolean dep, final @Nullable Set products, final @Nullable Optimize optimize, final @Nullable WalkSpeed walkSpeed, @@ -2076,6 +2085,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { } } + @Override public QueryTripsResult queryMoreTrips(final QueryTripsContext contextObj, final boolean later) throws IOException { final Context context = (Context) contextObj; final String commandUri = context.context; @@ -2156,6 +2166,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { final List locations = new ArrayList(); final String nameState = processItdOdv(pp, usage, new ProcessItdOdvCallback() { + @Override public void location(final String nameState, final Location location, final int matchQuality) { locations.add(location); } diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index ddc87043..1c391ecd 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -132,10 +132,12 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider { this.sequence = sequence; } + @Override public boolean canQueryLater() { return laterContext != null; } + @Override public boolean canQueryEarlier() { return earlierContext != null; } @@ -160,10 +162,12 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider { this.earlierContext = earlierContext; } + @Override public boolean canQueryLater() { return laterContext != null; } + @Override public boolean canQueryEarlier() { return earlierContext != null; } @@ -186,10 +190,12 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider { this.canQueryMore = canQueryMore; } + @Override public boolean canQueryLater() { return canQueryMore; } + @Override public boolean canQueryEarlier() { return canQueryMore; } @@ -418,6 +424,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider { return parsePosition(platformText); } + @Override public SuggestLocationsResult suggestLocations(final CharSequence constraint) throws IOException { final StringBuilder uri = new StringBuilder(getStopEndpoint); appendJsonGetStopsParameters(uri, checkNotNull(constraint), 0); @@ -510,6 +517,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider { } } + @Override public QueryDeparturesResult queryDepartures(final String stationId, final @Nullable Date time, final int maxDepartures, final boolean equivs) throws IOException { checkNotNull(Strings.emptyToNull(stationId)); @@ -1352,6 +1360,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider { return lines; } + @Override public QueryTripsResult queryTrips(final Location from, final @Nullable Location via, final Location to, final Date date, final boolean dep, final @Nullable Set products, final @Nullable Optimize optimize, final @Nullable WalkSpeed walkSpeed, @@ -1359,6 +1368,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider { return queryTripsBinary(from, via, to, date, dep, products, walkSpeed, accessibility, options); } + @Override public QueryTripsResult queryMoreTrips(final QueryTripsContext context, final boolean later) throws IOException { return queryMoreTripsBinary(context, later); } @@ -2785,6 +2795,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider { return parsePosition(m.group(1)); } + @Override public NearbyLocationsResult queryNearbyLocations(final EnumSet types, final Location location, final int maxDistance, final int maxLocations) throws IOException { if (location.hasLocation()) diff --git a/enabler/src/de/schildbach/pte/AbstractNavitiaProvider.java b/enabler/src/de/schildbach/pte/AbstractNavitiaProvider.java index 8aaa5a8a..0aa351e5 100644 --- a/enabler/src/de/schildbach/pte/AbstractNavitiaProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractNavitiaProvider.java @@ -107,10 +107,12 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider { this.nextQueryUri = nextQueryUri; } + @Override public boolean canQueryLater() { return (from != null && to != null && nextQueryUri != null); } + @Override public boolean canQueryEarlier() { return (from != null && to != null && prevQueryUri != null); } @@ -661,6 +663,7 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider { return false; } + @Override public NearbyLocationsResult queryNearbyLocations(final EnumSet types, final Location location, int maxDistance, final int maxLocations) throws IOException { final ResultHeader resultHeader = new ResultHeader(network, SERVER_PRODUCT, SERVER_VERSION, 0, null); @@ -729,6 +732,7 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider { } } + @Override public QueryDeparturesResult queryDepartures(final String stationId, final @Nullable Date time, final int maxDepartures, final boolean equivs) throws IOException { checkNotNull(Strings.emptyToNull(stationId)); @@ -831,6 +835,7 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider { } } + @Override public SuggestLocationsResult suggestLocations(final CharSequence constraint) throws IOException { final String nameCstr = constraint.toString(); @@ -863,6 +868,7 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider { } } + @Override public QueryTripsResult queryTrips(final Location from, final @Nullable Location via, final Location to, final Date date, final boolean dep, final @Nullable Set products, final @Nullable Optimize optimize, final @Nullable WalkSpeed walkSpeed, @@ -1032,6 +1038,7 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider { } } + @Override public QueryTripsResult queryMoreTrips(final QueryTripsContext contextObj, final boolean later) throws IOException { final ResultHeader resultHeader = new ResultHeader(network, SERVER_PRODUCT, SERVER_VERSION, 0, null); diff --git a/enabler/src/de/schildbach/pte/AbstractNetworkProvider.java b/enabler/src/de/schildbach/pte/AbstractNetworkProvider.java index e4f0a1cc..bf4eeeaa 100644 --- a/enabler/src/de/schildbach/pte/AbstractNetworkProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractNetworkProvider.java @@ -53,10 +53,12 @@ public abstract class AbstractNetworkProvider implements NetworkProvider { this.network = network; } + @Override public final NetworkId id() { return network; } + @Override public final boolean hasCapabilities(final Capability... capabilities) { for (final Capability capability : capabilities) if (!hasCapability(capability)) @@ -67,6 +69,7 @@ public abstract class AbstractNetworkProvider implements NetworkProvider { protected abstract boolean hasCapability(Capability capability); + @Override public Set defaultProducts() { return ALL_EXCEPT_HIGHSPEED; } @@ -93,6 +96,7 @@ public abstract class AbstractNetworkProvider implements NetworkProvider { private static final char STYLES_SEP = '|'; + @Override public Style lineStyle(final @Nullable String network, final @Nullable Product product, final @Nullable String label) { final Map styles = this.styles; @@ -139,6 +143,7 @@ public abstract class AbstractNetworkProvider implements NetworkProvider { return Standard.STYLES.get(product); } + @Override public Point[] getArea() throws IOException { return null; } diff --git a/enabler/src/de/schildbach/pte/AbstractTsiProvider.java b/enabler/src/de/schildbach/pte/AbstractTsiProvider.java index 19a90a84..5fc3b2ac 100644 --- a/enabler/src/de/schildbach/pte/AbstractTsiProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractTsiProvider.java @@ -84,10 +84,12 @@ public abstract class AbstractTsiProvider extends AbstractNetworkProvider { this.walkSpeed = walkSpeed; } + @Override public boolean canQueryEarlier() { return true; } + @Override public boolean canQueryLater() { return true; } @@ -186,6 +188,7 @@ public abstract class AbstractTsiProvider extends AbstractNetworkProvider { return true; } + @Override public SuggestLocationsResult suggestLocations(final CharSequence constraint) throws IOException { final StringBuilder parameters = buildCommonRequestParams("SearchTripPoint", "json"); parameters.append("&MaxItems=").append(50); // XXX good value? @@ -541,15 +544,18 @@ public abstract class AbstractTsiProvider extends AbstractNetworkProvider { return new Location(locType, id, Point.fromDouble(lat, lon), place, name); } + @Override public QueryDeparturesResult queryDepartures(final String stationId, final @Nullable Date time, final int maxDepartures, final boolean equivs) throws IOException { throw new UnsupportedOperationException(); } + @Override public QueryTripsResult queryMoreTrips(final QueryTripsContext context, final boolean later) throws IOException { return ((Context) context).queryMore(this, later); } + @Override public NearbyLocationsResult queryNearbyLocations(final EnumSet types, final Location location, final int maxDistance, final int maxLocations) throws IOException { Location queryLocation = location; @@ -565,6 +571,7 @@ public abstract class AbstractTsiProvider extends AbstractNetworkProvider { return jsonCoordRequest(location.lat, location.lon, maxDistance, maxLocations); } + @Override public QueryTripsResult queryTrips(final Location from, final @Nullable Location via, final Location to, final Date date, final boolean dep, final @Nullable Set products, final @Nullable Optimize optimize, final @Nullable WalkSpeed walkSpeed, diff --git a/enabler/src/de/schildbach/pte/HslProvider.java b/enabler/src/de/schildbach/pte/HslProvider.java index 0dc54689..a0a6aff2 100644 --- a/enabler/src/de/schildbach/pte/HslProvider.java +++ b/enabler/src/de/schildbach/pte/HslProvider.java @@ -170,6 +170,7 @@ public class HslProvider extends AbstractNetworkProvider { // Determine stations near to given location. At least one of // stationId or lat/lon pair must be present. // NOTE: HSL returns only stops, not other locations, so "types" is not honoured. + @Override public NearbyLocationsResult queryNearbyLocations(EnumSet types, Location location, int maxDistance, int maxStations) throws IOException { final StringBuilder uri = apiUri("stops_area"); @@ -252,6 +253,7 @@ public class HslProvider extends AbstractNetworkProvider { } // Get departures at a given station, probably live + @Override public QueryDeparturesResult queryDepartures(String stationId, @Nullable Date queryDate, int maxDepartures, boolean equivs) throws IOException { final StringBuilder uri = apiUri("stop"); @@ -334,6 +336,7 @@ public class HslProvider extends AbstractNetworkProvider { * @return location suggestions * @throws IOException */ + @Override public SuggestLocationsResult suggestLocations(CharSequence constraint) throws IOException { final StringBuilder uri = apiUri("geocode"); @@ -424,10 +427,12 @@ public class HslProvider extends AbstractNetworkProvider { this.trips = new ArrayList(); } + @Override public boolean canQueryLater() { return true; } + @Override public boolean canQueryEarlier() { return true; } @@ -435,6 +440,7 @@ public class HslProvider extends AbstractNetworkProvider { // Query trips, asking for any ambiguousnesses // NOTE: HSL ignores accessibility + @Override public QueryTripsResult queryTrips(Location from, @Nullable Location via, Location to, Date date, boolean dep, @Nullable Set products, @Nullable Optimize optimize, @Nullable WalkSpeed walkSpeed, @Nullable Accessibility accessibility, @Nullable Set