mschachter 01/07/06 12:51:12
Modified: resources/src/java/org/apache/commons/resources
AbstractResource.java ResourceManager.java
resources/src/java/org/apache/commons/resources/file
FileResource.java LocalStrings.properties
resources/src/java/org/apache/commons/resources/file/web
WebappFileResource.java
resources/src/java/org/apache/commons/resources/message
MessageResourcesFactory.java
resources/src/java/org/apache/commons/resources/web
WebappResourceManager.java
resources/src/test/org/apache/commons/resources/tests
AllTests.java ConfigurationReaderTest.java
config-test.xml
Added: resources/src/test/org/apache/commons/resources/tests
FileResourceExposer.java
FileResourceExposerFactory.java
FileResourceTest.java
Log:
- alot of things. added tests for FileResource and some general updates to
all parties involved
Revision Changes Path
1.4 +1 -2
jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/AbstractResource.java
Index: AbstractResource.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/AbstractResource.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AbstractResource.java 2001/06/27 22:07:12 1.3
+++ AbstractResource.java 2001/07/06 19:50:53 1.4
@@ -34,8 +34,7 @@
/**
* This is called on to initialize the Resource, before any of the
* getData methods are called, and after the setConfigurationURL() method
- * is called. The default implementation wipes the hard drive of the
- * unsuspecting developer...
+ * is called.
*/
public void init() throws ResourceException {
;
1.4 +8 -5
jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/ResourceManager.java
Index: ResourceManager.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/ResourceManager.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ResourceManager.java 2001/06/27 22:07:16 1.3
+++ ResourceManager.java 2001/07/06 19:50:54 1.4
@@ -38,20 +38,23 @@
* @param configReader The ConfigurationReader implementation
* to use for the resource information
*/
- public ResourceManager(URL configURL) throws ResourceException {
-
+ public ResourceManager(URL configURL) throws ResourceException, IOException {
+ this(configURL.openStream());
+ }
+
+ public ResourceManager(InputStream inputStream) throws ResourceException {
ConfigurationReader configReader = new ConfigurationReader();
- InputStream inputStream = null;
try {
- inputStream = configURL.openStream();
configReader.read(inputStream);
}
catch (IOException ioe) {
throw new ResourceException(
- messageResources.getMessage("resources.manager.ioexception", ioe));
+ messageResources.getMessage("resources.manager.ioexception",
+ ioe.getMessage()),ioe);
}
resources = configReader.getResourceMap();
initResources();
+
}
/**
1.2 +40 -9
jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/file/FileResource.java
Index: FileResource.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/file/FileResource.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- FileResource.java 2001/06/27 22:07:20 1.1
+++ FileResource.java 2001/07/06 19:50:57 1.2
@@ -11,6 +11,7 @@
import java.io.IOException;
import java.io.FileInputStream;
import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import org.apache.commons.resources.AbstractResource;
@@ -90,7 +91,7 @@
protected long maxCacheSize = 100 * 1024;
/**
- * The size in bytes to read from the file system at a time
+ * The size in bytes to read from the file system at a time [20K]
*/
protected int bufferSize = 20 * 1024;
@@ -122,8 +123,23 @@
* the default time zone
*/
public byte[] getData(String key, Locale locale, TimeZone timeZone)
- throws ResourceException {
- return null;
+ throws ResourceException {
+ try {
+
+ InputStream stream = getStream(key, locale, timeZone);
+ byte[] buffer = new byte[bufferSize];
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int read = 0;
+ while ((read = stream.read(buffer, 0, buffer.length)) != -1) {
+ baos.write(buffer, 0, read);
+ }
+ return baos.toByteArray();
+ }
+ catch (IOException ioe) {
+ throw new ResourceException(
+ messageResources.getMessage("resources.file.data.ioexception"),
+ ioe);
+ }
}
@@ -212,7 +228,7 @@
/**
* Converts a String to an InputStream. This should not look in the cache
- * for a steam, it should create a new stream. The purpose of this is to
+ * for a stream, it should create a new stream. The purpose of this is to
* localize the way in which this type of resource turns a String into a
* stream so that subclasses (i.e. WebappFileResource) can inherit a large
* portion of the functionality.
@@ -236,12 +252,24 @@
StringBuffer keyString = new StringBuffer();
keyString.append(key);
- keyString.append(ID_SEPARATOR);
- keyString.append(locale.getLanguage());
keyString.append(ID_SEPARATOR);
- keyString.append(locale.getCountry());
+ if (locale != null) {
+ keyString.append(locale.getLanguage());
+ keyString.append(ID_SEPARATOR);
+ keyString.append(locale.getCountry());
+ }
+ else {
+ keyString.append("null");
+ keyString.append(ID_SEPARATOR);
+ keyString.append("null");
+ }
keyString.append(ID_SEPARATOR);
- keyString.append(timeZone.getID());
+ if (timeZone != null) {
+ keyString.append(timeZone.getID());
+ }
+ else {
+ keyString.append("null");
+ }
return keyString.toString();
}
@@ -269,10 +297,13 @@
}
int eIndex = key.lastIndexOf(".");
if (eIndex != -1) {
+ //grab extension
extension = key.substring(eIndex+1, key.length());
+ //strip extension from key
+ key = key.substring(0, eIndex);
}
String[] paths = getFileNames(key, language, countryCode, zoneID,
- extension, File.pathSeparatorChar);
+ extension, File.separatorChar);
for (int i = 0; i < paths.length; i++) {
1.2 +3 -1
jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/file/LocalStrings.properties
Index: LocalStrings.properties
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/file/LocalStrings.properties,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LocalStrings.properties 2001/06/27 22:07:20 1.1
+++ LocalStrings.properties 2001/07/06 19:50:58 1.2
@@ -1,4 +1,6 @@
resources.file.ioexception=[FileResource] problem opening file {0}
resources.file.filenotfound=[FileResource] file {0} not found
resources.file.invalidkey=[FileResource] no file found for key {0}, locale {1}, and
time zone {2}
-resources.file.cache.ioexception=[FileResource] IO
+resources.file.data.ioexception=[FileResource] IOException reading file data
+resources.file.cache.ioexception=[FileResource] IOException while reading key {0}
from cache
+resources.file.tostream.ioexception=[FileResource] IOException while turning path
{0} to stream
1.2 +81 -4
jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/file/web/WebappFileResource.java
Index: WebappFileResource.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/file/web/WebappFileResource.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- WebappFileResource.java 2001/06/27 22:07:22 1.1
+++ WebappFileResource.java 2001/07/06 19:51:01 1.2
@@ -1,15 +1,27 @@
package org.apache.commons.resources.file.web;
+import java.io.File;
+import java.io.InputStream;
+import java.io.IOException;
+
+import java.net.URL;
+import java.net.MalformedURLException;
+
+import java.util.Locale;
+import java.util.TimeZone;
+
import javax.servlet.ServletContext;
-import org.apache.commons.resources.web.WebappResource;
+import org.apache.commons.resources.ResourceException;
import org.apache.commons.resources.file.FileResource;
+import org.apache.commons.resources.web.WebappResource;
/**
* This class can only access files within the context of it's own web application,
* as opposed to FileResoure, which has access to the entire file system. The
* advantage of using this over FileResource in a web application is that you
- * can specify paths relative to your app.
+ * can specify a base path relative to your webapp instead of a file system
+ * base path.
*/
public class WebappFileResource extends FileResource implements WebappResource {
@@ -18,6 +30,71 @@
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
- }
+ }
+
+ /**
+ * Converts a String to an InputStream using
ServletContext.getResourceAsStream()
+ */
+ protected InputStream toStream(String streamPath) throws ResourceException {
+ return servletContext.getResourceAsStream(streamPath);
+ }
+
+ /**
+ * Attempts to find an existing file for the key, locale, and time zone
+ * given, according to the mechanism specified in
+ * {@link #getFileNames(String,String,String,String,String,char) getFileNames}
+ * @returns A String that can be initialized to a stream using
+ * {@link #toStream(String) toStream}
+ */
+ protected String findValidPath(String key, Locale locale, TimeZone timeZone) {
+
+ String language = null;
+ String countryCode = null;
+ String zoneID = null;
+ String extension = null;
+
+ if (locale != null) {
+ language = locale.getLanguage();
+ countryCode = locale.getCountry();
+ }
+ if (timeZone != null) {
+ zoneID = timeZone.getID();
+ }
+ int eIndex = key.lastIndexOf(".");
+ if (eIndex != -1) {
+ //grab extension
+ extension = key.substring(eIndex+1, key.length());
+ //strip extension from key
+ key = key.substring(0, eIndex);
+ }
+ String[] paths = getFileNames(key, language, countryCode, zoneID,
+ extension, File.separatorChar);
+ try {
+ for (int i = 0; i < paths.length; i++) {
+ URL resource = servletContext.getResource(paths[i]);
+ if (resource != null) {
+ return paths[i];
+ }
+ }
+ }
+ catch (MalformedURLException mue) {;}
+ return null;
+ }
-}
+ /**
+ * Get the size in bytes of the file represented by the argument given. This
+ * method is here to abstract the way to get the file size for subclasses
+ * @param filePath The "path" member variable plus the key (file name)
+ * @return -1 If the file size cannot be found
+ */
+ protected long getFileSize(String filePath) {
+ String realPath = servletContext.getRealPath(filePath);
+ if (realPath != null) {
+ File file = new File(realPath);
+ if (file.exists()) {
+ return file.length();
+ }
+ }
+ return -1;
+ }
+}
\ No newline at end of file
1.2 +7 -14
jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/message/MessageResourcesFactory.java
Index: MessageResourcesFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/message/MessageResourcesFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MessageResourcesFactory.java 2001/06/27 22:07:24 1.1
+++ MessageResourcesFactory.java 2001/07/06 19:51:02 1.2
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/message/MessageResourcesFactory.java,v
1.1 2001/06/27 22:07:24 mschachter Exp $
- * $Revision: 1.1 $
- * $Date: 2001/06/27 22:07:24 $
+ * $Header:
/home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/message/MessageResourcesFactory.java,v
1.2 2001/07/06 19:51:02 mschachter Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/07/06 19:51:02 $
*
* ====================================================================
*
@@ -82,7 +82,7 @@
* </ul>
*
* @author Craig R. McClanahan
- * @version $Revision: 1.1 $ $Date: 2001/06/27 22:07:24 $
+ * @version $Revision: 1.2 $ $Date: 2001/07/06 19:51:02 $
*/
public abstract class MessageResourcesFactory
@@ -92,13 +92,6 @@
// ---------------------------------------------------- Instance Properties
- /**
- * The message resources for this class
- */
- protected static MessageResources messageResources =
- MessageResourcesFactory.createFactory().createResources(
- "org.apache.commons.resources.LocalStrings");
-
/**
* The "return null" property value to which newly created
@@ -149,7 +142,7 @@
* <code>MessageResourcesFactory</code> instances.
*/
protected static String factoryClass =
- "org.apache.commons.resources.PropertyMessageResourcesFactory";
+ "org.apache.commons.resources.message.PropertyMessageResourcesFactory";
public static String getFactoryClass() {
return (MessageResourcesFactory.factoryClass);
@@ -180,8 +173,8 @@
(MessageResourcesFactory) clazz.newInstance();
return (factory);
} catch (Throwable t) {
- messageResources.getMessage("resources.message.create",
- t.getMessage());
+ System.out.println("[MessageResourcesFactory] error of type '" +
+ t.getClass().getName() + "': " + t.getMessage());
return (null);
}
1.2 +3 -1
jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/web/WebappResourceManager.java
Index: WebappResourceManager.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/web/WebappResourceManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- WebappResourceManager.java 2001/06/27 22:09:47 1.1
+++ WebappResourceManager.java 2001/07/06 19:51:05 1.2
@@ -1,5 +1,7 @@
package org.apache.commons.resources.web;
+import java.io.IOException;
+
import java.net.URL;
import java.util.Iterator;
@@ -23,7 +25,7 @@
protected ServletContext context;
public WebappResourceManager(URL config, ServletContext context)
- throws ResourceException {
+ throws ResourceException, IOException {
super(config);
this.context = context;
1.2 +1 -0
jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/tests/AllTests.java
Index: AllTests.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/tests/AllTests.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AllTests.java 2001/06/22 19:04:16 1.1
+++ AllTests.java 2001/07/06 19:51:08 1.2
@@ -12,6 +12,7 @@
public static Test suite() {
TestSuite suite = new TestSuite("Resource Test Package");
suite.addTest(ConfigurationReaderTest.suite());
+ suite.addTest(FileResourceTest.suite());
return suite;
}
1.3 +75 -40
jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/tests/ConfigurationReaderTest.java
Index: ConfigurationReaderTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/tests/ConfigurationReaderTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ConfigurationReaderTest.java 2001/06/27 22:07:27 1.2
+++ ConfigurationReaderTest.java 2001/07/06 19:51:09 1.3
@@ -10,6 +10,8 @@
import org.xml.sax.SAXException;
import org.apache.commons.resources.*;
+import org.apache.commons.resources.file.*;
+import org.apache.commons.resources.message.*;
import junit.framework.*;
@@ -17,7 +19,9 @@
public static String RESOURCE_TEST_FILE =
"/org/apache/commons/resources/tests/config-test.xml";
+ public static int TOTAL_RESOURCE_NUMBER = 3;
+
protected ConfigurationReader configReader;
protected InputStream inputStream;
@@ -39,8 +43,18 @@
/**
* Test the parsing of the config reader
*/
- public void testParse() throws ResourceException, IOException {
- configReader.read(inputStream);
+ public void testParse() throws ResourceException, IOException, Exception {
+ try {
+ configReader.read(inputStream);
+ }
+ catch (ResourceException re) {
+ if (re.getRootCause() != null) {
+ throw re.getRootCause();
+ }
+ else {
+ throw re;
+ }
+ }
}
/**
@@ -48,49 +62,70 @@
* 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();
+ public void testGetResourceMap() throws ResourceException, IOException,
Exception {
- Resource fileResource = (Resource) resourceMap.get("file");
- assertNotNull(fileResource);
- assertEquals("org.apache.commons.resources.FileResource",
- fileResource.getClass().getName());
- assertEquals("c:\\temp", ((FileResource) fileResource).getPath());
-
- Resource messageResource = (Resource) resourceMap.get("message");
- assertNotNull(messageResource);
- assertEquals("org.apache.commons.resources.PropertyMessageResources",
- messageResource.getClass().getName());
- String config = ((MessageResources) messageResource).getConfig();
- assertEquals("org.apache.commons.resources.tests.ExampleStrings", config);
- assertEquals(true, ((MessageResources) messageResource).getReturnNull());
+ try {
+ configReader.read(inputStream);
+ Map resourceMap = configReader.getResourceMap();
+
+ Resource fileResource = (Resource) resourceMap.get("file");
+ assertNotNull(fileResource);
+ assertEquals("org.apache.commons.resources.file.FileResource",
+ fileResource.getClass().getName());
+ assertEquals("c:\\temp", ((FileResource) fileResource).getPath());
+
+ Resource messageResource = (Resource) resourceMap.get("message");
+ assertNotNull(messageResource);
+
assertEquals("org.apache.commons.resources.message.PropertyMessageResources",
+ messageResource.getClass().getName());
+ String config = ((MessageResources) messageResource).getConfig();
+ assertEquals("org.apache.commons.resources.tests.ExampleStrings",
config);
+ assertEquals(true, ((MessageResources)
messageResource).getReturnNull());
+ }
+ catch (ResourceException re) {
+ if (re.getRootCause() != null) {
+ throw re.getRootCause();
+ }
+ else {
+ throw re;
+ }
+ }
}
/**
* Test the getResources() method
*/
- public void testGetResources() throws ResourceException, IOException {
- boolean foundMessage = false;
- boolean foundFile = false;
- int count = 0;
-
- configReader.read(inputStream);
- Collection values = configReader.getResources();
- Iterator iterator = values.iterator();
- while (iterator.hasNext()) {
- Object object = iterator.next();
- assertEquals(true, (object instanceof Resource));
- Resource resource = (Resource) object;
- if (resource.getName().equals("message")) {
- foundMessage = true;
- }
- if (resource.getName().equals("file")) {
- foundFile = true;
- }
- count++;
- }
- assertEquals(true, (foundMessage && foundFile));
- assertEquals(2, count);
+ public void testGetResources() throws ResourceException, IOException, Exception
{
+ try {
+ boolean foundMessage = false;
+ boolean foundFile = false;
+ int count = 0;
+
+ configReader.read(inputStream);
+ Collection values = configReader.getResources();
+ Iterator iterator = values.iterator();
+ while (iterator.hasNext()) {
+ Object object = iterator.next();
+ assertEquals(true, (object instanceof Resource));
+ Resource resource = (Resource) object;
+ if (resource.getName().equals("message")) {
+ foundMessage = true;
+ }
+ if (resource.getName().equals("file")) {
+ foundFile = true;
+ }
+ count++;
+ }
+ assertEquals(true, (foundMessage && foundFile));
+ assertEquals(TOTAL_RESOURCE_NUMBER, count);
+ }
+ catch (ResourceException re) {
+ if (re.getRootCause() != null) {
+ throw re.getRootCause();
+ }
+ else {
+ throw re;
+ }
+ }
}
public static Test suite() {
1.2 +11 -2
jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/tests/config-test.xml
Index: config-test.xml
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/tests/config-test.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- config-test.xml 2001/06/27 22:09:48 1.1
+++ config-test.xml 2001/07/06 19:51:09 1.2
@@ -5,7 +5,7 @@
<!-- Configuration for a resource that is based on Java ResourceBundles -->
<resource name="message"
-
factory="org.apache.commons.resources.PropertyMessageResourcesFactory"
+
factory="org.apache.commons.resources.message.PropertyMessageResourcesFactory"
config="org.apache.commons.resources.tests.ExampleStrings">
<set-property property="returnNull" value="true" />
@@ -15,7 +15,16 @@
<!-- Configuration for a resource that pulls its data from flat files -->
<resource name="file"
- factory="org.apache.commons.resources.FileResourceFactory"
+ factory="org.apache.commons.resources.file.FileResourceFactory"
+ config="">
+
+ <set-property property="path" value="c:\temp" />
+
+ </resource>
+
+ <!-- Configuration for a resource that pulls its data from flat files -->
+ <resource name="file-test"
+
factory="org.apache.commons.resources.tests.FileResourceExposerFactory"
config="">
<set-property property="path" value="c:\temp" />
1.1
jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/tests/FileResourceExposer.java
Index: FileResourceExposer.java
===================================================================
package org.apache.commons.resources.tests;
import java.util.Locale;
import java.util.HashMap;
import java.util.TimeZone;
import java.util.Iterator;
import java.util.Collection;
import java.io.File;
import java.io.InputStream;
import java.io.IOException;
import org.apache.commons.resources.*;
import org.apache.commons.resources.file.*;
/**
* This class exposes the protected methods of FileResource for testing
* purposes
*/
public class FileResourceExposer extends FileResource {
public String exposeFindValidPath(String key, Locale locale, TimeZone timeZone)
{
return findValidPath(key, locale, timeZone);
}
public String[] exposeGetFileNames(String fileName, String language,
String countryCode, String timeZone,
String extension, char separator) {
return getFileNames(fileName, language, countryCode, timeZone,
extension, separator);
}
public long exposeGetFileSize(String file) {
return getFileSize(file);
}
public InputStream exposeToStream(String file) throws ResourceException {
return toStream(file);
}
public String exposeToStringKey(String key, Locale locale, TimeZone timeZone) {
return toStringKey(key, locale, timeZone);
}
}
1.1
jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/tests/FileResourceExposerFactory.java
Index: FileResourceExposerFactory.java
===================================================================
package org.apache.commons.resources.tests;
import org.apache.commons.resources.Resource;
import org.apache.commons.resources.ResourceFactory;
/**
* This class creates FileResourceExposer resources, which expose
* the protected methods of the FileResource class for testing
*/
public class FileResourceExposerFactory extends ResourceFactory {
public Resource createResource(String config) {
return new FileResourceExposer();
}
}
1.1
jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/tests/FileResourceTest.java
Index: FileResourceTest.java
===================================================================
package org.apache.commons.resources.tests;
import java.io.*;
import java.util.*;
import org.xml.sax.SAXException;
import org.apache.commons.resources.*;
import org.apache.commons.resources.file.*;
import org.apache.commons.resources.message.*;
import junit.framework.*;
public class FileResourceTest extends TestCase {
public static String RESOURCE_TEST_FILE =
"/org/apache/commons/resources/tests/config-test.xml";
public static String RESOURCE_TEST_NAME = "file-test";
public static String RESOURCE_TEST_CLASS =
"org.apache.commons.resources.tests.FileResourceExposer";
public static String RESOURCE_PATH = "c:\\temp";
public static String[] FILES_EN_US_EST = new String[] {
RESOURCE_PATH + File.separator +
"test/test1_en_US_EST.txt",
RESOURCE_PATH + File.separator +
"test/test1_en_US.txt",
RESOURCE_PATH + File.separator +
"test/test1_en.txt",
RESOURCE_PATH + File.separator +
"test/test1.txt"};
public static String FILE_TEST1_KEY = "test/test1.txt";
public static String FILE_TEST1_VALID_PATH = RESOURCE_PATH + File.separator +
"test/test1_en_US_EST.txt";
public static String FILE_TEST1_DATA = "test1_en_US_EST";
public static String TEST1_STRING_KEY = FILE_TEST1_KEY + "_en_US_EST";
protected InputStream inputStream;
protected FileResourceExposer fileResource;
protected ResourceManager manager;
protected Locale locale_en_US = new Locale("en", "US");
protected TimeZone timeZone_EST = TimeZone.getTimeZone("EST");
public FileResourceTest(String test) {
super(test);
}
public static void main(String args[]) {
junit.textui.TestRunner.run(ConfigurationReaderTest.class);
}
protected void setUp() throws ResourceException, Exception {
try {
inputStream = null;
manager = null;
fileResource = null;
inputStream = this.getClass().getResourceAsStream(RESOURCE_TEST_FILE);
manager = new ResourceManager(inputStream);
Resource resource = manager.getResource(RESOURCE_TEST_NAME);
assertNotNull(resource);
assertEquals(RESOURCE_TEST_CLASS, resource.getClass().getName());
fileResource = (FileResourceExposer) resource;
assertEquals(RESOURCE_PATH, fileResource.getPath());
}
catch (ResourceException re) {
if (re.getRootCause() != null) {
throw re.getRootCause();
}
else {
throw re;
}
}
}
public void testFindValidPath() {
String validPath = fileResource.exposeFindValidPath(FILE_TEST1_KEY,
locale_en_US,
timeZone_EST);
assertEquals(FILE_TEST1_VALID_PATH, validPath);
}
public void testGetData() throws Exception {
try {
byte[] data = fileResource.getData(FILE_TEST1_KEY, locale_en_US,
timeZone_EST);
String stringData = new String(data, 0, data.length);
assertEquals(FILE_TEST1_DATA, stringData);
}
catch (ResourceException re) {
if (re.getRootCause() != null) {
throw re.getRootCause();
}
else {
throw re;
}
}
}
public void testGetFileNames() {
String extension = null;
String key = FILE_TEST1_KEY;
int extensionIndex = key.lastIndexOf(".");
if (extensionIndex != -1) {
extension = key.substring(extensionIndex+1, key.length());
key = key.substring(0, extensionIndex);
}
String language = locale_en_US.getLanguage();
String countryCode = locale_en_US.getCountry();
String timeZone = timeZone_EST.getID();
char separator = File.separatorChar;
String[] files = fileResource.exposeGetFileNames(key, language, countryCode,
timeZone, extension,
separator);
assertNotNull(files);
for (int i = 0; i < files.length; i++) {
assertEquals(FILES_EN_US_EST[i], files[i]);
}
}
public void testToStringKey() {
String result = fileResource.exposeToStringKey(FILE_TEST1_KEY,
locale_en_US,
timeZone_EST);
assertEquals(TEST1_STRING_KEY, result);
}
public static Test suite() {
return new TestSuite(FileResourceTest.class);
}
}