portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From morci...@apache.org
Subject cvs commit: jakarta-jetspeed/src/java/org/apache/jetspeed/services/customlocalization TestLocalization.java JetspeedLocalizationService.java
Date Thu, 22 May 2003 17:45:18 GMT
morciuch    2003/05/22 10:45:18

  Modified:    build    build.xml
               src/java/org/apache/jetspeed/modules/localization
                        JetspeedLocalization_en.properties
               src/java/org/apache/jetspeed/services/customlocalization
                        JetspeedLocalizationService.java
  Added:       src/java/org/apache/jetspeed/services/customlocalization
                        TestLocalization.java
  Log:
  Additional patch for Bugzilla issue# 17715 by Massimiliano Dessė. This patch has to do with
failure to use default bundle when no translation exists for particular language.
  
  Also, added TestLocalization unit test.
  
  Revision  Changes    Path
  1.195     +1 -0      jakarta-jetspeed/build/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/build/build.xml,v
  retrieving revision 1.194
  retrieving revision 1.195
  diff -u -r1.194 -r1.195
  --- build.xml	20 May 2003 07:14:49 -0000	1.194
  +++ build.xml	22 May 2003 17:45:17 -0000	1.195
  @@ -1041,6 +1041,7 @@
               <test name="org.apache.jetspeed.services.registry.TestRegistryCategories"/>
               <test name="org.apache.jetspeed.cache.TestFileCache"/>
               <test name="org.apache.jetspeed.util.TestOverwriteProperties"/>   
  +            <test name="org.apache.jetspeed.services.customlocalization.TestLocalization"/>
            
   <!--            <test name="org.apache.jetspeed.services.registry.TestRegistryPersistence"/>
-->
           </junit>
   
  
  
  
  1.31      +3 -1      jakarta-jetspeed/src/java/org/apache/jetspeed/modules/localization/JetspeedLocalization_en.properties
  
  Index: JetspeedLocalization_en.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/localization/JetspeedLocalization_en.properties,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- JetspeedLocalization_en.properties	12 May 2003 16:11:05 -0000	1.30
  +++ JetspeedLocalization_en.properties	22 May 2003 17:45:18 -0000	1.31
  @@ -206,3 +206,5 @@
   
   BOTTOM_SUPPORT_MSG=Support and Additional Information
   
  +# Do not translate this into other languages - test purposes only
  +_TEST_=Do not translate
  
  
  
  1.6       +115 -12   jakarta-jetspeed/src/java/org/apache/jetspeed/services/customlocalization/JetspeedLocalizationService.java
  
  Index: JetspeedLocalizationService.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/customlocalization/JetspeedLocalizationService.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- JetspeedLocalizationService.java	11 Apr 2003 18:08:48 -0000	1.5
  +++ JetspeedLocalizationService.java	22 May 2003 17:45:18 -0000	1.6
  @@ -1,3 +1,5 @@
  +package org.apache.jetspeed.services.customlocalization;
  +
   /* ====================================================================
    * The Apache Software License, Version 1.1
    *
  @@ -50,30 +52,86 @@
    * individuals on behalf of the Apache Software Foundation.  For more
    * information on the Apache Software Foundation, please see
    * <http://www.apache.org/>.
  - */
  -
  -package org.apache.jetspeed.services.customlocalization;
  -
  -/**
  - * This service handles the generation of unique identifiers
    *
  - * @author <a href="mailto:desmax74@yahoo.it">Dessė Massimiliano</a>
  - * @version $Id$
    */
   
  -// Java imports
   import java.util.Locale;
  +import java.util.ResourceBundle;
   
  -// Turbine imports
   import org.apache.turbine.services.localization.TurbineLocalizationService;
  +import org.apache.turbine.services.resources.TurbineResources;
   import org.apache.turbine.util.RunData;
   
  -// Jetspeed imports
   import org.apache.jetspeed.om.security.JetspeedUser;
   
  -
  +/**
  + * <p>This class is the single point of access to all localization
  + * resources.  It caches different ResourceBundles for different
  + * Locales.</p>
  + * 
  + * Work in the same way of turbine except for getLocale(RunData data),
  + * turbine read the accept-language header in a http request,
  + * instead this method read the user.getPerm("language")
  + * from the RunData to obtain the language choice by the user
  + * without the browser language rule.
  + * If a user not change the language with a ChangeLanguagePortlet,
  + * and a user.getPerm("language")are not set,
  + * the "Accept-Language" header are read.
  + * 
  + * @author <a href="mailto:desmax74@yahoo.it">Dessė Massimiliano</a>
  + * @version $Id$
  + */
   public class JetspeedLocalizationService extends TurbineLocalizationService implements
