Validate GBFS feeds. Intended as Java native alternative to https://github.com/MobilityData/gbfs-validator.
Uses the official json schema to validate files.
Create an instance of GbfsValidator
:
GbfsValidator gbfsValidator = GbfsValidatorFactory.getGbfsJsonValidator();
The GbfsValidator
interface has two methods:
Validate a set of GBFS files by providing a map of InputStreams, keyed by filename. The input streams maybe come from an HTTP response or from files. This validation method will apply custom rules (see below), by dynamically patching the static JSON schemas using data from the files themselves.
gbfsValidator.validate(
Map.of(
"gbfs", gbfsInputStream,
"system_information", systemInformationInputStream
...
)
);
Validate a single GBFS file by providing a filename and an InputStream. This validation method will not apply any custom rules, but will validate only using the static JSON schemas.
gbfsValidator.validate(
"system_information", systemInformationInputStream
);
The validation methods above will return the ValidationResult
record. This will contain a summary of the
validation process, as well as a map of validation results per file. See javadocs in model
for details.
The interface CustomRuleSchemaPatcher
enables adding additional rules dynamically by schema patching:
JSONObject addRule(JSONObject rawSchema, Map<String, JSONObject> feeds);
The raw schema along with a map of the data feeds is passed to this method. The patched schema should be returned.
List of additional rules:
NoInvalidReferenceToPricingPlansInVehicleTypes
NoInvalidReferenceToVehicleTypesInStationStatus
NoMissingVehicleTypesAvailableWhenVehicleTypesExists
NoMissingVehicleTypeIdInVehicleStatusWhenVehicleTypesExist
NoMissingCurrentRangeMetersInVehicleStatusForMotorizedVehicles
NoMissingStoreUriInSystemInformation
Some rules can't be validated with json schema:
Existing rules:
Planned rules: