Author: freemant
Date: Wed Dec 20 01:29:16 2006
New Revision: 488996
URL: http://svn.apache.org/viewvc?view=rev&rev=488996
Log:
Added support for preferred language in PageTester.
Added:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationSetter.java
(with props)
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationSetterImpl.java
(with props)
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForLocale.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/services/
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/services/LocaleAppModule.java
(with props)
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/LocaleTest.java
(with props)
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LocalizationSetterTest.java
(with props)
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForLocale.html
(with props)
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForLocale_fr.html
(with props)
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationFilter.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageTester.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/ActionLinkTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/FormTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/IfTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/LoopTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LocalizationFilterTest.java
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForIf.html
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java?view=diff&rev=488996&r1=488995&r2=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalModule.java
Wed Dec 20 01:29:16 2006
@@ -262,13 +262,19 @@
public void contributeRequestFilters(OrderedConfiguration<RequestFilter>
configuration,
@InjectService("tapestry.RequestGlobals")
final RequestGlobals requestGlobals,
@Inject("${tapestry.file-check-interval}")
- long checkInterval, @Inject("${tapestry.supported-locales}")
- String localeNames)
+ long checkInterval, @InjectService("LocalizationSetter")
+ LocalizationSetter localizationSetter)
{
configuration.add("CheckForUpdates", new
CheckForUpdatesFilter(_updateListenerHub,
checkInterval), "before:*.*");
- configuration.add("Localization", new
LocalizationFilter(_threadLocale, localeNames));
+ configuration.add("Localization", new
LocalizationFilter(localizationSetter));
+ }
+
+ public LocalizationSetter
buildLocalizationSetter(@Inject("${tapestry.supported-locales}")
+ String localeNames)
+ {
+ return new LocalizationSetterImpl(_threadLocale, localeNames);
}
/**
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationFilter.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationFilter.java?view=diff&rev=488996&r1=488995&r2=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationFilter.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationFilter.java
Wed Dec 20 01:29:16 2006
@@ -14,15 +14,8 @@
package org.apache.tapestry.internal.services;
-import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newSet;
-import static
org.apache.tapestry.ioc.internal.util.CollectionFactory.newThreadSafeMap;
-
import java.io.IOException;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import org.apache.tapestry.ioc.services.ThreadLocale;
import org.apache.tapestry.services.Request;
import org.apache.tapestry.services.RequestFilter;
import org.apache.tapestry.services.RequestHandler;
@@ -35,93 +28,19 @@
*/
public class LocalizationFilter implements RequestFilter
{
- private final ThreadLocale _threadLocale;
-
- private final Locale _defaultLocale;
-
- private final Set<String> _acceptedLocaleNames;
-
- private final Map<String, Locale> _localeCache = newThreadSafeMap();
-
- public LocalizationFilter(ThreadLocale threadLocale, String
acceptedLocaleNames)
+ private final LocalizationSetter _setter;
+
+ public LocalizationFilter(LocalizationSetter setter)
{
- _threadLocale = threadLocale;
-
- String[] names = acceptedLocaleNames.split(",");
-
- _defaultLocale = toLocale(names[0]);
-
- _acceptedLocaleNames = newSet(names);
- }
-
- Locale toLocale(String localeName)
- {
- Locale result = _localeCache.get(localeName);
-
- if (result == null)
- {
- result = constructLocale(localeName);
- _localeCache.put(localeName, result);
- }
-
- return result;
- }
-
- private Locale constructLocale(String name)
- {
- String[] terms = name.split("_");
-
- switch (terms.length)
- {
- case 1:
- return new Locale(terms[0], "");
-
- case 2:
- return new Locale(terms[0], terms[1]);
-
- case 3:
-
- return new Locale(terms[0], terms[1], terms[2]);
-
- default:
-
- throw new IllegalArgumentException();
- }
+ _setter = setter;
}
public boolean service(Request request, Response response, RequestHandler
handler)
throws IOException
{
- Locale locale = extractLocaleFromRequest(request);
-
- _threadLocale.setLocale(locale);
+ _setter.setThreadLocale(request.getLocale());
return handler.service(request, response);
- }
-
- public Locale extractLocaleFromRequest(Request request)
- {
- String localeName = request.getLocale().toString();
-
- while (true)
- {
- if (_acceptedLocaleNames.contains(localeName))
- return toLocale(localeName);
-
- localeName = stripTerm(localeName);
-
- if (localeName.length() == 0)
- break;
- }
-
- return _defaultLocale;
- }
-
- static String stripTerm(String localeName)
- {
- int scorex = localeName.lastIndexOf('_');
-
- return scorex < 0 ? "" : localeName.substring(0, scorex);
}
}
Added:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationSetter.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationSetter.java?view=auto&rev=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationSetter.java
(added)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationSetter.java
Wed Dec 20 01:29:16 2006
@@ -0,0 +1,28 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.internal.services;
+
+import java.util.Locale;
+
+/**
+ * Sets the thread's locale given a desired locale. Note that the desired
locale is just a hint. It
+ * wil try to honor it but there is no guarantee that it will be used as is.
+ */
+public interface LocalizationSetter
+{
+
+ void setThreadLocale(Locale desiredLocale);
+
+}
\ No newline at end of file
Propchange:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationSetter.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationSetterImpl.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationSetterImpl.java?view=auto&rev=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationSetterImpl.java
(added)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationSetterImpl.java
Wed Dec 20 01:29:16 2006
@@ -0,0 +1,118 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.internal.services;
+
+import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newSet;
+import static
org.apache.tapestry.ioc.internal.util.CollectionFactory.newThreadSafeMap;
+
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.tapestry.ioc.services.ThreadLocale;
+
+/**
+ * Given a set of supported locales, for a specified desired locale, sets the
current thread's
+ * locale to a supported locale that is closest to the desired.
+ */
+public class LocalizationSetterImpl implements LocalizationSetter
+{
+ private final ThreadLocale _threadLocale;
+
+ private final Locale _defaultLocale;
+
+ private final Set<String> _acceptedLocaleNames;
+
+ private final Map<String, Locale> _localeCache = newThreadSafeMap();
+
+ public LocalizationSetterImpl(ThreadLocale threadLocale, String
acceptedLocaleNames)
+ {
+ _threadLocale = threadLocale;
+
+ String[] names = acceptedLocaleNames.split(",");
+
+ _defaultLocale = toLocale(names[0]);
+
+ _acceptedLocaleNames = newSet(names);
+ }
+
+ Locale toLocale(String localeName)
+ {
+ Locale result = _localeCache.get(localeName);
+
+ if (result == null)
+ {
+ result = constructLocale(localeName);
+ _localeCache.put(localeName, result);
+ }
+
+ return result;
+ }
+
+ private Locale constructLocale(String name)
+ {
+ String[] terms = name.split("_");
+
+ switch (terms.length)
+ {
+ case 1:
+ return new Locale(terms[0], "");
+
+ case 2:
+ return new Locale(terms[0], terms[1]);
+
+ case 3:
+
+ return new Locale(terms[0], terms[1], terms[2]);
+
+ default:
+
+ throw new IllegalArgumentException();
+ }
+ }
+
+ public void setThreadLocale(Locale desiredLocale)
+ {
+ Locale locale = findClosestAcceptedLocale(desiredLocale);
+
+ _threadLocale.setLocale(locale);
+ }
+
+ private Locale findClosestAcceptedLocale(Locale desiredLocale)
+ {
+ String localeName = desiredLocale.toString();
+
+ while (true)
+ {
+ if (_acceptedLocaleNames.contains(localeName))
+ return toLocale(localeName);
+
+ localeName = stripTerm(localeName);
+
+ if (localeName.length() == 0)
+ break;
+ }
+
+ return _defaultLocale;
+ }
+
+ static String stripTerm(String localeName)
+ {
+ int scorex = localeName.lastIndexOf('_');
+
+ return scorex < 0 ? "" : localeName.substring(0, scorex);
+ }
+
+}
Propchange:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/LocalizationSetterImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageTester.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageTester.java?view=diff&rev=488996&r1=488995&r2=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageTester.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/pagelevel/PageTester.java
Wed Dec 20 01:29:16 2006
@@ -17,6 +17,7 @@
import static org.apache.tapestry.ioc.internal.util.CollectionFactory.newMap;
import java.util.Collections;
+import java.util.Locale;
import java.util.Map;
import org.apache.tapestry.dom.Document;
@@ -25,6 +26,7 @@
import org.apache.tapestry.internal.TapestryAppInitializer;
import org.apache.tapestry.internal.services.ActionLinkTarget;
import org.apache.tapestry.internal.services.InAppInvocation;
+import org.apache.tapestry.internal.services.LocalizationSetter;
import org.apache.tapestry.internal.services.PageLinkTarget;
import org.apache.tapestry.ioc.Registry;
import org.apache.tapestry.ioc.internal.util.Defense;
@@ -49,6 +51,10 @@
private StrategyRegistry<InAppInvoker> _invokerRegistry;
+ private Locale _preferedLanguage;
+
+ private LocalizationSetter _localizationSetter;
+
/**
* Initializes a PageTester without overriding any services.
*
@@ -75,6 +81,9 @@
{
_registry = new TapestryAppInitializer(appPackage, appName, "test",
addDefaultOverrides(serviceOverrides)).getRegistry();
+ _localizationSetter = _registry.getService(
+ "tapestry.internal.LocalizationSetter",
+ LocalizationSetter.class);
buildInvokersRegistry();
}
@@ -170,10 +179,19 @@
// It is critical to clear the map before invoking an invocation
(render a page or click a
// link).
_invocationMap.clear();
+ setThreadLocale();
InAppInvoker invoker =
_invokerRegistry.getByInstance(invocation.getTarget());
return invoker.invoke(invocation);
}
+ private void setThreadLocale()
+ {
+ if (_preferedLanguage != null)
+ {
+ _localizationSetter.setThreadLocale(_preferedLanguage);
+ }
+ }
+
/**
* Simulates a submission of the form specified. The caller can specify
values for the form
* fields.
@@ -214,5 +232,10 @@
private boolean isHiddenFormField(Element element)
{
return element.getName().equals("input") &&
"hidden".equals(element.getAttribute("type"));
+ }
+
+ public void setPreferedLanguage(Locale preferedLanguage)
+ {
+ _preferedLanguage = preferedLanguage;
}
}
Added:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForLocale.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForLocale.java?view=auto&rev=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForLocale.java
(added)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/pages/TestPageForLocale.java
Wed Dec 20 01:29:16 2006
@@ -0,0 +1,23 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.integration.app2.pages;
+
+import org.apache.tapestry.annotations.ComponentClass;
+
[EMAIL PROTECTED]
+public class TestPageForLocale
+{
+
+}
Added:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/services/LocaleAppModule.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/services/LocaleAppModule.java?view=auto&rev=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/services/LocaleAppModule.java
(added)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/services/LocaleAppModule.java
Wed Dec 20 01:29:16 2006
@@ -0,0 +1,29 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.integration.app2.services;
+
+import org.apache.tapestry.ioc.MappedConfiguration;
+import org.apache.tapestry.ioc.annotations.Contribute;
+
+public class LocaleAppModule
+{
+ @Contribute("tapestry.ioc.ApplicationDefaults")
+ public static void contributeApplicationDefaults(
+ MappedConfiguration<String, String> configuration)
+ {
+ configuration.add("tapestry.supported-locales", "en,fr,de");
+ }
+
+}
Propchange:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app2/services/LocaleAppModule.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/ActionLinkTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/ActionLinkTest.java?view=diff&rev=488996&r1=488995&r2=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/ActionLinkTest.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/ActionLinkTest.java
Wed Dec 20 01:29:16 2006
@@ -18,6 +18,7 @@
import org.apache.tapestry.dom.Element;
import org.apache.tapestry.test.pagelevel.PageTester;
import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
public class ActionLinkTest extends Assert
@@ -36,6 +37,7 @@
assertTrue(doc.toString().contains("You chose: 123"));
}
+ @AfterMethod
public void after()
{
if (_tester != null)
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/FormTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/FormTest.java?view=diff&rev=488996&r1=488995&r2=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/FormTest.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/FormTest.java
Wed Dec 20 01:29:16 2006
@@ -21,6 +21,7 @@
import org.apache.tapestry.ioc.internal.util.CollectionFactory;
import org.apache.tapestry.test.pagelevel.PageTester;
import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
public class FormTest extends Assert
@@ -41,6 +42,7 @@
assertTrue(doc.toString().contains("You entered: hello"));
}
+ @AfterMethod
public void after()
{
if (_tester != null)
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/IfTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/IfTest.java?view=diff&rev=488996&r1=488995&r2=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/IfTest.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/IfTest.java
Wed Dec 20 01:29:16 2006
@@ -17,30 +17,32 @@
import org.apache.tapestry.dom.Document;
import org.apache.tapestry.test.pagelevel.PageTester;
import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
public class IfTest extends Assert
{
- private PageTester tester;
+ private PageTester _tester;
@Test
public void render()
{
String appPackage = "org.apache.tapestry.integration.app2";
String appName = "";
- tester = new PageTester(appPackage, appName);
- Document doc = tester.renderPage("TestPageForIf");
+ _tester = new PageTester(appPackage, appName);
+ Document doc = _tester.renderPage("TestPageForIf");
assertNotNull(doc.getElementById("1"));
assertNotNull(doc.getElementById("3"));
assertNull(doc.getElementById("2"));
assertNull(doc.getElementById("4"));
}
+ @AfterMethod
public void after()
{
- if (tester != null)
+ if (_tester != null)
{
- tester.shutdown();
+ _tester.shutdown();
}
}
}
Added:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/LocaleTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/LocaleTest.java?view=auto&rev=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/LocaleTest.java
(added)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/LocaleTest.java
Wed Dec 20 01:29:16 2006
@@ -0,0 +1,62 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.integration.pagelevel;
+
+import java.util.Locale;
+
+import org.apache.tapestry.dom.Document;
+import org.apache.tapestry.test.pagelevel.PageTester;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+public class LocaleTest extends Assert
+{
+ private PageTester _tester;
+
+ @Test
+ public void no_preferred_language()
+ {
+ Document doc = _tester.renderPage("TestPageForLocale");
+ assertEquals(doc.getElementById("id1").getChildText(), "English page");
+ }
+
+ @Test
+ public void prefer_canada_french()
+ {
+ _tester.setPreferedLanguage(Locale.CANADA_FRENCH);
+ Document doc = _tester.renderPage("TestPageForLocale");
+ assertEquals(doc.getElementById("id1").getChildText(), "French page");
+ }
+
+ @BeforeMethod
+ public void before()
+ {
+ String appPackage = "org.apache.tapestry.integration.app2";
+ // LocaleAppModule.java has configured support for a certain locales.
+ String appName = "LocaleApp";
+ _tester = new PageTester(appPackage, appName);
+ }
+
+ @AfterMethod
+ public void after()
+ {
+ if (_tester != null)
+ {
+ _tester.shutdown();
+ }
+ }
+}
Propchange:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/LocaleTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/LoopTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/LoopTest.java?view=diff&rev=488996&r1=488995&r2=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/LoopTest.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/pagelevel/LoopTest.java
Wed Dec 20 01:29:16 2006
@@ -17,6 +17,7 @@
import org.apache.tapestry.dom.Document;
import org.apache.tapestry.test.pagelevel.PageTester;
import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
public class LoopTest extends Assert
@@ -34,6 +35,7 @@
assertEquals(doc.getElementById("1").getChildText(), "xyz");
}
+ @AfterMethod
public void after()
{
if (_tester != null)
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LocalizationFilterTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LocalizationFilterTest.java?view=diff&rev=488996&r1=488995&r2=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LocalizationFilterTest.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LocalizationFilterTest.java
Wed Dec 20 01:29:16 2006
@@ -17,7 +17,6 @@
import java.io.IOException;
import java.util.Locale;
-import org.apache.tapestry.ioc.services.ThreadLocale;
import org.apache.tapestry.services.Request;
import org.apache.tapestry.services.RequestFilter;
import org.apache.tapestry.services.RequestHandler;
@@ -28,94 +27,27 @@
public class LocalizationFilterTest extends TapestryTestCase
{
@Test
- public void locale_split()
+ public void set_locale_and_service() throws IOException
{
- assertEquals(LocalizationFilter.stripTerm("foo_bar_Baz"), "foo_bar");
- assertEquals(LocalizationFilter.stripTerm("foo_bar"), "foo");
- assertEquals(LocalizationFilter.stripTerm("foo"), "");
- }
-
- @Test
- public void to_locale_is_cached()
- {
- LocalizationFilter filter = new LocalizationFilter(null, "en");
-
- Locale l1 = filter.toLocale("en");
-
- assertEquals(l1.toString(), "en");
-
- checkLocale(l1, "en", "", "");
-
- assertSame(filter.toLocale("en"), l1);
- }
-
- private void checkLocale(Locale l, String expectedLanguage, String
expectedCountry,
- String expectedVariant)
- {
- assertEquals(l.getLanguage(), expectedLanguage);
- assertEquals(l.getCountry(), expectedCountry);
- assertEquals(l.getVariant(), expectedVariant);
- }
-
- @Test
- public void to_locale()
- {
- LocalizationFilter filter = new LocalizationFilter(null, "en");
-
- checkLocale(filter.toLocale("en"), "en", "", "");
- checkLocale(filter.toLocale("klingon_Gach"), "klingon", "GACH", "");
- checkLocale(filter.toLocale("klingon_Gach_snuff"), "klingon", "GACH",
"snuff");
- }
-
- @Test
- public void known_locale() throws IOException
- {
- ThreadLocale threadLocale = newThreadLocale();
RequestHandler handler = newRequestHandler();
Request request = newRequest();
Response response = newResponse();
+ LocalizationSetter setter = newMock(LocalizationSetter.class);
train_getLocale(request, Locale.CANADA_FRENCH);
- // We don't actually verify that setLocale() occurs before service(),
+ // We don't actually verify that setThreadLocale() occurs before
service(),
// but sometimes you just have to trust that the code executes in the
// order its written.
-
- threadLocale.setLocale(Locale.FRENCH);
+ setter.setThreadLocale(Locale.CANADA_FRENCH);
train_service(handler, request, response, true);
replay();
- RequestFilter filter = new LocalizationFilter(threadLocale, "en,fr");
+ RequestFilter filter = new LocalizationFilter(setter);
assertTrue(filter.service(request, response, handler));
-
- verify();
- }
-
- @Test
- public void unknown_locale_uses_default_locale() throws IOException
- {
- ThreadLocale threadLocale = newThreadLocale();
- RequestHandler handler = newRequestHandler();
- Request request = newRequest();
- Response response = newResponse();
-
- train_getLocale(request, Locale.JAPANESE);
-
- // This time, no real match, so the default (the first locale in the
list)
- // will be used.
-
- threadLocale.setLocale(Locale.ENGLISH);
-
- train_service(handler, request, response, false);
-
- replay();
-
- RequestFilter filter = new LocalizationFilter(threadLocale, "en,fr");
-
- assertFalse(filter.service(request, response, handler));
verify();
}
Added:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LocalizationSetterTest.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LocalizationSetterTest.java?view=auto&rev=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LocalizationSetterTest.java
(added)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LocalizationSetterTest.java
Wed Dec 20 01:29:16 2006
@@ -0,0 +1,102 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.internal.services;
+
+import java.util.Locale;
+
+import org.apache.tapestry.ioc.services.ThreadLocale;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class LocalizationSetterTest extends Assert
+{
+ private static class ThreadLocaleImpl implements ThreadLocale
+ {
+ public Locale _locale;
+
+ public void setLocale(Locale locale)
+ {
+ _locale = locale;
+ }
+
+ public Locale getLocale()
+ {
+ return _locale;
+ }
+
+ }
+
+ @Test
+ public void locale_split()
+ {
+ assertEquals(LocalizationSetterImpl.stripTerm("foo_bar_Baz"),
"foo_bar");
+ assertEquals(LocalizationSetterImpl.stripTerm("foo_bar"), "foo");
+ assertEquals(LocalizationSetterImpl.stripTerm("foo"), "");
+ }
+
+ @Test
+ public void to_locale_is_cached()
+ {
+ LocalizationSetterImpl filter = new LocalizationSetterImpl(null, "en");
+
+ Locale l1 = filter.toLocale("en");
+
+ assertEquals(l1.toString(), "en");
+
+ checkLocale(l1, "en", "", "");
+
+ assertSame(filter.toLocale("en"), l1);
+ }
+
+ private void checkLocale(Locale l, String expectedLanguage, String
expectedCountry,
+ String expectedVariant)
+ {
+ assertEquals(l.getLanguage(), expectedLanguage);
+ assertEquals(l.getCountry(), expectedCountry);
+ assertEquals(l.getVariant(), expectedVariant);
+ }
+
+ @Test
+ public void to_locale()
+ {
+ LocalizationSetterImpl filter = new LocalizationSetterImpl(null, "en");
+
+ checkLocale(filter.toLocale("en"), "en", "", "");
+ checkLocale(filter.toLocale("klingon_Gach"), "klingon", "GACH", "");
+ checkLocale(filter.toLocale("klingon_Gach_snuff"), "klingon", "GACH",
"snuff");
+ }
+
+ @Test
+ public void known_locale()
+ {
+ ThreadLocale threadLocale = new ThreadLocaleImpl();
+ threadLocale.setLocale(Locale.FRENCH);
+ LocalizationSetter setter = new LocalizationSetterImpl(threadLocale,
"en,fr");
+ setter.setThreadLocale(Locale.CANADA_FRENCH);
+ assertEquals(threadLocale.getLocale(), Locale.FRENCH);
+
+ }
+
+ @Test
+ public void unknown_locale_uses_default_locale()
+ {
+ ThreadLocale threadLocale = new ThreadLocaleImpl();
+ threadLocale.setLocale(Locale.FRENCH);
+ LocalizationSetter setter = new LocalizationSetterImpl(threadLocale,
"en,fr");
+ setter.setThreadLocale(Locale.JAPANESE);
+ assertEquals(threadLocale.getLocale(), Locale.ENGLISH);
+ }
+
+}
Propchange:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/LocalizationSetterTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForIf.html
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForIf.html?view=diff&rev=488996&r1=488995&r2=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForIf.html
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForIf.html
Wed Dec 20 01:29:16 2006
@@ -11,4 +11,4 @@
<t:comp type="If" test="property2">
<p id="4">222.</p>
</t:comp>
-</html>
\ No newline at end of file
+</html>
Added:
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForLocale.html
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForLocale.html?view=auto&rev=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForLocale.html
(added)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForLocale.html
Wed Dec 20 01:29:16 2006
@@ -0,0 +1,3 @@
+<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+<p id="id1">English page</p>
+</html>
\ No newline at end of file
Propchange:
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForLocale.html
------------------------------------------------------------------------------
svn:eol-style = native
Added:
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForLocale_fr.html
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForLocale_fr.html?view=auto&rev=488996
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForLocale_fr.html
(added)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForLocale_fr.html
Wed Dec 20 01:29:16 2006
@@ -0,0 +1,3 @@
+<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+<p id="id1">French page</p>
+</html>
\ No newline at end of file
Propchange:
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app2/pages/TestPageForLocale_fr.html
------------------------------------------------------------------------------
svn:eol-style = native