Java Code Examples for org.springframework.core.env.ConfigurableEnvironment#getPropertySources()

The following examples show how to use org.springframework.core.env.ConfigurableEnvironment#getPropertySources() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: TestPropertySourceUtilsTests.java    From spring-analysis-note with MIT License 6 votes vote down vote up
@Test
public void addPropertiesFilesToEnvironmentWithSinglePropertyFromVirtualFile() {
	ConfigurableEnvironment environment = new MockEnvironment();

	MutablePropertySources propertySources = environment.getPropertySources();
	propertySources.remove(MockPropertySource.MOCK_PROPERTIES_PROPERTY_SOURCE_NAME);
	assertEquals(0, propertySources.size());

	String pair = "key = value";
	ByteArrayResource resource = new ByteArrayResource(pair.getBytes(), "from inlined property: " + pair);
	ResourceLoader resourceLoader = mock(ResourceLoader.class);
	given(resourceLoader.getResource(anyString())).willReturn(resource);

	addPropertiesFilesToEnvironment(environment, resourceLoader, FOO_LOCATIONS);
	assertEquals(1, propertySources.size());
	assertEquals("value", environment.getProperty("key"));
}
 
Example 2
Source File: SpringApplication.java    From spring-javaformat with Apache License 2.0 6 votes vote down vote up
/**
 * Add, remove or re-order any {@link PropertySource}s in this application's
 * environment.
 * @param environment this application's environment
 * @param args arguments passed to the {@code run} method
 * @see #configureEnvironment(ConfigurableEnvironment, String[])
 */
protected void configurePropertySources(ConfigurableEnvironment environment,
		String[] args) {
	MutablePropertySources sources = environment.getPropertySources();
	if (this.defaultProperties != null && !this.defaultProperties.isEmpty()) {
		sources.addLast(
				new MapPropertySource("defaultProperties", this.defaultProperties));
	}
	if (this.addCommandLineProperties && args.length > 0) {
		String name = CommandLinePropertySource.COMMAND_LINE_PROPERTY_SOURCE_NAME;
		if (sources.contains(name)) {
			PropertySource<?> source = sources.get(name);
			CompositePropertySource composite = new CompositePropertySource(name);
			composite.addPropertySource(new SimpleCommandLinePropertySource(
					"springApplicationCommandLineArgs", args));
			composite.addPropertySource(source);
			sources.replace(name, composite);
		}
		else {
			sources.addFirst(new SimpleCommandLinePropertySource(args));
		}
	}
}
 
Example 3
Source File: SofaArkEmbedAppInitializer.java    From sofa-lookout with Apache License 2.0 6 votes vote down vote up
@Override
public void initialize(ConfigurableApplicationContext ctx) {
    if (!APP_NAME_SET.add(appName)) {
        throw new IllegalStateException("same appName " + appName + " can only be used once!");
    }
    ConfigurableEnvironment cenv = ctx.getEnvironment();
    MutablePropertySources mps = cenv.getPropertySources();

    MapPropertySource lookoutallSubView = getLookoutAllSubView();
    if (lookoutallSubView != null) {
        mps.addFirst(lookoutallSubView);
    }

    String prefix = appName + ".";
    MapPropertySource env = new MapPropertySource("sofaark-environment", EnvUtils.getEnvSubView(prefix));
    mps.addFirst(env);

    MapPropertySource sd = new MapPropertySource("sofaark-systemProperties", EnvUtils.getSystemPropertySubView(prefix));
    mps.addFirst(sd);
}
 
Example 4
Source File: ConfigurationSpringInitializer.java    From servicecomb-java-chassis with Apache License 2.0 6 votes vote down vote up
/**
 * Traversal all {@link PropertySource} of {@link ConfigurableEnvironment}, and try to get all properties.
 */
private Map<String, Object> getAllProperties(Environment environment) {
  Map<String, Object> configFromSpringBoot = new HashMap<>();

  if (!(environment instanceof ConfigurableEnvironment)) {
    return configFromSpringBoot;
  }

  ConfigurableEnvironment configurableEnvironment = (ConfigurableEnvironment) environment;

  if (ignoreResolveFailure()) {
    configurableEnvironment.setIgnoreUnresolvableNestedPlaceholders(true);
  }

  for (PropertySource<?> propertySource : configurableEnvironment.getPropertySources()) {
    getProperties(configurableEnvironment, propertySource, configFromSpringBoot);
  }
  return configFromSpringBoot;
}
 
