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]