You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2007/07/28 22:28:11 UTC

svn commit: r560608 - in /tapestry/tapestry4/trunk/tapestry-framework/src: java/org/apache/tapestry/dojo/ js/dojo-0.4.3/ js/dojo-0.4.3/src/date/ js/dojo-0.4.3/src/widget/ test/org/apache/tapestry/dojo/

Author: jkuhnert
Date: Sat Jul 28 13:28:10 2007
New Revision: 560608

URL: http://svn.apache.org/viewvc?view=rev&rev=560608
Log:
Fixes TAPESTRY-1551.  New layered build system wasn't working with the i18n pre-bundled locale resource logic.

Modified:
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AjaxShellDelegate.java
    tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo.js
    tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo2.js
    tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/date/format.js
    tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/widget/TimePicker.js
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AjaxShellDelegate.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AjaxShellDelegate.java?view=diff&rev=560608&r1=560607&r2=560608
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AjaxShellDelegate.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/dojo/AjaxShellDelegate.java Sat Jul 28 13:28:10 2007
@@ -13,17 +13,13 @@
 // limitations under the License.
 package org.apache.tapestry.dojo;
 
-import java.util.Locale;
-
 import org.apache.hivemind.util.Defense;
-import org.apache.tapestry.IAsset;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IPage;
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.*;
 import org.apache.tapestry.html.Shell;
 import org.apache.tapestry.json.JSONObject;
 
+import java.util.Locale;
+
 /**
  * The default rendering delegate responseible for include the dojo sources in
  * to the {@link Shell} component.
@@ -41,8 +37,8 @@
     /** Client side critical log level. */
     public static final String BROWSER_LOG_CRITICAL="CRITICAL";
 
-	private static final String SYSTEM_NEWLINE= (String)java.security.AccessController.doPrivileged(
-            new sun.security.action.GetPropertyAction("line.separator"));
+    private static final String SYSTEM_NEWLINE= (String)java.security.AccessController.doPrivileged(
+      new sun.security.action.GetPropertyAction("line.separator"));
 
     private IAsset _dojoSource;
 
@@ -70,6 +66,12 @@
 
     private boolean _debugAtAllCosts;
 
+    /** Default list of pre-bundled dojo supported locales */
+    protected String[] SUPPORTED_LOCALES = { "en-us", "en", "de-de", "de", "en-gb",
+                                             "es-es", "es", "fr-fr", "fr", "zh-cn",
+                                             "zh-tw", "zh" , "it-it", "it", "ja-jp",
+                                             "ja", "ko-kr", "ko", "pt-br", "pt", "xx"};
+
     /**
      * {@inheritDoc}
      */
@@ -83,7 +85,10 @@
         // .js files to included in the document head so that javascript errors
         // are able to resolve to the context of the file instead of just "dojo.js"
 
-        dojoConfig.put("isDebug", _debug);
+        if (_debug)
+        {
+            dojoConfig.put("isDebug", _debug);
+        }
 
         if (_debugAtAllCosts)
             dojoConfig.put("debugAtAllCosts", _debugAtAllCosts);
@@ -107,16 +112,22 @@
 
         Locale locale = cycle.getPage().getLocale();
 
-        dojoConfig.put("locale", locale.getLanguage().toLowerCase()
-                                 + ((locale.getCountry() != null && locale.getCountry().trim().length() > 0)
-                                    ? "-" + locale.getCountry().toLowerCase()
-                                    : ""));
+        String localeStr = locale.getLanguage().toLowerCase()
+                           + ((locale.getCountry() != null && locale.getCountry().trim().length() > 0)
+                              ? "-" + locale.getCountry().toLowerCase()
+                              : "");
+
+        if (isLocaleSupported(localeStr))
+        {
+            dojoConfig.put("locale", localeStr);
+        }
 
         // Write the required script includes and dojo.requires
 
         StringBuffer str = new StringBuffer("<script type=\"text/javascript\">");
         str.append("djConfig = ").append(dojoConfig.toString())
-          .append(" </script>" + SYSTEM_NEWLINE + SYSTEM_NEWLINE + " ");
+          .append(" </script>")
+          .append(SYSTEM_NEWLINE).append(SYSTEM_NEWLINE);
 
         // include the core dojo.js package
 
@@ -142,10 +153,10 @@
             String logRequire = _consoleEnabled ? "dojo.require(\"dojo.debug.console\");" + SYSTEM_NEWLINE
                                 : "dojo.require(\"dojo.logging.Logger\");" + SYSTEM_NEWLINE;
 
