Search in sources :

Example 1 with PropertySourceFactory

use of org.springframework.core.io.support.PropertySourceFactory in project spring-framework by spring-projects.

the class ConfigurationClassParser method processPropertySource.

/**
	 * Process the given <code>@PropertySource</code> annotation metadata.
	 * @param propertySource metadata for the <code>@PropertySource</code> annotation found
	 * @throws IOException if loading a property source failed
	 */
private void processPropertySource(AnnotationAttributes propertySource) throws IOException {
    String name = propertySource.getString("name");
    if (!StringUtils.hasLength(name)) {
        name = null;
    }
    String encoding = propertySource.getString("encoding");
    if (!StringUtils.hasLength(encoding)) {
        encoding = null;
    }
    String[] locations = propertySource.getStringArray("value");
    Assert.isTrue(locations.length > 0, "At least one @PropertySource(value) location is required");
    boolean ignoreResourceNotFound = propertySource.getBoolean("ignoreResourceNotFound");
    Class<? extends PropertySourceFactory> factoryClass = propertySource.getClass("factory");
    PropertySourceFactory factory = (factoryClass == PropertySourceFactory.class ? DEFAULT_PROPERTY_SOURCE_FACTORY : BeanUtils.instantiateClass(factoryClass));
    for (String location : locations) {
        try {
            String resolvedLocation = this.environment.resolveRequiredPlaceholders(location);
            Resource resource = this.resourceLoader.getResource(resolvedLocation);
            addPropertySource(factory.createPropertySource(name, new EncodedResource(resource, encoding)));
        } catch (IllegalArgumentException | FileNotFoundException ex) {
            // Placeholders not resolvable or resource not found when trying to open it
            if (ignoreResourceNotFound) {
                if (logger.isInfoEnabled()) {
                    logger.info("Properties location [" + location + "] not resolvable: " + ex.getMessage());
                }
            } else {
                throw ex;
            }
        }
    }
}
Also used : PropertySourceFactory(org.springframework.core.io.support.PropertySourceFactory) DefaultPropertySourceFactory(org.springframework.core.io.support.DefaultPropertySourceFactory) Resource(org.springframework.core.io.Resource) EncodedResource(org.springframework.core.io.support.EncodedResource) FileNotFoundException(java.io.FileNotFoundException) EncodedResource(org.springframework.core.io.support.EncodedResource)

Aggregations

FileNotFoundException (java.io.FileNotFoundException)1 Resource (org.springframework.core.io.Resource)1 DefaultPropertySourceFactory (org.springframework.core.io.support.DefaultPropertySourceFactory)1 EncodedResource (org.springframework.core.io.support.EncodedResource)1 PropertySourceFactory (org.springframework.core.io.support.PropertySourceFactory)1