class ConfigurableAgeOffFilter extends Filter implements OptionDescriber {

    @Override
    public boolean validateOptions(Map<String,String> options) {
        try {
            Integer.parseInt(options.get(AgeOffConfigParams.TTL));
        } catch (NumberFormatException nfe) {
            log.error("Error initializing ConfigurableAgeOffFilter: invalid <ttl> value:" + options.get(AgeOffConfigParams.TTL));
            return false;
            
        }
        
        if (options.containsKey(AgeOffConfigParams.TTL_SHORT_CIRCUIT)) {
            try {
                Integer.parseInt(options.get(AgeOffConfigParams.TTL_SHORT_CIRCUIT));
            } catch (NumberFormatException nfe) {
                log.error("Error initializing ConfigurableAgeOffFilter: invalid <ttlShortCircuit> value:" + options.get(AgeOffConfigParams.TTL_SHORT_CIRCUIT));
                return false;
            }
        }
        
        String ttlUnits = options.get(AgeOffConfigParams.TTL_UNITS);
        // @formatter:off
        List<String> allUnits = Arrays.asList(
            AgeOffTtlUnits.DAYS, AgeOffTtlUnits.HOURS, AgeOffTtlUnits.MINUTES, AgeOffTtlUnits.SECONDS, AgeOffTtlUnits.MILLISECONDS);
        // @formatter:on
        return (ttlUnits != null) && allUnits.contains(ttlUnits);
    }

    public  ConfigurableAgeOffFilter();
    public  ConfigurableAgeOffFilter(ConfigurableAgeOffFilter other, IteratorEnvironment env);

}