Skip to content

Commit

Permalink
Merge pull request #169 from everit-org/issue168
Browse files Browse the repository at this point in the history
Fixing issue #168
  • Loading branch information
erosb committed Apr 18, 2018
2 parents 4b5c44a + 89d3390 commit 2d8e68f
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 21 deletions.
38 changes: 19 additions & 19 deletions core/src/main/java/org/everit/json/schema/loader/SchemaLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ public SchemaLoaderBuilder addFormatValidator(FormatValidator formatValidator) {
*/
@Deprecated
public SchemaLoaderBuilder addFormatValidator(String formatName,
final FormatValidator formatValidator) {
final FormatValidator formatValidator) {
if (!Objects.equals(formatName, formatValidator.formatName())) {
formatValidators.put(formatName, new WrappingFormatValidator(formatName, formatValidator));
} else {
Expand All @@ -127,8 +127,8 @@ private void setSpecVersion(SpecificationVersion specVersion) {
private Optional<SpecificationVersion> specVersionInSchema() {
Optional<SpecificationVersion> specVersion = Optional.empty();
if (schemaJson instanceof Map) {
Map<String, Object> schemaObj = (Map<String, Object>) schemaJson;
specVersion = Optional.ofNullable((String) schemaObj.get("$schema")).map((SpecificationVersion::getByMetaSchemaUrl));
Map<String, Object> schemaObj = (Map<String, Object>) schemaJson;
specVersion = Optional.ofNullable((String) schemaObj.get("$schema")).map((SpecificationVersion::getByMetaSchemaUrl));
}
return specVersion;
}
Expand Down Expand Up @@ -424,22 +424,22 @@ public Schema.Builder<?> load() {

private Schema.Builder<?> loadForExplicitType(final String typeString) {
switch (typeString) {
case "string":
return new StringSchemaLoader(ls, config.formatValidators).load();
case "integer":
return buildNumberSchema().requiresInteger(true);
case "number":
return buildNumberSchema();
case "boolean":
return BooleanSchema.builder();
case "null":
return NullSchema.builder();
case "array":
return buildArraySchema();
case "object":
return buildObjectSchema();
default:
throw new SchemaException(String.format("unknown type: [%s]", typeString));
case "string":
return new StringSchemaLoader(ls, config.formatValidators).load();
case "integer":
return buildNumberSchema().requiresInteger(true);
case "number":
return buildNumberSchema();
case "boolean":
return BooleanSchema.builder();
case "null":
return NullSchema.builder();
case "array":
return buildArraySchema();
case "object":
return buildObjectSchema();
default:
throw new SchemaException(ls.locationOfCurrentObj(), String.format("unknown type: [%s]", typeString));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
import static org.everit.json.schema.TestSupport.loadAsV6;
import static org.everit.json.schema.TestSupport.loadAsV7;
import static org.everit.json.schema.TestSupport.v6Loader;
import org.everit.json.schema.internal.URIV4FormatValidator;
import static org.everit.json.schema.loader.SpecificationVersion.DRAFT_6;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

Expand Down Expand Up @@ -46,7 +46,7 @@
import org.everit.json.schema.internal.HostnameFormatValidator;
import org.everit.json.schema.internal.IPV4Validator;
import org.everit.json.schema.internal.IPV6Validator;
import org.everit.json.schema.internal.URIFormatValidator;
import org.everit.json.schema.internal.URIV4FormatValidator;
import org.everit.json.schema.loader.SchemaLoader.SchemaLoaderBuilder;
import org.everit.json.schema.loader.internal.DefaultSchemaClient;
import org.json.JSONArray;
Expand Down Expand Up @@ -663,4 +663,15 @@ public void nullableBooleansAre_NotLoaded_withoutNullableSupport() {
assertNull(nonNullableSchema.isNullable());
assertNull(implicitNonNullable.isNullable());
}

@Test
public void unknownTypeException() {
try {
SchemaLoader.load(get("unknownType"));
fail("did not throw exception for unknown type");
} catch (SchemaException actual) {
SchemaException expected = new SchemaException("#/properties/prop", "unknown type: [integgggger]");
assertEquals(expected, actual);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -631,5 +631,13 @@
"type": "string"
}
}
},
"unknownType": {
"type": "object",
"properties": {
"prop": {
"type": "integgggger"
}
}
}
}

0 comments on commit 2d8e68f

Please sign in to comment.