Author: rmannibucau Date: Sun Sep 14 17:31:38 2014 New Revision: 1624878 URL: http://svn.apache.org/r1624878 Log: TOMEE-1347 default properties provider for resources
Added: tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/resource/DefaultPropertiesProviderTest.java - copied, changed from r1624820, tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/resource/PropertiesProviderTest.java Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1624878&r1=1624877&r2=1624878&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java (original) +++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java Sun Sep 14 17:31:38 2014 @@ -21,6 +21,7 @@ import org.apache.openejb.Extensions; import org.apache.openejb.OpenEJBException; import org.apache.openejb.Vendor; import org.apache.openejb.api.Proxy; +import org.apache.openejb.api.resource.PropertiesResourceProvider; import org.apache.openejb.assembler.classic.AppInfo; import org.apache.openejb.assembler.classic.Assembler; import org.apache.openejb.assembler.classic.BmpEntityContainerInfo; @@ -1182,15 +1183,20 @@ public class ConfigurationFactory implem props.putAll(overrides); // force user properties last - if (service.getPropertiesProvider() != null) { + String propertiesProvider = service.getPropertiesProvider(); + if (propertiesProvider == null) { + propertiesProvider = SystemInstance.get().getProperty(PropertiesResourceProvider.class.getName()); + } + if (propertiesProvider != null) { // don't trim them, user wants to handle it himself, let him do it - final ObjectRecipe recipe = new ObjectRecipe(service.getPropertiesProvider()); + final ObjectRecipe recipe = new ObjectRecipe(propertiesProvider); recipe.allow(Option.CASE_INSENSITIVE_PROPERTIES); recipe.allow(Option.PRIVATE_PROPERTIES); recipe.allow(Option.FIELD_INJECTION); recipe.allow(Option.NAMED_PARAMETERS); recipe.allow(Option.IGNORE_MISSING_PROPERTIES); recipe.setFactoryMethod("provides"); + recipe.setProperty("serviceId", service.getId()); recipe.setProperties(props); recipe.setProperty("properties", props); // let user get all config final Properties p = Properties.class.cast(recipe.create()); Copied: tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/resource/DefaultPropertiesProviderTest.java (from r1624820, tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/resource/PropertiesProviderTest.java) URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/resource/DefaultPropertiesProviderTest.java?p2=tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/resource/DefaultPropertiesProviderTest.java&p1=tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/resource/PropertiesProviderTest.java&r1=1624820&r2=1624878&rev=1624878&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/resource/PropertiesProviderTest.java (original) +++ tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/resource/DefaultPropertiesProviderTest.java Sun Sep 14 17:31:38 2014 @@ -16,8 +16,8 @@ */ package org.apache.openejb.resource; -import org.apache.openejb.jee.EnterpriseBean; -import org.apache.openejb.jee.SingletonBean; +import org.apache.openejb.api.resource.PropertiesResourceProvider; +import org.apache.openejb.jee.WebApp; import org.apache.openejb.junit.ApplicationComposer; import org.apache.openejb.testing.Configuration; import org.apache.openejb.testing.Module; @@ -25,79 +25,81 @@ import org.junit.Test; import org.junit.runner.RunWith; import javax.annotation.Resource; -import javax.ejb.EJB; import java.util.Properties; import static org.junit.Assert.assertEquals; @RunWith(ApplicationComposer.class) -public class PropertiesProviderTest { - @EJB - private CustomPropBean bean; +public class DefaultPropertiesProviderTest { + @Resource(name = "r1") + private MyResource r1; + + @Resource(name = "_r2") + private MyResource r2; + + @Resource(name = "_r3") + private MyResource r3; @Test - public void validAliases() { - assertEquals("r2", bean.getR2().value); - assertEquals("ok", bean.getR2().noConflict); - assertEquals("r1", bean.getR1().value); - assertEquals("ok", bean.getR1().noConflict); + public void valid() { + assertEquals("r1", r1.value); + assertEquals("2", r2.value); + assertEquals("3", r3.value); } @Module - public EnterpriseBean bean() { - return new SingletonBean(CustomPropBean.class).localBean(); + public WebApp bean() { + return new WebApp(); } @Configuration public Properties config() { final Properties p = new Properties(); + p.put(PropertiesResourceProvider.class.getName(), GlobalPropertiesProvider.class.getName()); p.put("r1", "new://Resource?" + - "class-name=org.apache.openejb.resource.PropertiesProviderTest$MyResource&" + - "properties-provider=org.apache.openejb.resource.PropertiesProviderTest$PropertiesProvider"); - p.put("r1.value", "will be overriden"); - p.put("r1.noConflict", "ok"); - - p.put("r2", "new://Resource?" + - "class-name=org.apache.openejb.resource.PropertiesProviderTest$MyResource"); - p.put("r2.value", "r2"); - p.put("r2.noConflict", "ok"); - - return p; - } - - public static class CustomPropBean { - @Resource(name = "r1") - private MyResource r1; + "class-name=org.apache.openejb.resource.DefaultPropertiesProviderTest$MyResource"); + p.put("r1.value", "_____________________"); - @Resource(name = "r2") - private MyResource r2; - - public MyResource getR1() { - return r1; - } + p.put("_r2", "new://Resource?" + + "class-name=org.apache.openejb.resource.DefaultPropertiesProviderTest$MyResource" + + "&properties-provider=org.apache.openejb.resource.DefaultPropertiesProviderTest$SpecificPropertiesProvider"); + p.put("_r2.value", "____________________"); + + p.put("_r3", "new://Resource?" + + "class-name=org.apache.openejb.resource.DefaultPropertiesProviderTest$MyResource"); + p.put("_r3.value", "3"); - public MyResource getR2() { - return r2; - } + return p; } public static class MyResource { private String value; - private String noConflict; } - public static class PropertiesProvider { + public static class GlobalPropertiesProvider { private Properties p; + private String serviceId; public void setProperties(final Properties p) { this.p = p; } public Properties provides() { + if (serviceId.startsWith("_r")) { + return new Properties(); + } return new Properties() {{ putAll(p); - setProperty("value", "r1"); // override + setProperty("value", serviceId); + }}; + } + } + + public static class SpecificPropertiesProvider { + public Properties provides() { + return new Properties() {{ + setProperty("value", "2"); // override }}; } }