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 [EMAIL PROTECTED] 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"};
+
/**
* [EMAIL PROTECTED]
*/
@@ -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
[EMAIL PROTECTED] #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 [EMAIL PROTECTED] 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 +