Skip to content

Commit b233609

Browse files
authored
Merge pull request #361 from HSLdevcom/fix/add-topic-validations
Add topic validations
2 parents 10022bf + d7c73ac commit b233609

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<modelVersion>4.0.0</modelVersion>
33
<groupId>fi.hsl</groupId>
44
<artifactId>transitdata-common</artifactId>
5-
<version>1.6.1</version>
5+
<version>1.6.2-RC</version>
66
<packaging>jar</packaging>
77
<name>Common utilities for Transitdata projects</name>
88
<properties>

src/main/java/fi/hsl/common/hfp/HfpParser.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,9 +226,24 @@ public static Hfp.Topic parseTopic(@NotNull String topic, long receivedAtMs) thr
226226
if (strTransportMode != null && !strTransportMode.isEmpty()) {
227227
final Hfp.Topic.TransportMode transportMode = safeValueOf(Hfp.Topic.TransportMode.class, strTransportMode).orElseThrow(() -> new InvalidHfpTopicException("Unknown transport mode: " + topic));
228228
builder.setTransportMode(transportMode);
229+
} else {
230+
throw new InvalidHfpTopicException("Transport mode missing");
231+
}
232+
233+
final String operatorIdStr = parts[index++];
234+
try {
235+
builder.setOperatorId(Integer.parseInt(operatorIdStr));
236+
} catch (NumberFormatException e) {
237+
throw new InvalidHfpTopicException("Operator id is not number: " + operatorIdStr);
238+
}
239+
240+
final String vehicleNumberString = parts[index++];
241+
try {
242+
builder.setVehicleNumber(Integer.parseInt(vehicleNumberString));
243+
} catch (NumberFormatException e) {
244+
throw new InvalidHfpTopicException("Vehicle number is not number: " + vehicleNumberString);
229245
}
230-
builder.setOperatorId(Integer.parseInt(parts[index++]));
231-
builder.setVehicleNumber(Integer.parseInt(parts[index++]));
246+
232247
builder.setUniqueVehicleId(createUniqueVehicleId(builder.getOperatorId(), builder.getVehicleNumber()));
233248
if (index + 6 <= parts.length) {
234249
HfpValidator.validateString(parts[index++]).ifPresent(builder::setRouteId);

src/test/java/fi/hsl/common/hfp/HfpParserTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,10 +284,10 @@ public void parseGeohashWithOverloadedZeroLevel() throws Exception {
284284

285285
@Test
286286
public void parseTopicWhenItemsMissing() throws Exception {
287-
Hfp.Topic meta = parseAndValidateTopic("/hfp/v1/journey/ongoing//0022/00854//////////");
287+
Hfp.Topic meta = parseAndValidateTopic("/hfp/v1/journey/ongoing/bus/0022/00854//////////");
288288
assertEquals(Hfp.Topic.JourneyType.journey, meta.getJourneyType());
289289
assertEquals(Hfp.Topic.TemporalType.ongoing, meta.getTemporalType());
290-
assertFalse(meta.hasTransportMode());
290+
assertEquals(Hfp.Topic.TransportMode.bus, meta.getTransportMode());
291291

292292
assertEquals(22, meta.getOperatorId());
293293
assertEquals(854, meta.getVehicleNumber());

0 commit comments

Comments
 (0)