Skip to content

Commit 6a5c260

Browse files
committed
In case of multiple language, only add discovery file once to result set
1 parent 630082b commit 6a5c260

File tree

1 file changed

+22
-20
lines changed

1 file changed

+22
-20
lines changed

gbfs-validator-java-api/src/main/java/org/entur/gbfs/validator/api/handler/ValidateApiDelegateHandler.java

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -63,26 +63,27 @@ public ResponseEntity<org.entur.gbfs.validator.api.model.ValidationResult> valid
6363

6464
GbfsValidator validator = GbfsValidatorFactory.getGbfsJsonValidator();
6565

66-
List<org.entur.gbfs.validator.api.model.ValidationResult> results = new ArrayList<>();
67-
68-
fileMap.keySet().forEach(language -> {
69-
Map<String, InputStream> validatorInputMap = new HashMap<>();
70-
fileMap.get(language).forEach(file -> validatorInputMap.put(file.fileName(), file.fileContents()));
71-
results.add(
72-
mapValidationResult(
73-
validator.validate(
74-
validatorInputMap
75-
),
76-
language
77-
)
78-
);
79-
});
80-
81-
82-
// merge the list of ValidationResult into a single validation result
83-
return ResponseEntity.ok(
84-
mergeValidationResults(results)
66+
// In order to support multiple languages (prior to GBFS 3.0), we need to validate each language separately
67+
// and then merge the results
68+
List<org.entur.gbfs.validator.api.model.ValidationResult> results = new ArrayList<>();
69+
fileMap.keySet().forEach(language -> {
70+
Map<String, InputStream> validatorInputMap = new HashMap<>();
71+
fileMap.get(language).forEach(file -> validatorInputMap.put(file.fileName(), file.fileContents()));
72+
results.add(
73+
mapValidationResult(
74+
validator.validate(
75+
validatorInputMap
76+
),
77+
language
78+
)
8579
);
80+
});
81+
82+
83+
// merge the list of ValidationResult into a single validation result
84+
return ResponseEntity.ok(
85+
mergeValidationResults(results)
86+
);
8687

8788
} catch (IOException e) {
8889
throw new RuntimeException(e);
@@ -94,7 +95,8 @@ private org.entur.gbfs.validator.api.model.ValidationResult mergeValidationResul
9495
ValidationResultSummary summary = new ValidationResultSummary();
9596
summary.setValidatorVersion(results.get(0).getSummary().getValidatorVersion());
9697
summary.setFiles(new ArrayList<>());
97-
results.forEach(result -> summary.getFiles().addAll(result.getSummary().getFiles()));
98+
summary.getFiles().add(results.get(0).getSummary().getFiles().stream().filter(file -> file.getName().equals("gbfs")).findFirst().orElse(null));
99+
results.forEach(result -> summary.getFiles().addAll(result.getSummary().getFiles().stream().filter(file -> !file.getName().equals("gbfs")).toList()));
98100
mergedResult.setSummary(summary);
99101
return mergedResult;
100102
}

0 commit comments

Comments
 (0)