BuilderField class

Пакет: com.hypixel.hytale.codec.builder

Файл: com/hypixel/hytale/codec/builder/BuilderField.java

Поля (35)

МодификаторыТипИмя
break
protected final KeyedCodec<FieldType> codec
protected String documentation
protected final BiFunction<T, ExtraInfo, FieldType> getter
protected final TriConsumer<T, T, ExtraInfo> inherit
protected int maxVersion
protected List<Metadata> metadata
protected int minVersion
protected final Builder parentBuilder
return
return
protected final TriConsumer<T, FieldType, ExtraInfo> setter
NonNullValidator var2
var2
Object var3
Object var4
Object var4
int var4
ValidationResults var4
Object var4
ValidationResults var4
Object var4
Validator var4
Object var5
Object var5
int var5
Codec var5
Object var6
Codec var6
ValidationResults var6
Validator var6
Metadata var6
Object var7
Object var8
Object var9

Методы (52)

МодификаторыВозвратСигнатура
public FieldBuilderpublic FieldBuilder(Builder var1, KeyedCodec<FieldType> var2, TriConsumer<T, FieldType, ExtraInfo> var3, BiFunction<T, ExtraInfo, FieldType> var4, TriConsumer<T, T, ExtraInfo> var5)
abstract throw new IOExceptionthrow new IOException("Unexpected EOF!")
public Builder addpublic Builder add()
public BuilderField.FieldBuilder<T, FieldType, Builder> addValidatorpublic BuilderField.FieldBuilder<T, FieldType, Builder> addValidator(Validator<? super FieldType> var1)
public BuilderField.FieldBuilder<T, FieldType, Builder> addValidatorpublic BuilderField.FieldBuilder<T, FieldType, Builder> addValidator(LegacyValidator<? super FieldType> var1)
public BuilderField.FieldBuilder<T, FieldType, Builder> addValidatorLatepublic BuilderField.FieldBuilder<T, FieldType, Builder> addValidatorLate(@Nonnull Supplier<LateValidator<? super FieldType>> var1)
public void decodevoid decode(BsonDocument var1, Type var2, @Nonnull ExtraInfo var3)
public void decodeAndInheritvoid decodeAndInherit(BsonDocument var1, Type var2, @Nullable Type var3, @Nonnull ExtraInfo var4)
public void decodeAndInheritJsonvoid decodeAndInheritJson(@Nonnull RawJsonReader var1, Type var2, @Nullable Type var3, @Nonnull ExtraInfo var4)
public void decodeJsonvoid decodeJson(@Nonnull RawJsonReader var1, Type var2, @Nonnull ExtraInfo var3)
public BuilderField.FieldBuilder<T, FieldType, Builder> documentationpublic BuilderField.FieldBuilder<T, FieldType, Builder> documentation(String var1)
public void encodevoid encode(@Nonnull BsonDocument var1, Type var2, @Nonnull ExtraInfo var3)
for for(Validator var4 : var1.validators)
abstract for for(int var5 = 0; var5 < this.validators.size()
abstract for for(int var3 = 0; var3 < this.validators.size()
abstract for for(int var5 = 0; var5 < this.metadata.size()
public int getHighestSupportedVersionint getHighestSupportedVersion()
public int getMaxVersionint getMaxVersion()
public int getMinVersionint getMinVersion()
public boolean hasNonNullValidatorboolean hasNonNullValidator()
if if(var1.validators == null)
if if(var4 instanceof NonNullValidator)
if if(var4 != null)
if if(this.inherit != null)
if if(var4 == -1)
if if(var5 == -1)
if if(var6 instanceof InheritCodec)
if if(this.validators != null)
if if(this.isPrimitive && var2 == null)
if if(this.codec instanceof ValidatableCodec)
if if(this.validators != null)
if if(this.nonNullValidator != null)
if if(var4 == null)
if if(this.validators != null)
if if(this.metadata != null)
if if(this.inherit != null)
if if(this.validators == null)
if if(this.validators == null)
if if(this.validators == null)
if if(this.metadata == null)
public void inheritvoid inherit(Type var1, Type var2, ExtraInfo var3)
public BuilderField.FieldBuilder<T, FieldType, Builder> metadatapublic BuilderField.FieldBuilder<T, FieldType, Builder> metadata(Metadata var1)
public void nullValidatevoid nullValidate(Type var1, @Nonnull ValidationResults var2, ExtraInfo var3)
public void setValuevoid setValue(Type var1, @Nullable FieldType var2, @Nonnull ExtraInfo var3)
public BuilderField.FieldBuilder<T, FieldType, Builder> setVersionRangepublic BuilderField.FieldBuilder<T, FieldType, Builder> setVersionRange(int var1, int var2)
public boolean supportsVersionboolean supportsVersion(int var1)
switch switch(var4)
switch switch(var5)
public void updateSchemavoid updateSchema(SchemaContext var1, @Nonnull Schema var2)
public void validatevoid validate(Type var1, @Nonnull ExtraInfo var2)
public void validateDefaultsvoid validateDefaults(Type var1, @Nonnull ExtraInfo var2, Set<Codec<?>> var3)
private void validateValuevoid validateValue(FieldType var1, @Nonnull ExtraInfo var2, @Nullable Predicate<Validator<? super FieldType>> var3)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.codec.builder;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
class="kw">import com.hypixel.hytale.codec.InheritCodec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.PrimitiveCodec;
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.LegacyValidator;
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 com.hypixel.hytale.function.consumer.TriConsumer;
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.BiFunction;
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">public class BuilderField<Type, FieldType> {
   @Nonnull
   class="kw">protected class="kw">final KeyedCodec<FieldType> codec;
   @Nonnull
   class="kw">protected class="kw">final TriConsumer<Type, FieldType, ExtraInfo> setter;
   @Nonnull
   class="kw">protected class="kw">final BiFunction<Type, ExtraInfo, FieldType> getter;
   class="kw">protected class="kw">final TriConsumer<Type, Type, ExtraInfo> inherit;
   @Nullable
   class="kw">protected class="kw">final List<Validator<? super FieldType>> validators;
   @Nullable
   class="kw">protected class="kw">final List<Metadata> metadata;
   class="kw">protected class="kw">final int minVersion;
   class="kw">protected class="kw">final int maxVersion;
   @Nullable
   class="kw">protected class="kw">final String documentation;
   @Nullable
   class="kw">protected class="kw">final NonNullValidator<? super FieldType> nonNullValidator;
   class="kw">protected class="kw">final boolean isPrimitive;

   class="kw">protected BuilderField(@Nonnull BuilderField.FieldBuilder<Type, FieldType, ?> var1) {
      this.codec = var1.codec;
      this.setter = var1.setter;
      this.getter = var1.getter;
      this.inherit = var1.inherit;
      this.validators = var1.validators;
      this.metadata = var1.metadata;
      this.minVersion = var1.minVersion;
      this.maxVersion = var1.maxVersion;
      this.documentation = var1.documentation;
      if (var1.validators == null) {
         this.nonNullValidator = null;
      } else {
         NonNullValidator var2 = null;

         for (Validator var4 : var1.validators) {
            if (var4 class="kw">instanceof NonNullValidator) {
               var2 = (NonNullValidator<? super FieldType>)var4;
               break;
            }
         }

         this.nonNullValidator = var2;
      }

      this.isPrimitive = this.codec.getChildCodec() class="kw">instanceof PrimitiveCodec;
   }

   class="kw">protected BuilderField(
      @Nonnull KeyedCodec<FieldType> var1,
      TriConsumer<Type, FieldType, ExtraInfo> var2,
      BiFunction<Type, ExtraInfo, FieldType> var3,
      TriConsumer<Type, Type, ExtraInfo> var4
   ) {
      this.codec = Objects.requireNonNull(var1, "codec parameter can't be null");
      this.setter = Objects.requireNonNull(var2, "setter parameter can't be null");
      this.getter = Objects.requireNonNull(var3, "getter parameter can't be null");
      this.inherit = var4;
      this.validators = null;
      this.metadata = null;
      this.minVersion = Integer.MIN_VALUE;
      this.maxVersion = Integer.MAX_VALUE;
      this.documentation = null;
      this.nonNullValidator = null;
      this.isPrimitive = var1.getChildCodec() class="kw">instanceof PrimitiveCodec;
   }

   @Nonnull
   class="kw">public KeyedCodec<FieldType> getCodec() {
      class="kw">return this.codec;
   }

   class="kw">public int getMinVersion() {
      class="kw">return this.minVersion;
   }

   class="kw">public int getMaxVersion() {
      class="kw">return this.maxVersion;
   }

   class="kw">public int getHighestSupportedVersion() {
      class="kw">return this.maxVersion != Integer.MAX_VALUE ? this.maxVersion : this.minVersion;
   }

   class="kw">public boolean supportsVersion(int var1) {
      class="kw">return var1 == Integer.MIN_VALUE || var1 >= this.minVersion && var1 <= this.maxVersion;
   }

   @Nullable
   class="kw">public List<Validator<? super FieldType>> getValidators() {
      class="kw">return this.validators;
   }

   class="kw">public boolean hasNonNullValidator() {
      class="kw">return this.nonNullValidator != null;
   }

   @Nullable
   class="kw">public String getDocumentation() {
      class="kw">return this.documentation;
   }

   class="kw">public void decode(BsonDocument var1, Type var2, @Nonnull ExtraInfo var3) {
      Object var4 = this.codec.getOrNull(var1, var3);
      this.setValue(var2, var4, var3);
   }

   class="kw">public void decodeAndInherit(BsonDocument var1, Type var2, @Nullable Type var3, @Nonnull ExtraInfo var4) {
      Object var5 = var3 != null ? this.getter.apply(var3, var4) : null;
      Object var6 = this.codec.getAndInherit(var1, var5, var4).orElse(null);
      this.setValue(var2, var6, var4);
   }

   class="kw">public void encode(@Nonnull BsonDocument var1, Type var2, @Nonnull ExtraInfo var3) {
      Object var4 = this.getter.apply(var2, var3);
      if (var4 != null) {
         this.codec.put(var1, var4, var3);
      }
   }

   class="kw">public void inherit(Type var1, Type var2, ExtraInfo var3) {
      if (this.inherit != null) {
         this.inherit.accept(var1, var2, var3);
      }
   }

   class="kw">public void decodeJson(@Nonnull RawJsonReader var1, Type 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">public void decodeAndInheritJson(@Nonnull RawJsonReader var1, Type var2, @Nullable Type var3, @Nonnull ExtraInfo var4) class="kw">throws IOException {
      int var5 = var1.peek();
      if (var5 == -1) {
         throw new IOException("Unexpected EOF!");
      }

      class="kw">switch (var5) {
         case 78:
         case 110:
            var1.readNullValue();
            this.setValue(var2, null, var4);
            class="kw">return;
         class="kw">default:
            Codec var6 = this.codec.getChildCodec();
            if (var6 class="kw">instanceof InheritCodec) {
               Object var7 = var3 != null ? this.getter.apply(var3, var4) : null;
               Object var8 = ((InheritCodec)var6).decodeAndInheritJson(var1, var7, var4);
               this.setValue(var2, var8, var4);
            } else {
               Object var9 = var6.decodeJson(var1, var4);
               this.setValue(var2, var9, var4);
            }
      }
   }

   class="kw">public void setValue(Type var1, @Nullable FieldType var2, @Nonnull ExtraInfo var3) {
      if (this.validators != null) {
         ValidationResults var4 = var3.getValidationResults();

         for (int var5 = 0; var5 < this.validators.size(); var5++) {
            this.validators.get(var5).accept(var2, var4);
         }

         var4._processValidationResults();
      }

      if (this.isPrimitive && var2 == null) {
         ValidationResults var6 = var3.getValidationResults();
         Validators.nonNull().accept(null, var6);
         var6._processValidationResults();
      } else {
         this.setter.accept(var1, var2, var3);
      }
   }

   class="kw">public void validate(Type var1, @Nonnull ExtraInfo var2) {
      Object var3 = this.getter.apply(var1, var2);
      this.validateValue(var3, var2, null);
   }

   class="kw">public void validateDefaults(Type var1, @Nonnull ExtraInfo var2, Set<Codec<?>> var3) {
      Object var4 = this.getter.apply(var1, var2);
      if (var4 != null && !this.codec.isRequired() && this.nonNullValidator == null) {
         this.validateValue(var4, var2, var0 -> var0 class="kw">instanceof DeprecatedValidator);
      }

      Codec var5 = this.codec.getChildCodec();
      ValidatableCodec.validateDefaults(var5, var2, var3);
   }

   class="kw">private void validateValue(FieldType var1, @Nonnull ExtraInfo var2, @Nullable Predicate<Validator<? super FieldType>> var3) {
      if (this.codec class="kw">instanceof ValidatableCodec) {
         ((ValidatableCodec)this.codec).validate(var1, var2);
      }

      if (this.validators != null) {
         ValidationResults var4 = var2.getValidationResults();

         for (int var5 = 0; var5 < this.validators.size(); var5++) {
            Validator var6 = this.validators.get(var5);
            if ((var3 == null || !var3.test(var6)) && !(var6 class="kw">instanceof LateValidator)) {
               var6.accept(var1, var4);
            }
         }

         var4._processValidationResults();
      }
   }

   class="kw">public void nullValidate(Type var1, @Nonnull ValidationResults var2, ExtraInfo var3) {
      if (this.nonNullValidator != null) {
         Object var4 = this.getter.apply(var1, var3);
         if (var4 == null) {
            this.nonNullValidator.accept(null, var2);
            var2._processValidationResults();
         }
      }
   }

   class="kw">public void updateSchema(SchemaContext var1, @Nonnull Schema var2) {
      if (this.validators != null) {
         for (int var3 = 0; var3 < this.validators.size(); var3++) {
            Validator var4 = this.validators.get(var3);
            var4.updateSchema(var1, var2);
         }
      }

      if (this.metadata != null) {
         for (int var5 = 0; var5 < this.metadata.size(); var5++) {
            Metadata var6 = this.metadata.get(var5);
            var6.modify(var2);
         }
      }

      if (this.inherit != null) {
         var2.getHytale().setInheritsProperty(true);
      }
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "BuilderField{codec=" + this.codec + ", setter=" + this.setter + ", getter=" + this.getter + "}";
   }

   class="kw">public class="kw">static class FieldBuilder<T, FieldType, Builder class="kw">extends BuilderCodec.BuilderBase<T, Builder>> {
      @Nonnull
      class="kw">protected class="kw">final Builder parentBuilder;
      @Nonnull
      class="kw">protected class="kw">final KeyedCodec<FieldType> codec;
      @Nonnull
      class="kw">protected class="kw">final TriConsumer<T, FieldType, ExtraInfo> setter;
      @Nonnull
      class="kw">protected class="kw">final BiFunction<T, ExtraInfo, FieldType> getter;
      class="kw">protected class="kw">final TriConsumer<T, T, ExtraInfo> inherit;
      class="kw">protected List<Validator<? super FieldType>> validators;
      class="kw">protected List<Metadata> metadata;
      class="kw">protected int minVersion = Integer.MIN_VALUE;
      class="kw">protected int maxVersion = Integer.MAX_VALUE;
      class="kw">protected String documentation;

      class="kw">public FieldBuilder(
         Builder var1,
         KeyedCodec<FieldType> var2,
         TriConsumer<T, FieldType, ExtraInfo> var3,
         BiFunction<T, ExtraInfo, FieldType> var4,
         TriConsumer<T, T, ExtraInfo> var5
      ) {
         this.parentBuilder = Objects.requireNonNull(var1, "parentBuilder parameter can't be null");
         this.codec = Objects.requireNonNull(var2, "codec parameter can't be null");
         this.setter = Objects.requireNonNull(var3, "setter parameter can't be null");
         this.getter = Objects.requireNonNull(var4, "getter parameter can't be null");
         this.inherit = var5;
      }

      @Nonnull
      class="kw">public BuilderField.FieldBuilder<T, FieldType, Builder> addValidator(Validator<? super FieldType> var1) {
         if (this.validators == null) {
            this.validators = new ObjectArrayList();
         }

         this.validators.add(var1);
         class="kw">return this;
      }

      @Nonnull
      @Deprecated(forRemoval = true)
      class="kw">public BuilderField.FieldBuilder<T, FieldType, Builder> addValidator(LegacyValidator<? super FieldType> var1) {
         if (this.validators == null) {
            this.validators = new ObjectArrayList();
         }

         this.validators.add(var1);
         class="kw">return this;
      }

      @Nonnull
      class="kw">public BuilderField.FieldBuilder<T, FieldType, Builder> 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 BuilderField.FieldBuilder<T, FieldType, Builder> setVersionRange(int var1, int var2) {
         this.minVersion = var1;
         this.maxVersion = var2;
         class="kw">return this;
      }

      @Nonnull
      class="kw">public BuilderField.FieldBuilder<T, FieldType, Builder> documentation(String var1) {
         this.documentation = var1;
         class="kw">return this;
      }

      @Nonnull
      class="kw">public BuilderField.FieldBuilder<T, FieldType, Builder> metadata(Metadata var1) {
         if (this.metadata == null) {
            this.metadata = new ObjectArrayList();
         }

         this.metadata.add(var1);
         class="kw">return this;
      }

      @Nonnull
      class="kw">public Builder add() {
         this.parentBuilder.addField(new BuilderField<>(this));
         class="kw">return this.parentBuilder;
      }
   }
}