Skip to content

Commit db9a435

Browse files
bump dev.harrel to 1.7.1, add support for draft7 (#214)
Co-authored-by: Andy Coates <[email protected]>
1 parent bce53d1 commit db9a435

File tree

3 files changed

+33
-34
lines changed

3 files changed

+33
-34
lines changed

src/main/java/org/creekservice/kafka/test/perf/implementations/DevHarrelImplementation.java

Lines changed: 23 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -16,40 +16,45 @@
1616

1717
package org.creekservice.kafka.test.perf.implementations;
1818

19+
import static org.creekservice.kafka.test.perf.testsuite.SchemaSpec.DRAFT_07;
1920
import static org.creekservice.kafka.test.perf.testsuite.SchemaSpec.DRAFT_2019_09;
2021
import static org.creekservice.kafka.test.perf.testsuite.SchemaSpec.DRAFT_2020_12;
2122

2223
import com.fasterxml.jackson.core.JsonProcessingException;
2324
import com.fasterxml.jackson.databind.ObjectMapper;
2425
import com.fasterxml.jackson.databind.json.JsonMapper;
26+
import dev.harrel.jsonschema.Dialect;
2527
import dev.harrel.jsonschema.Dialects;
2628
import dev.harrel.jsonschema.FormatEvaluatorFactory;
2729
import dev.harrel.jsonschema.JsonNode;
2830
import dev.harrel.jsonschema.SchemaResolver;
29-
import dev.harrel.jsonschema.SpecificationVersion;
3031
import dev.harrel.jsonschema.Validator;
3132
import dev.harrel.jsonschema.ValidatorFactory;
3233
import dev.harrel.jsonschema.providers.JacksonNode;
3334
import java.awt.Color;
3435
import java.io.IOException;
3536
import java.net.URI;
3637
import java.util.Map;
37-
import java.util.Set;
3838
import java.util.stream.Collectors;
3939
import org.creekservice.kafka.test.perf.model.TestModel;
4040
import org.creekservice.kafka.test.perf.testsuite.AdditionalSchemas;
4141
import org.creekservice.kafka.test.perf.testsuite.SchemaSpec;
4242

4343
@SuppressWarnings("FieldMayBeFinal") // not final to avoid folding.
4444
public class DevHarrelImplementation implements Implementation {
45+
private static final Map<SchemaSpec, Dialect> SUPPORTED =
46+
Map.of(
47+
DRAFT_07, new Dialects.Draft7Dialect(),
48+
DRAFT_2019_09, new Dialects.Draft2019Dialect(),
49+
DRAFT_2020_12, new Dialects.Draft2020Dialect());
4550

4651
private static final MetaData METADATA =
4752
new MetaData(
4853
"json-schema (dev.harrel)",
4954
"DevHarrel",
5055
Language.Java,
5156
Licence.MIT,
52-
Set.of(DRAFT_2020_12, DRAFT_2019_09),
57+
SUPPORTED.keySet(),
5358
"https://github.com/harrel56/json-schema",
5459
new Color(22, 99, 0),
5560
dev.harrel.jsonschema.ValidatorFactory.class,
@@ -133,37 +138,21 @@ private Validator validator(
133138
}
134139
return SchemaResolver.Result.empty();
135140
};
136-
switch (spec) {
137-
case DRAFT_2020_12:
138-
final ValidatorFactory validatorFactory2020 =
139-
new ValidatorFactory()
140-
.withDisabledSchemaValidation(true)
141-
.withDialect(new Dialects.Draft2020Dialect())
142-
.withJsonNodeFactory(nodeFactory)
143-
.withSchemaResolver(resolver);
144-
if (enableFormatAssertions) {
145-
validatorFactory2020.withEvaluatorFactory(new FormatEvaluatorFactory());
146-
}
147-
final Validator validator2020 = validatorFactory2020.createValidator();
148-
/* Validate against meta-schema in order to parse it eagerly */
149-
validator2020.validate(URI.create(SpecificationVersion.DRAFT2020_12.getId()), "{}");
150-
return validator2020;
151-
case DRAFT_2019_09:
152-
final ValidatorFactory validatorFactory2019 =
153-
new ValidatorFactory()
154-
.withDisabledSchemaValidation(true)
155-
.withDialect(new Dialects.Draft2019Dialect())
156-
.withJsonNodeFactory(nodeFactory)
157-
.withSchemaResolver(resolver);
158-
if (enableFormatAssertions) {
159-
validatorFactory2019.withEvaluatorFactory(new FormatEvaluatorFactory());
160-
}
161-
final Validator validator2019 = validatorFactory2019.createValidator();
162-
/* Validate against meta-schema in order to parse it eagerly */
163-
validator2019.validate(URI.create(SpecificationVersion.DRAFT2019_09.getId()), "{}");
164-
return validator2019;
165-
default:
166-
throw new RuntimeException("Unsupported Spec:" + spec);
141+
final Dialect dialect = SUPPORTED.get(spec);
142+
if (dialect == null) {
143+
throw new RuntimeException("Unsupported Spec:" + spec);
144+
}
145+
final ValidatorFactory validatorFactory =
146+
new ValidatorFactory()
147+
.withDefaultDialect(dialect)
148+
.withJsonNodeFactory(nodeFactory)
149+
.withSchemaResolver(resolver);
150+
if (enableFormatAssertions) {
151+
validatorFactory.withEvaluatorFactory(new FormatEvaluatorFactory());
167152
}
153+
final Validator validator = validatorFactory.createValidator();
154+
/* Validate against meta-schema in order to parse it eagerly */
155+
validator.validate(spec.uri(), "{}");
156+
return validator;
168157
}
169158
}

src/main/java/org/creekservice/kafka/test/perf/performance/JsonSerdeBenchmark.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,11 @@ public DevHarrelState() {
200200
}
201201
}
202202

203+
@Benchmark
204+
public TestModel measureDraft_07_DevHarrel(final DevHarrelState impl, final ModelState model) {
205+
return impl.roundTrip(model, SchemaSpec.DRAFT_07);
206+
}
207+
203208
@Benchmark
204209
public TestModel measureDraft_2020_12_DevHarrel(
205210
final DevHarrelState impl, final ModelState model) {

src/main/java/org/creekservice/kafka/test/perf/performance/JsonValidateBenchmark.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,11 @@ public DevHarrelValidator() {
274274
}
275275
}
276276

277+
@Benchmark
278+
public Result measureDraft_07_DevHarrel(final DevHarrelValidator validator) {
279+
return validator.validate(SchemaSpec.DRAFT_07);
280+
}
281+
277282
@Benchmark
278283
public Result measureDraft_2019_09_DevHarrel(final DevHarrelValidator validator) {
279284
return validator.validate(SchemaSpec.DRAFT_2019_09);

0 commit comments

Comments
 (0)