RecordField class
Пакет: com.hypixel.hytale.codec.record
Файл: com/hypixel/hytale/codec/record/RecordField.java
Поля (18)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
break |
|
private String |
documentation |
|
private List<Metadata> |
metadata |
|
|
return |
|
Object |
var4 |
|
Object |
var4 |
|
|
var4 |
|
|
var4 |
|
int |
var4 |
|
ValidationResults |
var4 |
|
NonNullValidator |
var5 |
|
|
var5 |
|
Object |
var5 |
|
Object |
var5 |
|
Validator |
var6 |
|
ValidationResults |
var7 |
|
Validator |
var7 |
|
ValidationResults |
var8 |
Методы (39)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
CodecExceptionthrow new CodecException("Failed to decode", var1, var3, var9) |
abstract |
throw new |
IOExceptionthrow new IOException("Unexpected EOF!") |
|
public |
Optionspublic Options() |
|
public RecordField.Options<FieldType> |
addValidatorpublic RecordField.Options<FieldType> addValidator(@Nonnull Validator<? super FieldType> var1) |
|
public RecordField.Options<FieldType> |
addValidatorLatepublic RecordField.Options<FieldType> addValidatorLate(@Nonnull Supplier<LateValidator<? super FieldType>> var1) |
public |
void |
decodevoid decode(@Nonnull BsonValue var1, @Nonnull Object[] var2, @Nonnull ExtraInfo var3) |
public |
void |
decodeJsonvoid decodeJson(@Nonnull RawJsonReader var1, @Nonnull Object[] var2, @Nonnull ExtraInfo var3) |
|
public RecordField.Options<FieldType> |
documentationpublic RecordField.Options<FieldType> documentation(@Nonnull String var1) |
public |
void |
encodevoid encode(@Nonnull BsonDocument var1, Type var2, @Nonnull ExtraInfo var3) |
|
|
for for(Validator var7 : this.validators) |
abstract |
|
for for(int var5 = 0; var5 < this.validators.size() |
abstract |
|
for for(int var6 = 0; var6 < this.validators.size() |
abstract |
|
for for(int var3 = 0; var3 < this.validators.size() |
abstract |
|
for for(int var4 = 0; var4 < this.metadata.size() |
public |
boolean |
hasNonNullValidatorboolean hasNonNullValidator() |
|
|
if if(this.validators != null) |
|
|
if if(var7 instanceof NonNullValidator) |
|
|
if if(var4 == -1) |
|
|
if if(this.validators != null) |
|
|
if if(var6 != this.nonNullValidator) |
|
|
if if(this.isPrimitive && var2 == null) |
|
|
if if(this.nonNullValidator != null) |
|
|
if if(this.nonNullValidator != null) |
|
|
if if(var1[this.index] == null) |
|
|
if if(this.validators != null) |
|
|
if if(this.validators != null) |
|
|
if if(this.metadata != null) |
|
|
if if(this.validators == null) |
|
|
if if(this.validators == null) |
|
|
if if(this.metadata == null) |
public |
boolean |
isPrimitiveboolean isPrimitive() |
|
public RecordField.Options<FieldType> |
metadatapublic RecordField.Options<FieldType> metadata(@Nonnull Metadata var1) |
private |
void |
setValuevoid setValue(@Nonnull Object[] var1, @Nullable FieldType var2, @Nonnull ExtraInfo var3) |
|
|
switch switch(var4) |
public |
void |
updateSchemavoid updateSchema(@Nonnull SchemaContext var1, @Nonnull Schema var2) |
public |
void |
validatevoid validate(Type var1, @Nonnull ExtraInfo var2) |
|
void |
validateDefaultsvoid validateDefaults(@Nullable Type var1, @Nullable Object var2, @Nonnull ExtraInfo var3, @Nonnull Set<Codec<?>> var4) |
|
void |
validateRequiredArgvoid validateRequiredArg(@Nonnull Object[] var1, @Nonnull ValidationResults var2) |
private |
void |
validateValuevoid validateValue(@Nullable FieldType var1, @Nonnull ExtraInfo var2, @Nullable Predicate<Validator<? super FieldType>> var3) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.codec.record;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.PrimitiveCodec;
class="kw">import com.hypixel.hytale.codec.exception.CodecException;
class="kw">import com.hypixel.hytale.codec.schema.SchemaContext;
class="kw">import com.hypixel.hytale.codec.schema.config.Schema;
class="kw">import com.hypixel.hytale.codec.schema.metadata.Metadata;
class="kw">import com.hypixel.hytale.codec.util.RawJsonReader;
class="kw">import com.hypixel.hytale.codec.validation.LateValidator;
class="kw">import com.hypixel.hytale.codec.validation.LazyLateValidator;
class="kw">import com.hypixel.hytale.codec.validation.ValidatableCodec;
class="kw">import com.hypixel.hytale.codec.validation.ValidationResults;
class="kw">import com.hypixel.hytale.codec.validation.Validator;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.codec.validation.validator.DeprecatedValidator;
class="kw">import com.hypixel.hytale.codec.validation.validator.NonNullValidator;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.io.IOException;
class="kw">import java.util.List;
class="kw">import java.util.Objects;
class="kw">import java.util.Set;
class="kw">import java.util.function.Function;
class="kw">import java.util.function.Predicate;
class="kw">import java.util.function.Supplier;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonDocument;
class="kw">import org.bson.BsonValue;
class="kw">public class="kw">final class RecordField<Type, FieldType> {
@Nonnull
class="kw">private class="kw">final KeyedCodec<FieldType> codec;
@Nonnull
class="kw">private class="kw">final Function<Type, FieldType> accessor;
class="kw">private class="kw">final int index;
@Nullable
class="kw">private class="kw">final List<Validator<? super FieldType>> validators;
@Nullable
class="kw">private class="kw">final List<Metadata> metadata;
@Nullable
class="kw">private class="kw">final String documentation;
@Nullable
class="kw">private class="kw">final NonNullValidator<? super FieldType> nonNullValidator;
class="kw">private class="kw">final boolean isPrimitive;
RecordField(@Nonnull KeyedCodec<FieldType> var1, @Nonnull Function<Type, FieldType> var2, int var3, @Nonnull RecordField.Options<FieldType> var4) {
this.codec = Objects.requireNonNull(var1, "codec parameter can't be null");
this.accessor = Objects.requireNonNull(var2, "accessor parameter can't be null");
this.index = var3;
this.validators = var4.validators;
this.metadata = var4.metadata;
this.documentation = var4.documentation;
NonNullValidator var5 = null;
if (this.validators != null) {
for (Validator var7 : this.validators) {
if (var7 class="kw">instanceof NonNullValidator) {
var5 = (NonNullValidator<? super FieldType>)var7;
break;
}
}
}
this.nonNullValidator = var5;
this.isPrimitive = var1.getChildCodec() class="kw">instanceof PrimitiveCodec;
}
@Nonnull
class="kw">public KeyedCodec<FieldType> getCodec() {
class="kw">return this.codec;
}
@Nullable
class="kw">public String getDocumentation() {
class="kw">return this.documentation;
}
class="kw">public boolean hasNonNullValidator() {
class="kw">return this.nonNullValidator != null;
}
class="kw">public boolean isPrimitive() {
class="kw">return this.isPrimitive;
}
class="kw">public void encode(@Nonnull BsonDocument var1, Type var2, @Nonnull ExtraInfo var3) {
Object var4 = this.accessor.apply(var2);
this.codec.put(var1, var4, var3);
}
@Nullable
FieldType getValue(@Nonnull Type var1) {
class="kw">return this.accessor.apply(var1);
}
class="kw">public void decode(@Nonnull BsonValue var1, @Nonnull Object[] var2, @Nonnull ExtraInfo var3) {
var3.pushKey(this.codec.getKey());
try {
Object var4;
if (Codec.isNullBsonValue(var1)) {
var4 = null;
} else {
try {
var4 = this.codec.getChildCodec().decode(var1, var3);
} catch (Exception var9) {
throw new CodecException("Failed to decode", var1, var3, var9);
}
}
this.setValue(var2, var4, var3);
} class="kw">finally {
var3.popKey();
}
}
class="kw">public void decodeJson(@Nonnull RawJsonReader var1, @Nonnull Object[] var2, @Nonnull ExtraInfo var3) class="kw">throws IOException {
int var4 = var1.peek();
if (var4 == -1) {
throw new IOException("Unexpected EOF!");
}
class="kw">switch (var4) {
case 78:
case 110:
var1.readNullValue();
this.setValue(var2, null, var3);
class="kw">return;
class="kw">default:
Object var5 = this.codec.getChildCodec().decodeJson(var1, var3);
this.setValue(var2, var5, var3);
}
}
class="kw">private void setValue(@Nonnull Object[] var1, @Nullable FieldType var2, @Nonnull ExtraInfo var3) {
if (this.validators != null) {
ValidationResults var4 = var3.getValidationResults();
for (int var5 = 0; var5 < this.validators.size(); var5++) {
Validator var6 = this.validators.get(var5);
if (var6 != this.nonNullValidator) {
var6.accept(var2, var4);
}
}
var4._processValidationResults();
}
if (this.isPrimitive && var2 == null) {
ValidationResults var7 = var3.getValidationResults();
if (this.nonNullValidator != null) {
this.nonNullValidator.accept(null, var7);
} else {
Validators.nonNull().accept(null, var7);
}
var7._processValidationResults();
} else {
var1[this.index] = var2;
}
}
void validateRequiredArg(@Nonnull Object[] var1, @Nonnull ValidationResults var2) {
if (this.nonNullValidator != null) {
if (var1[this.index] == null) {
this.nonNullValidator.accept(null, var2);
var2._processValidationResults();
}
}
}
class="kw">public void validate(Type var1, @Nonnull ExtraInfo var2) {
this.validateValue(this.accessor.apply(var1), var2, null);
}
void validateDefaults(@Nullable Type var1, @Nullable Object var2, @Nonnull ExtraInfo var3, @Nonnull Set<Codec<?>> var4) {
Object var5 = (FieldType)(var1 != null ? this.accessor.apply(var1) : var2);
if (var5 != null && !this.codec.isRequired() && this.nonNullValidator == null) {
this.validateValue(var5, var3, var0 -> var0 class="kw">instanceof DeprecatedValidator);
}
ValidatableCodec.validateDefaults(this.codec.getChildCodec(), var3, var4);
}
class="kw">private void validateValue(@Nullable FieldType var1, @Nonnull ExtraInfo var2, @Nullable Predicate<Validator<? super FieldType>> var3) {
if (var1 != null && this.codec.getChildCodec() class="kw">instanceof ValidatableCodec var5) {
((ValidatableCodec<FieldType>)var5).validate(var1, var2);
}
if (this.validators != null) {
ValidationResults var8 = var2.getValidationResults();
for (int var6 = 0; var6 < this.validators.size(); var6++) {
Validator var7 = this.validators.get(var6);
if ((var3 == null || !var3.test(var7)) && !(var7 class="kw">instanceof LateValidator)) {
var7.accept(var1, var8);
}
}
var8._processValidationResults();
}
}
class="kw">public void updateSchema(@Nonnull SchemaContext var1, @Nonnull Schema var2) {
if (this.validators != null) {
for (int var3 = 0; var3 < this.validators.size(); var3++) {
this.validators.get(var3).updateSchema(var1, var2);
}
}
if (this.metadata != null) {
for (int var4 = 0; var4 < this.metadata.size(); var4++) {
this.metadata.get(var4).modify(var2);
}
}
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "RecordField{codec=" + this.codec + ", index=" + this.index + "}";
}
class="kw">public class="kw">static class="kw">final class Options<FieldType> {
@Nullable
class="kw">private List<Validator<? super FieldType>> validators;
@Nullable
class="kw">private List<Metadata> metadata;
@Nullable
class="kw">private String documentation;
class="kw">public Options() {
}
@Nonnull
class="kw">public RecordField.Options<FieldType> addValidator(@Nonnull Validator<? super FieldType> var1) {
if (this.validators == null) {
this.validators = new ObjectArrayList();
}
this.validators.add(var1);
class="kw">return this;
}
@Nonnull
class="kw">public RecordField.Options<FieldType> addValidatorLate(@Nonnull Supplier<LateValidator<? super FieldType>> var1) {
if (this.validators == null) {
this.validators = new ObjectArrayList();
}
this.validators.add(new LazyLateValidator<>(var1));
class="kw">return this;
}
@Nonnull
class="kw">public RecordField.Options<FieldType> documentation(@Nonnull String var1) {
this.documentation = var1;
class="kw">return this;
}
@Nonnull
class="kw">public RecordField.Options<FieldType> metadata(@Nonnull Metadata var1) {
if (this.metadata == null) {
this.metadata = new ObjectArrayList();
}
this.metadata.add(var1);
class="kw">return this;
}
}
}