public static PropertyResolver createPrefixedResolver(final PropertyResolver resolver, String providerName, String pluginType) {
        final String projectPrefix = projectPropertyPrefix(pluginPropertyPrefix(pluginType, providerName));
        final String frameworkPrefix = frameworkPropertyPrefix(pluginPropertyPrefix(pluginType, providerName));
        return new PropertyResolver(){
            public Object resolvePropertyValue(String name, PropertyScope scope) {
                String value = null;
                if (scope.isInstanceLevel()) {
                    value = (String)resolver.resolvePropertyValue(name,scope);
                }
                if (null != value || scope == PropertyScope.InstanceOnly) {
                    return value;
                }

                if (scope.isProjectLevel()) {
                    value = (String) resolver.resolvePropertyValue(projectPrefix + name, scope);
                }
                if (null != value || scope == PropertyScope.ProjectOnly) {
                    return value;
                }

                value = (String) resolver.resolvePropertyValue(frameworkPrefix + name, scope);
                return value;
            }
        };

    }
public static PropertyResolver createPrefixedResolver ( final PropertyResolver resolver , String providerName , String pluginType ) { final String projectPrefix = projectPropertyPrefix ( pluginPropertyPrefix ( pluginType , providerName ) ) ; final String frameworkPrefix = frameworkPropertyPrefix ( pluginPropertyPrefix ( pluginType , providerName ) ) ; return new PropertyResolver ( ) { public Object resolvePropertyValue ( String name , PropertyScope scope ) { String value = null ; if ( scope . isInstanceLevel ( ) ) { value = ( String ) resolver . resolvePropertyValue ( name , scope ) ; } if ( null != value || scope == PropertyScope . InstanceOnly ) { return value ; } if ( scope . isProjectLevel ( ) ) { value = ( String ) resolver . resolvePropertyValue ( projectPrefix + name , scope ) ; } if ( null != value || scope == PropertyScope . ProjectOnly ) { return value ; } value = ( String ) resolver . resolvePropertyValue ( frameworkPrefix + name , scope ) ; return value ; } } ; }
@return Create a resolver from a set of retrievers, possibly null

@param resolver resolver
@param pluginType service type name
@param providerName provider name