diff --git a/CHANGELOG.md b/CHANGELOG.md index 347e1e5..a5575b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 1.1.3 [unreleased] +* [fix] Fixed issue with direction ID as `String` instead if `Integer` (#2) + ## 1.1.3 [2018-11-13] * [security] Updates Jackson dependency 2.9.4 to 2.9.7 (CVE-2018-7489) * [improvement] Client and model classes implement `Serializable` diff --git a/pom.xml b/pom.xml index 84dc67d..7d3e6f3 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ de.stklcode.pubtrans juraclient - 1.1.3 + 1.1.4-SNAPSHOT UTF-8 diff --git a/src/main/java/de/stklcode/pubtrans/ura/model/Trip.java b/src/main/java/de/stklcode/pubtrans/ura/model/Trip.java index f42d89a..c7f0583 100644 --- a/src/main/java/de/stklcode/pubtrans/ura/model/Trip.java +++ b/src/main/java/de/stklcode/pubtrans/ura/model/Trip.java @@ -176,13 +176,15 @@ public final class Trip implements Model { throw Model.typeErrorString(LINE_NAME, raw.get(LINE_NAME).getClass()); } - if (raw.get(DIRECTION_ID) instanceof Integer) { - directionID = (Integer) raw.get(DIRECTION_ID); + if (raw.get(DIRECTION_ID) instanceof String // Also accept Strings (#2) + || raw.get(DIRECTION_ID) instanceof Integer + || raw.get(DIRECTION_ID) instanceof Long) { + directionID = Integer.valueOf(raw.get(DIRECTION_ID).toString()); if (directionID < 0 || directionID > 2) { throw new IOException("Direction out of range. Expected 1 or 2, found " + directionID); } } else { - throw Model.typeError(DIRECTION_ID, raw.get(DIRECTION_ID).getClass(), "Integer"); + throw Model.typeError(DIRECTION_ID, raw.get(DIRECTION_ID).getClass(), "String/Long/Integer"); } if (raw.get(DESTINATION_NAME) instanceof String) { diff --git a/src/test/java/de/stklcode/pubtrans/ura/model/TripTest.java b/src/test/java/de/stklcode/pubtrans/ura/model/TripTest.java index 88e6cc4..efdd418 100644 --- a/src/test/java/de/stklcode/pubtrans/ura/model/TripTest.java +++ b/src/test/java/de/stklcode/pubtrans/ura/model/TripTest.java @@ -163,7 +163,7 @@ public class TripTest { invalid = new ArrayList<>(raw); invalid.remove(10); - invalid.add(10, "1"); + invalid.add(10, "7"); // Strings are generally OK, but 7 is out of range (#2). try { new Trip(invalid); fail("Creation of Trip with invalid directionID field successfull"); diff --git a/src/test/resources/de/stklcode/pubtrans/ura/instant_V1_trips_stop_name.txt b/src/test/resources/de/stklcode/pubtrans/ura/instant_V1_trips_stop_name.txt index c9a4dc9..4192099 100644 --- a/src/test/resources/de/stklcode/pubtrans/ura/instant_V1_trips_stop_name.txt +++ b/src/test/resources/de/stklcode/pubtrans/ura/instant_V1_trips_stop_name.txt @@ -1,11 +1,11 @@ [4,"2.0",1483362959788] -[1,"Uniklinik","100600","H.2",0,50.7756388,6.04425,11,"33","33",1,"Aachen Fuchserde","Aachen Fuchserde","318",92000043013001,1483362935000] -[1,"Uniklinik","100600","H.1",0,50.7756388,6.04425,1,"5","5",1,"Driescher Hof-Brand","Driescher Hof-Brand","312",92000282009001,1483362936000] -[1,"Uniklinik","100600","H.4",0,50.7756388,6.04425,33,"45","45",1,"Uniklinik","Uniklinik","317",92000285009001,1483363294000] -[1,"Uniklinik","100600","H.3",0,50.7756388,6.04425,28,"10","3.B",1,"Uniklinik-Ponttor-Hbf.","Uniklinik-Ponttor-Hbf.","347",92000053015001,1483363039000] -[1,"Uniklinik","100600","H.3",0,50.7756388,6.04425,29,"33","33",1,"Uniklinik","Uniklinik","529",92000209014001,1483363288000] -[1,"Uniklinik","100600","H.2",0,50.7756388,6.04425,1,"73","73",1,"Aachen Bf.Rothe Erde","Aachen Bf.Rothe Erde","315",92000291016001,1483363080000] -[1,"Uniklinik","100600","H.3",0,50.7756388,6.04425,29,"10","3.B",1,"Uniklinik-Ponttor-Hbf.","Uniklinik-Ponttor-Hbf.","347",92000053015001,1483363099000] -[1,"Uniklinik","100600","H.1",0,50.7756388,6.04425,28,"3","3.A",1,"Uniklinik-Schanz-Hbf.","Uniklinik-Schanz-Hbf.","325",92000288012001,1483363080000] -[1,"Uniklinik","100600","H.2",0,50.7756388,6.04425,6,"70","70",1,"Aachen Adenauerallee","Aachen Adenauerallee","588",92000225009001,1483363346000] -[1,"Uniklinik","100600","H.1",0,50.7756388,6.04425,1,"3","3.A",1,"Schanz-Hbf.-Ponttor","Schanz-Hbf.-Ponttor","325",92000288013001,1483363380000] +[1,"Uniklinik","100600","H.2",0,50.7756388,6.04425,11,"33","33","1","Aachen Fuchserde","Aachen Fuchserde","318",92000043013001,1483362935000] +[1,"Uniklinik","100600","H.1",0,50.7756388,6.04425,1,"5","5","1","Driescher Hof-Brand","Driescher Hof-Brand","312",92000282009001,1483362936000] +[1,"Uniklinik","100600","H.4",0,50.7756388,6.04425,33,"45","45","1","Uniklinik","Uniklinik","317",92000285009001,1483363294000] +[1,"Uniklinik","100600","H.3",0,50.7756388,6.04425,28,"10","3.B","1","Uniklinik-Ponttor-Hbf.","Uniklinik-Ponttor-Hbf.","347",92000053015001,1483363039000] +[1,"Uniklinik","100600","H.3",0,50.7756388,6.04425,29,"33","33","1","Uniklinik","Uniklinik","529",92000209014001,1483363288000] +[1,"Uniklinik","100600","H.2",0,50.7756388,6.04425,1,"73","73","1","Aachen Bf.Rothe Erde","Aachen Bf.Rothe Erde","315",92000291016001,1483363080000] +[1,"Uniklinik","100600","H.3",0,50.7756388,6.04425,29,"10","3.B","1","Uniklinik-Ponttor-Hbf.","Uniklinik-Ponttor-Hbf.","347",92000053015001,1483363099000] +[1,"Uniklinik","100600","H.1",0,50.7756388,6.04425,28,"3","3.A","1","Uniklinik-Schanz-Hbf.","Uniklinik-Schanz-Hbf.","325",92000288012001,1483363080000] +[1,"Uniklinik","100600","H.2",0,50.7756388,6.04425,6,"70","70","1","Aachen Adenauerallee","Aachen Adenauerallee","588",92000225009001,1483363346000] +[1,"Uniklinik","100600","H.1",0,50.7756388,6.04425,1,"3","3.A","1","Schanz-Hbf.-Ponttor","Schanz-Hbf.-Ponttor","325",92000288013001,1483363380000]