Supports iri-reference format validation. (#766)
* Supports relative-json-pointer validation.
Resolves #761
* Supports uri-reference format.
Resolves #763
* Supports iri-refereence format validation.
REsolves # 765
* Supports iri-reference format validation.
Resolves #765
* Supports iri-reference format validation.
Resolves # 765
---------
Co-authored-by: Faron Dutton <faron.dutton@insightglobal.com>
diff --git a/src/main/java/com/networknt/schema/JsonMetaSchema.java b/src/main/java/com/networknt/schema/JsonMetaSchema.java
index c80c789..199410b 100644
--- a/src/main/java/com/networknt/schema/JsonMetaSchema.java
+++ b/src/main/java/com/networknt/schema/JsonMetaSchema.java
@@ -19,6 +19,7 @@
import com.fasterxml.jackson.databind.JsonNode;
import com.networknt.schema.format.DateFormat;
import com.networknt.schema.format.EmailFormat;
+import com.networknt.schema.format.IriReferenceFormat;
import com.networknt.schema.format.PatternFormat;
import com.networknt.schema.format.RegexFormat;
import com.networknt.schema.format.TimeFormat;
@@ -46,7 +47,7 @@
public static final List<Format> COMMON_BUILTIN_FORMATS = new ArrayList<>();
- // this section contains formats that is common for all specification versions.
+ // this section contains formats common to all dialects.
static {
COMMON_BUILTIN_FORMATS.add(pattern("alpha", "^[a-zA-Z]+$"));
COMMON_BUILTIN_FORMATS.add(pattern("alphanumeric", "^[a-zA-Z0-9]+$"));
@@ -64,6 +65,7 @@
COMMON_BUILTIN_FORMATS.add(pattern("uuid", "^\\p{XDigit}{8}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{12}$"));
COMMON_BUILTIN_FORMATS.add(new DateFormat());
COMMON_BUILTIN_FORMATS.add(new EmailFormat());
+ COMMON_BUILTIN_FORMATS.add(new IriReferenceFormat());
COMMON_BUILTIN_FORMATS.add(new RegexFormat());
COMMON_BUILTIN_FORMATS.add(new TimeFormat());
COMMON_BUILTIN_FORMATS.add(new UriFormat());
diff --git a/src/main/java/com/networknt/schema/format/IriReferenceFormat.java b/src/main/java/com/networknt/schema/format/IriReferenceFormat.java
new file mode 100644
index 0000000..c3b5b29
--- /dev/null
+++ b/src/main/java/com/networknt/schema/format/IriReferenceFormat.java
@@ -0,0 +1,16 @@
+package com.networknt.schema.format;
+
+import java.net.URI;
+
+public class IriReferenceFormat extends AbstractRFC3339Format {
+
+ public IriReferenceFormat() {
+ super("iri-reference", "must be a valid RFC 3986 IRI-reference");
+ }
+
+ @Override
+ protected boolean validate(URI uri) {
+ return true;
+ }
+
+}
diff --git a/src/test/java/com/networknt/schema/JsonSchemaTestSuiteTest.java b/src/test/java/com/networknt/schema/JsonSchemaTestSuiteTest.java
index 8f11919..def6d1f 100644
--- a/src/test/java/com/networknt/schema/JsonSchemaTestSuiteTest.java
+++ b/src/test/java/com/networknt/schema/JsonSchemaTestSuiteTest.java
@@ -80,7 +80,6 @@
this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/optional/format-assertion.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/optional/format/idn-email.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/optional/format/idn-hostname.json"));
- this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/optional/format/iri-reference.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/optional/format/iri.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/ref.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/refRemote.json"));
@@ -95,7 +94,6 @@
this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/optional/float-overflow.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/optional/format/idn-email.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/optional/format/idn-hostname.json"));
- this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/optional/format/iri-reference.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/optional/format/iri.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/recursiveRef.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/ref.json"));
@@ -111,7 +109,6 @@
this.disabled.add(Paths.get("src/test/suite/tests/draft7/optional/float-overflow.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft7/optional/format/idn-email.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft7/optional/format/idn-hostname.json"));
- this.disabled.add(Paths.get("src/test/suite/tests/draft7/optional/format/iri-reference.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft7/optional/format/iri.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft7/ref.json"));
this.disabled.add(Paths.get("src/test/suite/tests/draft7/refRemote.json"));