18
18
19
19
import java .util .HashMap ;
20
20
import java .util .Map ;
21
+ import java .util .Optional ;
21
22
import java .util .Stack ;
22
23
23
24
import com .fasterxml .jackson .databind .JsonNode ;
24
25
import com .fasterxml .jackson .databind .node .ObjectNode ;
26
+ import com .networknt .schema .SpecVersion .VersionFlag ;
25
27
import com .networknt .schema .uri .URIFactory ;
26
28
import com .networknt .schema .urn .URNFactory ;
27
29
@@ -31,8 +33,8 @@ public class ValidationContext {
31
33
private final JsonMetaSchema metaSchema ;
32
34
private final JsonSchemaFactory jsonSchemaFactory ;
33
35
private SchemaValidatorsConfig config ;
34
- private final Map <String , JsonSchemaRef > refParsingInProgress = new HashMap <String , JsonSchemaRef >();
35
- private final Stack <DiscriminatorContext > discriminatorContexts = new Stack <DiscriminatorContext >();
36
+ private final Map <String , JsonSchemaRef > refParsingInProgress = new HashMap <>();
37
+ private final Stack <DiscriminatorContext > discriminatorContexts = new Stack <>();
36
38
37
39
public ValidationContext (URIFactory uriFactory , URNFactory urnFactory , JsonMetaSchema metaSchema ,
38
40
JsonSchemaFactory jsonSchemaFactory , SchemaValidatorsConfig config ) {
@@ -58,11 +60,11 @@ public JsonSchema newSchema(String schemaPath, JsonNode schemaNode, JsonSchema p
58
60
59
61
public JsonValidator newValidator (String schemaPath , String keyword /* keyword */ , JsonNode schemaNode ,
60
62
JsonSchema parentSchema , String customMessage ) {
61
- return metaSchema .newValidator (this , schemaPath , keyword , schemaNode , parentSchema , customMessage );
63
+ return this . metaSchema .newValidator (this , schemaPath , keyword , schemaNode , parentSchema , customMessage );
62
64
}
63
65
64
66
public String resolveSchemaId (JsonNode schemaNode ) {
65
- return metaSchema .readId (schemaNode );
67
+ return this . metaSchema .readId (schemaNode );
66
68
}
67
69
68
70
public URIFactory getURIFactory () {
@@ -74,66 +76,71 @@ public URNFactory getURNFactory() {
74
76
}
75
77
76
78
public JsonSchemaFactory getJsonSchemaFactory () {
77
- return jsonSchemaFactory ;
79
+ return this . jsonSchemaFactory ;
78
80
}
79
81
80
82
public SchemaValidatorsConfig getConfig () {
81
- if (config == null ) {
82
- config = new SchemaValidatorsConfig ();
83
+ if (this . config == null ) {
84
+ this . config = new SchemaValidatorsConfig ();
83
85
}
84
- return config ;
86
+ return this . config ;
85
87
}
86
88
87
89
public void setConfig (SchemaValidatorsConfig config ) {
88
90
this .config = config ;
89
91
}
90
92
91
93
public void setReferenceParsingInProgress (String refValue , JsonSchemaRef ref ) {
92
- refParsingInProgress .put (refValue , ref );
94
+ this . refParsingInProgress .put (refValue , ref );
93
95
}
94
96
95
97
public JsonSchemaRef getReferenceParsingInProgress (String refValue ) {
96
- return refParsingInProgress .get (refValue );
98
+ return this . refParsingInProgress .get (refValue );
97
99
}
98
100
99
101
public DiscriminatorContext getCurrentDiscriminatorContext () {
100
- if (!discriminatorContexts .empty ()) {
101
- return discriminatorContexts .peek ();
102
+ if (!this . discriminatorContexts .empty ()) {
103
+ return this . discriminatorContexts .peek ();
102
104
}
103
105
return null ; // this is the case when we get on a schema that has a discriminator, but it's not used in anyOf
104
106
}
105
107
106
- public void enterDiscriminatorContext (final DiscriminatorContext ctx , String at ) {
107
- discriminatorContexts .push (ctx );
108
+ public void enterDiscriminatorContext (final DiscriminatorContext ctx , @ SuppressWarnings ( "unused" ) String at ) {
109
+ this . discriminatorContexts .push (ctx );
108
110
}
109
111
110
- public void leaveDiscriminatorContextImmediately (String at ) {
111
- discriminatorContexts .pop ();
112
+ public void leaveDiscriminatorContextImmediately (@ SuppressWarnings ( "unused" ) String at ) {
113
+ this . discriminatorContexts .pop ();
112
114
}
113
115
114
116
public JsonMetaSchema getMetaSchema () {
115
- return metaSchema ;
117
+ return this .metaSchema ;
118
+ }
119
+
120
+ public Optional <VersionFlag > activeDialect () {
121
+ String metaSchema = getMetaSchema ().getUri ();
122
+ return SpecVersionDetector .detectOptionalVersion (metaSchema );
116
123
}
117
124
118
125
public static class DiscriminatorContext {
119
- private final Map <String , ObjectNode > discriminators = new HashMap <String , ObjectNode >();
126
+ private final Map <String , ObjectNode > discriminators = new HashMap <>();
120
127
121
128
private boolean discriminatorMatchFound = false ;
122
129
123
130
public void registerDiscriminator (final String schemaPath , final ObjectNode discriminator ) {
124
- discriminators .put (schemaPath , discriminator );
131
+ this . discriminators .put (schemaPath , discriminator );
125
132
}
126
133
127
134
public ObjectNode getDiscriminatorForPath (final String schemaPath ) {
128
- return discriminators .get (schemaPath );
135
+ return this . discriminators .get (schemaPath );
129
136
}
130
137
131
138
public void markMatch () {
132
- discriminatorMatchFound = true ;
139
+ this . discriminatorMatchFound = true ;
133
140
}
134
141
135
142
public boolean isDiscriminatorMatchFound () {
136
- return discriminatorMatchFound ;
143
+ return this . discriminatorMatchFound ;
137
144
}
138
145
139
146
/**
@@ -142,7 +149,7 @@ public boolean isDiscriminatorMatchFound() {
142
149
* @return true in case there are discriminator candidates
143
150
*/
144
151
public boolean isActive () {
145
- return !discriminators .isEmpty ();
152
+ return !this . discriminators .isEmpty ();
146
153
}
147
154
}
148
155
}
0 commit comments