From b1246fbd991a28b57192b0f6e168ca5657a7e435 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 11 Oct 2021 17:22:15 -0400 Subject: [PATCH] refactoring for API updates --- .../validator/cli/ValidatorApplication.java | 1 + .../validator/core/PhenopacketValidator.java | 6 +-- .../jsonschema/JsonSchemaValidator.java | 4 +- .../validator/ontology/HpoValidator.java | 7 ++-- .../validator/ontology/HpoValidatorTest.java | 39 +++++++------------ 5 files changed, 23 insertions(+), 34 deletions(-) diff --git a/validator-cli/src/main/java/org/phenopackets/validator/cli/ValidatorApplication.java b/validator-cli/src/main/java/org/phenopackets/validator/cli/ValidatorApplication.java index b9713c1..1f44ee8 100644 --- a/validator-cli/src/main/java/org/phenopackets/validator/cli/ValidatorApplication.java +++ b/validator-cli/src/main/java/org/phenopackets/validator/cli/ValidatorApplication.java @@ -11,6 +11,7 @@ import org.phenopackets.validator.core.except.PhenopacketValidatorRuntimeException; import org.phenopackets.validator.jsonschema.JsonSchemaValidators; import org.phenopackets.validator.jsonschema.JsonSchemaValidator; +import org.phenopackets.validator.ontology.HpoValidator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import picocli.CommandLine; diff --git a/validator-core/src/main/java/org/phenopackets/validator/core/PhenopacketValidator.java b/validator-core/src/main/java/org/phenopackets/validator/core/PhenopacketValidator.java index 51c13c4..58fe352 100644 --- a/validator-core/src/main/java/org/phenopackets/validator/core/PhenopacketValidator.java +++ b/validator-core/src/main/java/org/phenopackets/validator/core/PhenopacketValidator.java @@ -18,7 +18,7 @@ public interface PhenopacketValidator { ValidatorInfo info(); - List validate(InputStream inputStream); + List validate(String content); ; // ----------------------------------------------------------------------------------------------------------------- @@ -29,8 +29,8 @@ default List validate(File phenopacket) throws IOException { } } - default List validate(String content) { - return validate(new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8))); + default List validate(byte[] bytes){ + return validate(new String(bytes)); } } diff --git a/validator-jsonschema/src/main/java/org/phenopackets/validator/jsonschema/JsonSchemaValidator.java b/validator-jsonschema/src/main/java/org/phenopackets/validator/jsonschema/JsonSchemaValidator.java index 17565c5..3e84caa 100644 --- a/validator-jsonschema/src/main/java/org/phenopackets/validator/jsonschema/JsonSchemaValidator.java +++ b/validator-jsonschema/src/main/java/org/phenopackets/validator/jsonschema/JsonSchemaValidator.java @@ -79,10 +79,10 @@ public ValidatorInfo info() { * @return List of {@link ValidationItem} objects (empty list if there were no errors) */ @Override - public List validate(InputStream inputStream) { + public List validate(String jsonString) { List errors = new ArrayList<>(); try { - JsonNode json = objectMapper.readTree(inputStream); + JsonNode json = objectMapper.readTree(jsonString); jsonSchema.validate(json) .forEach(e -> errors.add(ValidationItem.of(validatorInfo, stringToErrorType(e.getType()), e.getMessage()))); diff --git a/validator-ontology/src/main/java/org/phenopackets/validator/ontology/HpoValidator.java b/validator-ontology/src/main/java/org/phenopackets/validator/ontology/HpoValidator.java index b4d4dd4..8b0b04e 100644 --- a/validator-ontology/src/main/java/org/phenopackets/validator/ontology/HpoValidator.java +++ b/validator-ontology/src/main/java/org/phenopackets/validator/ontology/HpoValidator.java @@ -43,8 +43,7 @@ public HpoValidator(Ontology hpoOntology) { super(hpoOntology, ValidatorInfo.of(ONTOLOGY_VALIDATOR, "Human Phenotype Ontology")); } - private static Phenopacket readPhenopacket(InputStream inputStream) throws IOException { - String phenopacketJsonString = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8); + private static Phenopacket readPhenopacket(String phenopacketJsonString) throws IOException { Phenopacket.Builder phenoPacketBuilder = Phenopacket.newBuilder(); JsonFormat.parser().merge(phenopacketJsonString, phenoPacketBuilder); return phenoPacketBuilder.build(); @@ -56,10 +55,10 @@ public ValidatorInfo info() { } @Override - public List validate(InputStream inputStream) { + public List validate(String jsonString) { Phenopacket phenopacket; try { - phenopacket = readPhenopacket(inputStream); + phenopacket = readPhenopacket(jsonString); } catch (IOException e) { LOGGER.warn("Error while validating: {}", e.getMessage(), e); return List.of(ValidationItem.of(validatorInfo, ValidationItemTypes.syntaxError(), e.getMessage())); diff --git a/validator-ontology/src/test/java/org/phenopackets/validator/ontology/HpoValidatorTest.java b/validator-ontology/src/test/java/org/phenopackets/validator/ontology/HpoValidatorTest.java index 3d6cd96..9c6bd2c 100644 --- a/validator-ontology/src/test/java/org/phenopackets/validator/ontology/HpoValidatorTest.java +++ b/validator-ontology/src/test/java/org/phenopackets/validator/ontology/HpoValidatorTest.java @@ -29,11 +29,11 @@ public class HpoValidatorTest { public HpoValidator validator; - private static byte[] wrapInPhenopacketAndGetJsonBytes(List phenotypicFeatures) throws InvalidProtocolBufferException { + private static String wrapInPhenopacketAndGetJsonString(List phenotypicFeatures) throws InvalidProtocolBufferException { Phenopacket phenopacket = Phenopacket.newBuilder() .addAllPhenotypicFeatures(phenotypicFeatures) .build(); - return JsonFormat.printer().print(phenopacket).getBytes(StandardCharsets.UTF_8); + return JsonFormat.printer().print(phenopacket); } private static PhenotypicFeature makePhenotypicFeature(String termId, boolean excluded) { @@ -85,9 +85,9 @@ public void disjointTerms() throws Exception { List phenotypicFeatures = List.of( makePhenotypicFeature("HP:0000002", false), makePhenotypicFeature("HP:0000005", false)); - byte[] bytes = wrapInPhenopacketAndGetJsonBytes(phenotypicFeatures); + String json = wrapInPhenopacketAndGetJsonString(phenotypicFeatures); - List items = validator.validate(new ByteArrayInputStream(bytes)); + List items = validator.validate(json); assertThat(items, hasSize(0)); } @@ -99,10 +99,8 @@ public void parentIsPresentWhileChildrenAreExcluded() throws Exception { makePhenotypicFeature("HP:0000004", true), makePhenotypicFeature("HP:0000005", true) ); - byte[] bytes = wrapInPhenopacketAndGetJsonBytes(phenotypicFeatures); - - List items = validator.validate(new ByteArrayInputStream(bytes)); - + String json = wrapInPhenopacketAndGetJsonString(phenotypicFeatures); + List items = validator.validate(json); assertThat(items, hasSize(0)); } @@ -114,10 +112,8 @@ public class ValidationFails { @Test public void termIdIsAbsentFromOntology() throws Exception { List phenotypicFeatures = List.of(makePhenotypicFeature("HP:9999999", false)); - byte[] bytes = wrapInPhenopacketAndGetJsonBytes(phenotypicFeatures); - - List items = validator.validate(new ByteArrayInputStream(bytes)); - + String json = wrapInPhenopacketAndGetJsonString(phenotypicFeatures); + List items = validator.validate(json); assertThat(items, hasSize(1)); ValidationItem expected = ValidationItem.of(validator.info(), OntologyValidationItemTypes.ONTOLOGY_INVALID_ID, "Could not find term id: HP:9999999"); assertThat(items.get(0), equalTo(expected)); @@ -126,13 +122,10 @@ public void termIdIsAbsentFromOntology() throws Exception { @Test public void nonPrimaryTermIdIsUsed() throws Exception { List phenotypicFeatures = List.of(makePhenotypicFeature("HP:9999999", false)); - byte[] bytes = wrapInPhenopacketAndGetJsonBytes(phenotypicFeatures); - + String json = wrapInPhenopacketAndGetJsonString(phenotypicFeatures); when(ontology.containsTerm(TermId.of("HP:9999999"))).thenReturn(true); when(ontology.getPrimaryTermId(TermId.of("HP:9999999"))).thenReturn(TermId.of("HP:0000001")); - - List items = validator.validate(new ByteArrayInputStream(bytes)); - + List items = validator.validate(json); assertThat(items, hasSize(1)); ValidationItem expected = ValidationItem.of(validator.info(), OntologyValidationItemTypes.ONTOLOGY_TERM_WITH_ALTERNATE_ID, @@ -145,10 +138,8 @@ public void usingTermAlongWithItsAncestor() throws Exception { List phenotypicFeatures = List.of( makePhenotypicFeature("HP:0000003", false), makePhenotypicFeature("HP:0000004", false)); - byte[] bytes = wrapInPhenopacketAndGetJsonBytes(phenotypicFeatures); - - - List items = validator.validate(new ByteArrayInputStream(bytes)); + String json = wrapInPhenopacketAndGetJsonString(phenotypicFeatures); + List items = validator.validate(json); assertThat(items, hasSize(1)); ValidationItem expected = ValidationItem.of(validator.info(), @@ -162,10 +153,8 @@ public void usingTermWhileParentTermIsExcluded() throws Exception { List phenotypicFeatures = List.of( makePhenotypicFeature("HP:0000003", true), makePhenotypicFeature("HP:0000004", false)); - byte[] bytes = wrapInPhenopacketAndGetJsonBytes(phenotypicFeatures); - - - List items = validator.validate(new ByteArrayInputStream(bytes)); + String json = wrapInPhenopacketAndGetJsonString(phenotypicFeatures); + List items = validator.validate(json); assertThat(items, hasSize(1)); ValidationItem expected = ValidationItem.of(validator.info(),