Skip to content

PR #511: Improve validation messages (German and default) #536

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 27, 2022

Conversation

AndreasALoew
Copy link
Contributor

As discussed with @rustermi here is my pull request after improving German validation messages.

Note that in order to support better comparisons between language versions, I have sorted all message properties files by the message keys, such that they are now in the same order.

As stated, I have been unable to validate my PR by executing Maven "surefire" tests, as I cannot get them to run on a Windows machine with a default locale of German (and I must not change my Windows locale)...

I will also attach the full output I get from running Maven tests with German locale:
[ERROR] Tests run: 371, Failures: 26, Errors: 0, Skipped: 55

@AndreasALoew
Copy link
Contributor Author

[INFO] Scanning for projects...
[INFO] Inspecting build with total of 1 modules...
[INFO] Installing Nexus Staging features:
[INFO]   ... total of 1 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin
[INFO] 
[INFO] ----------------< com.networknt:json-schema-validator >-----------------
[INFO] Building JsonSchemaValidator 1.0.68-SNAPSHOT
[INFO] -------------------------------[ bundle ]-------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ json-schema-validator ---
[INFO] Deleting D:\GitHub\json-schema-validator\target
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.6:prepare-agent (pre-unit-test) @ json-schema-validator ---
[WARNING] The artifact xml-apis:xml-apis:jar:2.0.2 has been relocated to xml-apis:xml-apis:jar:1.0.b2
[INFO] argLine set to -javaagent:D:\\ENTWICKLUNG\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.8.6\\org.jacoco.agent-0.8.6-runtime.jar=destfile=D:\\GitHub\\json-schema-validator\\target\\coverage-reports\\jacoco-ut.exec
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ json-schema-validator ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.6.1:compile (default-compile) @ json-schema-validator ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 99 source files to D:\GitHub\json-schema-validator\target\classes
[INFO] /D:/GitHub/json-schema-validator/src/main/java/com/networknt/schema/SpecVersion.java: Some input files use unchecked or unsafe operations.
[INFO] /D:/GitHub/json-schema-validator/src/main/java/com/networknt/schema/SpecVersion.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-compiler-plugin:3.6.1:testCompile (test-compile) @ json-schema-validator ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 61 source files to D:\GitHub\json-schema-validator\target\test-classes
[INFO] /D:/GitHub/json-schema-validator/src/test/java/com/networknt/schema/SpecVersionTest.java: Some input files use unchecked or unsafe operations.
[INFO] /D:/GitHub/json-schema-validator/src/test/java/com/networknt/schema/SpecVersionTest.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ json-schema-validator ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 329 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.6.1:testCompile (default-testCompile) @ json-schema-validator ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 61 source files to D:\GitHub\json-schema-validator\target\test-classes
[INFO] /D:/GitHub/json-schema-validator/src/test/java/com/networknt/schema/SpecVersionTest.java: Some input files use unchecked or unsafe operations.
[INFO] /D:/GitHub/json-schema-validator/src/test/java/com/networknt/schema/SpecVersionTest.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ json-schema-validator ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.networknt.schema.AdditionalPropertiesOneOfFailsTest
[WARNING] Tests run: 7, Failures: 0, Errors: 0, Skipped: 7, Time elapsed: 0.034 s - in com.networknt.schema.AdditionalPropertiesOneOfFailsTest
[INFO] Running com.networknt.schema.CollectorContextTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.298 s - in com.networknt.schema.CollectorContextTest
[INFO] Running com.networknt.schema.CustomMetaSchemaTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.021 s - in com.networknt.schema.CustomMetaSchemaTest
[INFO] Running com.networknt.schema.CustomUriTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.06 s - in com.networknt.schema.CustomUriTest
[INFO] Running com.networknt.schema.CyclicDependencyTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.218 s - in com.networknt.schema.CyclicDependencyTest
[INFO] Running com.networknt.schema.DateTimeDSTTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.093 s - in com.networknt.schema.DateTimeDSTTest
[INFO] Running com.networknt.schema.Issue255Test
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.008 s - in com.networknt.schema.Issue255Test
[INFO] Running com.networknt.schema.Issue285Test

[$.name.lastName: boolean wurde gefunden, aber string erwartet]