-            str.append(SYSTEM_NEWLINE + "<script type=\"text/javascript\">" + SYSTEM_NEWLINE);
+            str.append(SYSTEM_NEWLINE).append("<script type=\"text/javascript\">").append(SYSTEM_NEWLINE);
             str.append(logRequire)
               .append("dojo.log.setLevel(dojo.log.getLevel(\"").append(_browserLogLevel)
-              .append("\"));" + SYSTEM_NEWLINE)
+              .append("\"));").append(SYSTEM_NEWLINE)
               .append("</script>");
         }
 
@@ -157,10 +168,10 @@
             tapestryUrl = tapestryUrl.substring(0, tapestryUrl.length() - 1);
         }
 
-        str.append(SYSTEM_NEWLINE + "<script type=\"text/javascript\">" + SYSTEM_NEWLINE)
+        str.append(SYSTEM_NEWLINE).append("<script type=\"text/javascript\">").append(SYSTEM_NEWLINE)
           .append("dojo.registerModulePath(\"tapestry\", \"")
-          .append(tapestryUrl).append("\");" + SYSTEM_NEWLINE);
-        str.append("</script>" + SYSTEM_NEWLINE);
+          .append(tapestryUrl).append("\");").append(SYSTEM_NEWLINE);
+        str.append("</script>").append(SYSTEM_NEWLINE);
 
         // include core tapestry.js package
 
@@ -169,13 +180,37 @@
 
         // namespace registration
 
-        str.append(SYSTEM_NEWLINE + "<script type=\"text/javascript\">" + SYSTEM_NEWLINE);
-        str.append("dojo.require(\"tapestry.namespace\");" + SYSTEM_NEWLINE)
-          .append("tapestry.requestEncoding='").append(cycle.getEngine().getOutputEncoding())
-          .append("';" + SYSTEM_NEWLINE).append("</script>");
+        str.append(SYSTEM_NEWLINE).append("<script type=\"text/javascript\">").append(SYSTEM_NEWLINE);
+        str.append("dojo.require(\"tapestry.namespace\");").append(SYSTEM_NEWLINE)
+          .append("tapestry.requestEncoding='")
+          .append(cycle.getEngine().getOutputEncoding()).append("';")
+          .append(SYSTEM_NEWLINE).append("</script>");
 
         writer.printRaw(str.toString());
         writer.println();
