1
2
3
4
5
6 package dev.metaschema.databind.io.json;
7
8 import java.io.IOException;
9 import java.util.HashSet;
10 import java.util.Set;
11
12 import dev.metaschema.core.model.IBoundObject;
13 import dev.metaschema.core.model.util.JsonUtil;
14 import dev.metaschema.databind.io.AbstractProblemHandler;
15 import dev.metaschema.databind.model.IBoundDefinitionModelComplex;
16
17
18
19
20
21 public class DefaultJsonProblemHandler
22 extends AbstractProblemHandler
23 implements IJsonProblemHandler {
24 private static final String JSON_SCHEMA_FIELD_NAME = "$schema";
25 private static final Set<String> IGNORED_FIELD_NAMES;
26
27 static {
28 IGNORED_FIELD_NAMES = new HashSet<>();
29 IGNORED_FIELD_NAMES.add(JSON_SCHEMA_FIELD_NAME);
30 }
31
32
33
34
35 public DefaultJsonProblemHandler() {
36 super();
37 }
38
39
40
41
42
43
44
45
46 public DefaultJsonProblemHandler(boolean validateRequiredFields) {
47 super(validateRequiredFields);
48 }
49
50 @Override
51 public boolean handleUnknownProperty(
52 IBoundDefinitionModelComplex classBinding,
53 IBoundObject targetObject,
54 String fieldName,
55 IJsonParsingContext parsingContext) throws IOException {
56 boolean retval = false;
57 if (IGNORED_FIELD_NAMES.contains(fieldName)) {
58 JsonUtil.skipNextValue(parsingContext.getReader(), parsingContext.getSource());
59 retval = true;
60 }
61 return retval;
62 }
63 }