正在查看: Weicon v2.1.4 应用的 SpecificationVersion.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Weicon v2.1.4 应用的 SpecificationVersion.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package org.everit.json.schema.loader;
import com.damnhandy.uri.template.MalformedUriTemplateException;
import com.damnhandy.uri.template.UriTemplate;
import java.net.URI;
import java.net.URISyntaxException;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import java.util.stream.Stream;
import okhttp3.HttpUrl;
import org.everit.json.schema.FormatValidator;
import org.everit.json.schema.JSONPointer;
import org.everit.json.schema.internal.DateTimeFormatValidator;
import org.everit.json.schema.internal.EmailFormatValidator;
import org.everit.json.schema.internal.HostnameFormatValidator;
import org.everit.json.schema.internal.IPV4Validator;
import org.everit.json.schema.internal.IPV6Validator;
import org.everit.json.schema.internal.TemporalFormatValidator;
import org.everit.json.schema.internal.URIFormatValidator;
import retrofit2.Platform$$ExternalSyntheticApiModelOutline0;
public enum SpecificationVersion {
DRAFT_4 {
@Override
List<String> arrayKeywords() {
return SpecificationVersion.V4_ARRAY_KEYWORDS;
}
@Override
List<String> objectKeywords() {
return SpecificationVersion.V4_OBJECT_KEYWORDS;
}
@Override
public String idKeyword() {
return "id";
}
@Override
List<String> metaSchemaUrls() {
return Arrays.asList("http://json-schema.org/draft-04/schema", "https://json-schema.org/draft-04/schema");
}
@Override
Map<String, FormatValidator> defaultFormatValidators() {
return SpecificationVersion.V4_VALIDATORS;
}
},
DRAFT_6 {
@Override
List<String> arrayKeywords() {
return SpecificationVersion.V6_ARRAY_KEYWORDS;
}
@Override
List<String> objectKeywords() {
return SpecificationVersion.V6_OBJECT_KEYWORDS;
}
@Override
public String idKeyword() {
return "$id";
}
@Override
List<String> metaSchemaUrls() {
return Arrays.asList("http://json-schema.org/draft-06/schema", "https://json-schema.org/draft-06/schema");
}
@Override
Map<String, FormatValidator> defaultFormatValidators() {
return SpecificationVersion.V6_VALIDATORS;
}
},
DRAFT_7 {
@Override
List<String> arrayKeywords() {
return SpecificationVersion.V6_ARRAY_KEYWORDS;
}
@Override
List<String> objectKeywords() {
return SpecificationVersion.V6_OBJECT_KEYWORDS;
}
@Override
public String idKeyword() {
return DRAFT_6.idKeyword();
}
@Override
List<String> metaSchemaUrls() {
return Arrays.asList("http://json-schema.org/draft-07/schema", "https://json-schema.org/draft-07/schema");
}
@Override
Map<String, FormatValidator> defaultFormatValidators() {
return SpecificationVersion.V7_VALIDATORS;
}
};
private static final Map<String, FormatValidator> V4_VALIDATORS;
private static final Map<String, FormatValidator> V6_VALIDATORS;
private static final Map<String, FormatValidator> V7_VALIDATORS;
private static final List<String> V6_OBJECT_KEYWORDS = keywords("properties", "required", "minProperties", "maxProperties", "dependencies", "patternProperties", "additionalProperties", "propertyNames");
private static final List<String> V6_ARRAY_KEYWORDS = keywords("items", "additionalItems", "minItems", "maxItems", "uniqueItems", "contains");
private static final List<String> V4_OBJECT_KEYWORDS = keywords("properties", "required", "minProperties", "maxProperties", "dependencies", "patternProperties", "additionalProperties");
private static final List<String> V4_ARRAY_KEYWORDS = keywords("items", "additionalItems", "minItems", "maxItems", "uniqueItems");
abstract List<String> arrayKeywords();
abstract Map<String, FormatValidator> defaultFormatValidators();
public abstract String idKeyword();
abstract List<String> metaSchemaUrls();
abstract List<String> objectKeywords();
static {
Map<String, FormatValidator> formatValidators = formatValidators(null, new DateTimeFormatValidator(), new FormatValidator() {
@Override
public Optional<String> validate(String str) {
Optional<String> empty;
try {
new URI(str);
empty = Optional.empty();
return empty;
} catch (NullPointerException | URISyntaxException unused) {
return failure(str);
}
}
protected Optional<String> failure(String str) {
Optional<String> of;
of = Optional.of(String.format("[%s] is not a valid URI", str));
return of;
}
@Override
public String formatName() {
return "uri";
}
}, new EmailFormatValidator(), new IPV4Validator(), new IPV6Validator(), new HostnameFormatValidator());
V4_VALIDATORS = formatValidators;
Map<String, FormatValidator> formatValidators2 = formatValidators(formatValidators, new FormatValidator() {
@Override
public Optional<String> validate(String str) {
Optional<String> empty;
if (HttpUrl.FRAGMENT_ENCODE_SET.equals(str)) {
empty = Optional.empty();
return empty;
}
try {
new JSONPointer(str);
if (str.startsWith("#")) {
return failure(str);
}
return checkEscaping(str);
} catch (IllegalArgumentException unused) {
return failure(str);
}
}
protected Optional<String> failure(String str) {
Optional<String> of;
of = Optional.of(String.format("[%s] is not a valid JSON pointer", str));
return of;
}
protected Optional<String> checkEscaping(String str) {
Optional<String> empty;
char charAt;
for (int i = 0; i < str.length() - 1; i++) {
if (str.charAt(i) == '~' && (charAt = str.charAt(i + 1)) != '1' && charAt != '0') {
return failure(str);
}
}
if (str.charAt(str.length() - 1) == '~') {
return failure(str);
}
empty = Optional.empty();
return empty;
}
@Override
public String formatName() {
return "json-pointer";
}
}, new URIFormatValidator(), new FormatValidator() {
@Override
public Optional<String> validate(String str) {
Optional<String> empty;
try {
new URI(str);
empty = Optional.empty();
return empty;
} catch (URISyntaxException unused) {
return failure(str);
}
}
protected Optional<String> failure(String str) {
Optional<String> of;
of = Optional.of(String.format("[%s] is not a valid URI reference", str));
return of;
}
@Override
public String formatName() {
return "uri-reference";
}
}, new FormatValidator() {
@Override
public Optional<String> validate(String str) {
Optional<String> of;
Optional<String> empty;
try {
UriTemplate.fromTemplate(str);
empty = Optional.empty();
return empty;
} catch (MalformedUriTemplateException unused) {
of = Optional.of(String.format("[%s] is not a valid URI template", str));
return of;
}
}
@Override
public String formatName() {
return "uri-template";
}
});
V6_VALIDATORS = formatValidators2;
V7_VALIDATORS = formatValidators(formatValidators2, new TemporalFormatValidator() {
{
DateTimeFormatter dateTimeFormatter;
dateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE;
Collections.singletonList("yyyy-MM-dd").toString();
}
@Override
public String formatName() {
return "date";
}
}, new URIFormatValidator(false), new TemporalFormatValidator() {
private static final String FORMATS_ACCEPTED = Arrays.asList("HH:mm:ssZ", "HH:mm:ss.[0-9]{1,9}Z", "HH:mm:ss[+-]HH:mm", "HH:mm:ss.[0-9]{1,9}[+-]HH:mm").toString();
private static final DateTimeFormatter FORMATTER;
private static final String PARTIAL_TIME_PATTERN = "HH:mm:ss";
static {
DateTimeFormatterBuilder appendPattern;
DateTimeFormatterBuilder appendOptional;
DateTimeFormatterBuilder appendPattern2;
DateTimeFormatter formatter;
appendPattern = Platform$$ExternalSyntheticApiModelOutline0.m1915m().appendPattern(PARTIAL_TIME_PATTERN);
appendOptional = appendPattern.appendOptional(SECONDS_FRACTION_FORMATTER);
appendPattern2 = appendOptional.appendPattern("XXX");
formatter = appendPattern2.toFormatter();
FORMATTER = formatter;
}
{
DateTimeFormatter dateTimeFormatter = FORMATTER;
String str = FORMATS_ACCEPTED;
}
@Override
public String formatName() {
return "time";
}
}, new FormatValidator() {
@Override
public Optional<String> validate(String str) {
Optional<String> of;
Optional<String> empty;
try {
Pattern.compile(str);
empty = Optional.empty();
return empty;
} catch (PatternSyntaxException unused) {
of = Optional.of(String.format("[%s] is not a valid regular expression", str));
return of;
}
}
@Override
public String formatName() {
return "regex";
}
}, new FormatValidator() {
private static class ParseException extends Exception {
public ParseException(String str) {
super(String.format("[%s] is not a valid relative JSON Pointer", str));
}
}
private static final class Parser {
public static final int EOF = 26;
private String input;
private int pos = 0;
private static boolean isDigit(char c) {
return '0' <= c && c <= '9';
}
public Parser(String str) {
this.input = str;
}
public void parse() throws ParseException {
parseUpwardsStepCount();
parseJsonPointer();
parseTrailingHashmark();
}
private void parseTrailingHashmark() throws ParseException {
if (this.pos == this.input.length()) {
return;
}
if (this.pos == this.input.length() - 1 && this.input.charAt(this.pos) == '#') {
return;
}
fail();
}
private char next() {
int i = this.pos + 1;
this.pos = i;
if (i == this.input.length()) {
return (char) 26;
}
return curr();
}
private char curr() {
if (this.pos == this.input.length()) {
return (char) 26;
}
return this.input.charAt(this.pos);
}
private void parseUpwardsStepCount() throws ParseException {
if (!isDigit(curr())) {
fail();
} else if (curr() == '0') {
next();
if (curr() == '/' || curr() == '#' || curr() == 26) {
this.pos--;
} else {
fail();
}
}
while (isDigit(next()) && this.pos < this.input.length()) {
}
}
private void fail() throws ParseException {
throw new ParseException(this.input);
}
private void parseJsonPointer() throws ParseException {
StringBuilder sb = new StringBuilder();
char curr = curr();
while (this.pos < this.input.length() && curr != '#') {
sb.append(curr);
curr = next();
}
String sb2 = sb.toString();
if (sb2.length() == 0) {
return;
}
if (sb2.startsWith("#")) {
fail();
}
try {
new JSONPointer(sb2);
} catch (IllegalArgumentException unused) {
fail();
}
}
}
@Override
public Optional<String> validate(String str) {
Optional<String> of;
Optional<String> empty;
try {
new Parser(str).parse();
empty = Optional.empty();
return empty;
} catch (ParseException e) {
of = Optional.of(e.getMessage());
return of;
}
}
@Override
public String formatName() {
return "relative-json-pointer";
}
});
}
static SpecificationVersion getByMetaSchemaUrl(final String str) {
Object orElseThrow;
orElseThrow = lookupByMetaSchemaUrl(str).orElseThrow(new Supplier() {
@Override
public final Object get() {
return SpecificationVersion.lambda$getByMetaSchemaUrl$0(str);
}
});
return (SpecificationVersion) orElseThrow;
}
static IllegalArgumentException lambda$getByMetaSchemaUrl$0(String str) {
return new IllegalArgumentException(String.format("could not determine schema version: no meta-schema is known with URL [%s]", str));
}
public static Optional<SpecificationVersion> lookupByMetaSchemaUrl(final String str) {
Stream stream;
Stream filter;
Optional<SpecificationVersion> findFirst;
stream = Arrays.stream(values());
filter = stream.filter(new Predicate() {
@Override
public final boolean test(Object obj) {
return SpecificationVersion.lambda$lookupByMetaSchemaUrl$1(str, (SpecificationVersion) obj);
}
});
findFirst = filter.findFirst();
return findFirst;
}
static boolean lambda$lookupByMetaSchemaUrl$1(String str, SpecificationVersion specificationVersion) {
Stream stream;
boolean anyMatch;
stream = specificationVersion.metaSchemaUrls().stream();
str.getClass();
anyMatch = stream.anyMatch(new ClassPathAwareSchemaClient$$ExternalSyntheticLambda3(str));
return anyMatch;
}
private static List<String> keywords(String... strArr) {
return Collections.unmodifiableList(Arrays.asList(strArr));
}
private static Map<String, FormatValidator> formatValidators(Map<String, FormatValidator> map, FormatValidator... formatValidatorArr) {
HashMap hashMap = map == null ? new HashMap() : new HashMap(map);
for (FormatValidator formatValidator : formatValidatorArr) {
hashMap.put(formatValidator.formatName(), formatValidator);
}
return Collections.unmodifiableMap(hashMap);
}
public boolean isAtLeast(SpecificationVersion specificationVersion) {
return ordinal() >= specificationVersion.ordinal();
}
}