![JAR search and dependency download from the Maven repository](/logo.png)
dev.harrel.jsonschema.providers.AbstractJsonNode Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of json-schema Show documentation
Show all versions of json-schema Show documentation
Library for JSON schema validation
package dev.harrel.jsonschema.providers;
import dev.harrel.jsonschema.JsonNode;
import dev.harrel.jsonschema.SimpleType;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import static java.util.Collections.*;
abstract class AbstractJsonNode implements JsonNode {
private final SimpleType nodeType;
final T node;
final String jsonPointer;
private Map asObject;
private List asArray;
AbstractJsonNode(T node, String jsonPointer) {
this.nodeType = computeNodeType(node);
this.node = node;
this.jsonPointer = Objects.requireNonNull(jsonPointer);
}
@Override
public String getJsonPointer() {
return jsonPointer;
}
@Override
public SimpleType getNodeType() {
return nodeType;
}
@Override
public final List asArray() {
if (this.asArray != null) {
return asArray;
}
this.asArray = unmodifiableList(createArray());
return asArray;
}
@Override
public final Map asObject() {
if (this.asObject != null) {
return asObject;
}
this.asObject = unmodifiableMap(createObject());
return asObject;
}
abstract List createArray();
abstract Map createObject();
abstract SimpleType computeNodeType(T node);
static boolean canConvertToInteger(BigDecimal bigDecimal) {
return bigDecimal.scale() <= 0 || bigDecimal.stripTrailingZeros().scale() <= 0;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy