package com.hypixel.hytale.codec.validation; import com.hypixel.hytale.codec.validation.validator.ArrayValidator; import com.hypixel.hytale.codec.validation.validator.MapKeyValidator; import com.hypixel.hytale.codec.validation.validator.MapValueValidator; import javax.annotation.Nonnull; public class ValidatorCache { private final Validator validator; private ArrayValidator arrayValidator; private ArrayValidator arrayofArrayValidator; private MapKeyValidator mapKeyValidator; private MapKeyValidator mapArrayKeyValidator; private MapValueValidator mapValueValidator; private MapValueValidator mapArrayValueValidator; public ValidatorCache(Validator validator) { this.validator = validator; } public Validator getValidator() { return this.validator; } @Nonnull public ArrayValidator getArrayValidator() { if (this.arrayValidator == null) { this.arrayValidator = new ArrayValidator<>(this.getValidator()); } return this.arrayValidator; } @Nonnull public ArrayValidator getArrayOfArrayValidator() { if (this.arrayofArrayValidator == null) { this.arrayofArrayValidator = new ArrayValidator(this.getArrayValidator()); } return this.arrayofArrayValidator; } @Nonnull public MapKeyValidator getMapKeyValidator() { if (this.mapKeyValidator == null) { this.mapKeyValidator = new MapKeyValidator<>(this.getValidator()); } return this.mapKeyValidator; } @Nonnull public MapKeyValidator getMapArrayKeyValidator() { if (this.mapArrayKeyValidator == null) { this.mapArrayKeyValidator = new MapKeyValidator(this.getArrayValidator()); } return this.mapArrayKeyValidator; } @Nonnull public MapValueValidator getMapValueValidator() { if (this.mapValueValidator == null) { this.mapValueValidator = new MapValueValidator<>(this.getValidator()); } return this.mapValueValidator; } @Nonnull public MapValueValidator getMapArrayValueValidator() { if (this.mapArrayValueValidator == null) { this.mapArrayValueValidator = new MapValueValidator(this.getArrayValidator()); } return this.mapArrayValueValidator; } }