Skip to content

Commit

Permalink
Merge pull request #361 from HSLdevcom/fix/add-topic-validations
Browse files Browse the repository at this point in the history
Add topic validations
  • Loading branch information
thjarvin authored Sep 10, 2024
2 parents 10022bf + d7c73ac commit b233609
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 5 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>fi.hsl</groupId>
<artifactId>transitdata-common</artifactId>
<version>1.6.1</version>
<version>1.6.2-RC</version>
<packaging>jar</packaging>
<name>Common utilities for Transitdata projects</name>
<properties>
Expand Down
19 changes: 17 additions & 2 deletions src/main/java/fi/hsl/common/hfp/HfpParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -226,9 +226,24 @@ public static Hfp.Topic parseTopic(@NotNull String topic, long receivedAtMs) thr
if (strTransportMode != null && !strTransportMode.isEmpty()) {
final Hfp.Topic.TransportMode transportMode = safeValueOf(Hfp.Topic.TransportMode.class, strTransportMode).orElseThrow(() -> new InvalidHfpTopicException("Unknown transport mode: " + topic));
builder.setTransportMode(transportMode);
} else {
throw new InvalidHfpTopicException("Transport mode missing");
}

final String operatorIdStr = parts[index++];
try {
builder.setOperatorId(Integer.parseInt(operatorIdStr));
} catch (NumberFormatException e) {
throw new InvalidHfpTopicException("Operator id is not number: " + operatorIdStr);
}

final String vehicleNumberString = parts[index++];
try {
builder.setVehicleNumber(Integer.parseInt(vehicleNumberString));
} catch (NumberFormatException e) {
throw new InvalidHfpTopicException("Vehicle number is not number: " + vehicleNumberString);
}
builder.setOperatorId(Integer.parseInt(parts[index++]));
builder.setVehicleNumber(Integer.parseInt(parts[index++]));

builder.setUniqueVehicleId(createUniqueVehicleId(builder.getOperatorId(), builder.getVehicleNumber()));
if (index + 6 <= parts.length) {
HfpValidator.validateString(parts[index++]).ifPresent(builder::setRouteId);
Expand Down
4 changes: 2 additions & 2 deletions src/test/java/fi/hsl/common/hfp/HfpParserTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -284,10 +284,10 @@ public void parseGeohashWithOverloadedZeroLevel() throws Exception {

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

assertEquals(22, meta.getOperatorId());
assertEquals(854, meta.getVehicleNumber());
Expand Down

0 comments on commit b233609

Please sign in to comment.