Example 5
Source File: GspAutoConfiguration.java    From grails-boot with Apache License 2.0 6 votes vote down vote up
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void updateFlatConfig() {
    super.updateFlatConfig();
    if(this.environment instanceof ConfigurableEnvironment) {
        ConfigurableEnvironment configurableEnv = ((ConfigurableEnvironment)environment);
        for(PropertySource<?> propertySource : configurableEnv.getPropertySources()) {
            if(propertySource instanceof EnumerablePropertySource) {
                EnumerablePropertySource<?> enumerablePropertySource = (EnumerablePropertySource)propertySource;
                for(String propertyName : enumerablePropertySource.getPropertyNames()) {
                    flatConfig.put(propertyName, enumerablePropertySource.getProperty(propertyName));
                }
            }
        }
    }
}
 
Example 6
Source File: StandardServletEnvironmentTests.java    From java-technology-stack with MIT License 6 votes vote down vote up
@Test
public void propertySourceOrder() throws Exception {
	SimpleNamingContextBuilder.emptyActivatedContextBuilder();

	ConfigurableEnvironment env = new StandardServletEnvironment();
	MutablePropertySources sources = env.getPropertySources();

	assertThat(sources.precedenceOf(PropertySource.named(
			StandardServletEnvironment.SERVLET_CONFIG_PROPERTY_SOURCE_NAME)), equalTo(0));
	assertThat(sources.precedenceOf(PropertySource.named(
			StandardServletEnvironment.SERVLET_CONTEXT_PROPERTY_SOURCE_NAME)), equalTo(1));
	assertThat(sources.precedenceOf(PropertySource.named(
			StandardServletEnvironment.JNDI_PROPERTY_SOURCE_NAME)), equalTo(2));
	assertThat(sources.precedenceOf(PropertySource.named(
			StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME)), equalTo(3));
	assertThat(sources.precedenceOf(PropertySource.named(
			StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME)), equalTo(4));
	assertThat(sources.size(), is(5));
}
 
Example 7
Source File: JasyptEncryptorConfigurationProperties.java    From jasypt-spring-boot with MIT License 6 votes vote down vote up
public static JasyptEncryptorConfigurationProperties bindConfigProps(ConfigurableEnvironment environment) {
    final BindHandler handler = new IgnoreErrorsBindHandler(BindHandler.DEFAULT);
    final MutablePropertySources propertySources = environment.getPropertySources();
    final Binder binder = new Binder(ConfigurationPropertySources.from(propertySources),
            new PropertySourcesPlaceholdersResolver(propertySources),
            ApplicationConversionService.getSharedInstance());
    final JasyptEncryptorConfigurationProperties config = new JasyptEncryptorConfigurationProperties();

    final ResolvableType type = ResolvableType.forClass(JasyptEncryptorConfigurationProperties.class);
    final Annotation annotation = AnnotationUtils.findAnnotation(JasyptEncryptorConfigurationProperties.class,
            ConfigurationProperties.class);
    final Annotation[] annotations = new Annotation[]{annotation};
    final Bindable<?> target = Bindable.of(type).withExistingValue(config).withAnnotations(annotations);

    binder.bind("jasypt.encryptor", target, handler);
    return config;
}
 
Example 8
Source File: MultiModuleConfigServicePropertySourceLocator.java    From spring-cloud-formula with Apache License 2.0 5 votes vote down vote up
private void addConfigLocationFiles(ConfigurableEnvironment environment, CompositePropertySource composite) {
    MutablePropertySources ps = environment.getPropertySources();
    for (org.springframework.core.env.PropertySource<?> propertySource : ps) {
        if (propertySource.getName().startsWith("applicationConfig: [file:")) {
            logger.info("Adding {} to Cloud Config Client PropertySource", propertySource.getName());
            composite.addPropertySource(propertySource);
        }
    }
}
 
Example 9
Source File: PropertiesInitializer.java    From proctor with Apache License 2.0 5 votes vote down vote up
@Override
public void initialize(final ConfigurableApplicationContext applicationContext) {
    final ConfigurableEnvironment springEnv = applicationContext.getEnvironment();

    final MutablePropertySources propSources = springEnv.getPropertySources();
    for (String location : getPropertyLocations(applicationContext)) {
        tryAddPropertySource(applicationContext, propSources, location);
    }
    addPropertySources(applicationContext, propSources);
}
 
Example 10
Source File: AbstractCoreTest.java    From herd with Apache License 2.0 5 votes vote down vote up
/**
 * Gets the mutable property sources object from the environment.
 *
 * @return the mutable property sources.
 * @throws Exception if the mutable property sources couldn't be obtained.
 */
protected MutablePropertySources getMutablePropertySources() throws Exception
{
    // Ensure we have a configurable environment so we can remove the property source.
    if (!(environment instanceof ConfigurableEnvironment))
    {
        throw new Exception("The environment is not an instance of ConfigurableEnvironment and needs to be for this test to work.");
    }

    // Return the property sources from the configurable environment.
    ConfigurableEnvironment configurableEnvironment = (ConfigurableEnvironment) environment;
    return configurableEnvironment.getPropertySources();
}
 
Example 11
Source File: PropertiesInvalidInputTest.java    From code-examples with MIT License 5 votes vote down vote up
@BeforeEach
void setup() {
    // create Spring Application dynamically
    application = new SpringApplication(ValidationApplication.class);

    // setting test properties for our Spring Application
    properties = new Properties();

    ConfigurableEnvironment environment = new StandardEnvironment();
    MutablePropertySources propertySources = environment.getPropertySources();
    propertySources.addFirst(new PropertiesPropertySource("application-test", properties));
    application.setEnvironment(environment);
}
 
Example 12
Source File: ApplicationEnvironmentPreparedEventListener.java    From seed with Apache License 2.0 5 votes vote down vote up
@Override
public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
    ConfigurableEnvironment envi = event.getEnvironment();
    MutablePropertySources mps = envi.getPropertySources();
    for (PropertySource<?> ps : mps) {
        System.out.println("SpringBoot对应Enviroment已经准备完毕,但此时上下文Context还没有创建,得到PropertySource-->" + ps);
    }
}
 
Example 13
Source File: PropertyMaskingContextInitializer.java    From spring-cloud-services-starters with Apache License 2.0 5 votes vote down vote up
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
	ConfigurableEnvironment environment = applicationContext.getEnvironment();
	MutablePropertySources propertySources = environment.getPropertySources();

	String[] defaultKeys = { "password", "secret", "key", "token", ".*credentials.*", "vcap_services" };
	Set<String> propertiesToSanitize = Stream.of(defaultKeys).collect(Collectors.toSet());

	PropertySource<?> bootstrapProperties = propertySources.get(BOOTSTRAP_PROPERTY_SOURCE_NAME);
	Set<PropertySource<?>> bootstrapNestedPropertySources = new HashSet<>();
	Set<PropertySource<?>> configServiceNestedPropertySources = new HashSet<>();

	if (bootstrapProperties != null && bootstrapProperties instanceof CompositePropertySource) {
		bootstrapNestedPropertySources.addAll(((CompositePropertySource) bootstrapProperties).getPropertySources());
	}
	for (PropertySource<?> nestedProperty : bootstrapNestedPropertySources) {
		if (nestedProperty.getName().equals(CONFIG_SERVICE_PROPERTY_SOURCE_NAME)) {
			configServiceNestedPropertySources
					.addAll(((CompositePropertySource) nestedProperty).getPropertySources());
		}
	}

	Stream<String> vaultKeyNameStream = configServiceNestedPropertySources.stream()
			.filter(ps -> ps instanceof EnumerablePropertySource)
			.filter(ps -> ps.getName().startsWith(VAULT_PROPERTY_PATTERN)
					|| ps.getName().startsWith(CREDHUB_PROPERTY_PATTERN))
			.map(ps -> ((EnumerablePropertySource) ps).getPropertyNames()).flatMap(Arrays::<String>stream);

	propertiesToSanitize.addAll(vaultKeyNameStream.collect(Collectors.toSet()));

	PropertiesPropertySource envKeysToSanitize = new PropertiesPropertySource(SANITIZE_ENV_KEY,
			mergeClientProperties(propertySources, propertiesToSanitize));

	environment.getPropertySources().addFirst(envKeysToSanitize);
	applicationContext.setEnvironment(environment);

}
 
Example 14
Source File: TaskLifecycleListenerTests.java    From spring-cloud-task with Apache License 2.0 5 votes vote down vote up
@Test
public void testParentExecutionId() {
	ConfigurableEnvironment environment = new StandardEnvironment();
	MutablePropertySources propertySources = environment.getPropertySources();
	Map<String, Object> myMap = new HashMap<>();
	myMap.put("spring.cloud.task.parentExecutionId", 789);
	propertySources
			.addFirst(new MapPropertySource("EnvrionmentTestPropsource", myMap));
	this.context.setEnvironment(environment);
	this.context.refresh();
	this.taskExplorer = this.context.getBean(TaskExplorer.class);

	verifyTaskExecution(0, false, null, null, null, 789L);
}
 
Example 15
Source File: WireMockApplicationListener.java    From spring-cloud-contract with Apache License 2.0 5 votes vote down vote up
private void registerPort(ConfigurableEnvironment environment) {
	Integer httpPortProperty = environment.getProperty("wiremock.server.port",
			Integer.class);
	// If the httpPortProperty is not found it means the AutoConfigureWireMock hasn't
	// been initialised.
	if (httpPortProperty == null) {
		return;
	}
	if (isHttpDynamic(httpPortProperty)) {
		registerPropertySourceForDynamicEntries(environment, "wiremock.server.port",
				10000, 12500, "wiremock.server.port-dynamic");
		if (log.isDebugEnabled()) {
			log.debug("Registered property source for dynamic http port");
		}
	}
	int httpsPortProperty = environment.getProperty("wiremock.server.https-port",
			Integer.class, 0);
	if (isHttpsDynamic(httpsPortProperty)) {
		registerPropertySourceForDynamicEntries(environment,
				"wiremock.server.https-port", 12500, 15000,
				"wiremock.server.https-port-dynamic");
		if (log.isDebugEnabled()) {
			log.debug("Registered property source for dynamic https port");
		}
	}
	else if (httpsPortProperty == -1) {
		MutablePropertySources propertySources = environment.getPropertySources();
		addPropertySource(propertySources);
		Map<String, Object> source = ((MapPropertySource) propertySources
				.get("wiremock")).getSource();
		source.put("wiremock.server.https-port-dynamic", true);
		if (log.isDebugEnabled()) {
			log.debug(
					"Registered property source for dynamic https with https port property set to -1");
		}
	}

}
 
Example 16
Source File: DisableEndpointPostProcessor.java    From edison-microservice with Apache License 2.0 5 votes vote down vote up
private void disableEndpoint(final ConfigurableListableBeanFactory beanFactory) {
    final ConfigurableEnvironment env = beanFactory.getBean(ConfigurableEnvironment.class);
    final MutablePropertySources propertySources = env.getPropertySources();
    propertySources.addFirst(
            new MapPropertySource(endpoint + "PropertySource", singletonMap("endpoints." + endpoint + ".enabled", false))
    );
}
 
Example 17
Source File: EnvironmentUtils.java    From dubbo-spring-boot-project with Apache License 2.0 5 votes vote down vote up
private static Map<String, PropertySource<?>> doGetPropertySources(ConfigurableEnvironment environment) {
    Map<String, PropertySource<?>> map = new LinkedHashMap<String, PropertySource<?>>();
    MutablePropertySources sources = environment.getPropertySources();
    for (PropertySource<?> source : sources) {
        extract("", map, source);
    }
    return map;
}
 
Example 18
Source File: CfDataSourceEnvironmentPostProcessor.java    From java-cfenv with Apache License 2.0 4 votes vote down vote up
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment,
		SpringApplication application) {
	increaseInvocationCount();
	if (CloudPlatform.CLOUD_FOUNDRY.isActive(environment)) {
		CfJdbcEnv cfJdbcEnv = new CfJdbcEnv();
		CfJdbcService cfJdbcService = null;
		try {
			cfJdbcService = cfJdbcEnv.findJdbcService();
			cfJdbcService = this.isEnabled(cfJdbcService, environment) ? cfJdbcService : null;
		} catch (Exception e) {

			List<CfJdbcService> jdbcServices = cfJdbcEnv.findJdbcServices().stream()
					.filter(service -> this.isEnabled(service, environment))
					.collect(Collectors.toList());

			if (jdbcServices.size() > 1) {
				if (invocationCount == 1) {
					DEFERRED_LOG.debug(
						"Skipping execution of CfDataSourceEnvironmentPostProcessor. "
							+ e.getMessage());
				}
				return;
			}

			cfJdbcService = jdbcServices.size() == 1 ? jdbcServices.get(0) : null;
		}
		if (cfJdbcService != null) {
			ConnectorLibraryDetector.assertNoConnectorLibrary();
			Map<String, Object> properties = new LinkedHashMap<>();
			properties.put("spring.datasource.url", cfJdbcService.getJdbcUrl());
			properties.put("spring.datasource.username", cfJdbcService.getUsername());
			properties.put("spring.datasource.password", cfJdbcService.getPassword());
			Object driverClassName = cfJdbcService.getDriverClassName();
			if (driverClassName != null) {
				properties.put("spring.datasource.driver-class-name", driverClassName);
			}

			MutablePropertySources propertySources = environment.getPropertySources();
			if (propertySources.contains(
					CommandLinePropertySource.COMMAND_LINE_PROPERTY_SOURCE_NAME)) {
				propertySources.addAfter(
						CommandLinePropertySource.COMMAND_LINE_PROPERTY_SOURCE_NAME,
						new MapPropertySource("cfenvjdbc", properties));
			}
			else {
				propertySources
						.addFirst(new MapPropertySource("cfenvjdbc", properties));
			}
			if (invocationCount == 1) {
				DEFERRED_LOG.info(
						"Setting spring.datasource properties from bound service ["
								+ cfJdbcService.getName() + "]");
			}
		}
	}
	else {
		DEFERRED_LOG.debug(
				"Not setting spring.datasource.url, not in Cloud Foundry Environment");
	}
}
 
