/**
 * A superclass for inclusion/exclusion validators.
 * @abstract
 */
Ext.define('Ext.data.validator.List', {
    extend: 'Ext.data.validator.Validator',
    alias: 'data.validator.list',
    
    type: 'list',
    
    config: {
        /**
         * @cfg {Array} list (required)
         * The list to check the passed value against.
         */
        list: null,
 
        message: null
    },
    
    inclusion: null,
    
    validate: function(value) {
        var contains = Ext.Array.contains(this.getList(), value),
            inclusion = this.inclusion,
            exclusion = !inclusion,
            result;
            
        result = (inclusion && contains) || (exclusion && !contains);
        
        return result || this.getMessage();
    }
});