[$.type: Ein Wert in der Aufzählung [array, boolean, integer, null, number, object, string] fehlt, $.type muss gültig für mindestens ein Schema array sein]
[WARNING] Tests run: 3, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.398 s - in com.networknt.schema.Issue285Test
[INFO] Running com.networknt.schema.Issue295Test
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s - in com.networknt.schema.Issue295Test
[INFO] Running com.networknt.schema.Issue313Test
[WARNING] Tests run: 2, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.004 s - in com.networknt.schema.Issue313Test
[INFO] Running com.networknt.schema.Issue314Test
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 s - in com.networknt.schema.Issue314Test
[INFO] Running com.networknt.schema.Issue327Test
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.008 s - in com.networknt.schema.Issue327Test
[INFO] Running com.networknt.schema.Issue342Test
[ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.027 s <<< FAILURE! - in com.networknt.schema.Issue342Test
[ERROR] propertyNameEnumShouldFailV7  Time elapsed: 0.027 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <Property name $.z is not valid for validation: does not have a value in the enumeration [a, b, c]> but was: <Eigenschaftsname $.z ist ungültig für die Validierung: Ein Wert in der Aufzählung [a, b, c] fehlt>
	at com.networknt.schema.Issue342Test.propertyNameEnumShouldFailV7(Issue342Test.java:36)

[INFO] Running com.networknt.schema.Issue347Test
[ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.006 s <<< FAILURE! - in com.networknt.schema.Issue347Test
[ERROR] failure  Time elapsed: 0.006 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <test: null is an invalid segment for URI {2}> but was: <test: null ist ein ungültiges Segment für die URI {2}>
	at com.networknt.schema.Issue347Test.failure(Issue347Test.java:19)

[INFO] Running com.networknt.schema.Issue366FailFastTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.075 s - in com.networknt.schema.Issue366FailFastTest
[INFO] Running com.networknt.schema.Issue366FailSlowTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.014 s - in com.networknt.schema.Issue366FailSlowTest
[INFO] Running com.networknt.schema.Issue375Test
[ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.014 s <<< FAILURE! - in com.networknt.schema.Issue375Test
[ERROR] shouldFailAndShowValidationValuesWithError  Time elapsed: 0.014 s  <<< FAILURE!
java.lang.AssertionError: 

Expected: iterable with items ["Property name $.fields.longName123 is not valid for validation: may only be 5 characters long", "Property name $.fields.longName123 is not valid for validation: does not match the regex pattern ^[a-zA-Z]+$", "Property name $.fields.a is not valid for validation: must be at least 3 characters long"] in any order
     but: not matched: "Eigenschaftsname $.fields.longName123 ist ungültig für die Validierung:  darf höchstens 5 Zeichen lang sein"
	at com.networknt.schema.Issue375Test.shouldFailAndShowValidationValuesWithError(Issue375Test.java:59)

[INFO] Running com.networknt.schema.Issue383Test
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 s - in com.networknt.schema.Issue383Test
[INFO] Running com.networknt.schema.Issue386Test
[ERROR] Tests run: 4, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 0.241 s <<< FAILURE! - in com.networknt.schema.Issue386Test
[ERROR] dataIsInvalidFailFast  Time elapsed: 0.087 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <$.postal_code: does not match the regex pattern [A-Z][0-9][A-Z] [0-9][A-Z][0-9]> but was: <$.postal_code stimmt nicht mit dem regulären Ausdruck [A-Z][0-9][A-Z] [0-9][A-Z][0-9] überein>
	at com.networknt.schema.Issue386Test.lambda$dataIsInvalidFailFast$1(Issue386Test.java:56)
	at com.networknt.schema.Issue386Test.dataIsInvalidFailFast(Issue386Test.java:51)

[ERROR] dataIsInvalidFailSlow  Time elapsed: 0.004 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <true> but was: <false>
	at com.networknt.schema.Issue386Test.lambda$dataIsInvalidFailSlow$3(Issue386Test.java:71)
	at com.networknt.schema.Issue386Test.lambda$dataIsInvalidFailSlow$4(Issue386Test.java:70)
	at com.networknt.schema.Issue386Test.dataIsInvalidFailSlow(Issue386Test.java:67)

[INFO] Running com.networknt.schema.Issue396Test
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.02 s - in com.networknt.schema.Issue396Test
[INFO] Running com.networknt.schema.Issue404Test
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s - in com.networknt.schema.Issue404Test
[INFO] Running com.networknt.schema.Issue406Test
19:57:17.499 [main] ERROR com.networknt.schema.JsonMetaSchema - Error:
java.lang.reflect.InvocationTargetException: null
	at jdk.internal.reflect.GeneratedConstructorAccessor20.newInstance(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at com.networknt.schema.ValidatorTypeCode.newValidator(ValidatorTypeCode.java:135)
	at com.networknt.schema.JsonMetaSchema.newValidator(JsonMetaSchema.java:411)
	at com.networknt.schema.ValidationContext.newValidator(ValidationContext.java:57)
	at com.networknt.schema.JsonSchema.read(JsonSchema.java:203)
	at com.networknt.schema.JsonSchema.getValidators(JsonSchema.java:456)
	at com.networknt.schema.JsonSchema.initializeValidators(JsonSchema.java:473)
	at com.networknt.schema.Issue406Test$1.execute(Issue406Test.java:31)
	at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:55)
	at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:41)
	at org.junit.jupiter.api.Assertions.assertThrows(Assertions.java:3023)
	at com.networknt.schema.Issue406Test.testPreloadingHappening(Issue406Test.java:27)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:150)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
Caused by: com.networknt.schema.JsonSchemaException: #/$ref: Reference urn:unresolved cannot be resolved
	at com.networknt.schema.RefValidator.<init>(RefValidator.java:48)
	... 79 common frames omitted
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 s - in com.networknt.schema.Issue406Test
[INFO] Running com.networknt.schema.Issue425Test
=== "oneOf with single string"
=== "oneOf with invalid type"
---- test case failed ----
schema: "#" : {"properties":{"values":{"description":"desc","nullable":true,"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}}}
data: {"values":3}
errors:
$.values: integer wurde gefunden, aber array erwartet
$.values: integer wurde gefunden, aber string erwartet
=== "oneOf with single string array"
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.906 s - in com.networknt.schema.Issue425Test
[INFO] Running com.networknt.schema.Issue426Test
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 s - in com.networknt.schema.Issue426Test
[INFO] Running com.networknt.schema.Issue428Test
=== "oneOf with valid array"
=== "oneOf with invalid type of array"
---- test case failed ----
schema: "#" : {"properties":{"values":{"description":"desc","nullable":true,"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}}}
data: {"values":[1,2]}
errors:
$.values[0]: integer wurde gefunden, aber string erwartet
$.values[1]: integer wurde gefunden, aber string erwartet
$.values: array wurde gefunden, aber string erwartet
=== "nullable oneOf with null"
---- test case failed ----
schema: "#" : {"properties":{"values":{"description":"desc","nullable":true,"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}}}
data: {"values":null}
errors:
$.values darf nur für ein einziges Schema gültig sein, aber mehr als ein Schema ist gültig: {"type":"array","items":{"type":"string"}}{"type":"string"}
=== "oneOf with single string"
=== "oneOf with invalid type"
---- test case failed ----
schema: "#" : {"properties":{"values":{"description":"desc","nullable":true,"oneOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]}}}
data: {"values":3}
errors:
$.values: integer wurde gefunden, aber array erwartet
$.values: integer wurde gefunden, aber string erwartet
=== "oneOf with single string array"
=== "nullable oneOf with null value"
---- test case failed ----
schema: "#" : {"properties":{"values":{"description":"desc","oneOf":[{"type":"array","nullable":true,"items":{"type":"string"}},{"type":"string","nullable":true}]}}}
data: {"values":null}
errors:
$.values darf nur für ein einziges Schema gültig sein, aber mehr als ein Schema ist gültig: {"type":"array","nullable":true,"items":{"type":"string"}}{"type":"string","nullable":true}
=== "oneOf with single string"
=== "oneOf with invalid type"
---- test case failed ----
schema: "#" : {"properties":{"values":{"description":"desc","oneOf":[{"type":"array","nullable":true,"items":{"type":"string"}},{"type":"string","nullable":true}]}}}
data: {"values":3}
errors:
$.values: integer wurde gefunden, aber array erwartet
$.values: integer wurde gefunden, aber string erwartet
=== "oneOf with single string array"
=== "oneOf with invalid type of array"
---- test case failed ----
schema: "#" : {"properties":{"values":{"description":"desc","oneOf":[{"type":"array","nullable":true,"items":{"type":"string"}},{"type":"string","nullable":true}]}}}
data: {"values":[1,2]}
errors:
$.values[0]: integer wurde gefunden, aber string erwartet
$.values[1]: integer wurde gefunden, aber string erwartet
$.values: array wurde gefunden, aber string erwartet
=== "nullable oneOf with null value"
=== "oneOf with single string"
=== "oneOf with invalid type"
---- test case failed ----
schema: "#" : {"properties":{"values":{"description":"desc","oneOf":[{"type":"array","nullable":true,"items":{"type":"string"}},{"type":"string"}]}}}
data: {"values":3}
errors:
$.values: integer wurde gefunden, aber array erwartet
$.values: integer wurde gefunden, aber string erwartet
=== "oneOf with single string array"
=== "oneOf with invalid type of array"
---- test case failed ----
schema: "#" : {"properties":{"values":{"description":"desc","oneOf":[{"type":"array","nullable":true,"items":{"type":"string"}},{"type":"string"}]}}}
data: {"values":[1,2]}
errors:
$.values[0]: integer wurde gefunden, aber string erwartet
$.values[1]: integer wurde gefunden, aber string erwartet
$.values: array wurde gefunden, aber string erwartet
=== "nullable oneOf"
---- test case failed ----
schema: "#" : {"properties":{"values":{"description":"desc","nullable":true,"oneOf":[{"type":"array","nullable":true,"items":{"type":"string"}},{"type":"string","nullable":true}]}}}
data: {"values":null}
errors:
$.values darf nur für ein einziges Schema gültig sein, aber mehr als ein Schema ist gültig: {"type":"array","nullable":true,"items":{"type":"string"}}{"type":"string","nullable":true}
=== "oneOf with single string"
=== "oneOf with invalid type"
---- test case failed ----
schema: "#" : {"properties":{"values":{"description":"desc","nullable":true,"oneOf":[{"type":"array","nullable":true,"items":{"type":"string"}},{"type":"string","nullable":true}]}}}
data: {"values":3}
errors:
$.values: integer wurde gefunden, aber array erwartet
$.values: integer wurde gefunden, aber string erwartet
=== "oneOf with single string array"
=== "oneOf with invalid type of array"
---- test case failed ----
schema: "#" : {"properties":{"values":{"description":"desc","nullable":true,"oneOf":[{"type":"array","nullable":true,"items":{"type":"string"}},{"type":"string","nullable":true}]}}}
data: {"values":[1,2]}
errors:
$.values[0]: integer wurde gefunden, aber string erwartet
$.values[1]: integer wurde gefunden, aber string erwartet
$.values: array wurde gefunden, aber string erwartet
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.166 s - in com.networknt.schema.Issue428Test
[INFO] Running com.networknt.schema.Issue451Test
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.017 s - in com.networknt.schema.Issue451Test
[INFO] Running com.networknt.schema.Issue456Test
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.013 s - in com.networknt.schema.Issue456Test
[INFO] Running com.networknt.schema.Issue461Test
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.154 s - in com.networknt.schema.Issue461Test
[INFO] Running com.networknt.schema.Issue470Test
[ERROR] Tests run: 6, Failures: 4, Errors: 0, Skipped: 0, Time elapsed: 0.027 s <<< FAILURE! - in com.networknt.schema.Issue470Test
[ERROR] testInvalidJson1  Time elapsed: 0.006 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <$.search.byName.name: integer found, string expected> but was: <$.search.byName.name: integer wurde gefunden, aber string erwartet>
	at com.networknt.schema.Issue470Test.testInvalidJson1(Issue470Test.java:53)

[ERROR] testInvalidJson2  Time elapsed: 0.002 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <$.search.byName.name: may only be 20 characters long> but was: <$.search.byName.name darf höchstens 20 Zeichen lang sein>
	at com.networknt.schema.Issue470Test.testInvalidJson2(Issue470Test.java:62)

[ERROR] testInvalidJson3  Time elapsed: 0.002 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <$.search.byAge.age: string found, integer expected> but was: <$.search.byAge.age: string wurde gefunden, aber integer erwartet>
	at com.networknt.schema.Issue470Test.testInvalidJson3(Issue470Test.java:71)

[ERROR] testInvalidJson4  Time elapsed: 0.002 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <$.search.byAge.age: must have a maximum value of 150> but was: <$.search.byAge.age darf den Wert 150 nicht überschreiten>
	at com.networknt.schema.Issue470Test.testInvalidJson4(Issue470Test.java:80)

[INFO] Running com.networknt.schema.Issue471Test
[WARNING] Tests run: 3, Failures: 0, Errors: 0, Skipped: 3, Time elapsed: 0 s - in com.networknt.schema.Issue471Test
[INFO] Running com.networknt.schema.Issue491Test
[ERROR] Tests run: 14, Failures: 8, Errors: 0, Skipped: 0, Time elapsed: 0.091 s <<< FAILURE! - in com.networknt.schema.Issue491Test
[ERROR] testInvalidJson1  Time elapsed: 0.008 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <$.search.searchAge.age: string found, integer expected> but was: <$.search.searchAge.age: string wurde gefunden, aber integer erwartet>
	at com.networknt.schema.Issue491Test.testInvalidJson1(Issue491Test.java:97)

[ERROR] testInvalidJson2  Time elapsed: 0.007 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <$.search.name: integer found, string expected> but was: <$.search.name: integer wurde gefunden, aber string erwartet>
	at com.networknt.schema.Issue491Test.testInvalidJson2(Issue491Test.java:108)

[ERROR] testInvalidJson3  Time elapsed: 0.008 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <$.search.byAge.age: string found, integer expected> but was: <$.search.byAge.age: string wurde gefunden, aber integer erwartet>
	at com.networknt.schema.Issue491Test.testInvalidJson3(Issue491Test.java:119)

[ERROR] testInvalidJson4  Time elapsed: 0.003 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <$.search.name: integer found, string expected> but was: <$.search.name: integer wurde gefunden, aber string erwartet>
	at com.networknt.schema.Issue491Test.testInvalidJson4(Issue491Test.java:130)

[ERROR] testInvalidJson5{String, String}[1]  Time elapsed: 0.01 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <$.search.age: string found, integer expected> but was: <$.search.age: string wurde gefunden, aber integer erwartet>
	at com.networknt.schema.Issue491Test.testInvalidJson5(Issue491Test.java:142)

[ERROR] testInvalidJson5{String, String}[2]  Time elapsed: 0.003 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <$.search.name: integer found, string expected> but was: <$.search.name: integer wurde gefunden, aber string erwartet>
	at com.networknt.schema.Issue491Test.testInvalidJson5(Issue491Test.java:142)

[ERROR] testInvalidJson5{String, String}[3]  Time elapsed: 0.005 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <$.search.age: must have a maximum value of 150> but was: <$.search.age darf den Wert 150 nicht überschreiten>
	at com.networknt.schema.Issue491Test.testInvalidJson5(Issue491Test.java:142)

[ERROR] testInvalidJson5{String, String}[4]  Time elapsed: 0.009 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <$.search.name: may only be 20 characters long> but was: <$.search.name darf höchstens 20 Zeichen lang sein>
	at com.networknt.schema.Issue491Test.testInvalidJson5(Issue491Test.java:142)

[INFO] Running com.networknt.schema.Issue493Test
[ERROR] Tests run: 4, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 0.032 s <<< FAILURE! - in com.networknt.schema.Issue493Test
[ERROR] testInvalidJson1  Time elapsed: 0.006 s  <<< FAILURE!
java.lang.AssertionError: 

Expected: iterable with items ["$.parameters[0].value: string found, integer expected", "$.parameters[0].value: does not match the regex pattern ^\\{\\{.+\\}\\}$"] in any order
     but: not matched: "$.parameters[0].value stimmt nicht mit dem regulären Ausdruck ^\\{\\{.+\\}\\}$ überein"
	at com.networknt.schema.Issue493Test.testInvalidJson1(Issue493Test.java:70)

[ERROR] testInvalidJson2  Time elapsed: 0.006 s  <<< FAILURE!
java.lang.AssertionError: 

Expected: iterable with items ["$.parameters[1].value: string found, integer expected", "$.parameters[1].value: does not match the regex pattern ^\\{\\{.+\\}\\}$"] in any order
     but: not matched: "$.parameters[1].value stimmt nicht mit dem regulären Ausdruck ^\\{\\{.+\\}\\}$ überein"
	at com.networknt.schema.Issue493Test.testInvalidJson2(Issue493Test.java:90)

[INFO] Running com.networknt.schema.Issue510Test
schemaFactory = com.networknt.schema.JsonSchemaFactory@5acf07e7
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s - in com.networknt.schema.Issue510Test
[INFO] Running com.networknt.schema.Issue518Test
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s - in com.networknt.schema.Issue518Test
[INFO] Running com.networknt.schema.Issue532Test
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s - in com.networknt.schema.Issue532Test
[INFO] Running com.networknt.schema.JsonMetaSchemaTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s - in com.networknt.schema.JsonMetaSchemaTest
[INFO] Running com.networknt.schema.JsonWalkApplyDefaultsTest
[ERROR] Tests run: 8, Failures: 6, Errors: 0, Skipped: 0, Time elapsed: 0.057 s <<< FAILURE! - in com.networknt.schema.JsonWalkApplyDefaultsTest
[ERROR] testApplyDefaults0{String}[1]  Time elapsed: 0.019 s  <<< FAILURE!
java.lang.AssertionError: 

Expected: iterable with items ["$.outer.mixedObject.intValue_missing: is missing but it is required", "$.outer.mixedObject.intValue_missingButError: is missing but it is required", "$.outer.mixedObject.intValue_null: null found, integer expected", "$.outer.goodArray[1]: null found, string expected", "$.outer.badArray[1]: null found, string expected", "$.outer.reference.stringValue_missing: is missing but it is required"] in any order
     but: not matched: "$.outer.goodArray[1]: null wurde gefunden, aber string erwartet"
	at com.networknt.schema.JsonWalkApplyDefaultsTest.testApplyDefaults0(JsonWalkApplyDefaultsTest.java:107)

[ERROR] testApplyDefaults0{String}[2]  Time elapsed: 0.005 s  <<< FAILURE!
java.lang.AssertionError: 

Expected: iterable with items ["$.outer.mixedObject.intValue_missing: is missing but it is required", "$.outer.mixedObject.intValue_missingButError: is missing but it is required", "$.outer.mixedObject.intValue_null: null found, integer expected", "$.outer.goodArray[1]: null found, string expected", "$.outer.badArray[1]: null found, string expected", "$.outer.reference.stringValue_missing: is missing but it is required"] in any order
     but: not matched: "$.outer.goodArray[1]: null wurde gefunden, aber string erwartet"
	at com.networknt.schema.JsonWalkApplyDefaultsTest.testApplyDefaults0(JsonWalkApplyDefaultsTest.java:107)

[ERROR] testApplyDefaults0{String}[3]  Time elapsed: 0.005 s  <<< FAILURE!
java.lang.AssertionError: 

Expected: iterable with items ["$.outer.mixedObject.intValue_missing: is missing but it is required", "$.outer.mixedObject.intValue_missingButError: is missing but it is required", "$.outer.mixedObject.intValue_null: null found, integer expected", "$.outer.goodArray[1]: null found, string expected", "$.outer.badArray[1]: null found, string expected", "$.outer.reference.stringValue_missing: is missing but it is required"] in any order
     but: not matched: "$.outer.goodArray[1]: null wurde gefunden, aber string erwartet"
	at com.networknt.schema.JsonWalkApplyDefaultsTest.testApplyDefaults0(JsonWalkApplyDefaultsTest.java:107)

[ERROR] testApplyDefaults1  Time elapsed: 0.005 s  <<< FAILURE!
java.lang.AssertionError: 

Expected: iterable with items ["$.outer.mixedObject.intValue_null: null found, integer expected", "$.outer.mixedObject.intValue_missingButError: string found, integer expected", "$.outer.goodArray[1]: null found, string expected", "$.outer.badArray[1]: null found, string expected"] in any order
     but: not matched: "$.outer.goodArray[1]: null wurde gefunden, aber string erwartet"
	at com.networknt.schema.JsonWalkApplyDefaultsTest.testApplyDefaults1(JsonWalkApplyDefaultsTest.java:69)

[ERROR] testApplyDefaults2  Time elapsed: 0.004 s  <<< FAILURE!
java.lang.AssertionError: 

Expected: iterable with items ["$.outer.mixedObject.intValue_missingButError: string found, integer expected", "$.outer.goodArray[1]: null found, string expected", "$.outer.badArray[1]: null found, string expected"] in any order
     but: not matched: "$.outer.goodArray[1]: null wurde gefunden, aber string erwartet"
	at com.networknt.schema.JsonWalkApplyDefaultsTest.testApplyDefaults2(JsonWalkApplyDefaultsTest.java:53)

[ERROR] testApplyDefaults3{boolean}[1]  Time elapsed: 0.006 s  <<< FAILURE!
java.lang.AssertionError: 

Expected: iterable with items ["$.outer.mixedObject.intValue_missingButError: string found, integer expected", "$.outer.badArray[1]: integer found, string expected"] in any order
     but: not matched: "$.outer.mixedObject.intValue_missingButError: string wurde gefunden, aber integer erwartet"
	at com.networknt.schema.JsonWalkApplyDefaultsTest.testApplyDefaults3(JsonWalkApplyDefaultsTest.java:34)

[INFO] Running com.networknt.schema.JsonWalkTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.017 s - in com.networknt.schema.JsonWalkTest
[INFO] Running com.networknt.schema.MaximumValidatorPerfTest
[WARNING] Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 s - in com.networknt.schema.MaximumValidatorPerfTest
[INFO] Running com.networknt.schema.MaximumValidatorTest
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.051 s - in com.networknt.schema.MaximumValidatorTest
[INFO] Running com.networknt.schema.MinimumValidatorTest
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.036 s - in com.networknt.schema.MinimumValidatorTest
[INFO] Running com.networknt.schema.OpenAPI30JsonSchemaTest
=== "mapping to base type"
=== "mapped to Bedroom"
=== "mapped to Kitchen"
=== "mapped to KidsBedRoom"
=== "mapped to Bedroom with missing number of beds"
=== "mapped to KidsBedroom with missing number of beds"
=== "mapped to KidsBedroom with missing tidiness"
=== "mapped to GuestRoom with correct @type (mapping override on BedRoom)"
=== "mapped to GuestRoom with incorrect @type (mapping override on BedRoom)"
=== "mapped to invalid Room"
=== "discriminator missing - falling back to default validation with failure as @type is mandatory"
=== "discriminator missing - falling back to default anyOf behavior"
=== "discriminator missing - with constructed schema conflict"
=== "$ref without anyOf and therefore no discriminator context"
=== "schema with discriminator and recursion with invalid BedRoom"
=== "$ref without anyOf and therefore no discriminator context"
=== "schema with discriminator and recursion with valid BedRoom"
=== "schema with discriminator and recursion with invalid BedRoom"
=== "$ref without anyOf and therefore no discriminator context"
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.163 s - in com.networknt.schema.OpenAPI30JsonSchemaTest
[INFO] Running com.networknt.schema.OverrideValidatorTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.023 s - in com.networknt.schema.OverrideValidatorTest
[INFO] Running com.networknt.schema.PatternPropertiesValidatorTest
19:57:19.348 [main] ERROR com.networknt.schema.JsonMetaSchema - Error:
java.lang.reflect.InvocationTargetException: null
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at com.networknt.schema.ValidatorTypeCode.newValidator(ValidatorTypeCode.java:135)
	at com.networknt.schema.JsonMetaSchema.newValidator(JsonMetaSchema.java:411)
	at com.networknt.schema.ValidationContext.newValidator(ValidationContext.java:57)
	at com.networknt.schema.JsonSchema.read(JsonSchema.java:203)
	at com.networknt.schema.JsonSchema.getValidators(JsonSchema.java:456)
	at com.networknt.schema.JsonSchema.validate(JsonSchema.java:271)
	at com.networknt.schema.JsonSchema.validate(JsonSchema.java:258)
	at com.networknt.schema.PatternPropertiesValidatorTest.lambda$testInvalidPatternPropertiesValidatorECMA262$1(PatternPropertiesValidatorTest.java:51)
	at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:55)
	at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:37)
	at org.junit.jupiter.api.Assertions.assertThrows(Assertions.java:3007)
	at com.networknt.schema.PatternPropertiesValidatorTest.testInvalidPatternPropertiesValidatorECMA262(PatternPropertiesValidatorTest.java:44)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:150)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
Caused by: com.networknt.schema.JsonSchemaException: patternProperties must be an object node
	at com.networknt.schema.PatternPropertiesValidator.<init>(PatternPropertiesValidator.java:36)
	... 81 common frames omitted
19:57:19.352 [main] ERROR com.networknt.schema.JsonMetaSchema - Error:
java.lang.reflect.InvocationTargetException: null
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at com.networknt.schema.ValidatorTypeCode.newValidator(ValidatorTypeCode.java:135)
	at com.networknt.schema.JsonMetaSchema.newValidator(JsonMetaSchema.java:411)
	at com.networknt.schema.ValidationContext.newValidator(ValidationContext.java:57)
	at com.networknt.schema.JsonSchema.read(JsonSchema.java:203)
	at com.networknt.schema.JsonSchema.getValidators(JsonSchema.java:456)
	at com.networknt.schema.JsonSchema.validate(JsonSchema.java:271)
	at com.networknt.schema.JsonSchema.validate(JsonSchema.java:258)
	at com.networknt.schema.PatternPropertiesValidatorTest.lambda$testInvalidPatternPropertiesValidator$0(PatternPropertiesValidatorTest.java:37)
	at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:55)
	at org.junit.jupiter.api.AssertThrows.assertThrows(AssertThrows.java:37)
	at org.junit.jupiter.api.Assertions.assertThrows(Assertions.java:3007)
	at com.networknt.schema.PatternPropertiesValidatorTest.testInvalidPatternPropertiesValidator(PatternPropertiesValidatorTest.java:32)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:150)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
Caused by: com.networknt.schema.JsonSchemaException: patternProperties must be an object node
	at com.networknt.schema.PatternPropertiesValidator.<init>(PatternPropertiesValidator.java:36)
	... 81 common frames omitted
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 s - in com.networknt.schema.PatternPropertiesValidatorTest
[INFO] Running com.networknt.schema.SelfRefTest
[WARNING] Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 s - in com.networknt.schema.SelfRefTest
[INFO] Running com.networknt.schema.SpecVersionDetectorTest
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.026 s - in com.networknt.schema.SpecVersionDetectorTest
[INFO] Running com.networknt.schema.SpecVersionTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s - in com.networknt.schema.SpecVersionTest
[INFO] Running com.networknt.schema.ThresholdMixinPerfTest
[WARNING] Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 s - in com.networknt.schema.ThresholdMixinPerfTest
[INFO] Running com.networknt.schema.TypeFactoryTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s - in com.networknt.schema.TypeFactoryTest
[INFO] Running com.networknt.schema.TypeValidatorTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s - in com.networknt.schema.TypeValidatorTest
[INFO] Running com.networknt.schema.UnevaluatedPropertiesTest
---- test case failed ----
schema: "#" : {"title":"Person","type":"object","definitions":{"address":{"properties":{"residence":{"$ref":"#/definitions/residence","description":"Residence details where the person lives"},"city":{"type":"string","description":"City where the person lives."},"street":{"type":"string","description":"street where the person lives."},"pinCode":{"type":"number","description":"pincode of street"}},"unevaluatedProperties":false},"residence":{"flatNumber":{"type":"string"},"flatName":{"type":"string"},"landmark":{"type":"string"}}},"properties":{"firstName":{"type":"string","description":"The person's first name."},"lastName":{"type":"string","description":"The person's last name."},"age":{"description":"Age in years which must be equal to or greater than zero.","type":"integer","minimum":0},"address":{"description":"Address of the person.","$ref":"#/definitions/address"}},"unevaluatedProperties":false}
data: {"firstName":"First Name","invalid":18,"lastName":"Last Name","address":{"city":"Hyderabad","pinCode":500025}}
errors: [Eigenschaften in folgenden Pfaden wurden nicht evaluiert: $.invalid]
validationMessages: ["There are unevaluated properties at following paths $.invalid"]
[ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.141 s <<< FAILURE! - in com.networknt.schema.UnevaluatedPropertiesTest
[ERROR] testWalk  Time elapsed: 0.017 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: Expected validation message is not found in actual validation messages
	at com.networknt.schema.UnevaluatedPropertiesTest.testWalk(UnevaluatedPropertiesTest.java:16)

[INFO] Running com.networknt.schema.UnknownMetaSchemaTest
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 s - in com.networknt.schema.UnknownMetaSchemaTest
[INFO] Running com.networknt.schema.UriMappingTest
19:57:19.770 [main] ERROR c.networknt.schema.JsonSchemaFactory - Failed to load json schema!
java.io.FileNotFoundException: http://example.com/invalid/schema/url
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1920)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1520)
	at com.networknt.schema.uri.URLFetcher.openConnectionCheckRedirects(URLFetcher.java:57)
	at com.networknt.schema.uri.URLFetcher.fetch(URLFetcher.java:43)
	at com.networknt.schema.uri.URISchemeFetcher.fetch(URISchemeFetcher.java:50)
	at com.networknt.schema.JsonSchemaFactory.getSchema(JsonSchemaFactory.java:363)
	at com.networknt.schema.JsonSchemaFactory.getSchema(JsonSchemaFactory.java:392)
	at com.networknt.schema.UriMappingTest.testBuilderExampleMappings(UriMappingTest.java:78)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:150)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
19:57:20.022 [main] ERROR c.networknt.schema.JsonSchemaFactory - Failed to load json schema!
java.io.FileNotFoundException: http://example.com/invalid/schema/url
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1920)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1520)
	at com.networknt.schema.uri.URLFetcher.openConnectionCheckRedirects(URLFetcher.java:57)
	at com.networknt.schema.uri.URLFetcher.fetch(URLFetcher.java:43)
	at com.networknt.schema.uri.URISchemeFetcher.fetch(URISchemeFetcher.java:50)
	at com.networknt.schema.JsonSchemaFactory.getSchema(JsonSchemaFactory.java:363)
	at com.networknt.schema.UriMappingTest.testValidatorConfigExampleMappings(UriMappingTest.java:136)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:150)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.466 s - in com.networknt.schema.UriMappingTest
[INFO] Running com.networknt.schema.UrnTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 s - in com.networknt.schema.UrnTest
[INFO] Running com.networknt.schema.V201909JsonSchemaTest
19:57:20.235 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date: Text '06/19/1963' could not be parsed at index 0
19:57:20.235 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date: Text '2013-350' could not be parsed at index 7
19:57:20.363 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid date 'FEBRUARY 31'
19:57:20.364 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Zone offset hours not in valid range: value -24 is not in the range -18 to 18
19:57:20.364 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Character / is not a digit
19:57:20.364 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Expected character - at position 8 '2013-350T01:01:01'
19:57:20.364 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Unexpected end of expression at position 19 '1963-06-19T08:30:06'
19:57:20.364 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid timezone offset: +02
19:57:20.364 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid timezone offset: +0200
19:57:20.365 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid value for SecondOfMinute (valid values 0 - 59): 60
[WARNING] Tests run: 61, Failures: 0, Errors: 0, Skipped: 18, Time elapsed: 0.459 s - in com.networknt.schema.V201909JsonSchemaTest
[INFO] Running com.networknt.schema.V4JsonSchemaTest
19:57:20.789 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid value for SecondOfMinute (valid values 0 - 59): 61
19:57:20.790 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid value for SecondOfMinute (valid values 0 - 59): 60
19:57:20.790 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid value for SecondOfMinute (valid values 0 - 59): 60
19:57:20.790 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid date 'FEBRUARY 31'
19:57:20.790 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Zone offset hours not in valid range: value -24 is not in the range -18 to 18
19:57:20.790 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid timezone offset: +01:00Z
19:57:20.790 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Character / is not a digit
19:57:20.791 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Expected character - at position 8 '2013-350T01:01:01'
19:57:20.791 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Character - is not a digit
19:57:20.791 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Character T is not a digit
19:57:20.791 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Character ? is not a digit
19:57:20.792 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Character ? is not a digit
19:57:20.839 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid timezone offset: -0300
19:57:20.839 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid value for HourOfDay (valid values 0 - 23): 24
19:57:20.839 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Expected character : at position 14 '2019-07-24T25/:00:01-04:00'
19:57:20.839 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Character / is not a digit
19:57:20.839 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid value for MonthOfYear (valid values 1 - 12): 13
19:57:20.839 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid value for DayOfMonth (valid values 1 - 28/31): 35
19:57:20.840 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid timezone offset: 283
19:57:20.840 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Unexpected end of expression at position 19 '1963-12-30T08:30:06'
19:57:20.840 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Expected character - at position 8 '2013-350T01:01:01'
19:57:20.840 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid date 'February 29' as '2019' is not a leap year
19:57:20.840 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid value for MinuteOfHour (valid values 0 - 59): 60
19:57:20.840 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid value for SecondOfMinute (valid values 0 - 59): 60
19:57:20.841 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Zone offset hours not in valid range: value -60 is not in the range -18 to 18
19:57:20.841 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Zone offset minutes and seconds must be negative because hours is negative
19:57:20.841 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Abrupt end of input: 2019-02-28
19:57:20.841 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Expected character [T, t,  ] at position 11 '2019-02-28-08:00'
19:57:20.841 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Expected character [T, t,  ] at position 11 '2019-02-28Z'
19:57:20.841 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date: Text '1963-13-25' could not be parsed: Invalid value for MonthOfYear (valid values 1 - 12): 13
19:57:20.842 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date: Text '1963-12-35' could not be parsed: Invalid value for DayOfMonth (valid values 1 - 28/31): 35
19:57:20.842 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date: Text '2019-02-28T08:30:59.99999z' could not be parsed, unparsed text found at index 10
19:57:20.842 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date: Text '2013-35' could not be parsed at index 7
19:57:20.842 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date: Text '2019-02-29' could not be parsed: Invalid date 'February 29' as '2019' is not a leap year
19:57:20.842 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date: Text '2019-06-31' could not be parsed: Invalid date 'JUNE 31'
[WARNING] Tests run: 56, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.469 s - in com.networknt.schema.V4JsonSchemaTest
[INFO] Running com.networknt.schema.V6JsonSchemaTest
[WARNING] Tests run: 42, Failures: 0, Errors: 0, Skipped: 5, Time elapsed: 0.29 s - in com.networknt.schema.V6JsonSchemaTest
[INFO] Running com.networknt.schema.V7JsonSchemaTest
19:57:21.357 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date: Text '06/19/1963' could not be parsed at index 0
19:57:21.357 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date: Text '2013-350' could not be parsed at index 7
19:57:21.476 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid date 'FEBRUARY 31'
19:57:21.476 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Zone offset hours not in valid range: value -24 is not in the range -18 to 18
19:57:21.476 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Character / is not a digit
19:57:21.476 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Expected character - at position 8 '2013-350T01:01:01'
19:57:21.477 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Unexpected end of expression at position 19 '1963-06-19T08:30:06'
19:57:21.477 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid timezone offset: +02
19:57:21.477 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid timezone offset: +0200
19:57:21.477 [main] ERROR c.networknt.schema.DateTimeValidator - Invalid date-time: Invalid value for SecondOfMinute (valid values 0 - 59): 60
[WARNING] Tests run: 60, Failures: 0, Errors: 0, Skipped: 16, Time elapsed: 0.334 s - in com.networknt.schema.V7JsonSchemaTest
[INFO] Running com.networknt.schema.ValidatorTypeCodeTest
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s - in com.networknt.schema.ValidatorTypeCodeTest
[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Failures: 
[ERROR]   Issue342Test.propertyNameEnumShouldFailV7:36 expected: <Property name $.z is not valid for validation: does not have a value in the enumeration [a, b, c]> but was: <Eigenschaftsname $.z ist ungültig für die Validierung: Ein Wert in der Aufzählung [a, b, c] fehlt>
[ERROR]   Issue347Test.failure:19 expected: <test: null is an invalid segment for URI {2}> but was: <test: null ist ein ungültiges Segment für die URI {2}>
[ERROR]   Issue375Test.shouldFailAndShowValidationValuesWithError:59 
Expected: iterable with items ["Property name $.fields.longName123 is not valid for validation: may only be 5 characters long", "Property name $.fields.longName123 is not valid for validation: does not match the regex pattern ^[a-zA-Z]+$", "Property name $.fields.a is not valid for validation: must be at least 3 characters long"] in any order
     but: not matched: "Eigenschaftsname $.fields.longName123 ist ungültig für die Validierung:  darf höchstens 5 Zeichen lang sein"
[ERROR]   Issue386Test.dataIsInvalidFailFast:51->lambda$dataIsInvalidFailFast$1:56 expected: <$.postal_code: does not match the regex pattern [A-Z][0-9][A-Z] [0-9][A-Z][0-9]> but was: <$.postal_code stimmt nicht mit dem regulären Ausdruck [A-Z][0-9][A-Z] [0-9][A-Z][0-9] überein>
[ERROR]   Issue386Test.dataIsInvalidFailSlow:67->lambda$dataIsInvalidFailSlow$4:70->lambda$dataIsInvalidFailSlow$3:71 expected: <true> but was: <false>
[ERROR]   Issue470Test.testInvalidJson1:53 expected: <$.search.byName.name: integer found, string expected> but was: <$.search.byName.name: integer wurde gefunden, aber string erwartet>
[ERROR]   Issue470Test.testInvalidJson2:62 expected: <$.search.byName.name: may only be 20 characters long> but was: <$.search.byName.name darf höchstens 20 Zeichen lang sein>
[ERROR]   Issue470Test.testInvalidJson3:71 expected: <$.search.byAge.age: string found, integer expected> but was: <$.search.byAge.age: string wurde gefunden, aber integer erwartet>
[ERROR]   Issue470Test.testInvalidJson4:80 expected: <$.search.byAge.age: must have a maximum value of 150> but was: <$.search.byAge.age darf den Wert 150 nicht überschreiten>
[ERROR]   Issue491Test.testInvalidJson1:97 expected: <$.search.searchAge.age: string found, integer expected> but was: <$.search.searchAge.age: string wurde gefunden, aber integer erwartet>
[ERROR]   Issue491Test.testInvalidJson2:108 expected: <$.search.name: integer found, string expected> but was: <$.search.name: integer wurde gefunden, aber string erwartet>
[ERROR]   Issue491Test.testInvalidJson3:119 expected: <$.search.byAge.age: string found, integer expected> but was: <$.search.byAge.age: string wurde gefunden, aber integer erwartet>
[ERROR]   Issue491Test.testInvalidJson4:130 expected: <$.search.name: integer found, string expected> but was: <$.search.name: integer wurde gefunden, aber string erwartet>
[ERROR]   Issue491Test.testInvalidJson5:142 expected: <$.search.age: string found, integer expected> but was: <$.search.age: string wurde gefunden, aber integer erwartet>
[ERROR]   Issue491Test.testInvalidJson5:142 expected: <$.search.name: integer found, string expected> but was: <$.search.name: integer wurde gefunden, aber string erwartet>
[ERROR]   Issue491Test.testInvalidJson5:142 expected: <$.search.age: must have a maximum value of 150> but was: <$.search.age darf den Wert 150 nicht überschreiten>
[ERROR]   Issue491Test.testInvalidJson5:142 expected: <$.search.name: may only be 20 characters long> but was: <$.search.name darf höchstens 20 Zeichen lang sein>
[ERROR]   Issue493Test.testInvalidJson1:70 
Expected: iterable with items ["$.parameters[0].value: string found, integer expected", "$.parameters[0].value: does not match the regex pattern ^\\{\\{.+\\}\\}$"] in any order
     but: not matched: "$.parameters[0].value stimmt nicht mit dem regulären Ausdruck ^\\{\\{.+\\}\\}$ überein"
[ERROR]   Issue493Test.testInvalidJson2:90 
Expected: iterable with items ["$.parameters[1].value: string found, integer expected", "$.parameters[1].value: does not match the regex pattern ^\\{\\{.+\\}\\}$"] in any order
     but: not matched: "$.parameters[1].value stimmt nicht mit dem regulären Ausdruck ^\\{\\{.+\\}\\}$ überein"
[ERROR]   JsonWalkApplyDefaultsTest.testApplyDefaults0:107 
Expected: iterable with items ["$.outer.mixedObject.intValue_missing: is missing but it is required", "$.outer.mixedObject.intValue_missingButError: is missing but it is required", "$.outer.mixedObject.intValue_null: null found, integer expected", "$.outer.goodArray[1]: null found, string expected", "$.outer.badArray[1]: null found, string expected", "$.outer.reference.stringValue_missing: is missing but it is required"] in any order
     but: not matched: "$.outer.goodArray[1]: null wurde gefunden, aber string erwartet"
[ERROR]   JsonWalkApplyDefaultsTest.testApplyDefaults0:107 
Expected: iterable with items ["$.outer.mixedObject.intValue_missing: is missing but it is required", "$.outer.mixedObject.intValue_missingButError: is missing but it is required", "$.outer.mixedObject.intValue_null: null found, integer expected", "$.outer.goodArray[1]: null found, string expected", "$.outer.badArray[1]: null found, string expected", "$.outer.reference.stringValue_missing: is missing but it is required"] in any order
     but: not matched: "$.outer.goodArray[1]: null wurde gefunden, aber string erwartet"
[ERROR]   JsonWalkApplyDefaultsTest.testApplyDefaults0:107 
Expected: iterable with items ["$.outer.mixedObject.intValue_missing: is missing but it is required", "$.outer.mixedObject.intValue_missingButError: is missing but it is required", "$.outer.mixedObject.intValue_null: null found, integer expected", "$.outer.goodArray[1]: null found, string expected", "$.outer.badArray[1]: null found, string expected", "$.outer.reference.stringValue_missing: is missing but it is required"] in any order
     but: not matched: "$.outer.goodArray[1]: null wurde gefunden, aber string erwartet"
[ERROR]   JsonWalkApplyDefaultsTest.testApplyDefaults1:69 
Expected: iterable with items ["$.outer.mixedObject.intValue_null: null found, integer expected", "$.outer.mixedObject.intValue_missingButError: string found, integer expected", "$.outer.goodArray[1]: null found, string expected", "$.outer.badArray[1]: null found, string expected"] in any order
     but: not matched: "$.outer.goodArray[1]: null wurde gefunden, aber string erwartet"
[ERROR]   JsonWalkApplyDefaultsTest.testApplyDefaults2:53 
Expected: iterable with items ["$.outer.mixedObject.intValue_missingButError: string found, integer expected", "$.outer.goodArray[1]: null found, string expected", "$.outer.badArray[1]: null found, string expected"] in any order
     but: not matched: "$.outer.goodArray[1]: null wurde gefunden, aber string erwartet"
[ERROR]   JsonWalkApplyDefaultsTest.testApplyDefaults3:34 
Expected: iterable with items ["$.outer.mixedObject.intValue_missingButError: string found, integer expected", "$.outer.badArray[1]: integer found, string expected"] in any order
     but: not matched: "$.outer.mixedObject.intValue_missingButError: string wurde gefunden, aber integer erwartet"
[ERROR]   UnevaluatedPropertiesTest.testWalk:16->BaseSuiteJsonSchemaTest.runTestFile:150 Expected validation message is not found in actual validation messages
[INFO] 
[ERROR] Tests run: 371, Failures: 26, Errors: 0, Skipped: 55
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  20.972 s
[INFO] Finished at: 2022-03-22T19:57:22+01:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) on project json-schema-validator: There are test failures.
[ERROR] 
[ERROR] Please refer to D:\GitHub\json-schema-validator\target\surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

@AndreasALoew
Copy link
Contributor Author

ALL CLEAR: I have finally uncovered the real root cause of what only seemed to be Locale/testing issues:

Due to suboptimal error handling in I18nSupport, a MissingResourceException during ResourceBundle init could make it impossible for the JVM to load class ValidatorTypeCode, which lead to massively misleading error messages and stack traces like "java.lang.NoClassDefFoundError: Could not initialize class com.networknt.schema.ValidatorTypeCode"

The above second commit fixes this issue in I18nSupport by failing early and fatally with System.exit() in case of MissingResourceExceptions - and with this change (and the fix for "dateTime" in ValidatorTypeCode), the tests are passing just fine when I override Maven property "argLine" in my settings.xml like this

		<profile>    
			<id>locale_en_US</id>
			<properties>
				<argLine>-Duser.language=en -Duser.region=US</argLine>
			</properties>            
		</profile>

So I am pretty confident now that you can indeed safely apply this PR now... 😄

unionType = {0}: {1} wurde gefunden aber {2} wird verlangt
uniqueItems = {0}: Die Element(e) des Arrays m�ssen einmalig sein
uniqueItems = {0}: Die Element(e) des Arrays d�rfen nur einmal auftreten
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks, that's better!

required = {0}.{1} ist ein Pflichtfeld aber fehlt
type = {0}: {1} wurde gefunden aber {2} erwartet
type = {0}: {1} wurde gefunden, aber {2} erwartet
unevaluatedProperties = Eigenschaften in folgenden Pfaden wurden nicht evaluiert: {0}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good catch!

@@ -308,8 +308,7 @@ private ValidationMessage getMultiSchemasValidErrorMsg(String at){
msg = msg.concat(schemaValue);
}

return ValidationMessage.of(getValidatorType().getValue(), ValidatorTypeCode.ONE_OF ,
at, String.format("but more than one schemas {%s} are valid ",msg));
return ValidationMessage.of(getValidatorType().getValue(), ValidatorTypeCode.ONE_OF, at, msg);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

creative solution 😄 have you verified that the compiled message is correctly compiled with all placeholder variables being substituted accordingly?

I'm asking because you noticed this bug due to your personal code returning an incompletely translated message. Then, I wouldn't have to check it myself.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The message used to be before:

requestBody.data darf nur für ein einziges Schema but more than one schemas {{"$ref":"#/components/schemas/tEnS"}{"$ref":"#/components/schemas/vEnS"}{"$ref":"#/components/schemas/vEnSAndTens"}} are valid gültig sein

this means that variable msg contained the String {"$ref":"#/components/schemas/tEnS"}{"$ref":"#/components/schemas/vEnS"}{"$ref":"#/components/schemas/vEnSAndTens"}, and what we saw was a combination of the previous text for oneOf: "{0} darf nur für ein einziges Schema {1} gültig sein" and the result of String.format()...

So I changed the text for oneOf to "{0} darf nur für ein einziges Schema gültig sein, aber mehr als ein Schema ist gültig: {1}", and thus the error message now indeed in my scenario is the following:

requestBody.data darf nur für ein einziges Schema gültig sein, aber mehr als ein Schema ist gültig: {"$ref":"#/components/schemas/tEnS"}{"$ref":"#/components/schemas/vEnS"}{"$ref":"#/components/schemas/vEnSAndTens"}

(note that I left out the second pair of curly brackets, we can re-introduce them if you like)

If you would like me to create a test case that explicitly validates this, I am fine with this, but due to the fact that I have a hospital stay scheduled for next week, it might only be at/around Easter that I will be able to do so.

This would still be fine from my point of view, as I think the German translation for the validation messages is currently rather a "niche feature" of json-schema-validator 😄 ...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, and also to the best of my knowledge (checking search results for "oneOf" in the project) no other place in the code is using of the message resource with the "oneOf" key...

@stevehu stevehu merged commit 0b51d25 into networknt:master Mar 27, 2022
@AndreasALoew AndreasALoew deleted the issue511-fix-german-messages branch April 20, 2022 14:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants