Added Spring tests and ensured a minimal implementation.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/6fab0f93 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/6fab0f93 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/6fab0f93 Branch: refs/heads/master Commit: 6fab0f93223056c5de48b07759e230ccbaae7002 Parents: 043a3e6 Author: anatole <anat...@apache.org> Authored: Thu Nov 12 01:24:52 2015 +0100 Committer: anatole <anat...@apache.org> Committed: Thu Nov 12 01:24:52 2015 +0100 ---------------------------------------------------------------------- .../SpringConfigInjectionPostProcessor.java | 3 ++ .../integration/spring/TamayaEnvironment.java | 18 ++++++++ .../integration/spring/TamayaSpringConfig.java | 10 +++- .../spring/TamayaSpringPropertySource.java | 1 + .../spring/ConfiguredSpringBean.java | 10 ++++ .../integration/spring/SpringConfigTest2.java | 48 ++++++++++++++++++++ .../META-INF/javaconfiguration.properties | 3 +- .../test/resources/spring-config-scanOnly.xml | 35 ++++++++++++++ .../spring/src/test/resources/spring-config.xml | 2 - 9 files changed, 126 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/6fab0f93/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/SpringConfigInjectionPostProcessor.java ---------------------------------------------------------------------- diff --git a/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/SpringConfigInjectionPostProcessor.java b/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/SpringConfigInjectionPostProcessor.java index 1193b8d..91f0047 100644 --- a/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/SpringConfigInjectionPostProcessor.java +++ b/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/SpringConfigInjectionPostProcessor.java @@ -21,10 +21,13 @@ package org.apache.tamaya.integration.spring; import org.apache.tamaya.inject.ConfigurationInjection; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; /** * PostProcessor that performs injection of configured values using Tamaya {@link ConfigurationInjection}. */ +@Component public class SpringConfigInjectionPostProcessor implements BeanPostProcessor{ @Override http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/6fab0f93/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaEnvironment.java ---------------------------------------------------------------------- diff --git a/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaEnvironment.java b/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaEnvironment.java new file mode 100644 index 0000000..6f3214f --- /dev/null +++ b/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaEnvironment.java @@ -0,0 +1,18 @@ +package org.apache.tamaya.integration.spring; + +import org.springframework.core.env.MapPropertySource; +import org.springframework.core.env.MutablePropertySources; +import org.springframework.core.env.StandardEnvironment; +import org.springframework.core.env.SystemEnvironmentPropertySource; +import org.springframework.stereotype.Component; + +/** + * Created by atsticks on 12.11.15. + */ +public class TamayaEnvironment extends StandardEnvironment{ + + protected void customizePropertySources(MutablePropertySources propertySources) { + super.customizePropertySources(propertySources); + propertySources.addLast(new TamayaSpringPropertySource()); + } +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/6fab0f93/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringConfig.java ---------------------------------------------------------------------- diff --git a/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringConfig.java b/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringConfig.java index e3adf3f..15e616e 100644 --- a/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringConfig.java +++ b/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringConfig.java @@ -24,6 +24,9 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.env.MutablePropertySources; +import org.springframework.core.env.PropertySources; +import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @@ -31,6 +34,7 @@ import javax.annotation.PostConstruct; * Spring Configuration Bean adding {@link TamayaSpringPropertySource} to the current * {@link org.springframework.core.env.Environment}. */ +@Component @Configuration public class TamayaSpringConfig { @@ -44,6 +48,10 @@ public class TamayaSpringConfig { @Bean public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() { - return new PropertySourcesPlaceholderConfigurer(); + PropertySourcesPlaceholderConfigurer cfgBean = new PropertySourcesPlaceholderConfigurer(); + MutablePropertySources sources = new MutablePropertySources(); + sources.addFirst(new TamayaSpringPropertySource()); + cfgBean.setPropertySources(sources); + return cfgBean; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/6fab0f93/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringPropertySource.java ---------------------------------------------------------------------- diff --git a/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringPropertySource.java b/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringPropertySource.java index 2e8ac1c..cb85a2a 100644 --- a/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringPropertySource.java +++ b/modules/integration/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringPropertySource.java @@ -21,6 +21,7 @@ package org.apache.tamaya.integration.spring; import org.apache.tamaya.ConfigurationProvider; import org.springframework.core.env.PropertySource; +import org.springframework.stereotype.Component; /** * Spring PropertySource bridging to Tamaya {@link org.apache.tamaya.Configuration}. http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/6fab0f93/modules/integration/spring/src/test/java/org/apache/tamaya/integration/spring/ConfiguredSpringBean.java ---------------------------------------------------------------------- diff --git a/modules/integration/spring/src/test/java/org/apache/tamaya/integration/spring/ConfiguredSpringBean.java b/modules/integration/spring/src/test/java/org/apache/tamaya/integration/spring/ConfiguredSpringBean.java index 95b10ef..b926233 100644 --- a/modules/integration/spring/src/test/java/org/apache/tamaya/integration/spring/ConfiguredSpringBean.java +++ b/modules/integration/spring/src/test/java/org/apache/tamaya/integration/spring/ConfiguredSpringBean.java @@ -30,6 +30,8 @@ import org.springframework.core.env.Environment; @ConfigDefaultSections public class ConfiguredSpringBean { + private String message; + @Autowired private Environment env; @@ -51,4 +53,12 @@ public class ConfiguredSpringBean { public Environment getEnv(){ return env; } + + public void setMessage(String message){ + this.message = message; + } + + public String getMessage() { + return message; + } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/6fab0f93/modules/integration/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest2.java ---------------------------------------------------------------------- diff --git a/modules/integration/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest2.java b/modules/integration/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest2.java new file mode 100644 index 0000000..d59ae0d --- /dev/null +++ b/modules/integration/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest2.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.tamaya.integration.spring; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +/** + * Test using standard Spring setup. + */ +public class SpringConfigTest2 { + + @Test + public void assertDefaultSetup(){ + ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-config-scanOnly.xml"); + ConfiguredSpringBean configuredBean = context.getBean(ConfiguredSpringBean.class); + assertNotNull(configuredBean.getJavaVersion()); + assertEquals(System.getProperty("java.version"), configuredBean.getJavaVersion()); + org.springframework.core.env.Environment env; + assertNotNull(configuredBean.getMessage()); + assertEquals("value2", configuredBean.getMessage()); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/6fab0f93/modules/integration/spring/src/test/resources/META-INF/javaconfiguration.properties ---------------------------------------------------------------------- diff --git a/modules/integration/spring/src/test/resources/META-INF/javaconfiguration.properties b/modules/integration/spring/src/test/resources/META-INF/javaconfiguration.properties index 3a7cba7..3366128 100644 --- a/modules/integration/spring/src/test/resources/META-INF/javaconfiguration.properties +++ b/modules/integration/spring/src/test/resources/META-INF/javaconfiguration.properties @@ -16,4 +16,5 @@ # specific language governing permissions and limitations # under the License. # -myConfiguredValue=value11 \ No newline at end of file +myConfiguredValue=value11 +propertyValue=value2 \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/6fab0f93/modules/integration/spring/src/test/resources/spring-config-scanOnly.xml ---------------------------------------------------------------------- diff --git a/modules/integration/spring/src/test/resources/spring-config-scanOnly.xml b/modules/integration/spring/src/test/resources/spring-config-scanOnly.xml new file mode 100644 index 0000000..6e98d80 --- /dev/null +++ b/modules/integration/spring/src/test/resources/spring-config-scanOnly.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy current the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:context="http://www.springframework.org/schema/context" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> + <context:annotation-config /> + <context:component-scan base-package="org.apache.tamaya.integration.spring"/> + + <!-- Our dependencies --> + <!--<bean id="tamayaInjectionProcessor" name="tamayaInjectionProcessor" class="org.apache.tamaya.integration.spring.SpringConfigInjectionPostProcessor"/>--> + <!--<bean id="tamayaConfigProvider" name="tamayaConfigProvider" class="org.apache.tamaya.integration.spring.TamayaSpringConfig"/>--> + <bean id="configuredBean" name="configuredBean" class="org.apache.tamaya.integration.spring.ConfiguredSpringBean"> + <property name="message" value="${propertyValue}"/> + </bean> + +</beans> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/6fab0f93/modules/integration/spring/src/test/resources/spring-config.xml ---------------------------------------------------------------------- diff --git a/modules/integration/spring/src/test/resources/spring-config.xml b/modules/integration/spring/src/test/resources/spring-config.xml index 1978ab9..fc3f9d8 100644 --- a/modules/integration/spring/src/test/resources/spring-config.xml +++ b/modules/integration/spring/src/test/resources/spring-config.xml @@ -22,8 +22,6 @@ under the License. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> - <context:annotation-config /> - <context:component-scan base-package="org.apache.tamaya.integration.spring"/> <!-- Our dependencies --> <bean id="tamayaInjectionProcessor" name="tamayaInjectionProcessor" class="org.apache.tamaya.integration.spring.SpringConfigInjectionPostProcessor"/>