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);
}
}