Skip to content

Commit d53be54

Browse files
authored
Merge pull request #121 from mobidata-bw/invalid-references
Use empty enums if no referenced regions/vehicle_types exist
2 parents e72d3b7 + e81b659 commit d53be54

File tree

6 files changed

+27
-23
lines changed

6 files changed

+27
-23
lines changed

gbfs-validator-java/src/main/java/org/entur/gbfs/validation/validator/rules/NoInvalidReferenceToPricingPlansInVehicleStatus.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ public DocumentContext addRule(DocumentContext rawSchemaDocumentContext, Map<Str
5555
}
5656
JSONObject pricingPlanIdSchema = rawSchemaDocumentContext.read(requiredPath);
5757

58-
if (pricingPlansFeed != null) {
59-
JSONArray pricingPlanIds = JsonPath.parse(pricingPlansFeed).read("$.data.plans[*].plan_id");
60-
pricingPlanIdSchema.put("enum", pricingPlanIds);
61-
}
58+
JSONArray pricingPlanIds = pricingPlansFeed != null
59+
? JsonPath.parse(pricingPlansFeed).read("$.data.plans[*].plan_id")
60+
: new JSONArray();
61+
pricingPlanIdSchema.put("enum", pricingPlanIds);
6262

6363
return rawSchemaDocumentContext
6464
.set(requiredPath, pricingPlanIdSchema);

gbfs-validator-java/src/main/java/org/entur/gbfs/validation/validator/rules/NoInvalidReferenceToPricingPlansInVehicleTypes.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ public DocumentContext addRule(DocumentContext rawSchemaDocumentContext, Map<Str
4545
JSONObject defaultPricingPlanIdSchema = rawSchemaDocumentContext.read(DEFAULT_PRICING_PLAN_ID_SCHEMA_PATH);
4646
JSONObject pricingPlanIdsSchema = rawSchemaDocumentContext.read(PRICING_PLAN_IDS_SCHEMA_PATH);
4747

48-
if (pricingPlansFeed != null) {
49-
JSONArray pricingPlanIds = JsonPath.parse(pricingPlansFeed).read("$.data.plans[*].plan_id");
50-
defaultPricingPlanIdSchema.put("enum", pricingPlanIds);
51-
pricingPlanIdsSchema.put("enum", pricingPlanIds);
52-
}
48+
JSONArray pricingPlanIds = pricingPlansFeed != null
49+
? JsonPath.parse(pricingPlansFeed).read("$.data.plans[*].plan_id")
50+
: new JSONArray();
51+
defaultPricingPlanIdSchema.put("enum", pricingPlanIds);
52+
pricingPlanIdsSchema.put("enum", pricingPlanIds);
5353

5454
return rawSchemaDocumentContext
5555
.set(DEFAULT_PRICING_PLAN_ID_SCHEMA_PATH, defaultPricingPlanIdSchema)

gbfs-validator-java/src/main/java/org/entur/gbfs/validation/validator/rules/NoInvalidReferenceToRegionInStationInformation.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,13 @@ public DocumentContext addRule(
4949
REGION_IDS_SCHEMA_PATH
5050
);
5151

52-
if (systemRegionsFeed != null) {
53-
JSONArray regionIds = JsonPath
54-
.parse(systemRegionsFeed)
55-
.read("$.data.regions[*].region_id");
56-
regionIdSchema.put("enum", regionIds);
57-
}
52+
JSONArray regionIds = systemRegionsFeed != null
53+
? JsonPath
54+
.parse(systemRegionsFeed)
55+
.read("$.data.regions[*].region_id")
56+
: new JSONArray();
57+
58+
regionIdSchema.put("enum", regionIds);
5859

5960
return rawSchemaDocumentContext
6061
.set(

gbfs-validator-java/src/main/java/org/entur/gbfs/validation/validator/rules/NoInvalidReferenceToVehicleTypesInStationStatus.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,12 @@ public DocumentContext addRule(DocumentContext rawSchemaDocumentContext, Map<Str
4444
JSONObject vehicleTypesAvailableVehicleTypeIdSchema = rawSchemaDocumentContext.read(VEHICLE_TYPES_AVAILABLE_VEHICLE_TYPE_ID_SCHEMA_PATH);
4545
JSONObject vehicleDocksAvailableVehiecleTypeIdSchema = rawSchemaDocumentContext.read(VEHICLE_DOCKS_AVAILABLE_VEHICLE_TYPE_IDS_SCHEMA_PATH);
4646

47-
if (vehicleTypesFeed != null) {
48-
JSONArray vehicleTypeIds = JsonPath.parse(vehicleTypesFeed).read("$.data.vehicle_types[*].vehicle_type_id");
49-
vehicleTypesAvailableVehicleTypeIdSchema.put("enum", vehicleTypeIds);
50-
vehicleDocksAvailableVehiecleTypeIdSchema.put("enum", vehicleTypeIds);
51-
}
47+
// If no vehicle_types feed is defined, then any vehicle_type_id would be invalid
48+
JSONArray vehicleTypeIds = vehicleTypesFeed != null
49+
? JsonPath.parse(vehicleTypesFeed).read("$.data.vehicle_types[*].vehicle_type_id")
50+
: new JSONArray();
51+
vehicleTypesAvailableVehicleTypeIdSchema.put("enum", vehicleTypeIds);
52+
vehicleDocksAvailableVehiecleTypeIdSchema.put("enum", vehicleTypeIds);
5253

5354
return rawSchemaDocumentContext
5455
.set(VEHICLE_TYPES_AVAILABLE_VEHICLE_TYPE_ID_SCHEMA_PATH, vehicleTypesAvailableVehicleTypeIdSchema)

gbfs-validator-java/src/main/java/org/entur/gbfs/validation/validator/rules/NoMissingOrInvalidVehicleTypeIdInVehicleStatusWhenVehicleTypesExist.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,11 @@ public DocumentContext addRule(DocumentContext rawSchemaDocumentContext, Map<Str
5454
JSONObject vehicleItemsSchema = rawSchemaDocumentContext.read(requiredPath);
5555
if (vehicleTypesFeed != null) {
5656
vehicleItemsSchema.append("required", "vehicle_type_id");
57-
JSONArray vehicleTypeIds = JsonPath.parse(vehicleTypesFeed).read("$.data.vehicle_types[*].vehicle_type_id");
58-
vehicleItemsSchema.getJSONObject( "properties").getJSONObject("vehicle_type_id").put("enum", vehicleTypeIds);
5957
}
58+
JSONArray vehicleTypeIds = vehicleTypesFeed != null
59+
? JsonPath.parse(vehicleTypesFeed).read("$.data.vehicle_types[*].vehicle_type_id")
60+
: new JSONArray();
61+
vehicleItemsSchema.getJSONObject( "properties").getJSONObject("vehicle_type_id").put("enum", vehicleTypeIds);
6062
return rawSchemaDocumentContext.set(requiredPath, vehicleItemsSchema);
6163
}
6264
}

gbfs-validator-java/src/test/java/org/entur/gbfs/validation/validator/GbfsJsonValidatorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ void testFailed2_3Validation() {
206206
FileValidationResult result = validator.validateFile("free_bike_status", freeBikeStatus);
207207

208208
Assertions.assertEquals("2.3", result.version());
209-
Assertions.assertEquals(3, result.errorsCount());
209+
Assertions.assertEquals(6, result.errorsCount());
210210
}
211211

212212
@Test

0 commit comments

Comments
 (0)