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

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

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 MapValueValidator<V> implements Validator<Map<?, V>>
{
    private Validator<V> value;
    
    public MapValueValidator(final Validator<V> value) {
        this.value = value;
    }
    
    public Validator<V> getValueValidator() {
        return this.value;
    }
    
    @Override
    public void accept(@Nonnull final Map<?, V> map, final ValidationResults results) {
        for (final V v : map.values()) {
            this.value.accept(v, results);
        }
    }
    
    @Override
    public void updateSchema(final SchemaContext context, final Schema target) {
        if (target instanceof final ObjectSchema obj) {
            if (obj.getProperties() != null) {
                for (final Schema val : obj.getProperties().values()) {
                    this.value.updateSchema(context, val);
                }
            }
            if (obj.getAdditionalProperties() instanceof final Schema schema) {
                this.value.updateSchema(context, schema);
            }
            return;
        }
        throw new IllegalArgumentException();
    }
}