CustomLocalizationService
   {
  +
  +    /**
  +     * Initialize list of default bundle names.
  +     * 
  +     * @param ignored
  +     */
  +    protected void initBundleNames(String ignored[])
  +    {
  +        bundleNames = TurbineResources.getStringArray("locale.default.bundles");
  +        String name = TurbineResources.getString("locale.default.bundle");
  +        if (name != null && name.length() > 0)
  +        {
  +            if (bundleNames == null || bundleNames.length <= 0)
  +            {
  +                bundleNames = (new String[] {name});
  +            }
  +            else
  +            {
  +                String array[] = new String[bundleNames.length + 1];
  +                array[0] = name;
  +                System.arraycopy(bundleNames, 0, array, 1, bundleNames.length);
  +                bundleNames = array;
  +            }
  +        }
  +        if (bundleNames == null)
  +        {
  +            bundleNames = new String[0];
  +        }
  +    }
  +
  +    /**
  +     * Call getDefaultBundleName() of turbine
  +     * 
  +     * @return 
  +     */
  +    public String getDefaultBundleName()
  +    {
  +        return bundleNames.length > 0 ? bundleNames[0] : "";
  +    }
  +
  +
  +    /**
  +     * This method read if a user has set getPerm("language")
  +     * to use another language or not.
  +     * If not set , accept-language of the request are returned.
  +     * 
  +     * @param data
  +     * @return 
  +     */
       public final Locale getLocale(RunData data)
       {
           JetspeedUser user = (JetspeedUser) data.getUser();
  @@ -104,4 +162,49 @@
               }
           }
       }
  +
  +    /**
  +     * Call searchKey(Locale locale, String key) to search the key in the Bundles
  +     * 
  +     * @param bundleName
  +     * @param locale
  +     * @param key
  +     * @return 
  +     */
  +    public String getString(String bundleName, Locale locale, String key)
  +    {
  +        return searchKey(locale,key);
  +    }
  +
  +    /**
  +     * Search the key in the first bundle, if is not found
  +     * search in the list of bundles
  +     * 
  +     * @param locale
  +     * @param key
  +     * @return 
  +     */
  +    private  String searchKey(Locale locale, String key)
  +    {
  +        String keyTemp=null;
  +        int i=0;
  +        boolean find=false;
  +        ResourceBundle rb ;
  +
  +        while ((null==keyTemp)&&(!find)&&(i<bundleNames.length))
  +        {
  +            rb = getBundle(bundleNames[i], locale);
  +            keyTemp=super.getStringOrNull(rb,key);
  +            if (keyTemp!=null)
  +            {
  +                find=true;
  +            }
  +            else i++;
  +        }
  +        return keyTemp;
  +    }
  +
  +
  +    private String bundleNames[];
  +
   }
  
  
  
  1.1                  jakarta-jetspeed/src/java/org/apache/jetspeed/services/customlocalization/TestLocalization.java
  
  Index: TestLocalization.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2000-2003 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 "Apache" and "Apache Software Foundation" and
   *     "Apache Jetspeed" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache" or
   *    "Apache Jetspeed", 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 org.apache.jetspeed.services.customlocalization;
  
  // Junit imports
  import junit.framework.Test;
  import junit.framework.TestSuite;
  import junit.framework.TestCase;
  
  // Java APIs
  import java.util.Locale;
  
  import org.apache.jetspeed.test.HeadlessBaseTest;
  
  /**
   * Command Line Test Localization routines.
   *
   * @author <a href="mailto:morciuch@">Mark Orciuch</a>
   * @version $Id: TestLocalization.java,v 1.1 2003/05/22 17:45:18 morciuch Exp $
   */
  
  public class TestLocalization extends HeadlessBaseTest
  {
      /**
       * Defines the testcase name for JUnit.
       * 
       * @param name   the testcase's name.
       */
      public TestLocalization(String name)
      {
          super(name);
      }
  
      /**
       * Start the tests.
       *
       * @param args the arguments. Not used
       */
      public static void main(String args[])
      {
          junit.awtui.TestRunner.main(new String[] {TestLocalization.class.getName()});
      }
  
      /**
       */
      public void setup()
      {
          System.out.println("Setup: Testing Localization");
      }
  
      /**
       * 
       * @return 
       */
      public static Test suite()
      {
          // All methods starting with "test" will be executed in the test suite.
          return new TestSuite(TestLocalization.class);
      }
  
  
      ///////////////////////////////////////////////////////////////////////////
  
      public void testGoodTranslation() throws Exception
      {
          Locale locale = null;
          String test = null;
  
          // Test English translation
          locale = new Locale("en", "US");
          test = CustomLocalization.getString("",locale, "LOGIN_USERNAME");
          System.out.println("Locale [en-US]: LOGIN_USER translation = " + test);
  
          assertTrue(test.equals("Username:"));
  
          // Test Polish translation
          locale = new Locale("pl", "");
          test = CustomLocalization.getString("",locale, "LOGIN_TITLE");
          System.out.println("Locale [pl]: LOGIN_TITLE translation = " + test);
  
          assertTrue(test.equals("Logowanie"));
      
          // Test case when only english translation exists
          locale = new Locale("my", "");
          test = CustomLocalization.getString("",locale, "_TEST_");
          System.out.println("Locale [my]: _TEST_ = " + test);
  
          assertTrue(test.equals("Do not translate"));
  
      }
  
  }
  
  
  
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org


Mime
View raw message