ContextKey class

Пакет: com.hypixel.hytale.builtin.adventure.worldevents.context

Файл: com/hypixel/hytale/builtin/adventure/worldevents/context/ContextKey.java

Поля (1)

МодификаторыТипИмя
final AtomicInteger ID_COUNTER

Методы (6)

МодификаторыВозвратСигнатура
abstract return new StringSchemareturn new StringSchema()
public ContextKey decodepublic ContextKey decode(@Nonnull BsonValue var1, ExtraInfo var2)
public ContextKey decodeJsonpublic ContextKey decodeJson(@Nonnull RawJsonReader var1, ExtraInfo var2)
public BsonValue encodepublic BsonValue encode(@Nonnull ContextKey var1, ExtraInfo var2)
public int getIdint getId()
public Schema toSchemapublic Schema toSchema(@Nonnull SchemaContext var1)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
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.config.StringSchema;
class="kw">import com.hypixel.hytale.codec.util.RawJsonReader;
class="kw">import java.io.IOException;
class="kw">import java.util.Map;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import java.util.concurrent.atomic.AtomicInteger;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonString;
class="kw">import org.bson.BsonValue;

class="kw">public class="kw">final class ContextKey {
   class="kw">private class="kw">static class="kw">final AtomicInteger ID_COUNTER = new AtomicInteger(0);
   class="kw">private class="kw">static class="kw">final Map<String, ContextKey> INTERNED_KEYS = new ConcurrentHashMap<>();
   @Nonnull
   class="kw">private class="kw">final String name;
   class="kw">private class="kw">final int id;
   class="kw">private class="kw">final int hash;
   class="kw">public class="kw">static class="kw">final Codec<ContextKey> CODEC = new Codec<ContextKey>() {
      @Nonnull
      class="kw">public ContextKey decodeJson(@Nonnull RawJsonReader var1, ExtraInfo var2) class="kw">throws IOException {
         class="kw">return ContextKey.of(var1.readString());
      }

      @Nullable
      class="kw">public ContextKey decode(@Nonnull BsonValue var1, ExtraInfo var2) {
         class="kw">return !var1.isString() ? null : ContextKey.of(var1.asString().getValue());
      }

      @Nonnull
      class="kw">public BsonValue encode(@Nonnull ContextKey var1, ExtraInfo var2) {
         class="kw">return new BsonString(var1.getName());
      }

      @Nonnull
      @Override
      class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
         class="kw">return new StringSchema();
      }
   };

   ContextKey(@Nonnull String var1) {
      this.name = var1;
      this.id = ID_COUNTER.getAndIncrement();
      this.hash = Integer.hashCode(this.id);
   }

   class="kw">public int getId() {
      class="kw">return this.id;
   }

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

   @Override
   class="kw">public int hashCode() {
      class="kw">return this.hash;
   }

   @Override
   class="kw">public boolean equals(@Nullable Object var1) {
      class="kw">return var1 class="kw">instanceof ContextKey var2 && var2.id == this.id;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "ContextKey{name='" + this.name + "', id=" + this.id + "}";
   }

   @Nonnull
   class="kw">public class="kw">static ContextKey of(@Nonnull String var0) {
      class="kw">return INTERNED_KEYS.computeIfAbsent(var0, ContextKey::new);
   }
}