package com.urbanmania.spring.beans.factory.config.annotations; import static junit.framework.Assert.*; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import java.util.Properties; import org.junit.Before; import org.junit.Test; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; public class PropertyFileLoaderTest { List<Resource> resources; PropertyFileLoader loader; @Before public void setUp() { loader = new PropertyFileLoader(); resources = new ArrayList<Resource>(); resources.add(new ClassPathResource("test1.properties", getClass().getClassLoader())); resources.add(new ClassPathResource("test2.properties", getClass().getClassLoader())); loader.setResources(resources); } @Test public void testLoadPropertyFiles() throws Exception { Properties properties = loader.loadProperties(); assertTrue(properties.containsKey("test1")); assertEquals("test1", properties.get("test1")); assertTrue(properties.containsKey("test2")); assertEquals("override", properties.get("test2")); } @Test public void testCheckResourcesForUpdates() throws Exception { File test3 = new File(System.getProperty("java.io.tmpdir")+File.separator+"test3.properties"); FileOutputStream output = new FileOutputStream(test3); Properties properties = new Properties(); properties.setProperty("test3", "test3"); properties.store(output, null); resources.add(new FileSystemResource(test3)); loader.loadProperties(); MockPropertyListener listener = new MockPropertyListener(); loader.registerPropertyListener(listener); Thread.sleep(1000); properties.setProperty("test3", "updated"); properties.store(output, null); loader.checkResourcesForUpdates(); assertNotNull("property changed event not sent", listener.getEvent()); assertEquals("property not found", "test3", listener.getEvent().getKey()); assertEquals("property not correctly updated", "updated", listener.getEvent().getValue()); } }