mschachter 01/06/22 12:04:17 Modified: resources build.xml resources/src/java/org/apache/commons/resources ConfigurationReader.java FileResourceFactory.java LocalStrings.properties MessageResourcesFactory.java Resource.java Added: resources/src/test/org/apache/commons/resources/tests AllTests.java ConfigurationReaderTest.java Log: - modified build.xml to add beanutils, digester and crimson.jar to test.classpath for running tests - modified ConfigurationReader.java so it works - modified FileResourceFactory so it works - added more message strings - added setName(String) to resource interface - added basic unit test for ConfigurationReader Revision Changes Path 1.3 +26 -9 jakarta-commons-sandbox/resources/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/resources/build.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- build.xml 2001/06/22 01:30:47 1.2 +++ build.xml 2001/06/22 19:04:04 1.3 @@ -3,7 +3,7 @@ <!-- "Resource Facilities" component of the Jakarta Commons Subproject - $Id: build.xml,v 1.2 2001/06/22 01:30:47 mschachter Exp $ + $Id: build.xml,v 1.3 2001/06/22 19:04:04 mschachter Exp $ --> @@ -17,16 +17,22 @@ <!-- ========== External Dependencies ===================================== --> + <!-- The home directory for jaxp 1.1 --> + <property name="jaxp.home" value="/usr/local/jaxp1.1"/> <!-- The home directory for the Commons collection classes distribution --> <property name="commons-collections.home" value="../collections/dist"/> <!-- The home directory for the Digester package --> <property name="commons-digester.home" value="../digester/dist" /> + + <!-- The home directory for the BeanUtils package --> + <property name="commons-beanutils.home" value="../beanutils/dist" /> <!-- The directory containing your binary distribution of JUnit, version 3.2 or later --> - <property name="junit.home" value="/usr/local/junit3.5"/> + <property name="junit.home" value="/usr/local/junit3.5" /> + <!-- ========== Derived Values ============================================ --> @@ -34,13 +40,20 @@ <!-- The pathname of the collections classes JAR file --> <property name="commons-collections.jar" value="${commons-collections.home}/commons-collections.jar"/> - - <!-- The pathname of the "junit.jar" JAR file --> - <property name="junit.jar" value="${junit.home}/junit.jar"/> + <!-- The pathname of the beanutils JAR file --> + <property name="commons-beanutils.jar" value="${commons-beanutils.home}/commons-beanutils.jar"/> + <!-- The pathname of the "digester.jar" JAR file --> <property name="commons-digester.jar" value="${commons-digester.home}/commons-digester.jar" /> - + + <!-- The pathname of the "junit.jar" JAR file --> + <property name="junit.jar" value="${junit.home}/junit.jar"/> + + <!-- The pathname of the jaxp parser's JAR file --> + <property name="jaxp.parser.jar" value="${jaxp.home}/crimson.jar" /> + + <!-- ========== Component Declarations ==================================== --> @@ -102,6 +115,11 @@ <pathelement location="${build.home}/tests"/> <pathelement location="${commons-collections.jar}"/> <pathelement location="${junit.jar}"/> + <pathelement location="${jaxp.parser.jar}"/> + <pathelement location="${build.home}/classes"/> + <pathelement location="${commons-collections.jar}"/> + <pathelement location="${commons-digester.jar}"/> + <pathelement location="${commons-beanutils.jar}"/> </path> <!-- Should all tests fail if one does? --> @@ -222,13 +240,12 @@ <target name="test.resources"> <echo message="Running Resources tests ..."/> -<!-- + <java classname="${test.runner}" fork="yes" failonerror="${test.failonerror}"> - <arg value="org.apache.commons.resources.ResourcesTestCase"/> + <arg value="org.apache.commons.resources.tests.AllTests"/> <classpath refid="test.classpath"/> </java> ---> </target> 1.3 +14 -1 jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/ConfigurationReader.java Index: ConfigurationReader.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/ConfigurationReader.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ConfigurationReader.java 2001/06/22 01:30:48 1.2 +++ ConfigurationReader.java 2001/06/22 19:04:07 1.3 @@ -4,6 +4,7 @@ import java.io.IOException; import java.util.Map; +import java.util.HashMap; import java.util.Collection; import org.xml.sax.Attributes; @@ -51,6 +52,10 @@ * Read the URL "config" and populate the internal resource Map with data */ public void read(InputStream inputStream) throws ResourceException, IOException { + //wipe out the old resources + resources = null; + resources = new HashMap(); + //parse the config file Digester digester = new Digester(); digester.addRule("resources-config/resources/resource", new AddResourceRule(digester, this)); @@ -86,11 +91,12 @@ //create instance of resource from factory instance String factoryClass = attributes.getValue("", "factory"); String config = attributes.getValue("", "config"); + String name = attributes.getValue("", "name"); Resource resource = null; try { ResourceFactory factory; Class cFactory = Class.forName(factoryClass); - if (cFactory.isAssignableFrom(ResourceFactory.class)) { + if ((ResourceFactory.class).isAssignableFrom(cFactory)) { factory = (ResourceFactory) cFactory.newInstance(); resource = factory.createResource(config); } @@ -119,6 +125,13 @@ "resources.config.instantiation", factoryClass), ie); } + if (resource == null) { + throw new ResourceException( + ConfigurationReader.messageResources.getMessage( + "resources.config.createresource", + factoryClass, config)); + } + resource.setName(name); //push to top of digester stack for property population digester.push(resource); } 1.2 +1 -1 jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/FileResourceFactory.java Index: FileResourceFactory.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/FileResourceFactory.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- FileResourceFactory.java 2001/06/22 01:30:48 1.1 +++ FileResourceFactory.java 2001/06/22 19:04:08 1.2 @@ -9,7 +9,7 @@ public Resource createResource(String config) { - return null; + return new FileResource(); } } 1.3 +4 -3 jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/LocalStrings.properties Index: LocalStrings.properties =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/LocalStrings.properties,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- LocalStrings.properties 2001/06/22 01:30:48 1.2 +++ LocalStrings.properties 2001/06/22 19:04:09 1.3 @@ -1,8 +1,9 @@ resources.file.ioexception=[FileResource] problem opening file {0} resources.file.filenotfound=[FileResource] file {0} not found resources.manager.ioexception=[ResourceManager] IOException -resources.config.invalidfactory=[ConfigurationReader] factory class is not of type org.apache.commons.resources.ResourceFactory, but type {1} +resources.config.invalidfactory=[ConfigurationReader] factory class is not of type org.apache.commons.resources.ResourceFactory, but type {0} resources.config.classnotfound=[ConfigurationReader] class {0} not found -resources.config.instantiation=InstantiationException for class {0} -resources.config.sax=[ConfigurationReader]SAXException while parsing configuration +resources.config.instantiation=[ConfigurationReader] InstantiationException for class {0} +resources.config.sax=[ConfigurationReader] SAXException while parsing configuration resources.config.illegalaccess=[ConfigurationReader] IllegalAccessException +resources.config.createresource=[ConfigurationReader] no resource created for factory {0} with config String {1} 1.3 +5 -5 jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/MessageResourcesFactory.java Index: MessageResourcesFactory.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/MessageResourcesFactory.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- MessageResourcesFactory.java 2001/06/22 01:30:49 1.2 +++ MessageResourcesFactory.java 2001/06/22 19:04:10 1.3 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/MessageResourcesFactory.java,v 1.2 2001/06/22 01:30:49 mschachter Exp $ - * $Revision: 1.2 $ - * $Date: 2001/06/22 01:30:49 $ + * $Header: /home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/MessageResourcesFactory.java,v 1.3 2001/06/22 19:04:10 mschachter Exp $ + * $Revision: 1.3 $ + * $Date: 2001/06/22 19:04:10 $ * * ==================================================================== * @@ -81,7 +81,7 @@ * </ul> * * @author Craig R. McClanahan - * @version $Revision: 1.2 $ $Date: 2001/06/22 01:30:49 $ + * @version $Revision: 1.3 $ $Date: 2001/06/22 19:04:10 $ */ public abstract class MessageResourcesFactory @@ -141,7 +141,7 @@ * <code>MessageResourcesFactory</code> instances. */ protected static String factoryClass = - "org.apache.common.resources.PropertyMessageResourcesFactory"; + "org.apache.commons.resources.PropertyMessageResourcesFactory"; public static String getFactoryClass() { return (MessageResourcesFactory.factoryClass); 1.3 +6 -0 jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/Resource.java Index: Resource.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/Resource.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Resource.java 2001/06/20 21:16:18 1.2 +++ Resource.java 2001/06/22 19:04:11 1.3 @@ -47,6 +47,12 @@ public String getName(); /** + * Set the name of this resource + * @param name A logical String representation of the name of this resource + */ + public void setName(String name); + + /** * Retrieves content based on the locale and time zone specified. Note * that this method has the potential to cause memory problems for content * that is relatively large. 1.1 jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/tests/AllTests.java Index: AllTests.java =================================================================== package org.apache.commons.resources.tests; import junit.framework.Test; import junit.framework.TestSuite; public class AllTests { public static void main(String args[]) { junit.textui.TestRunner.run (suite()); } public static Test suite() { TestSuite suite = new TestSuite("Resource Test Package"); suite.addTest(ConfigurationReaderTest.suite()); return suite; } } 1.1 jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/tests/ConfigurationReaderTest.java Index: ConfigurationReaderTest.java =================================================================== package org.apache.commons.resources.tests; import java.io.IOException; import java.io.InputStream; import java.util.Map; import java.util.Collection; import org.xml.sax.SAXException; import org.apache.commons.resources.*; import junit.framework.*; public class ConfigurationReaderTest extends TestCase { public static String RESOURCE_TEST_FILE = "/org/apache/commons/resources/tests/config-test.xml"; protected ConfigurationReader configReader; protected InputStream inputStream; public ConfigurationReaderTest(String test) { super(test); } public static void main(String args[]) { junit.textui.TestRunner.run(ConfigurationReaderTest.class); } protected void setUp() { inputStream = null; configReader = null; inputStream = this.getClass().getResourceAsStream(RESOURCE_TEST_FILE); configReader = new ConfigurationReader(); } /** * Test the parsing of the config reader */ public void testParse() throws ResourceException, IOException { configReader.read(inputStream); } /** * Test the getResourceMap() method and it's results, they should be * consistent with the resources delcared in * /org/apache/commons/resources/test/config-test.xml. */ public void testGetResourceMap() throws ResourceException, IOException { configReader.read(inputStream); Map resourceMap = configReader.getResourceMap(); Resource fileResource = (Resource) resourceMap.get("file"); assertNotNull(fileResource); assertEquals(fileResource.getClass().getName(), "org.apache.commons.resources.FileResource"); Resource messageResource = (Resource) resourceMap.get("message"); assertNotNull(messageResource); assertEquals(messageResource.getClass().getName(), "org.apache.commons.resources.PropertyMessageResources"); String config = ((MessageResources) messageResource).getConfig(); assertEquals(config, "org.apache.commons.resources.tests.ExampleStrings"); } public static Test suite() { return new TestSuite(ConfigurationReaderTest.class); } }