KeyedCodec class

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

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

Поля (5)

МодификаторыТипИмя
BsonValue var3
char var4
BsonValue var4
BsonValue var4
char var5

Методы (17)

МодификаторыВозвратСигнатура
abstract throw new CodecExceptionthrow new CodecException("Failed decode", var1, var2, var8)
abstract throw new CodecExceptionthrow new CodecException("Failed decode", var1, var2, var9)
abstract throw new CodecExceptionthrow new CodecException("Failed decode", var1, var3, var9)
abstract throw new CodecExceptionthrow new CodecException("Failed encode", var2, var3, var5)
abstract throw new CodecExceptionthrow new CodecException("Failed to decode", var1, var2, var4)
abstract throw new CodecExceptionthrow new CodecException("Failed to decode", var1, var3, var5)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Key must not be empty! Key: '" + var1 + "'")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Key must start with an upper case character! Key: '" + var1 + "'")
protected BsonValue encodeBsonValue encode(T var1, ExtraInfo var2)
public T getNowT getNow(BsonDocument var1, @Nonnull ExtraInfo var2)
if if(var1 == null)
if if(var1 == null)
if if(var1 == null)
if if(var2 != null)
public boolean isRequiredboolean isRequired()
public void putvoid put(@Nonnull BsonDocument var1, @Nullable T var2, @Nonnull ExtraInfo var3)
abstract this this(var1, var2, false)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.exception.CodecException;
class="kw">import java.util.Objects;
class="kw">import java.util.Optional;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonDocument;
class="kw">import org.bson.BsonSerializationException;
class="kw">import org.bson.BsonValue;

class="kw">public class KeyedCodec<T> {
   @Nonnull
   class="kw">private class="kw">final String key;
   @Nonnull
   class="kw">private class="kw">final Codec<T> codec;
   class="kw">private class="kw">final boolean required;

   class="kw">public KeyedCodec(@Nonnull String var1, Codec<T> var2) {
      this(var1, var2, false);
   }

   class="kw">public KeyedCodec(@Nonnull String var1, Codec<T> var2, boolean var3) {
      this.key = Objects.requireNonNull(var1, "key parameter can't be null");
      this.codec = Objects.requireNonNull(var2, "codec parameter can't be null");
      this.required = var3;
      if (var1.isEmpty()) {
         throw new IllegalArgumentException("Key must not be empty! Key: '" + var1 + "'");
      }

      char var4 = var1.charAt(0);
      if (Character.isLetter(var4) && !Character.isUpperCase(var4)) {
         throw new IllegalArgumentException("Key must start with an upper case character! Key: '" + var1 + "'");
      }
   }

   @Deprecated
   class="kw">public KeyedCodec(@Nonnull String var1, Codec<T> var2, boolean var3, boolean var4) {
      this.key = Objects.requireNonNull(var1, "key parameter can't be null");
      this.codec = Objects.requireNonNull(var2, "codec parameter can't be null");
      this.required = var3;
      if (var1.isEmpty()) {
         throw new IllegalArgumentException("Key must not be empty! Key: '" + var1 + "'");
      }

      char var5 = var1.charAt(0);
      if (!var4 && Character.isLetter(var5) && !Character.isUpperCase(var5)) {
         throw new IllegalArgumentException("Key must start with an upper case character! Key: '" + var1 + "'");
      }
   }

   @Nonnull
   class="kw">public String getKey() {
      class="kw">return this.key;
   }

   @Deprecated
   class="kw">public T getNow(BsonDocument var1) {
      class="kw">return this.getNow(var1, EmptyExtraInfo.EMPTY);
   }

   class="kw">public T getNow(BsonDocument var1, @Nonnull ExtraInfo var2) {
      class="kw">return this.get(var1, var2).orElseThrow(() -> new BsonSerializationException(this.key + " does not exist in document!"));
   }

   @Nullable
   @Deprecated
   class="kw">public T getOrNull(BsonDocument var1) {
      class="kw">return this.getOrNull(var1, EmptyExtraInfo.EMPTY);
   }

   @Nullable
   class="kw">public T getOrNull(BsonDocument var1, @Nonnull ExtraInfo var2) {
      class="kw">return this.get(var1, var2).orElse(null);
   }

