package com.hypixel.hytale.codec.validation.validator; import com.hypixel.hytale.codec.schema.SchemaContext; import com.hypixel.hytale.codec.schema.config.ObjectSchema; import com.hypixel.hytale.codec.schema.config.Schema; import com.hypixel.hytale.codec.schema.config.StringSchema; import com.hypixel.hytale.codec.validation.ValidationResults; import com.hypixel.hytale.codec.validation.Validator; import java.util.Map; import javax.annotation.Nonnull; public class MapKeyValidator implements Validator> { private Validator key; public MapKeyValidator(Validator key) { this.key = key; } public Validator getKeyValidator() { return this.key; } public void accept(@Nonnull Map map, ValidationResults results) { for (K k : map.keySet()) { this.key.accept(k, results); } } @Override public void updateSchema(SchemaContext context, Schema target) { if (target instanceof ObjectSchema obj) { StringSchema names = obj.getPropertyNames(); if (names == null) { names = new StringSchema(); obj.setPropertyNames(names); } this.key.updateSchema(context, names); } else { throw new IllegalArgumentException(); } } }