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();
      }
  }
  
  
  


Reply via email to