rsitze 2002/09/20 13:14:30
Modified: java/test/utils TestMessages.java
Added: java/test/utils axisNLS.properties Messages.java
Log:
Test cases for message extensions:
- for all messages test, verify that # keys found exceeds a threshold (currently
500).
this ensures that we linked back to org.apache.axis.utils.axisNLS correctly.
- verify that we find keys in org.apache.axis.utils.axisNLS
- verify that we find key in test.utils.axisNLS
Revision Changes Path
1.18 +25 -3 xml-axis/java/test/utils/TestMessages.java
Index: TestMessages.java
===================================================================
RCS file: /home/cvs/xml-axis/java/test/utils/TestMessages.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- TestMessages.java 20 Sep 2002 16:50:48 -0000 1.17
+++ TestMessages.java 20 Sep 2002 20:14:30 -0000 1.18
@@ -14,13 +14,12 @@
import junit.framework.TestCase;
import junit.framework.TestSuite;
-import org.apache.axis.utils.Messages;
-
/**
* This TestCase verifies:
* - the contents of axisNLS.properties for well-formedness, and
* - tests calls to Messages.getMessage.
+ * - tests Messages extension mechanism
*/
public class TestMessages extends TestCase {
public TestMessages(String name) {
@@ -32,14 +31,19 @@
}
/**
- * Call getMessage for each key in axisNLS.properties to make sure they are all
well formed.
+ * Call getMessage for each key in axisNLS.properties
+ * to make sure they are all well formed.
*/
+ private static final int expectedNumberKeysThreshold = 500;
public void testAllMessages() {
String arg0 = "arg0";
String arg1 = "arg1";
String[] args = {arg0, arg1, "arg2"};
+
+ int count = 0;
Enumeration keys = Messages.getResourceBundle().getKeys();
while (keys.hasMoreElements()) {
+ count++;
String key = (String) keys.nextElement();
try {
String message = Messages.getMessage(key);
@@ -51,6 +55,9 @@
throw new AssertionFailedError("Test failure on key = " + key + ":
" + iae.getMessage());
}
}
+
+ assertTrue("expected # keys greater than " + expectedNumberKeysThreshold +
", only got " + count + "! VERIFY HIERARCHICAL MESSAGES WORK/LINKED CORRECTLY",
+ count > expectedNumberKeysThreshold);
} // testAllMessages
/**
@@ -103,6 +110,21 @@
throw new AssertionFailedError("Test failure: " + t.getMessage());
}
} // testTestMessages
+
+
+ /**
+ * Make sure the extended test messages come out as we expect them to.
+ */
+ public void testTestExtendedMessages() {
+ try {
+ String message = Messages.getMessage("extended.test00");
+ String expected = "message in extension file";
+ assertTrue("expected (" + expected + ") got (" + message + ")",
expected.equals(message));
+ }
+ catch (Throwable t) {
+ throw new AssertionFailedError("Test failure: " + t.getMessage());
+ }
+ } // testTestExtendedMessages
private static final String LS = System.getProperty("line.separator");
1.1 xml-axis/java/test/utils/axisNLS.properties
Index: axisNLS.properties
===================================================================
# Extension to org.apache.axis.i18n.resource.properties.
extended.test00=message in extension file
1.1 xml-axis/java/test/utils/Messages.java
Index: Messages.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Axis" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package test.utils;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
/**
* These two imports added to facilitate copying to different packages...
*
* import org.apache.axis.i18n.MessageBundle;
* import org.apache.axis.i18n.MessagesConstants;
*/
import org.apache.axis.i18n.MessageBundle;
import org.apache.axis.i18n.MessagesConstants;
/**
* @see org.apache.axis.i18n.Messages
*
* Changed projectName to local package (test.utils).
*
* @author Richard A. Sitze ([EMAIL PROTECTED])
* @author Karl Moss ([EMAIL PROTECTED])
* @author Glen Daniels ([EMAIL PROTECTED])
*/
public class Messages {
private static final Class thisClass = Messages.class;
private static final String projectName = "test.utils";
private static final String resourceName = MessagesConstants.resourceName;
private static final Locale locale = MessagesConstants.locale;
private static final String packageName = getPackage(thisClass.getName());
private static final ClassLoader classLoader = thisClass.getClassLoader();
private static final ResourceBundle parent =
(MessagesConstants.rootPackageName == packageName)
? null
: MessagesConstants.rootBundle;
/***** NO NEED TO CHANGE ANYTHING BELOW *****/
private static final MessageBundle messageBundle =
new MessageBundle(projectName, packageName, resourceName,
locale, classLoader, parent);
/**
* Get a message from resource.properties from the package of the given object.
* @param caller The calling object, used to get the package name and class
loader
* @param locale The locale
* @param key The resource key
* @return The formatted message
*/
public static String getMessage(String key)
throws MissingResourceException
{
return messageBundle.getMessage(key);
}
/**
* Get a message from resource.properties from the package of the given object.
* @param caller The calling object, used to get the package name and class
loader
* @param locale The locale
* @param key The resource key
* @param arg0 The argument to place in variable {0}
* @return The formatted message
*/
public static String getMessage(String key, String arg0)
throws MissingResourceException
{
return messageBundle.getMessage(key, arg0);
}
/**
* Get a message from resource.properties from the package of the given object.
* @param caller The calling object, used to get the package name and class
loader
* @param locale The locale
* @param key The resource key
* @param arg0 The argument to place in variable {0}
* @param arg1 The argument to place in variable {1}
* @return The formatted message
*/
public static String getMessage(String key, String arg0, String arg1)
throws MissingResourceException
{
return messageBundle.getMessage(key, arg0, arg1);
}
/**
* Get a message from resource.properties from the package of the given object.
* @param caller The calling object, used to get the package name and class
loader
* @param locale The locale
* @param key The resource key
* @param arg0 The argument to place in variable {0}
* @param arg1 The argument to place in variable {1}
* @param arg2 The argument to place in variable {2}
* @return The formatted message
*/
public static String getMessage(String key, String arg0, String arg1, String
arg2)
throws MissingResourceException
{
return messageBundle.getMessage(key, arg0, arg1, arg2);
}
/**
* Get a message from resource.properties from the package of the given object.
* @param caller The calling object, used to get the package name and class
loader
* @param locale The locale
* @param key The resource key
* @param arg0 The argument to place in variable {0}
* @param arg1 The argument to place in variable {1}
* @param arg2 The argument to place in variable {2}
* @param arg3 The argument to place in variable {3}
* @return The formatted message
*/
public static String getMessage(String key, String arg0, String arg1, String
arg2, String arg3)
throws MissingResourceException
{
return messageBundle.getMessage(key, arg0, arg1, arg2, arg3);
}
/**
* Get a message from resource.properties from the package of the given object.
* @param caller The calling object, used to get the package name and class
loader
* @param locale The locale
* @param key The resource key
* @param arg0 The argument to place in variable {0}
* @param arg1 The argument to place in variable {1}
* @param arg2 The argument to place in variable {2}
* @param arg3 The argument to place in variable {3}
* @param arg4 The argument to place in variable {4}
* @return The formatted message
*/
public static String getMessage(String key, String arg0, String arg1, String
arg2, String arg3, String arg4)
throws MissingResourceException
{
return messageBundle.getMessage(key, arg0, arg1, arg2, arg3, arg4);
}
/**
* Get a message from resource.properties from the package of the given object.
* @param caller The calling object, used to get the package name and class
loader
* @param locale The locale
* @param key The resource key
* @param array An array of objects to place in corresponding variables
* @return The formatted message
*/
public static String getMessage(String key, String[] args)
throws MissingResourceException
{
return messageBundle.getMessage(key, args);
}
public static ResourceBundle getResourceBundle() {
return messageBundle.getResourceBundle();
}
public static MessageBundle getMessageBundle() {
return messageBundle;
}
private static final String getPackage(String name) {
return name.substring(0, name.lastIndexOf('.')).intern();
}
}