This is an automated email from the ASF dual-hosted git repository.
anatole pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/incubator-tamaya-extensions.git
The following commit(s) were added to refs/heads/master by this push:
new 27ba526 TAMAYA-384 Improved Spring integration.
27ba526 is described below
commit 27ba526027a110acc9c3e75c4bdef4dfe54203c3
Author: Anatole Tresch <[email protected]>
AuthorDate: Thu Mar 14 23:52:36 2019 +0100
TAMAYA-384 Improved Spring integration.
---
modules/spring/pom.xml | 7 ++
.../integration/spring/EnableTamayaConfig.java | 48 ++++++++++
.../spring/SpringConfigInjectionPostProcessor.java | 17 +++-
.../spring/TamayaDefaultConfigSupplier.java | 33 +++++++
.../integration/spring/TamayaSpringConfig.java | 61 -------------
.../spring/TamayaSpringConfigurator.java | 100 +++++++++++++++++++++
.../spring/TamayaSpringPropertySource.java | 15 +++-
.../spring/src/main/resources/spring-config.xml | 2 +-
.../integration/spring/ConfiguredSpringBean.java | 15 ++++
.../tamaya/integration/spring/MyApplication.java | 2 +-
...igTest.java => SpringAnnotationConfigTest.java} | 10 ++-
...onfigTest.java => SpringConfigNoInjection.java} | 19 ++--
.../integration/spring/SpringConfigTest2.java | 42 ---------
.../spring/SpringTestPropertySource.java} | 18 ++--
...ingConfigTest.java => SpringXmlConfigTest.java} | 7 +-
...figTest.java => TamayaConfigExtendingTest.java} | 21 ++---
...nfigTest.java => TamayaConfigOverrideTest.java} | 21 ++---
.../META-INF/javaconfiguration.properties | 3 +-
.../src/test/resources/spring-config-scanOnly.xml | 35 --------
.../spring/src/test/resources/spring-config.xml | 4 +-
modules/spring/src/test/resources/test.properties | 1 +
21 files changed, 290 insertions(+), 191 deletions(-)
diff --git a/modules/spring/pom.xml b/modules/spring/pom.xml
index 0810dbd..3a7aecf 100644
--- a/modules/spring/pom.xml
+++ b/modules/spring/pom.xml
@@ -116,6 +116,13 @@ under the License.
<version>${spring.boot.version}</version>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-test</artifactId>
+ <version>${spring.boot.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git
a/modules/spring/src/main/java/org/apache/tamaya/integration/spring/EnableTamayaConfig.java
b/modules/spring/src/main/java/org/apache/tamaya/integration/spring/EnableTamayaConfig.java
new file mode 100644
index 0000000..f380574
--- /dev/null
+++
b/modules/spring/src/main/java/org/apache/tamaya/integration/spring/EnableTamayaConfig.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.springframework.context.annotation.Import;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Use this annotation to enable Tamaya as a configuration backend for Spring.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+@Import(TamayaSpringConfigurator.class)
+public @interface EnableTamayaConfig {
+
+ /**
+ * If set to true, Tamaya will only extend the current Spring
configuration, instead of overriding it (default).
+ * @return true to extend only the default Spring configuration.
+ */
+ boolean extendOnly() default false;
+
+ /**
+ * If set to true, Tamaya configuration injection will be disabled. Spring
injection mechanisms are never
+ * touched by this feature. Default is false.
+ * @return true to switch off Tamaya injection in your Spring application.
+ */
+ boolean disableTamayaInjection() default false;
+}
diff --git
a/modules/spring/src/main/java/org/apache/tamaya/integration/spring/SpringConfigInjectionPostProcessor.java
b/modules/spring/src/main/java/org/apache/tamaya/integration/spring/SpringConfigInjectionPostProcessor.java
index 279351e..19fffe0 100644
---
a/modules/spring/src/main/java/org/apache/tamaya/integration/spring/SpringConfigInjectionPostProcessor.java
+++
b/modules/spring/src/main/java/org/apache/tamaya/integration/spring/SpringConfigInjectionPostProcessor.java
@@ -18,21 +18,32 @@
*/
package org.apache.tamaya.integration.spring;
+import org.apache.tamaya.Configuration;
import org.apache.tamaya.inject.ConfigurationInjector;
import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.ObjectFactory;
import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.stereotype.Component;
/**
* PostProcessor that performs injection of configured values using Tamaya
{@link ConfigurationInjector}.
*/
-@Component
public class SpringConfigInjectionPostProcessor implements BeanPostProcessor{
+ private ObjectFactory<Configuration> configSupplier;
+
+ public SpringConfigInjectionPostProcessor(ObjectFactory<Configuration>
configSupplier){
+ try{
+ Configuration config = configSupplier.getObject();
+ this.configSupplier = configSupplier;
+ }catch(Exception e){
+ this.configSupplier = Configuration::current;
+ }
+ }
+
@Override
public Object postProcessBeforeInitialization(Object o, String s) throws
BeansException {
- ConfigurationInjector.getInstance().configure(o);
+ ConfigurationInjector.getInstance().configure(o,
this.configSupplier.getObject());
return o;
}
diff --git
a/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaDefaultConfigSupplier.java
b/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaDefaultConfigSupplier.java
new file mode 100644
index 0000000..7b01ac8
--- /dev/null
+++
b/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaDefaultConfigSupplier.java
@@ -0,0 +1,33 @@
+///*
+// * 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.apache.tamaya.Configuration;
+//import org.apache.tamaya.functions.Supplier;
+//
+///**
+// * Default Supplier delegating to {@link Configuration#current()}.
+// */
+//public class TamayaDefaultConfigSupplier implements Supplier<Configuration> {
+//
+// @Override
+// public Configuration get() {
+// return Configuration.current();
+// }
+//}
diff --git
a/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringConfig.java
b/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringConfig.java
deleted file mode 100644
index 7c9966b..0000000
---
a/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringConfig.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.springframework.beans.factory.annotation.Autowired;
-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.stereotype.Component;
-
-import javax.annotation.PostConstruct;
-
-/**
- * Spring Configuration Bean adding {@link TamayaSpringPropertySource} to the
current
- * {@link org.springframework.core.env.Environment}.
- */
-@Component
-@Configuration
-public class TamayaSpringConfig {
-
- @Autowired
- private ConfigurableEnvironment env;
-
- @PostConstruct
- public void init() {
- env.getPropertySources().addFirst(new TamayaSpringPropertySource());
- }
-
- @Bean
- public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer()
{
- PropertySourcesPlaceholderConfigurer cfgBean = new
PropertySourcesPlaceholderConfigurer();
- MutablePropertySources sources = new MutablePropertySources();
- sources.addFirst(new TamayaSpringPropertySource());
- cfgBean.setPropertySources(sources);
- return cfgBean;
- }
-
- @Bean
- public static SpringConfigInjectionPostProcessor
tamayaConfigPostProcessor(){
- return new SpringConfigInjectionPostProcessor();
- }
- }
\ No newline at end of file
diff --git
a/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringConfigurator.java
b/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringConfigurator.java
new file mode 100644
index 0000000..71d4c66
--- /dev/null
+++
b/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringConfigurator.java
@@ -0,0 +1,100 @@
+/*
+ * 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.springframework.beans.factory.ObjectFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ImportSelector;
+import
org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
+import org.springframework.core.annotation.AnnotationAttributes;
+import org.springframework.core.env.ConfigurableEnvironment;
+import org.springframework.core.type.AnnotationMetadata;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Logger;
+
+/**
+ * Spring Configurator Bean adding {@link TamayaSpringPropertySource} to the
current
+ * {@link org.springframework.core.env.Environment} and optionally activate
Tamaya injection
+ * of beans.
+ */
+public class TamayaSpringConfigurator implements ImportSelector {
+
+ private Logger LOG =
Logger.getLogger(TamayaSpringConfigurator.class.getName());
+
+ @Override
+ public String[] selectImports(AnnotationMetadata importingClassMetadata) {
+ AnnotationAttributes attributes =
+ AnnotationAttributes.fromMap(
+
importingClassMetadata.getAnnotationAttributes(EnableTamayaConfig.class.getName(),
false));
+ boolean extendOnly = attributes.getBoolean("extendOnly");
+ boolean disableTamayaInjection =
attributes.getBoolean("disableTamayaInjection");
+ List<String> configClasses = new ArrayList<>();
+ if (extendOnly) {
+ configClasses.add(ExtendingOnlyConfig.class.getName());
+ }else {
+ configClasses.add(DefaultConfig.class.getName());
+ }
+ if(!disableTamayaInjection){
+ configClasses.add(TamayaInjectionConfig.class.getName());
+ }
+ return configClasses.toArray(new String[configClasses.size()]);
+ }
+
+ public static class ExtendingOnlyConfig {
+
+ @Bean
+ public PropertySourcesPlaceholderConfigurer
placeHolderConfigurer(ConfigurableEnvironment env,
+
ObjectFactory<org.apache.tamaya.Configuration> configSupplier) {
+ TamayaSpringPropertySource tamayaSpringPropertySource = new
TamayaSpringPropertySource(configSupplier);
+ env.getPropertySources().addLast(tamayaSpringPropertySource);
+
+ PropertySourcesPlaceholderConfigurer cfgBean = new
PropertySourcesPlaceholderConfigurer();
+ cfgBean.setEnvironment(env);
+ return cfgBean;
+ }
+
+ }
+
+ public static class DefaultConfig {
+
+ @Bean
+ public PropertySourcesPlaceholderConfigurer
placeHolderConfigurer(ConfigurableEnvironment env,
+
ObjectFactory<org.apache.tamaya.Configuration> configSupplier) {
+
+ TamayaSpringPropertySource tamayaSpringPropertySource = new
TamayaSpringPropertySource(configSupplier);
+ env.getPropertySources().addFirst(tamayaSpringPropertySource);
+ PropertySourcesPlaceholderConfigurer cfgBean = new
PropertySourcesPlaceholderConfigurer();
+ cfgBean.setEnvironment(env);
+ return cfgBean;
+ }
+
+ }
+
+ public static class TamayaInjectionConfig {
+
+ @Bean
+ public SpringConfigInjectionPostProcessor
tamayaConfigPostProcessor(ObjectFactory<org.apache.tamaya.Configuration>
configSupplier) {
+ return new SpringConfigInjectionPostProcessor(configSupplier);
+ }
+ }
+
+
+ }
\ No newline at end of file
diff --git
a/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringPropertySource.java
b/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringPropertySource.java
index 03b61c2..fb010a4 100644
---
a/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringPropertySource.java
+++
b/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaSpringPropertySource.java
@@ -18,8 +18,8 @@
*/
package org.apache.tamaya.integration.spring;
-
import org.apache.tamaya.Configuration;
+import org.springframework.beans.factory.ObjectFactory;
import org.springframework.core.env.PropertySource;
/**
@@ -27,13 +27,22 @@ import org.springframework.core.env.PropertySource;
*/
public class TamayaSpringPropertySource extends PropertySource<String> {
- public TamayaSpringPropertySource() {
+ private ObjectFactory<Configuration> configSupplier;
+
+ public TamayaSpringPropertySource(ObjectFactory<Configuration>
configSupplier) {
super("ApacheTamayaConfig");
+ try{
+ Configuration config = configSupplier.getObject();
+ this.configSupplier = configSupplier;
+ }catch(Exception e){
+ this.configSupplier = Configuration::current;
+ }
+
}
@Override
public String getProperty(String name) {
- return Configuration.current().get(name);
+ return configSupplier.getObject().getOrDefault(name, null);
}
}
\ No newline at end of file
diff --git a/modules/spring/src/main/resources/spring-config.xml
b/modules/spring/src/main/resources/spring-config.xml
index c1d6eda..00f02f2 100644
--- a/modules/spring/src/main/resources/spring-config.xml
+++ b/modules/spring/src/main/resources/spring-config.xml
@@ -27,6 +27,6 @@ under the License.
<!-- 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="tamayaConfigProvider" name="tamayaConfigProvider"
class="org.apache.tamaya.integration.spring.TamayaSpringConfigurator"/>
</beans>
\ No newline at end of file
diff --git
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/ConfiguredSpringBean.java
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/ConfiguredSpringBean.java
index 6e8f830..9abab48 100644
---
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/ConfiguredSpringBean.java
+++
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/ConfiguredSpringBean.java
@@ -22,6 +22,7 @@ import org.apache.tamaya.inject.api.Config;
import org.apache.tamaya.inject.api.ConfigSection;
import org.apache.tamaya.inject.spi.AbsoluteKeyResolver;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
/**
@@ -35,6 +36,12 @@ public class ConfiguredSpringBean {
@Autowired
private Environment env;
+ @Value("${myConfiguredValue}")
+ private String springInjected;
+
+ @Value("${spring.application:foo}")
+ private String springApplication;
+
@Config(key="java.version")
private String javaVersion;
@@ -45,6 +52,10 @@ public class ConfiguredSpringBean {
return javaVersion;
}
+ public String getSpringApplication(){
+ return springApplication;
+ }
+
public int getTestNumber(){
return testNumber;
}
@@ -53,6 +64,10 @@ public class ConfiguredSpringBean {
return env;
}
+ public String getSpringInjected() {
+ return springInjected;
+ }
+
public void setMessage(String message){
this.message = message;
}
diff --git
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/MyApplication.java
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/MyApplication.java
index cc78815..d44ffa2 100644
---
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/MyApplication.java
+++
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/MyApplication.java
@@ -24,7 +24,7 @@ import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
@SpringBootApplication
-@ContextConfiguration(classes=TamayaSpringConfig.class)
+@EnableTamayaConfig
public class MyApplication {
public static void main (String[] args) {
diff --git
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringAnnotationConfigTest.java
similarity index 86%
copy from
modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
copy to
modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringAnnotationConfigTest.java
index 98ac7c9..573b93c 100644
---
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
+++
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringAnnotationConfigTest.java
@@ -30,8 +30,9 @@ import static org.assertj.core.api.Assertions.assertThat;
* Created by Anatole on 25.09.2015.
*/
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration("classpath:spring-config.xml")
-public class SpringConfigTest {
+@ContextConfiguration(classes = {ConfiguredSpringBean.class,
SpringAnnotationConfigTest.class})
+@EnableTamayaConfig
+public class SpringAnnotationConfigTest {
@Autowired
private ConfiguredSpringBean configuredBean;
@@ -53,6 +54,11 @@ public class SpringConfigTest {
}
@Test
+ public void assert_SpringInjection(){
+ assertThat(configuredBean.getSpringInjected()).isEqualTo("value11");
+ }
+
+ @Test
public void assert_Number_From_Environment(){
assertThat("value11").isEqualTo(configuredBean.getEnv().getProperty("myConfiguredValue"));
}
diff --git
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigNoInjection.java
similarity index 73%
copy from
modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
copy to
modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigNoInjection.java
index 98ac7c9..36fc5e3 100644
---
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
+++
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigNoInjection.java
@@ -30,8 +30,9 @@ import static org.assertj.core.api.Assertions.assertThat;
* Created by Anatole on 25.09.2015.
*/
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration("classpath:spring-config.xml")
-public class SpringConfigTest {
+@ContextConfiguration(classes = {ConfiguredSpringBean.class,
SpringConfigNoInjection.class})
+@EnableTamayaConfig(disableTamayaInjection = true)
+public class SpringConfigNoInjection {
@Autowired
private ConfiguredSpringBean configuredBean;
@@ -43,13 +44,19 @@ public class SpringConfigTest {
@Test
public void assert_JavaVersion_Injected(){
- assertThat(configuredBean.getJavaVersion()).isNotNull();
-
assertThat(System.getProperty("java.version")).isEqualTo(configuredBean.getJavaVersion());
+ assertThat(configuredBean.getJavaVersion()).isNull();
+ assertThat(configuredBean.getJavaVersion()).isNull();
+ assertThat(configuredBean.getTestNumber()).isEqualTo(0);
}
@Test
- public void assert_Number_Injected(){
- assertThat(configuredBean.getTestNumber()).isEqualTo(23);
+ public void assert_Environment_Injected() {
+ assertThat(configuredBean.getEnv()).isNotNull();
+ }
+
+ @Test
+ public void assert_SpringInjection(){
+ assertThat(configuredBean.getSpringInjected()).isEqualTo("value11");
}
@Test
diff --git
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest2.java
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest2.java
deleted file mode 100644
index 8538596..0000000
---
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest2.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.springframework.context.ApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * 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);
- assertThat(configuredBean.getJavaVersion()).isNotNull();
-
assertThat(configuredBean.getJavaVersion()).isEqualTo(System.getProperty("java.version"));
- assertThat(configuredBean.getMessage()).isNotNull();
- assertThat(configuredBean.getMessage()).isEqualTo("value2");
- }
-
-}
diff --git
a/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaEnvironment.java
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringTestPropertySource.java
similarity index 66%
rename from
modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaEnvironment.java
rename to
modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringTestPropertySource.java
index 7f1000e..9c67a27 100644
---
a/modules/spring/src/main/java/org/apache/tamaya/integration/spring/TamayaEnvironment.java
+++
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringTestPropertySource.java
@@ -18,16 +18,16 @@
*/
package org.apache.tamaya.integration.spring;
-import org.springframework.core.env.MutablePropertySources;
-import org.springframework.core.env.StandardEnvironment;
+import org.springframework.core.env.PropertySource;
-/**
- * Tamaya specific environment for Spring.
- */
-public class TamayaEnvironment extends StandardEnvironment{
+public class SpringTestPropertySource extends PropertySource<String> {
+
+ public SpringTestPropertySource(){
+ super("Test-ProipertySource");
+ }
- protected void customizePropertySources(MutablePropertySources
propertySources) {
- super.customizePropertySources(propertySources);
- propertySources.addLast(new TamayaSpringPropertySource());
+ @Override
+ public String getProperty(String s) {
+ return null;
}
}
diff --git
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringXmlConfigTest.java
similarity index 92%
copy from
modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
copy to
modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringXmlConfigTest.java
index 98ac7c9..912ba0d 100644
---
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
+++
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringXmlConfigTest.java
@@ -31,7 +31,7 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring-config.xml")
-public class SpringConfigTest {
+public class SpringXmlConfigTest {
@Autowired
private ConfiguredSpringBean configuredBean;
@@ -53,6 +53,11 @@ public class SpringConfigTest {
}
@Test
+ public void assert_SpringInjection(){
+ assertThat(configuredBean.getSpringInjected()).isEqualTo("value11");
+ }
+
+ @Test
public void assert_Number_From_Environment(){
assertThat("value11").isEqualTo(configuredBean.getEnv().getProperty("myConfiguredValue"));
}
diff --git
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/TamayaConfigExtendingTest.java
similarity index 70%
copy from
modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
copy to
modules/spring/src/test/java/org/apache/tamaya/integration/spring/TamayaConfigExtendingTest.java
index 98ac7c9..b319233 100644
---
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
+++
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/TamayaConfigExtendingTest.java
@@ -22,6 +22,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import static org.assertj.core.api.Assertions.assertThat;
@@ -30,8 +31,10 @@ import static org.assertj.core.api.Assertions.assertThat;
* Created by Anatole on 25.09.2015.
*/
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration("classpath:spring-config.xml")
-public class SpringConfigTest {
+@ContextConfiguration(name="tamaya-last", classes =
{ConfiguredSpringBean.class, TamayaConfigExtendingTest.class})
+@TestPropertySource(locations = "classpath:test.properties")
+@EnableTamayaConfig(extendOnly = true)
+public class TamayaConfigExtendingTest {
@Autowired
private ConfiguredSpringBean configuredBean;
@@ -42,19 +45,13 @@ public class SpringConfigTest {
}
@Test
- public void assert_JavaVersion_Injected(){
- assertThat(configuredBean.getJavaVersion()).isNotNull();
-
assertThat(System.getProperty("java.version")).isEqualTo(configuredBean.getJavaVersion());
+ public void assert_springApplication_Injected(){
+
assertThat(configuredBean.getSpringApplication()).isEqualTo("test-app-name");
}
@Test
- public void assert_Number_Injected(){
- assertThat(configuredBean.getTestNumber()).isEqualTo(23);
- }
-
- @Test
- public void assert_Number_From_Environment(){
-
assertThat("value11").isEqualTo(configuredBean.getEnv().getProperty("myConfiguredValue"));
+ public void assert_springApplication_Env(){
+
assertThat(configuredBean.getEnv().getProperty("spring.application")).isEqualTo("test-app-name");
}
}
diff --git
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/TamayaConfigOverrideTest.java
similarity index 71%
rename from
modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
rename to
modules/spring/src/test/java/org/apache/tamaya/integration/spring/TamayaConfigOverrideTest.java
index 98ac7c9..76f3db4 100644
---
a/modules/spring/src/test/java/org/apache/tamaya/integration/spring/SpringConfigTest.java
+++
b/modules/spring/src/test/java/org/apache/tamaya/integration/spring/TamayaConfigOverrideTest.java
@@ -22,6 +22,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import static org.assertj.core.api.Assertions.assertThat;
@@ -30,8 +31,10 @@ import static org.assertj.core.api.Assertions.assertThat;
* Created by Anatole on 25.09.2015.
*/
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration("classpath:spring-config.xml")
-public class SpringConfigTest {
+@ContextConfiguration(name="tamaya-last", classes =
{ConfiguredSpringBean.class, TamayaConfigExtendingTest.class})
+@EnableTamayaConfig(extendOnly = false)
+@TestPropertySource(locations = "classpath:test.properties")
+public class TamayaConfigOverrideTest {
@Autowired
private ConfiguredSpringBean configuredBean;
@@ -42,19 +45,13 @@ public class SpringConfigTest {
}
@Test
- public void assert_JavaVersion_Injected(){
- assertThat(configuredBean.getJavaVersion()).isNotNull();
-
assertThat(System.getProperty("java.version")).isEqualTo(configuredBean.getJavaVersion());
+ public void assert_springApplication_Injected(){
+ assertThat(configuredBean.getSpringApplication()).isEqualTo("yeah");
}
@Test
- public void assert_Number_Injected(){
- assertThat(configuredBean.getTestNumber()).isEqualTo(23);
- }
-
- @Test
- public void assert_Number_From_Environment(){
-
assertThat("value11").isEqualTo(configuredBean.getEnv().getProperty("myConfiguredValue"));
+ public void assert_springApplication_Env(){
+
assertThat(configuredBean.getEnv().getProperty("spring.application")).isEqualTo("yeah");
}
}
diff --git
a/modules/spring/src/test/resources/META-INF/javaconfiguration.properties
b/modules/spring/src/test/resources/META-INF/javaconfiguration.properties
index 3366128..20a01da 100644
--- a/modules/spring/src/test/resources/META-INF/javaconfiguration.properties
+++ b/modules/spring/src/test/resources/META-INF/javaconfiguration.properties
@@ -17,4 +17,5 @@
# under the License.
#
myConfiguredValue=value11
-propertyValue=value2
\ No newline at end of file
+propertyValue=value2
+spring.application=yeah
\ No newline at end of file
diff --git a/modules/spring/src/test/resources/spring-config-scanOnly.xml
b/modules/spring/src/test/resources/spring-config-scanOnly.xml
deleted file mode 100644
index 6e98d80..0000000
--- a/modules/spring/src/test/resources/spring-config-scanOnly.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?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
diff --git a/modules/spring/src/test/resources/spring-config.xml
b/modules/spring/src/test/resources/spring-config.xml
index fc3f9d8..3982b4d 100644
--- a/modules/spring/src/test/resources/spring-config.xml
+++ b/modules/spring/src/test/resources/spring-config.xml
@@ -24,8 +24,8 @@ under the License.
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">
<!-- 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="tamayaConfigInjector" name="tamayaConfigInjetor"
class="org.apache.tamaya.integration.spring.SpringConfigInjectionPostProcessor"/>
+ <bean id="tamayaConfigProvider" name="tamayaConfigProvider"
class="org.apache.tamaya.integration.spring.TamayaSpringConfigurator.DefaultConfig"/>
<bean id="configuredBean" name="configuredBean"
class="org.apache.tamaya.integration.spring.ConfiguredSpringBean"/>
</beans>
\ No newline at end of file
diff --git a/modules/spring/src/test/resources/test.properties
b/modules/spring/src/test/resources/test.properties
new file mode 100644
index 0000000..f0e9950
--- /dev/null
+++ b/modules/spring/src/test/resources/test.properties
@@ -0,0 +1 @@
+spring.application=test-app-name
\ No newline at end of file