// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.codec.validation.validator;

import com.hypixel.hytale.codec.schema.config.StringSchema;
import com.hypixel.hytale.codec.schema.config.ObjectSchema;
import com.hypixel.hytale.codec.schema.config.Schema;
import com.hypixel.hytale.codec.schema.SchemaContext;
import java.util.Iterator;
import com.hypixel.hytale.codec.validation.ValidationResults;
import javax.annotation.Nonnull;
import java.util.Map;
import com.hypixel.hytale.codec.validation.Validator;

public class MapKeyValidator<K> implements Validator<Map<K, ?>>
{
    private Validator<K> key;
    
    public MapKeyValidator(final Validator<K> key) {
        this.key = key;
    }
    
    public Validator<K> getKeyValidator() {
        return this.key;
    }
    
    @Override
    public void accept(@Nonnull final Map<K, ?> map, final ValidationResults results) {
        for (final K k : map.keySet()) {
            this.key.accept(k, results);
        }
    }
    
    @Override
    public void updateSchema(final SchemaContext context, final Schema target) {
        if (target instanceof final ObjectSchema obj) {
            StringSchema names = obj.getPropertyNames();
            if (names == null) {
                names = new StringSchema();
                obj.setPropertyNames(names);
            }
            this.key.updateSchema(context, names);
            return;
        }
        throw new IllegalArgumentException();
    }
}
