Changeset 3926
- Timestamp:
- 11/13/08 13:20:12 (2 months ago)
- Files:
-
- trunk/pfixcore/projects/sample1/conf/spring-properties-override.xml (added)
- trunk/pfixcore/projects/sample1/conf/spring-properties.xml (added)
- trunk/pfixcore/projects/sample1/conf/spring.xml (modified) (1 diff)
- trunk/pfixcore/src/org/pustefixframework/container/spring/beans/PustefixWebApplicationContext.java (modified) (3 diffs)
- trunk/pfixcore/src/org/pustefixframework/container/spring/util (added)
- trunk/pfixcore/src/org/pustefixframework/container/spring/util/PustefixPropertiesPersister.java (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/pfixcore/projects/sample1/conf/spring.xml
r3916 r3926 3 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 4 xmlns:aop="http://www.springframework.org/schema/aop" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> 5 xmlns:context="http://www.springframework.org/schema/context" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 7 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> 8 9 <context:annotation-config/> 6 10 7 11 <bean id="testdata" class="de.schlund.pfixcore.example.TestData" scope="session"> 8 <property name="text" value="foo"/>9 12 <aop:scoped-proxy/> 10 <property name="data" ref="global_testdata"/> 13 <property name="text" value="${testdata.defaulttext}"/> 14 <property name="data" ref="${ref.testdata}"/> 11 15 </bean> 12 16 13 17 <bean id="global_testdata" class="de.schlund.pfixcore.example.TestData"> 14 <property name="text" value="bar"/> 15 <!-- <property name="foo" value="xxx"/>--> 18 <property name="text" value="TO_BE_OVERRIDDEN"/> 19 </bean> 20 21 <bean id="global_testdata_prod" class="de.schlund.pfixcore.example.TestData"> 22 <property name="text" value="baz"/> 16 23 </bean> 17 24 trunk/pfixcore/src/org/pustefixframework/container/spring/beans/PustefixWebApplicationContext.java
r3774 r3926 25 25 import javax.xml.parsers.ParserConfigurationException; 26 26 27 import org.pustefixframework.container.spring.util.PustefixPropertiesPersister; 27 28 import org.springframework.beans.BeansException; 29 import org.springframework.beans.factory.config.BeanDefinition; 30 import org.springframework.beans.factory.config.PropertyOverrideConfigurer; 31 import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; 32 import org.springframework.beans.factory.config.PropertyResourceConfigurer; 33 import org.springframework.beans.factory.support.BeanDefinitionBuilder; 34 import org.springframework.beans.factory.support.BeanDefinitionRegistry; 35 import org.springframework.beans.factory.support.DefaultBeanNameGenerator; 28 36 import org.springframework.beans.factory.support.DefaultListableBeanFactory; 29 37 import org.springframework.beans.factory.xml.ResourceEntityResolver; … … 73 81 pustefixReader.loadBeanDefinitions(configResource); 74 82 } else { 83 tryAddPropertyConfigurer(configLocation, beanFactory); 75 84 springReader.loadBeanDefinitions(configResource); 76 85 } … … 82 91 } 83 92 93 private void tryAddPropertyConfigurer(String configLocation, BeanDefinitionRegistry registry) { 94 int ind = configLocation.lastIndexOf("."); 95 if(ind > -1) { 96 String propConfigLocation = configLocation.substring(0,ind) + "-properties" + 97 configLocation.substring(ind); 98 Resource propConfigResource = getResource(propConfigLocation); 99 if(propConfigResource.exists()) { 100 addPropertyConfigurer(PropertyPlaceholderConfigurer.class, propConfigResource, registry); 101 } 102 propConfigLocation = configLocation.substring(0,ind) + "-properties-override" + 103 configLocation.substring(ind); 104 propConfigResource = getResource(propConfigLocation); 105 if(propConfigResource.exists()) { 106 addPropertyConfigurer(PropertyOverrideConfigurer.class, propConfigResource, registry); 107 } 108 } 109 } 110 111 private void addPropertyConfigurer(Class<? extends PropertyResourceConfigurer> clazz, Resource location, BeanDefinitionRegistry registry) { 112 BeanDefinitionBuilder beanBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz); 113 beanBuilder.setScope("singleton"); 114 beanBuilder.addPropertyValue("location", location); 115 beanBuilder.addPropertyValue("propertiesPersister", new PustefixPropertiesPersister()); 116 BeanDefinition definition = beanBuilder.getBeanDefinition(); 117 DefaultBeanNameGenerator beanNameGenerator = new DefaultBeanNameGenerator(); 118 String name = beanNameGenerator.generateBeanName(definition, registry); 119 registry.registerBeanDefinition(name, definition); 120 } 121 84 122 }
