class DefaultConfigValueEvaluator implements ConfigValueEvaluator {

    @Override
    public PropertyValue evaluateRawValue(String key, ConfigurationContext context) {
        PropertyValue unfilteredValue = null;
        for (PropertySource propertySource : context.getPropertySources()) {
            PropertyValue val = propertySource.get(key);
            if(val!=null){
                unfilteredValue = val;
            }
        }
        if(unfilteredValue==null ||
                (unfilteredValue.getValueType()== PropertyValue.ValueType.VALUE && unfilteredValue.getValue()==null)){
            return null;
        }
        return unfilteredValue;
    }

}