ValueStoreValidator class
Пакет: com.hypixel.hytale.server.npc.valuestore
Файл: com/hypixel/hytale/server/npc/valuestore/ValueStoreValidator.java
Поля (19)
| Модификаторы | Тип | Имя |
|---|---|---|
|
protected final BuilderContext |
context |
|
private final String |
description |
|
protected final String |
name |
final |
EnumMap<ValueStore.Type, HashMap<String, List<ValueStoreValidator.ValueUsage>>> |
usages |
|
protected final ValueStoreValidator.UseType |
useType |
|
protected final ValueStore.Type |
valueType |
|
ValueStoreValidator.ValueUsage |
var11 |
|
StringBuilder |
var12 |
|
ObjectListIterator |
var13 |
|
|
var13 |
|
ValueStoreValidator.ValueUsage |
var15 |
|
HashMap |
var2 |
|
boolean |
var2 |
|
List |
var3 |
|
HashMap |
var3 |
|
boolean |
var4 |
|
|
var4 |
|
ObjectArrayList |
var5 |
|
ObjectArrayList |
var6 |
Методы (11)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
|
EXCLUSIVE_WRITE EXCLUSIVE_WRITE("Has exclusive write ownership of the value") |
|
|
UseType UseType(String nullxx) |
|
public |
ValueUsagepublic ValueUsage(String var1, ValueStore.Type var2, ValueStoreValidator.UseType var3, BuilderContext var4) |
|
|
for for(ValueStore.Type var6 : ValueStore.Type.VALUES) |
|
public String |
getpublic String get() |
|
|
if if(var1.useType != ValueStoreValidator.UseType.READ) |
|
|
if if(var3 == null) |
|
|
if if(var10.useType == ValueStoreValidator.UseType.EXCLUSIVE_WRITE) |
public |
void |
registerValueUsagevoid registerValueUsage(@Nonnull ValueStoreValidator.ValueUsage var1) |
public |
boolean |
validateboolean validate(@Nonnull List<String> var1) |
private |
boolean |
validateTypeboolean validateType(@Nonnull ValueStore.Type var1, @Nonnull List<String> var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.valuestore;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderContext;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectListIterator;
class="kw">import java.util.EnumMap;
class="kw">import java.util.HashMap;
class="kw">import java.util.List;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.function.Supplier;
class="kw">import javax.annotation.Nonnull;
class="kw">public class ValueStoreValidator {
class="kw">private class="kw">final EnumMap<ValueStore.Type, HashMap<String, List<ValueStoreValidator.ValueUsage>>> usages = new EnumMap<>(ValueStore.Type.class);
class="kw">public ValueStoreValidator() {
}
class="kw">public void registerValueUsage(@Nonnull ValueStoreValidator.ValueUsage var1) {
if (var1.useType != ValueStoreValidator.UseType.READ) {
HashMap var2 = this.usages.computeIfAbsent(var1.valueType, var0 -> new HashMap<>());
List var3 = var2.computeIfAbsent(var1.name, var0 -> new ObjectArrayList());
var3.add(var1);
}
}
class="kw">public boolean validate(@Nonnull List<String> var1) {
boolean var2 = true;
for (ValueStore.Type var6 : ValueStore.Type.VALUES) {
var2 &= this.validateType(var6, var1);
}
class="kw">return var2;
}
class="kw">private boolean validateType(@Nonnull ValueStore.Type var1, @Nonnull List<String> var2) {
HashMap var3 = this.usages.get(var1);
if (var3 == null) {
class="kw">return true;
}
boolean var4 = true;
ObjectArrayList var5 = new ObjectArrayList();
ObjectArrayList var6 = new ObjectArrayList();
for (Entry var8 : var3.entrySet()) {
for (ValueStoreValidator.ValueUsage var10 : var8.getValue()) {
var5.add(var10);
if (var10.useType == ValueStoreValidator.UseType.EXCLUSIVE_WRITE) {
var6.add(var10);
}
}
if (var5.size() > 1 && !var6.isEmpty()) {
StringBuilder var12 = new StringBuilder();
var12.append("The core components [ ");
ObjectListIterator var13 = var6.iterator();
while (var13.hasNext()) {
ValueStoreValidator.ValueUsage var11 = (ValueStoreValidator.ValueUsage)var13.next();
var12.append(var11.context.getLabel()).append(" ");
}
var12.append("] require an exclusive write of the ")
.append(var1.get())
.append(" parameter '")
.append(var8.getKey())
.append("' but it is written to by [ ");
var13 = var5.iterator();
while (var13.hasNext()) {
ValueStoreValidator.ValueUsage var15 = (ValueStoreValidator.ValueUsage)var13.next();
var12.append(var15.context.getLabel()).append(" ");
}
var12.append("]");
var2.add(var12.toString());
var4 = false;
}
var5.clear();
var6.clear();
}
class="kw">return var4;
}
class="kw">public enum UseType class="kw">implements Supplier<String> {
READ("Reads the value"),
WRITE("Writes the value"),
EXCLUSIVE_WRITE("Has exclusive write ownership of the value");
class="kw">private class="kw">final String description;
UseType(String nullxx) {
this.description = nullxx;
}
class="kw">public String get() {
class="kw">return this.description;
}
}
class="kw">public class="kw">static class ValueUsage {
class="kw">protected class="kw">final String name;
class="kw">protected class="kw">final ValueStore.Type valueType;
class="kw">protected class="kw">final ValueStoreValidator.UseType useType;
class="kw">protected class="kw">final BuilderContext context;
class="kw">public ValueUsage(String var1, ValueStore.Type var2, ValueStoreValidator.UseType var3, BuilderContext var4) {
this.name = var1;
this.valueType = var2;
this.useType = var3;
this.context = var4;
}
}
}