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 <atsti...@gmail.com>
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

Reply via email to