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

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

import com.hypixel.hytale.codec.schema.config.ArraySchema;
import com.hypixel.hytale.codec.schema.config.Schema;
import com.hypixel.hytale.codec.schema.SchemaContext;
import com.hypixel.hytale.codec.validation.ValidationResults;
import javax.annotation.Nullable;
import com.hypixel.hytale.codec.validation.LegacyValidator;
import com.hypixel.hytale.codec.validation.Validator;

public class ArrayValidator<T> implements Validator<T[]>
{
    private Validator<T> validator;
    
    public ArrayValidator(final Validator<T> validator) {
        this.validator = validator;
    }
    
    @Deprecated(forRemoval = true)
    public ArrayValidator(final LegacyValidator<T> validator) {
        this.validator = validator;
    }
    
    public Validator<T> getValidator() {
        return this.validator;
    }
    
    @Override
    public void accept(@Nullable final T[] ts, final ValidationResults results) {
        if (ts == null) {
            return;
        }
        for (final T t : ts) {
            this.validator.accept(t, results);
        }
    }
    
    @Override
    public void updateSchema(final SchemaContext context, final Schema target) {
        if (!(target instanceof ArraySchema)) {
            throw new IllegalArgumentException();
        }
        final Schema item = (Schema)((ArraySchema)target).getItems();
        this.validator.updateSchema(context, item);
    }
}