   @Nonnull
   @Deprecated
   class="kw">public Optional<T> get(BsonDocument var1) {
      class="kw">return this.get(var1, EmptyExtraInfo.EMPTY);
   }

   @Nonnull
   class="kw">public Optional<T> get(@Nullable BsonDocument var1, @Nonnull ExtraInfo var2) {
      var2.pushKey(this.key);

      try {
         if (var1 == null) {
            class="kw">return Optional.empty();
         }

         BsonValue var3 = var1.get(this.key);
         class="kw">return Codec.isNullBsonValue(var3) ? Optional.empty() : Optional.ofNullable(this.decode(var3, var2));
      } catch (Exception var8) {
         throw new CodecException("Failed decode", var1, var2, var8);
      } class="kw">finally {
         var2.popKey();
      }
   }

   @Nullable
   class="kw">public T getOrDefault(@Nullable BsonDocument var1, @Nonnull ExtraInfo var2, T var3) {
      var2.pushKey(this.key);

      try {
         if (var1 == null) {
            class="kw">return var3;
         }

         BsonValue var4 = var1.get(this.key);
         class="kw">return Codec.isNullBsonValue(var4) ? var3 : this.codec.decode(var4, var2);
      } catch (Exception var9) {
         throw new CodecException("Failed decode", var1, var2, var9);
      } class="kw">finally {
         var2.popKey();
      }
   }

   @Nonnull
   class="kw">public Optional<T> getAndInherit(@Nullable BsonDocument var1, T var2, @Nonnull ExtraInfo var3) {
      var3.pushKey(this.key);

      try {
         if (var1 == null) {
            class="kw">return Optional.ofNullable(this.decodeAndInherit(null, var2, var3));
         }

         BsonValue var4 = var1.get(this.key);
         class="kw">return Codec.isNullBsonValue(var4)
            ? Optional.ofNullable(this.decodeAndInherit(null, var2, var3))
            : Optional.ofNullable(this.decodeAndInherit(var4, var2, var3));
      } catch (Exception var9) {
         throw new CodecException("Failed decode", var1, var3, var9);
      } class="kw">finally {
         var3.popKey();
      }
   }

   @Deprecated
   class="kw">public void put(@Nonnull BsonDocument var1, T var2) {
      this.put(var1, var2, EmptyExtraInfo.EMPTY);
   }

   class="kw">public void put(@Nonnull BsonDocument var1, @Nullable T var2, @Nonnull ExtraInfo var3) {
      if (var2 != null) {
         try {
            var1.put(this.key, this.encode(var2, var3));
         } catch (Exception var5) {
            throw new CodecException("Failed encode", var2, var3, var5);
         }
      }
   }

   @Nullable
   class="kw">protected T decode(BsonValue var1, @Nonnull ExtraInfo var2) {
      if (!this.required && Codec.isNullBsonValue(var1)) {
         class="kw">return null;
      }

      try {
         class="kw">return this.codec.decode(var1, var2);
      } catch (Exception var4) {
         throw new CodecException("Failed to decode", var1, var2, var4);
      }
   }

   @Nullable
   class="kw">protected T decodeAndInherit(@Nullable BsonValue var1, T var2, @Nonnull ExtraInfo var3) {
      if (!this.required && Codec.isNullBsonValue(var1)) {
         class="kw">return null;
      }

      try {
         class="kw">return var1 != null && var1.isDocument() && this.codec class="kw">instanceof InheritCodec
            ? ((InheritCodec)this.codec).decodeAndInherit(var1.asDocument(), var2, var3)
            : this.codec.decode(var1, var3);
      } catch (Exception var5) {
         throw new CodecException("Failed to decode", var1, var3, var5);
      }
   }

   class="kw">protected BsonValue encode(T var1, ExtraInfo var2) {
      class="kw">return this.codec.encode(var1, var2);
   }

   @Nonnull
   class="kw">public Codec<T> getChildCodec() {
      class="kw">return this.codec;
   }

   class="kw">public boolean isRequired() {
      class="kw">return this.required;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "KeyedCodec{key='" + this.key + "', codec=" + this.codec + "}";
   }
}