You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by df...@apache.org on 2007/04/30 12:55:32 UTC
svn commit: r533694 - in /jakarta/commons/sandbox/i18n/trunk: ./
src/java/org/apache/commons/i18n/ src/resources/ src/test/
src/test/org/apache/commons/i18n/ xdocs/
Author: dflorey
Date: Mon Apr 30 03:55:31 2007
New Revision: 533694
URL: http://svn.apache.org/viewvc?view=rev&rev=533694
Log:
Applied patches from Mattias Jiderhamn. Thanks!
Added:
jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/MessageProviderTestBase.java
Modified:
jakarta/commons/sandbox/i18n/trunk/project.xml
jakarta/commons/sandbox/i18n/trunk/src/java/org/apache/commons/i18n/XMLMessageProvider.java
jakarta/commons/sandbox/i18n/trunk/src/resources/i18n-messages.properties
jakarta/commons/sandbox/i18n/trunk/src/resources/i18n-messages_de.properties
jakarta/commons/sandbox/i18n/trunk/src/test/messageBundle.properties
jakarta/commons/sandbox/i18n/trunk/src/test/messageBundle_de.properties
jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/JdbcMessageProviderTest.java
jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/ResourceBundleMessageProviderTest.java
jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/XMLMessageProviderTest.java
jakarta/commons/sandbox/i18n/trunk/src/test/testMessages.xml
jakarta/commons/sandbox/i18n/trunk/xdocs/examples.xml
Modified: jakarta/commons/sandbox/i18n/trunk/project.xml
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/i18n/trunk/project.xml?view=diff&rev=533694&r1=533693&r2=533694
==============================================================================
--- jakarta/commons/sandbox/i18n/trunk/project.xml (original)
+++ jakarta/commons/sandbox/i18n/trunk/project.xml Mon Apr 30 03:55:31 2007
@@ -75,6 +75,10 @@
</contributors>
<dependencies>
+ <dependency>
+ <id>commons-resources</id>
+ <version>0.1-dev</version>
+ </dependency>
<!-- Please note, these depenencies are needed for unit tests only! -->
<dependency>
<id>hsqldb</id>
Modified: jakarta/commons/sandbox/i18n/trunk/src/java/org/apache/commons/i18n/XMLMessageProvider.java
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/i18n/trunk/src/java/org/apache/commons/i18n/XMLMessageProvider.java?view=diff&rev=533694&r1=533693&r2=533694
==============================================================================
--- jakarta/commons/sandbox/i18n/trunk/src/java/org/apache/commons/i18n/XMLMessageProvider.java (original)
+++ jakarta/commons/sandbox/i18n/trunk/src/java/org/apache/commons/i18n/XMLMessageProvider.java Mon Apr 30 03:55:31 2007
@@ -56,9 +56,9 @@
applicationMessages.putAll(parsedMessages);
messages.putAll(applicationMessages);
} catch (Exception exception) {
- // TODO: Fix message without ID
- logger.log(Level.SEVERE,I18nUtils.INTERNAL_MESSAGES.getString(I18nUtils.MESSAGE_PARSING_ERROR),exception);
- // TODO: Consider throwing exception
+ String msg = I18nUtils.INTERNAL_MESSAGES.getString(I18nUtils.MESSAGE_PARSING_ERROR);
+ logger.log(Level.SEVERE,msg,exception);
+ throw new RuntimeException(msg, exception);
}
}
@@ -85,7 +85,7 @@
}
if (message == null ) throw new MessageNotFoundException(
MessageFormat.format(
- I18nUtils.INTERNAL_MESSAGES.getString(I18nUtils.MESSAGE_NOT_FOUND),
+ I18nUtils.INTERNAL_MESSAGES.getString(I18nUtils.NO_MESSAGE_ENTRIES_FOUND),
new String[] { id }));
return message;
}
Modified: jakarta/commons/sandbox/i18n/trunk/src/resources/i18n-messages.properties
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/i18n/trunk/src/resources/i18n-messages.properties?view=diff&rev=533694&r1=533693&r2=533694
==============================================================================
--- jakarta/commons/sandbox/i18n/trunk/src/resources/i18n-messages.properties (original)
+++ jakarta/commons/sandbox/i18n/trunk/src/resources/i18n-messages.properties Mon Apr 30 03:55:31 2007
@@ -1,5 +1,4 @@
-messageNotFound=Message with key {0} not found
noMessageEntriesFound=No message entries found for bundle with key {0}
messageEntryNotFound=Message bundle with key {0} does not contain an entry with key {1}
resourceBundleNotFound=Could not find resource bundle with base name {0}, uninstalling it
-messageParsingError=Error while parsing message file with id {0}
\ No newline at end of file
+messageParsingError=Error while parsing message file
Modified: jakarta/commons/sandbox/i18n/trunk/src/resources/i18n-messages_de.properties
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/i18n/trunk/src/resources/i18n-messages_de.properties?view=diff&rev=533694&r1=533693&r2=533694
==============================================================================
--- jakarta/commons/sandbox/i18n/trunk/src/resources/i18n-messages_de.properties (original)
+++ jakarta/commons/sandbox/i18n/trunk/src/resources/i18n-messages_de.properties Mon Apr 30 03:55:31 2007
@@ -1,5 +1,4 @@
-messageNotFound=Keine Nachricht mit Schlüssel {0} gefunden
noMessageEntriesFound=Keine Einträge für die Nachricht mit Schlüssel {0} gefunden
messageEntryNotFound=Die Nachricht mit Schlüssel {0} enthält keinen Eintrag mit Schlüssel {1}
resourceBundleNotFound=Übersetzungsdatei mit dem Namen {0} wurde nicht gefunden und wird daher deinstalliert
-messageParsingError=Fehler beim Einlesen der Übersetzungsdatei mit der ID {0}
\ No newline at end of file
+messageParsingError=Fehler beim Einlesen der Übersetzungsdatei
Modified: jakarta/commons/sandbox/i18n/trunk/src/test/messageBundle.properties
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/i18n/trunk/src/test/messageBundle.properties?view=diff&rev=533694&r1=533693&r2=533694
==============================================================================
--- jakarta/commons/sandbox/i18n/trunk/src/test/messageBundle.properties (original)
+++ jakarta/commons/sandbox/i18n/trunk/src/test/messageBundle.properties Mon Apr 30 03:55:31 2007
@@ -1,4 +1,4 @@
# Example for using message bundles using a flat properties-file
helloWorld.title=Hello World
-helloWorld.text=I wish you a merry christmas!
+helloWorld.text=Hello World, we are in {0}.
helloWorld.notTranslated=This entry is not translated to any other languages
Modified: jakarta/commons/sandbox/i18n/trunk/src/test/messageBundle_de.properties
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/i18n/trunk/src/test/messageBundle_de.properties?view=diff&rev=533694&r1=533693&r2=533694
==============================================================================
--- jakarta/commons/sandbox/i18n/trunk/src/test/messageBundle_de.properties (original)
+++ jakarta/commons/sandbox/i18n/trunk/src/test/messageBundle_de.properties Mon Apr 30 03:55:31 2007
@@ -1,3 +1,3 @@
# Example for using message bundles using a flat properties-file
helloWorld.title=Hallo Welt
-helloWorld.text=Ich wünsche Dir alles Gute und ein frohes Fest!
\ No newline at end of file
+helloWorld.text=Hallo Welt, wir sind in {0}.
Modified: jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/JdbcMessageProviderTest.java
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/JdbcMessageProviderTest.java?view=diff&rev=533694&r1=533693&r2=533694
==============================================================================
--- jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/JdbcMessageProviderTest.java (original)
+++ jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/JdbcMessageProviderTest.java Mon Apr 30 03:55:31 2007
@@ -1,9 +1,24 @@
-package org.apache.commons.i18n;
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
-import junit.framework.TestCase;
+package org.apache.commons.i18n;
-import java.sql.DriverManager;
import java.sql.Connection;
+import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Locale;
@@ -15,15 +30,14 @@
/**
* @author Mattias Jiderhamn
*/
-public class JdbcMessageProviderTest extends TestCase {
+public class JdbcMessageProviderTest extends MessageProviderTestBase {
private static Connection getNewConnection() throws SQLException {
return DriverManager.getConnection("jdbc:hsqldb:.", "sa", ""); // Connect to in-memory database
}
public void setUp() throws Exception {
- /* Make sure en_US is the default Locale for tests */
- Locale.setDefault(Locale.US);
+ super.setUp();
Class.forName("org.hsqldb.jdbcDriver"); // Load HSQLDB database driver
Connection conn = getNewConnection();
@@ -44,7 +58,7 @@
stmt.execute(
"INSERT INTO messages VALUES (" +
" 'helloWorld', 'de', " +
- " 'Hallo Welt', 'Ich wünsche Dir alles Gute und ein frohes Fest!'" +
+ " 'Hallo Welt', 'Ich wünsche Dir alles Gute und ein frohes Fest!'" +
")"
);
stmt.close();
@@ -52,6 +66,7 @@
}
public void tearDown() throws Exception {
+ super.tearDown();
Connection conn = getNewConnection();
conn.createStatement().execute(
"DROP TABLE messages"
@@ -73,7 +88,7 @@
dataSource.setPassword("");
jdbcMessageProvider = new JdbcMessageProvider(dataSource, "messages", "id", "language");
assertEquals("Hello World", jdbcMessageProvider.getText("helloWorld", "title", Locale.ENGLISH));
-
+
// Map/Properties constructor
Properties props = new Properties();
props.setProperty("jdbc.connect.driver", "org.hsqldb.jdbcDriver");
@@ -111,16 +126,16 @@
assertEquals("I wish you a merry christmas!", jdbcMessageProvider.getText("helloWorld", "text", scottish));
assertEquals("Hallo Welt", jdbcMessageProvider.getText("helloWorld", "title", Locale.GERMAN));
- assertEquals("Ich wünsche Dir alles Gute und ein frohes Fest!", jdbcMessageProvider.getText("helloWorld", "text", Locale.GERMAN));
+ assertEquals("Ich wünsche Dir alles Gute und ein frohes Fest!", jdbcMessageProvider.getText("helloWorld", "text", Locale.GERMAN));
// Default locale with country
assertEquals("Hallo Welt", jdbcMessageProvider.getText("helloWorld", "title", Locale.GERMANY));
- assertEquals("Ich wünsche Dir alles Gute und ein frohes Fest!", jdbcMessageProvider.getText("helloWorld", "text", Locale.GERMANY));
+ assertEquals("Ich wünsche Dir alles Gute und ein frohes Fest!", jdbcMessageProvider.getText("helloWorld", "text", Locale.GERMANY));
// Test use of defaule
assertEquals("Hello World", jdbcMessageProvider.getText("helloWorld", "title", Locale.JAPANESE));
assertEquals("I wish you a merry christmas!", jdbcMessageProvider.getText("helloWorld", "text", Locale.JAPANESE));
-
+
// Test non-existent
assertNull(jdbcMessageProvider.getText("helloWorld", "foobar", Locale.ENGLISH));
assertNull(jdbcMessageProvider.getText("foo", "bar", Locale.ENGLISH));
@@ -153,13 +168,13 @@
entries = jdbcMessageProvider.getEntries("helloWorld", Locale.GERMAN);
assertEquals("No of entries", 2, entries.size());
assertEquals("Hallo Welt", (String)entries.get("title"));
- assertEquals("Ich wünsche Dir alles Gute und ein frohes Fest!", (String)entries.get("text"));
+ assertEquals("Ich wünsche Dir alles Gute und ein frohes Fest!", (String)entries.get("text"));
// Default locale with country
entries = jdbcMessageProvider.getEntries("helloWorld", Locale.GERMANY);
assertEquals("No of entries", 2, entries.size());
assertEquals("Hallo Welt", (String)entries.get("title"));
- assertEquals("Ich wünsche Dir alles Gute und ein frohes Fest!", (String)entries.get("text"));
+ assertEquals("Ich wünsche Dir alles Gute und ein frohes Fest!", (String)entries.get("text"));
// Test use of defaule
entries = jdbcMessageProvider.getEntries("helloWorld", Locale.JAPANESE);
Added: jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/MessageProviderTestBase.java
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/MessageProviderTestBase.java?view=auto&rev=533694
==============================================================================
--- jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/MessageProviderTestBase.java (added)
+++ jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/MessageProviderTestBase.java Mon Apr 30 03:55:31 2007
@@ -0,0 +1,222 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.commons.i18n;
+
+import junit.framework.TestCase;
+
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * This class tests that the behaviour of a <code>MessageProvider</code> implementation is correct.
+ * If creating new implementations, consider subclassing this class to test the behaviour of that implementation.
+ * The tests assume the provided <code>MessageProvider</code>
+ * contains the following entries:
+ * <p />
+ * <table>
+ * <tr>
+ * <th>Language/<code>Locale</code></th>
+ * <th>ID</th>
+ * <th>Entry</th>
+ * <th>Message</th>
+ * </tr>
+ * <tr>
+ * <td>English (en)</td>
+ * <td>helloWorld</td>
+ * <td>title</td>
+ * <td>Hello World</td>
+ * <tr>
+ * <tr>
+ * <td>English (en)</td>
+ * <td>helloWorld</td>
+ * <td>text</td>
+ * <td>Hello World, we are in {0}.</td>
+ * <tr>
+ * <tr>
+ * <td>German (de)</td>
+ * <td>helloWorld</td>
+ * <td>title</td>
+ * <td>Hallo Welt</td>
+ * <tr>
+ * <tr>
+ * <td>German (de)</td>
+ * <td>helloWorld</td>
+ * <td>text</td>
+ * <td>Hallo Welt, wir sind in {0}.</td>
+ * <tr>
+ * <tr>
+ * <td colspan="4"><i>The entry below is used only if possible. If not possible, set
+ * <code>hasNonTranslatedEntry</code> to false.</i></td>
+ * <tr>
+ * <tr>
+ * <td>English (en)</td>
+ * <td>helloWorld</td>
+ * <td>helloWorld</td>
+ * <td>This entry is not translated to any other languages</td>
+ * <tr>
+ * </table>
+ * <p />
+ * Specifically, the ID <code>nonExistentId</code> and the entry <code>nonExistentEntry</code> of ID
+ * <code>helloWorld</code> must NOT be existent.
+ */
+public abstract class MessageProviderTestBase extends TestCase {
+
+ protected MessageProviderTestBase() {
+ }
+
+ protected MessageProviderTestBase(String testName) {
+ super(testName);
+ }
+
+ /**
+ * Set English as default Locale.
+ * If overridden, please remember to call <code>super.setUp()</code>
+ * @throws Exception No exception is thrown, but allow for overriding methods
+ * to throw exceptions.
+ */
+ public void setUp() throws Exception {
+ /* Make sure en_US is the default Locale for tests */
+ Locale.setDefault(Locale.ENGLISH);
+ }
+
+ public void tearDown() throws Exception {
+ /* Uninstall resource bundles after every test */
+ MessageManager.clearMessageProviders();
+ }
+
+ /**
+ * Test functionality of getText() method, which should be common for all implementations of the
+ * <code>MessageProvider</code> interface.
+ * @param messageProvider
+ */
+ protected void testGetText(MessageProvider messageProvider) {
+ // Explicit default locale
+ assertEnglishTexts(messageProvider, Locale.ENGLISH);
+
+ // Default locale with country
+ assertEnglishTexts(messageProvider, Locale.US);
+
+ // Default locale with variant
+ assertEnglishTexts(messageProvider, new Locale("en", "", "scottish"));
+
+ // Default locale with country and variant
+ assertEnglishTexts(messageProvider, new Locale("en", "GB", "scottish"));
+
+ // Non-default locale
+ assertGermanTexts(messageProvider, Locale.GERMAN);
+
+ // Non-default locale with country
+ assertGermanTexts(messageProvider, Locale.GERMANY);
+
+ // Non-default locale with variant
+ assertGermanTexts(messageProvider, new Locale("de", "", "foo"));
+
+ // Non-default locale with country and variant
+ assertGermanTexts(messageProvider, new Locale("de", "CH", "foo"));
+
+ // Fallback to default
+ assertEnglishTexts(messageProvider, Locale.JAPANESE);
+
+ // Non-existent entry
+ // try {
+ assertNull(messageProvider.getText("helloWorld", "nonExistentEntry", Locale.ENGLISH));
+ // }
+ // catch(MessageNotFoundException mnfex) {
+ // assertEquals("Message bundle with key helloWorld does not contain an entry with key nonExistentEntry", mnfex.getMessage());
+ // }
+
+ // Non-existent id
+ try {
+ assertNull(messageProvider.getText("nonExistentId", "foo", Locale.ENGLISH));
+ }
+ catch(MessageNotFoundException mnfex) {
+ assertEquals("No message entries found for bundle with key nonExistentId", mnfex.getMessage()); // TODO: JDBC
+ }
+ }
+
+ private void assertEnglishTexts(MessageProvider messageProvider, Locale locale) {
+ assertEquals("Locale = " + locale + ", title",
+ "Hello World", messageProvider.getText("helloWorld", "title", locale));
+ assertEquals("Locale = " + locale + ", text",
+ "Hello World, we are in {0}.", messageProvider.getText("helloWorld", "text", locale));
+ }
+
+ private void assertGermanTexts(MessageProvider messageProvider, Locale locale) {
+ assertEquals("Locale = " + locale + ", title",
+ "Hallo Welt", messageProvider.getText("helloWorld", "title", locale));
+ assertEquals("Locale = " + locale + ", text",
+ "Hallo Welt, wir sind in {0}.", messageProvider.getText("helloWorld", "text", locale));
+ }
+
+ // TODO: Document
+ protected void testGetEntries(MessageProvider messageProvider, boolean hasNonTranslatedEntry) {
+ // TODO: Complete from above
+
+ // Explicit default locale
+ assertEnglishEntries(messageProvider, Locale.ENGLISH, hasNonTranslatedEntry);
+
+ // Default locale with country
+ assertEnglishEntries(messageProvider, Locale.US, hasNonTranslatedEntry);
+
+ // Default locale with country and variant
+ assertEnglishEntries(messageProvider, new Locale("en", "", "scottish"), hasNonTranslatedEntry);
+
+ assertGermanEntries(messageProvider, Locale.GERMAN);
+
+ // Default locale with country
+ assertGermanEntries(messageProvider, Locale.GERMANY);
+
+ // Test use of defaule
+ assertEnglishEntries(messageProvider, Locale.JAPANESE, hasNonTranslatedEntry);
+
+ // Non-existent id
+ try {
+ messageProvider.getEntries("nonExistentId", Locale.ENGLISH);
+ fail("Non-existent ID should cause exception");
+ }
+ catch(MessageNotFoundException mnfex) {
+ assertEquals("No message entries found for bundle with key nonExistentId", mnfex.getMessage());
+ }
+ }
+
+ private static void assertEnglishEntries(MessageProvider messageProvider, Locale locale, boolean hasNonTranslatedEntry) {
+ Map entries = messageProvider.getEntries("helloWorld", locale);
+ if(hasNonTranslatedEntry) {
+ assertEquals("Locale = " + locale + ", No of entries", 3, entries.size());
+ assertEquals("Locale = " + locale, "This entry is not translated to any other languages",
+ entries.get("notTranslated"));
+ }
+ else
+ assertEquals("Locale = " + locale + ", No of entries", 2, entries.size());
+ assertEquals("Locale = " + locale, "Hello World", (String)entries.get("title"));
+ assertEquals("Locale = " + locale, "Hello World, we are in {0}.", entries.get("text"));
+ }
+
+ private static void assertGermanEntries(MessageProvider messageProvider, Locale locale) {
+ Map entries = messageProvider.getEntries("helloWorld", locale);
+
+ // TODO: Consider whether all MessageProviders must behave the same way
+ if(entries.size() == 3) // If non-translated entries included
+ assertEquals("This entry is not translated to any other languages", entries.get("notTranslated"));
+ else if(entries.size() != 2)
+ fail("No of entries should be 2 or 3!");
+
+ assertEquals("Hallo Welt", (String)entries.get("title"));
+ assertEquals("Hallo Welt, wir sind in {0}.", entries.get("text"));
+ }
+}
Modified: jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/ResourceBundleMessageProviderTest.java
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/ResourceBundleMessageProviderTest.java?view=diff&rev=533694&r1=533693&r2=533694
==============================================================================
--- jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/ResourceBundleMessageProviderTest.java (original)
+++ jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/ResourceBundleMessageProviderTest.java Mon Apr 30 03:55:31 2007
@@ -23,29 +23,17 @@
import java.util.Locale;
import java.util.Map;
-import junit.framework.TestCase;
-
import org.apache.commons.i18n.bundles.MessageBundle;
/**
* @author Daniel Florey
*
*/
-public class ResourceBundleMessageProviderTest extends TestCase {
+public class ResourceBundleMessageProviderTest extends MessageProviderTestBase {
public ResourceBundleMessageProviderTest(String testName) {
super(testName);
}
- public void setUp() {
- /* Make sure en_US is the default Locale for tests */
- Locale.setDefault(Locale.US);
- }
-
- public void tearDown() {
- /* Uninstall resource bundles after every test */
- MessageManager.clearMessageProviders();
- }
-
public void testInstallResourceBundle() {
MessageBundle testMessage = new MessageBundle("helloWorld");
@@ -75,23 +63,17 @@
public void testGetText() {
ResourceBundleMessageProvider rbmp = new ResourceBundleMessageProvider("messageBundle");
- assertEquals("Default locale", "Hello World", rbmp.getText("helloWorld", "title", Locale.US));
- assertEquals("Additional locale", "Hallo Welt", rbmp.getText("helloWorld", "title", Locale.GERMAN));
- assertEquals("Fallback locale", "Hello World", rbmp.getText("helloWorld", "title", Locale.FRENCH));
+ super.testGetText(rbmp);
+
+ // TODO: Wait for Daniels reply on whether this is intended
assertEquals("Fallback when only in default", "This entry is not translated to any other languages",
rbmp.getText("helloWorld", "notTranslated", Locale.GERMAN));
// Test with list resource bundle
-// ResourceBundleMessageProvider.uninstall("messageBundle"); // Remove
-// ResourceBundleMessageProvider.install("org.apache.commons.i18n.MyListResourceBundle"); // Install ListResourceBundle
ResourceBundleMessageProvider listResourceBundleProvider =
new ResourceBundleMessageProvider("org.apache.commons.i18n.MyListResourceBundle"); // Install ListResourceBundle
assertEquals("Value from ListResourceBundle", "listResourceValue", listResourceBundleProvider.getText("helloWorld", "title", Locale.US));
assertEquals("Value from ListResourceBundle", "1", listResourceBundleProvider.getText("helloWorld", "text", Locale.US));
-
- assertNull(rbmp.getText("nonExistentId", "nonExistentEntry", Locale.US));
-
- assertNull(rbmp.getText("helloWorld", "nonExistentEntry", Locale.US));
try {
new ResourceBundleMessageProvider("nonExistentBundle");
Modified: jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/XMLMessageProviderTest.java
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/XMLMessageProviderTest.java?view=diff&rev=533694&r1=533693&r2=533694
==============================================================================
--- jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/XMLMessageProviderTest.java (original)
+++ jakarta/commons/sandbox/i18n/trunk/src/test/org/apache/commons/i18n/XMLMessageProviderTest.java Mon Apr 30 03:55:31 2007
@@ -21,27 +21,14 @@
package org.apache.commons.i18n;
import java.util.Locale;
-import java.util.Map;
import org.apache.commons.i18n.bundles.MessageBundle;
-import junit.framework.TestCase;
-
/**
* @author Daniel Florey
*
*/
-public class XMLMessageProviderTest extends TestCase {
-
- public void setUp() {
- /* Make sure en_US is the default Locale for tests */
- Locale.setDefault(Locale.US);
- }
-
- public void tearDown() {
- /* Uninstall resource bundles after every test */
- MessageManager.clearMessageProviders();
- }
+public class XMLMessageProviderTest extends MessageProviderTestBase {
public void testInstallResourceBundle() {
MessageBundle testMessage = new MessageBundle("helloWorld");
@@ -70,38 +57,26 @@
}
// Try to parse non-XML file
- new XMLMessageProvider(Thread.currentThread().getContextClassLoader().getResourceAsStream("messageBundle.properties"));
+ try {
+ new XMLMessageProvider(
+ Thread.currentThread().getContextClassLoader().getResourceAsStream("messageBundle.properties"));
+ fail("Parsing non-XML file should fail");
+ }
+ catch(RuntimeException rtex) {
+ assertEquals("Error while parsing message file", rtex.getMessage());
+ }
}
public void testGetText() {
-// XMLMessageProvider.install("org.apache.commons-i18n.test",
-// Thread.currentThread().getContextClassLoader().getResourceAsStream("testMessages.xml"));
XMLMessageProvider xmlmp = new XMLMessageProvider(
Thread.currentThread().getContextClassLoader().getResourceAsStream("testMessages.xml"));
- assertEquals("Default locale", "hello world", xmlmp.getText("helloWorld", "title", Locale.US));
- assertEquals("Default locale", "hello world", xmlmp.getText("helloWorld", "title", Locale.UK));
- assertEquals("Additional locale", "Hallo Welt", xmlmp.getText("helloWorld", "title", Locale.GERMAN));
- assertEquals("Language and country using parent", "Hallo Welt", xmlmp.getText("helloWorld", "title",
- new Locale("de", "CH")));
- assertEquals("Language, country and variant using parent", "Hallo Welt", xmlmp.getText("helloWorld", "title",
- new Locale("de", "CH", "foo")));
- assertEquals("Fallback locale", "hello world", xmlmp.getText("helloWorld", "title", Locale.JAPANESE));
+ super.testGetText(xmlmp);
+
// TODO: Wait for Daniels reply on whether this is intended
// assertEquals("Fallback when only in default", "This entry is not translated to any other languages",
// xmlmp.getText("helloWorld", "notTranslated", Locale.GERMAN));
-// ResourceBundleMessageProvider.install("messageBundle2"); // Install another bundle
-// assertEquals("This message exists in another resource bundle", xmlmp.getText("onlyInSecond", "title", Locale.US));
-
- try {
- xmlmp.getText("nonExistentId", "nonExistentEntry", Locale.US);
- fail("ID does not exist, should throw exception");
- }
- catch(MessageNotFoundException mnfex) {
- assertEquals("Message with key nonExistentId not found", mnfex.getMessage());
- }
-
// TODO: Wait for Daniels reply on whether this is intended
/*
try {
@@ -115,8 +90,6 @@
}
public void testGetTextVariants() {
-// XMLMessageProvider.install("org.apache.commons-i18n.variants",
-// Thread.currentThread().getContextClassLoader().getResourceAsStream("variantTestMessages.xml"));
XMLMessageProvider xmlmp = new XMLMessageProvider(
Thread.currentThread().getContextClassLoader().getResourceAsStream("variantTestMessages.xml"));
@@ -127,48 +100,10 @@
}
public void testGetEntries() {
-// XMLMessageProvider.install("org.apache.commons-i18n.test",
-// Thread.currentThread().getContextClassLoader().getResourceAsStream("testMessages.xml"));
- Map usEntries = new XMLMessageProvider(
- Thread.currentThread().getContextClassLoader().getResourceAsStream("testMessages.xml")).
- getEntries("helloWorld", Locale.US);
- assertEquals("Default locale, no of entries", 5, usEntries.size());
- assertEquals("Default locale, titel", "hello world", usEntries.get("title"));
- assertEquals("Default locale, text", "hello world, we are in {0}.", usEntries.get("text"));
- assertEquals("Default locale, text",
- "sample summary to test english messages. Country = {0}, language = {1} and variant = {2}.",
- usEntries.get("summary"));
- assertEquals("Default locale, text",
- "sample deatils to test english messages. Country = {0}, language = {1} and variant = {2}.",
- usEntries.get("details"));
- assertEquals("This entry is not translated to any other languages (XML)", usEntries.get("notTranslated"));
-
- Map germanEntries = new XMLMessageProvider(
- Thread.currentThread().getContextClassLoader().getResourceAsStream("testMessages.xml")).
- getEntries("helloWorld", Locale.GERMAN);
- assertEquals("No of entries", 4, germanEntries.size());
- assertEquals("Hallo Welt", germanEntries.get("title"));
- assertEquals("Wir sind in {0}.", germanEntries.get("text"));
- assertEquals("sample summary to test german messages. Country = {0}, language = {1} and variant = {2}.",
- germanEntries.get("summary"));
- assertEquals("sample deatils to test german messages. Country = {0}, language = {1} and variant = {2}.",
- germanEntries.get("details"));
-// assertEquals("This entry is not translated to any other languages", germanEntries.get("notTranslated"));
-
- Map japaneseEntries = new XMLMessageProvider(
- Thread.currentThread().getContextClassLoader().getResourceAsStream("testMessages.xml")).
- getEntries("helloWorld", Locale.JAPANESE);
- assertEquals("Fallback locale, no of entries", 5, japaneseEntries.size());
-
- assertEquals("Fallback locale, titel", "hello world", usEntries.get("title"));
- assertEquals("Fallback locale, text", "hello world, we are in {0}.", japaneseEntries.get("text"));
- assertEquals("Fallback locale, text",
- "sample summary to test english messages. Country = {0}, language = {1} and variant = {2}.",
- japaneseEntries.get("summary"));
- assertEquals("Fallback locale, text",
- "sample deatils to test english messages. Country = {0}, language = {1} and variant = {2}.",
- japaneseEntries.get("details"));
- assertEquals("This entry is not translated to any other languages (XML)", japaneseEntries.get("notTranslated"));
+ final XMLMessageProvider xmlMessageProvider = new XMLMessageProvider(
+ Thread.currentThread().getContextClassLoader().getResourceAsStream("testMessages.xml"));
+
+ super.testGetEntries(xmlMessageProvider, true);
}
/**
Modified: jakarta/commons/sandbox/i18n/trunk/src/test/testMessages.xml
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/i18n/trunk/src/test/testMessages.xml?view=diff&rev=533694&r1=533693&r2=533694
==============================================================================
--- jakarta/commons/sandbox/i18n/trunk/src/test/testMessages.xml (original)
+++ jakarta/commons/sandbox/i18n/trunk/src/test/testMessages.xml Mon Apr 30 03:55:31 2007
@@ -3,47 +3,47 @@
<!-- Feel free to insert your locale or correct mispellings here -->
<message id="helloWorld">
<locale language="en">
- <entry key="title">hello world</entry>
- <entry key="text">hello world, we are in {0}.</entry>
- <entry key="summary">sample summary to test english messages. Country = {0}, language = {1} and variant = {2}.</entry>
- <entry key="details">sample deatils to test english messages. Country = {0}, language = {1} and variant = {2}.</entry>
- <entry key="notTranslated">This entry is not translated to any other languages (XML)</entry>
+ <entry key="title">Hello World</entry>
+ <entry key="text">Hello World, we are in {0}.</entry>
+<!-- <entry key="summary">sample summary to test english messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
+<!-- <entry key="details">sample deatils to test english messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
+ <entry key="notTranslated">This entry is not translated to any other languages</entry>
</locale>
<locale language="pt" country="br">
<entry key="title">olo mundo</entry>
<entry key="text">hello mundo, nós estamos no {0}.</entry>
- <entry key="summary">sample summary to test portuguese messages. Country = {0}, language = {1} and variant = {2}.</entry>
- <entry key="details">sample deatils to test portuguese messages. Country = {0}, language = {1} and variant = {2}.</entry>
+<!-- <entry key="summary">sample summary to test portuguese messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
+<!-- <entry key="details">sample deatils to test portuguese messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
</locale>
<locale language="es">
<entry key="title">hola mundo</entry>
<entry key="text">hola mundo, estamos em los {0}.</entry>
- <entry key="summary">sample summary to test spanish messages. Country = {0}, language = {1} and variant = {2}.</entry>
- <entry key="details">sample deatils to test spanish messages. Country = {0}, language = {1} and variant = {2}.</entry>
+<!-- <entry key="summary">sample summary to test spanish messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
+<!-- <entry key="details">sample deatils to test spanish messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
</locale>
<locale language="it">
<entry key="title">ciao mondo</entry>
<entry key="text">ciao mondo, siamo negli {0}.</entry>
- <entry key="summary">sample summary to test italian messages. Country = {0}, language = {1} and variant = {2}.</entry>
- <entry key="details">sample deatils to test italian messages. Country = {0}, language = {1} and variant = {2}.</entry>
+<!-- <entry key="summary">sample summary to test italian messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
+<!-- <entry key="details">sample deatils to test italian messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
</locale>
<locale language="fr">
<entry key="title">bonjour monde</entry>
<entry key="text">bonjour monde, nous sommes aux {0}.</entry>
- <entry key="summary">sample summary to test francais messages. Country = {0}, language = {1} and variant = {2}.</entry>
- <entry key="details">sample deatils to test francais messages. Country = {0}, language = {1} and variant = {2}.</entry>
+<!-- <entry key="summary">sample summary to test francais messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
+<!-- <entry key="details">sample deatils to test francais messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
</locale>
<locale language="du">
<entry key="title">hello wereld</entry>
<entry key="text">hello wereld, zijn wij in de {0}.</entry>
- <entry key="summary">sample summary to test dutch messages. Country = {0}, language = {1} and variant = {2}.</entry>
- <entry key="details">sample deatils to test dutch messages. Country = {0}, language = {1} and variant = {2}.</entry>
+<!-- <entry key="summary">sample summary to test dutch messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
+<!-- <entry key="details">sample deatils to test dutch messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
</locale>
<locale language="de">
<entry key="title">Hallo Welt</entry>
- <entry key="text">Wir sind in {0}.</entry>
- <entry key="summary">sample summary to test german messages. Country = {0}, language = {1} and variant = {2}.</entry>
- <entry key="details">sample deatils to test german messages. Country = {0}, language = {1} and variant = {2}.</entry>
+ <entry key="text">Hallo Welt, wir sind in {0}.</entry>
+<!-- <entry key="summary">sample summary to test german messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
+<!-- <entry key="details">sample deatils to test german messages. Country = {0}, language = {1} and variant = {2}.</entry>-->
</locale>
</message>
</messages>
Modified: jakarta/commons/sandbox/i18n/trunk/xdocs/examples.xml
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/i18n/trunk/xdocs/examples.xml?view=diff&rev=533694&r1=533693&r2=533694
==============================================================================
--- jakarta/commons/sandbox/i18n/trunk/xdocs/examples.xml (original)
+++ jakarta/commons/sandbox/i18n/trunk/xdocs/examples.xml Mon Apr 30 03:55:31 2007
@@ -176,8 +176,8 @@
")");
stmt.execute("INSERT INTO messages VALUES ('enterFirstName', 'en', 'Please enter your first name')");
stmt.execute("INSERT INTO messages VALUES ('enterLastName', 'en', 'Please enter your last name')");
- stmt.execute("INSERT INTO messages VALUES ('enterFirstName', 'sv', 'Vänligen ange ditt förnamn')");
- stmt.execute("INSERT INTO messages VALUES ('enterLastName', 'sv', 'Vänligen ange ditt efternamn')");
+ stmt.execute("INSERT INTO messages VALUES ('enterFirstName', 'sv', 'Vänligen ange ditt förnamn')");
+ stmt.execute("INSERT INTO messages VALUES ('enterLastName', 'sv', 'Vänligen ange ditt efternamn')");
stmt.execute(
"CREATE TABLE errors ( " +
" 'id' VARCHAR(30), " +
@@ -191,7 +191,7 @@
")");
stmt.execute("INSERT INTO errors VALUES (" +
" 'identicalNames', 'sv', " +
- " 'Fel! Identiska namn.', 'Du angav samma namn som både förnamn och efternamn'" +
+ " 'Fel! Identiska namn.', 'Du angav samma namn som både förnamn och efternamn'" +
")");
stmt.close();
conn.close();
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org