+    }
+
+    /**
+     * Checks if the provided locale string matches one of the predefined {@link #SUPPORTED_LOCALES}
+     * in the dojo javascript library.
+     *
+     * @param locale
+     *          The Dojo formatted locale string to check.
+     *
+     * @return True if locale is supported and ok to define in dojoConfig - false otherwise.
+     */
+    protected boolean isLocaleSupported(String locale)
+    {
+        if (locale == null)
+            return false;
+
+        for (int i=0; i < SUPPORTED_LOCALES.length; i++)
+        {
+            if (locale.equals(SUPPORTED_LOCALES[i]))
+                return true;
+        }
+
+        return false;
     }
 
     /**

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo.js?view=diff&rev=560608&r1=560607&r2=560608
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo.js (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo.js Sat Jul 28 13:28:10 2007
@@ -515,7 +515,7 @@
 if(_81){
 var _85=_81.split(",");
 for(var i=0;i<_85.length;i++){
-if(_82.indexOf(_85[i])==0){
+if(_82.indexOf(_85[i])==0 || _85[i].indexOf(_82)==0){
 if(_85[i].length>_84.length){
 _84=_85[i];
 }

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo2.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo2.js?view=diff&rev=560608&r1=560607&r2=560608
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo2.js (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/dojo2.js Sat Jul 28 13:28:10 2007
@@ -1142,8 +1142,8 @@
 dojo.require("dojo.lang.func");
 dojo.require("dojo.string.common");
 dojo.require("dojo.i18n.common");
-dojo.requireLocalization("dojo.i18n.calendar","gregorian");
-dojo.requireLocalization("dojo.i18n.calendar","gregorianExtras");
+dojo.requireLocalization("dojo.i18n.calendar","gregorian", null, dojo.hostenv.localesGenerated.join(","));
+dojo.requireLocalization("dojo.i18n.calendar","gregorianExtras", null, dojo.hostenv.localesGenerated.join(","));
 (function(){
 dojo.date.format=function(_f4,_f5){
 if(typeof _f5=="string"){

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/date/format.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/date/format.js?view=diff&rev=560608&r1=560607&r2=560608
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/date/format.js (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/date/format.js Sat Jul 28 13:28:10 2007
@@ -6,8 +6,8 @@
 dojo.require("dojo.lang.func");
 dojo.require("dojo.string.common");
 dojo.require("dojo.i18n.common");
-dojo.requireLocalization("dojo.i18n.calendar","gregorian",null,"zh-cn,zh-hk,de,ko,zh-tw,zh,ja,fi,pt-br,fr,es,ROOT,hu,en,it,sv,nl,pt");
-dojo.requireLocalization("dojo.i18n.calendar","gregorianExtras",null,"zh,ja,ROOT");
+dojo.requireLocalization("dojo.i18n.calendar","gregorian",null, dojo.hostenv.localesGenerated.join(","));
+dojo.requireLocalization("dojo.i18n.calendar","gregorianExtras",null, dojo.hostenv.localesGenerated.join(","));
 (function(){
 dojo.date.format=function(_1,_2){
 if(typeof _2=="string"){

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/widget/TimePicker.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/widget/TimePicker.js?view=diff&rev=560608&r1=560607&r2=560608
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/widget/TimePicker.js (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo-0.4.3/src/widget/TimePicker.js Sat Jul 28 13:28:10 2007
@@ -6,7 +6,7 @@
 dojo.require("dojo.date.format");
 dojo.require("dojo.dom");
 dojo.require("dojo.html.style");
-dojo.requireLocalization("dojo.i18n.calendar","gregorian",null,"zh-cn,zh-hk,de,ko,zh-tw,zh,ja,fi,pt-br,fr,es,ROOT,hu,en,it,sv,nl,pt");
+dojo.requireLocalization("dojo.i18n.calendar","gregorian",null, dojo.hostenv.localesGenerated.join(","));
 dojo.requireLocalization("dojo.widget","TimePicker",null,"ROOT");
 dojo.widget.defineWidget("dojo.widget.TimePicker",dojo.widget.HtmlWidget,function(){
 this.time="";

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java?view=diff&rev=560608&r1=560607&r2=560608
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/dojo/AjaxShellDelegateTest.java Sat Jul 28 13:28:10 2007
@@ -13,21 +13,16 @@
 // limitations under the License.
 package org.apache.tapestry.dojo;
 
-import java.util.Locale;
-
 import org.apache.hivemind.Resource;
-import org.apache.tapestry.BaseComponentTestCase;
-import org.apache.tapestry.IAsset;
-import org.apache.tapestry.IEngine;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IPage;
-import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.*;
 import org.apache.tapestry.engine.IEngineService;
 import org.apache.tapestry.engine.ILink;
 import static org.easymock.EasyMock.checkOrder;
 import static org.easymock.EasyMock.expect;
 import org.testng.annotations.Test;
 
+import java.util.Locale;
+
 
 /**
  * Tests basic functionality of {@link AjaxShellDelegate}.
@@ -101,11 +96,11 @@
         
         verify();
         
-        assertBuffer("<script type=\"text/javascript\">djConfig = {\"isDebug\":false,"
+        assertBuffer("<script type=\"text/javascript\">djConfig = {"
                 + "\"baseRelativePath\":\"http:///dojo/path\","
                 +"\"parseWidgets\":false,\"locale\":\"en-us\"} </script>" + SYSTEM_NEWLINE +
                 SYSTEM_NEWLINE + 
-                " <script type=\"text/javascript\" src=\"http:///dojo/path/dojo.js\"></script>" + SYSTEM_NEWLINE
+                "<script type=\"text/javascript\" src=\"http:///dojo/path/dojo.js\"></script>" + SYSTEM_NEWLINE
                 + "<script type=\"text/javascript\">" + SYSTEM_NEWLINE + 
                 "dojo.registerModulePath(\"tapestry\", \"/tapestry\");" + SYSTEM_NEWLINE +
                 "</script>" + SYSTEM_NEWLINE +
@@ -161,7 +156,7 @@
         assertBuffer("<script type=\"text/javascript\">djConfig = {\"isDebug\":true,\"baseRelativePath\":\"http:///dojo/path\"," +
                      "\"parseWidgets\":false,\"locale\":\"en-gb\"} </script>" + SYSTEM_NEWLINE +
                      SYSTEM_NEWLINE +
-                     " <script type=\"text/javascript\" src=\"http:///dojo/path/dojo.js\"></script>" + SYSTEM_NEWLINE +
+                     "<script type=\"text/javascript\" src=\"http:///dojo/path/dojo.js\"></script>" + SYSTEM_NEWLINE +
                      "<script type=\"text/javascript\">" + SYSTEM_NEWLINE +
                      "dojo.require(\"dojo.debug.console\");" + SYSTEM_NEWLINE +
                      "dojo.log.setLevel(dojo.log.getLevel(\"DEBUG\"));" + SYSTEM_NEWLINE +