Example 19
Source File: NacosPropertySourcePostProcessor.java    From nacos-spring-project with Apache License 2.0 4 votes vote down vote up
public static void addListenerIfAutoRefreshed(
		final NacosPropertySource nacosPropertySource, final Properties properties,
		final ConfigurableEnvironment environment) {

	if (!nacosPropertySource.isAutoRefreshed()) { // Disable Auto-Refreshed
		return;
	}

	final String dataId = nacosPropertySource.getDataId();
	final String groupId = nacosPropertySource.getGroupId();
	final String type = nacosPropertySource.getType();
	final NacosServiceFactory nacosServiceFactory = getNacosServiceFactoryBean(
			beanFactory);

	try {

		ConfigService configService = nacosServiceFactory
				.createConfigService(properties);

		Listener listener = new AbstractListener() {

			@Override
			public void receiveConfigInfo(String config) {
				String name = nacosPropertySource.getName();
				NacosPropertySource newNacosPropertySource = new NacosPropertySource(
						dataId, groupId, name, config, type);
				newNacosPropertySource.copy(nacosPropertySource);
				MutablePropertySources propertySources = environment
						.getPropertySources();
				// replace NacosPropertySource
				propertySources.replace(name, newNacosPropertySource);
			}
		};

		if (configService instanceof EventPublishingConfigService) {
			((EventPublishingConfigService) configService).addListener(dataId,
					groupId, type, listener);
		}
		else {
			configService.addListener(dataId, groupId, listener);
		}

	}
	catch (NacosException e) {
		throw new RuntimeException(
				"ConfigService can't add Listener with properties : " + properties,
				e);
	}
}
 
Example 20
Source File: ClusterAwareConfiguration.java    From spring-boot-data-geode with Apache License 2.0 2 votes vote down vote up
List<ConnectionEndpoint> getConfiguredConnectionEndpoints(Environment environment) {

			List<ConnectionEndpoint> connectionEndpoints = new ArrayList<>();

			if (environment instanceof ConfigurableEnvironment) {

				ConfigurableEnvironment configurableEnvironment = (ConfigurableEnvironment) environment;

				MutablePropertySources propertySources = configurableEnvironment.getPropertySources();

				if (propertySources != null) {

					Pattern pattern = Pattern.compile(MATCHING_PROPERTY_PATTERN);

					for (PropertySource<?> propertySource : propertySources) {
						if (propertySource instanceof EnumerablePropertySource) {

							EnumerablePropertySource<?> enumerablePropertySource =
								(EnumerablePropertySource<?>) propertySource;

							String[] propertyNames = enumerablePropertySource.getPropertyNames();

							Arrays.stream(ArrayUtils.nullSafeArray(propertyNames, String.class))
								.filter(propertyName-> pattern.matcher(propertyName).find())
								.forEach(propertyName -> {

									String propertyValue = environment.getProperty(propertyName);

									if (StringUtils.hasText(propertyValue)) {

										int defaultPort = propertyName.contains("servers")
											? DEFAULT_CACHE_SERVER_PORT
											: DEFAULT_LOCATOR_PORT;

										String[] propertyValueArray = trim(propertyValue.split(","));

										ConnectionEndpointList list =
											ConnectionEndpointList.parse(defaultPort, propertyValueArray);

										connectionEndpoints.addAll(list);
									}
								});
						}
					}
				}
			}

			return connectionEndpoints;
		}