1 package org.objectweb.celtix.bus.configuration.spring; 2 3 import java.math.BigInteger ; 4 import java.net.MalformedURLException ; 5 import java.net.URL ; 6 import java.util.List ; 7 import java.util.Properties ; 8 9 import junit.framework.TestCase; 10 11 import org.objectweb.celtix.bus.configuration.LeafConfigurationBuilder; 12 import org.objectweb.celtix.bus.configuration.TopConfigurationBuilder; 13 import org.objectweb.celtix.configuration.Configuration; 14 import org.objectweb.celtix.configuration.ConfigurationException; 15 import org.objectweb.celtix.configuration.ConfigurationProvider; 16 import org.objectweb.celtix.configuration.types.StringListType; 17 18 public class ConfigurationProviderImplTest extends TestCase { 19 20 private String originalConfigFile; 21 22 public void setUp() { 23 originalConfigFile = System.getProperty(ConfigurationProviderImpl.CONFIG_FILE_PROPERTY_NAME); 24 } 25 26 public void tearDown() { 27 if (null == originalConfigFile) { 28 Properties properties = System.getProperties(); 29 properties.remove(ConfigurationProviderImpl.CONFIG_FILE_PROPERTY_NAME); 30 System.setProperties(properties); 31 } else { 32 System.setProperty(ConfigurationProviderImpl.CONFIG_FILE_PROPERTY_NAME, originalConfigFile); 33 } 34 ConfigurationProviderImpl.getBeanFactories().clear(); 35 } 36 37 public void testInvalidBeanDefinitionsResourceURL() { 38 System.setProperty(ConfigurationProviderImpl.CONFIG_FILE_PROPERTY_NAME, "resources\top1.xml"); 39 try { 40 new TopConfigurationBuilder().build("top"); 41 } catch (ConfigurationException ex) { 42 assertEquals("MALFORMED_URL_PROPERTY", ex.getCode()); 43 } 44 } 45 46 public void testNoBeanDefinitionsFile() { 47 Configuration top = new TopConfigurationBuilder().build("top"); 48 List <ConfigurationProvider> providers = top.getProviders(); 49 assertEquals(1, providers.size()); 50 assertTrue(providers.get(0) instanceof ConfigurationProviderImpl); 51 ConfigurationProviderImpl cpi = (ConfigurationProviderImpl)providers.get(0); 52 assertNull(cpi.getBean()); 53 } 54 55 public void testInvalidBeanDefinitionFile() { 56 URL url = ConfigurationProviderImplTest.class.getResource("resources/top-invalid.xml"); 57 System.setProperty(ConfigurationProviderImpl.CONFIG_FILE_PROPERTY_NAME, url.toExternalForm()); 58 new TopConfigurationBuilder().build("top"); 59 assertNull(ConfigurationProviderImpl.getBeanFactories().get(url)); 60 } 61 62 public void testBeanClassNotFound() { 63 64 URL url = ConfigurationProviderImplTest.class.getResource("resources/top-wrong-class.xml"); 65 System.setProperty(ConfigurationProviderImpl.CONFIG_FILE_PROPERTY_NAME, url.toExternalForm()); 66 67 70 new TopConfigurationBuilder().build("top"); 71 assertNull(ConfigurationProviderImpl.getBeanFactories().get(url)); 72 } 73 74 public void testNoSuchBean() { 75 76 URL url = ConfigurationProviderImplTest.class.getResource("resources/top1.xml"); 77 System.setProperty(ConfigurationProviderImpl.CONFIG_FILE_PROPERTY_NAME, url.toExternalForm()); 78 79 Configuration top = new TopConfigurationBuilder().build("top2"); 80 81 List <ConfigurationProvider> providers = top.getProviders(); 82 assertEquals(1, providers.size()); 83 84 ConfigurationProviderImpl cpi = (ConfigurationProviderImpl)providers.get(0); 85 assertNull(cpi.getBean()); 86 87 88 } 89 90 public void testDefaultBeanCreation() throws MalformedURLException { 91 URL url = ConfigurationProviderImplTest.class.getResource("resources/top1.xml"); 92 System.setProperty(ConfigurationProviderImpl.CONFIG_FILE_PROPERTY_NAME, url.toExternalForm()); 93 94 Configuration top = new TopConfigurationBuilder().build("top1"); 95 List <ConfigurationProvider> providers = top.getProviders(); 96 assertEquals(1, providers.size()); 97 assertTrue(providers.get(0) instanceof ConfigurationProviderImpl); 98 } 99 100 public void testBeanCreationUsingValueAsText() throws MalformedURLException { 101 URL url = ConfigurationProviderImplTest.class.getResource("resources/top2.xml"); 102 System.setProperty(ConfigurationProviderImpl.CONFIG_FILE_PROPERTY_NAME, url.toExternalForm()); 103 Configuration top = new TopConfigurationBuilder().build("top2"); 104 105 List <ConfigurationProvider> providers = top.getProviders(); 106 assertEquals(1, providers.size()); 107 assertTrue(providers.get(0) instanceof ConfigurationProviderImpl); 108 109 ConfigurationProviderImpl cpi = (ConfigurationProviderImpl)providers.get(0); 110 Object o; 111 112 o = cpi.getObject("booleanItem"); 113 assertTrue(o instanceof Boolean ); 114 assertTrue(!((Boolean )o).booleanValue()); 115 116 o = cpi.getObject("integerItem"); 117 assertTrue(o instanceof BigInteger ); 118 assertEquals(1997, ((BigInteger )o).intValue()); 119 120 o = cpi.getObject("longItem"); 121 assertNull(o); 122 123 o = cpi.getObject("doubleItem"); 124 assertTrue(o instanceof Double ); 125 assertTrue(Math.abs(((Double )o).doubleValue() - 9876.54321) < 0.5E-5); 126 127 o = cpi.getObject("stringItem"); 128 assertTrue(o instanceof String ); 129 assertEquals("not the default", (String )o); 130 131 try { 132 cpi.getObject("noItem"); 133 } catch (ConfigurationException ex) { 134 assertEquals("BEAN_INCOVATION_EXC", ex.getCode()); 135 } 136 } 137 138 public void testBeanCreationUsingValueAsElements() throws MalformedURLException { 139 URL url = ConfigurationProviderImplTest.class.getResource("resources/top2.xml"); 140 System.setProperty(ConfigurationProviderImpl.CONFIG_FILE_PROPERTY_NAME, url.toExternalForm()); 141 Configuration top = new TopConfigurationBuilder().build("top22"); 142 143 List <ConfigurationProvider> providers = top.getProviders(); 144 assertEquals(1, providers.size()); 145 assertTrue(providers.get(0) instanceof ConfigurationProviderImpl); 146 147 ConfigurationProviderImpl cpi = (ConfigurationProviderImpl)providers.get(0); 148 Object o; 149 150 o = cpi.getObject("booleanItem"); 151 assertTrue(o instanceof Boolean ); 152 assertTrue(!((Boolean )o).booleanValue()); 153 154 o = cpi.getObject("integerItem"); 155 assertTrue(o instanceof BigInteger ); 156 assertEquals(1997, ((BigInteger )o).intValue()); 157 158 o = cpi.getObject("longItem"); 159 assertTrue(o instanceof Long ); 160 assertEquals(99, ((Long )o).longValue()); 161 162 o = cpi.getObject("doubleItem"); 163 assertTrue(o instanceof Double ); 164 assertTrue(Math.abs(((Double )o).doubleValue() - 9876.54321) < 0.5E-5); 165 166 o = cpi.getObject("stringItem"); 167 assertTrue(o instanceof String ); 168 assertEquals("not the default", (String )o); 169 170 o = cpi.getObject("stringListItem"); 171 assertTrue(o instanceof StringListType); 172 173 List <String > l = ((StringListType)o).getItem(); 174 assertNotNull(l); 175 assertEquals(2, l.size()); 176 assertEquals("something", l.get(0)); 177 assertEquals("else", l.get(1)); 178 179 } 180 181 public void testBeanCreationSimpleHierarchy() { 182 URL url = ConfigurationProviderImplTest.class.getResource("resources/top2.xml"); 183 System.setProperty(ConfigurationProviderImpl.CONFIG_FILE_PROPERTY_NAME, url.toExternalForm()); 184 185 Configuration top = new TopConfigurationBuilder().build("top2"); 186 Configuration leaf = new LeafConfigurationBuilder().build(top, "leaf"); 187 188 List <ConfigurationProvider> providers = leaf.getProviders(); 189 assertEquals(1, providers.size()); 190 191 192 Object o = providers.get(0).getObject("stringLeafItem"); 193 assertTrue(o instanceof String ); 194 assertEquals("Don't fear the reaper", (String )o); 195 196 o = providers.get(0).getObject("longLeafItemNoDefault"); 197 assertEquals(99, ((Long )o).longValue()); 198 } 199 200 } 201 | Popular Tags |