You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2017/07/25 19:50:01 UTC
[1/4] wicket git commit: WICKET-6419 Localization of PageParameters
Repository: wicket
Updated Branches:
refs/heads/master 832202388 -> 04c96171e
WICKET-6419 Localization of PageParameters
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/76977412
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/76977412
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/76977412
Branch: refs/heads/master
Commit: 7697741252d9542a9686f8d745a4e8c19465be32
Parents: 3e6aa9b
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Jul 18 23:04:11 2017 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Jul 18 23:04:11 2017 +0200
----------------------------------------------------------------------
.../mapper/AbstractBookmarkableMapper.java | 48 ++++++++-
.../mapper/BasicResourceReferenceMapper.java | 1 +
.../core/request/mapper/BookmarkableMapper.java | 37 +------
.../core/request/mapper/MountedMapper.java | 11 +-
.../core/request/mapper/PackageMapper.java | 3 +-
.../core/request/mapper/ResourceMapper.java | 7 +-
.../org/apache/wicket/RequestEncodingTest.java | 20 ----
.../mapper/LocaleAwarePageParametersTest.java | 106 +++++++++++++++++++
.../wicket/request/mapper/AbstractMapper.java | 8 ++
.../mapper/parameter/PageParameters.java | 27 ++---
10 files changed, 186 insertions(+), 82 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/76977412/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
index f12aaec8..9cc0597 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
@@ -18,8 +18,10 @@ package org.apache.wicket.core.request.mapper;
import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
import org.apache.wicket.IRequestListener;
+import org.apache.wicket.Session;
import org.apache.wicket.core.request.handler.BookmarkableListenerRequestHandler;
import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler;
import org.apache.wicket.core.request.handler.IPageRequestHandler;
@@ -34,6 +36,7 @@ import org.apache.wicket.request.IRequestHandlerDelegate;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.component.IRequestablePage;
+import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.http.WebRequest;
import org.apache.wicket.request.mapper.info.ComponentInfo;
import org.apache.wicket.request.mapper.info.PageComponentInfo;
@@ -43,8 +46,6 @@ import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
import org.apache.wicket.util.lang.Args;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Abstract encoder for Bookmarkable, Hybrid and BookmarkableListener URLs.
@@ -53,7 +54,6 @@ import org.slf4j.LoggerFactory;
*/
public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
{
- private static Logger logger = LoggerFactory.getLogger(AbstractBookmarkableMapper.class);
/**
* A flag that is used when comparing the mounted paths' segments against
@@ -479,6 +479,45 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
return new PageInfo(pageId);
}
+ /**
+ * @return a new instance of {@link PageParameters} that will be passed to the page/resource
+ */
+ protected PageParameters newPageParameters()
+ {
+ final PageParameters parameters = new PageParameters();
+ parameters.setLocale(resolveLocale());
+ return parameters;
+ }
+
+ /**
+ * Override {@link #resolveLocale()} to return the result of this method if you want to use
+ * the user's session or request locale for parsing numbers from the page parameters
+ *
+ * @return the Session or Request's locale to use for parsing any numbers in the request parameters
+ */
+ protected Locale resolveUserLocale()
+ {
+ Locale locale = super.resolveLocale();
+ if (Session.exists())
+ {
+ locale = Session.get().getLocale();
+ }
+ else
+ {
+ RequestCycle requestCycle = RequestCycle.get();
+ if (requestCycle != null)
+ {
+ Request request = requestCycle.getRequest();
+ if (request != null)
+ {
+ locale = request.getLocale();
+ }
+ }
+ }
+
+ return locale;
+ }
+
protected static class MountPathSegment
{
private int segmentIndex;
@@ -587,6 +626,7 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
for (int curMatchSize : matchedParameters)
total += curMatchSize;
PageParameters pageParameters = extractPageParameters(request, total, pageParametersEncoder);
+ pageParameters.setLocale(resolveLocale());
int skippedParameters = 0;
for (int pathSegmentIndex = 0; pathSegmentIndex < pathSegments.size(); pathSegmentIndex++)
@@ -598,7 +638,7 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
{
if (pageParameters == null)
{
- pageParameters = new PageParameters();
+ pageParameters = newPageParameters();
}
int curSegmentIndex = matchSegment + curPathSegment.getSegmentIndex();
http://git-wip-us.apache.org/repos/asf/wicket/blob/76977412/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
index 2bdc65e..aeaf81b 100755
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
@@ -93,6 +93,7 @@ public class BasicResourceReferenceMapper extends AbstractResourceReferenceMappe
// extract the PageParameters from URL if there are any
PageParameters pageParameters = extractPageParameters(request, segmentsSize,
pageParametersEncoder);
+ pageParameters.setLocale(resolveLocale());
String className = url.getSegments().get(2);
StringBuilder name = new StringBuilder(segmentsSize * 2);
http://git-wip-us.apache.org/repos/asf/wicket/blob/76977412/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
index 9b301f1..5388fcb 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
@@ -19,12 +19,9 @@ package org.apache.wicket.core.request.mapper;
import java.util.List;
import org.apache.wicket.Application;
-import org.apache.wicket.request.IRequestMapper;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.component.IRequestablePage;
-import org.apache.wicket.request.mapper.ICompoundRequestMapper;
-import org.apache.wicket.request.mapper.IRequestMapperDelegate;
import org.apache.wicket.request.mapper.info.PageComponentInfo;
import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -126,6 +123,7 @@ public class BookmarkableMapper extends AbstractBookmarkableMapper
// extract the PageParameters from URL if there are any
PageParameters pageParameters = extractPageParameters(request, 3,
pageParametersEncoder);
+ pageParameters.setLocale(resolveLocale());
return new UrlInfo(info, pageClass, pageParameters);
}
@@ -133,39 +131,6 @@ public class BookmarkableMapper extends AbstractBookmarkableMapper
return null;
}
- private boolean isPageMounted(Class<? extends IRequestablePage> pageClass, ICompoundRequestMapper compoundMapper)
- {
- for (IRequestMapper requestMapper : compoundMapper)
- {
- while (requestMapper instanceof IRequestMapperDelegate)
- {
- requestMapper = ((IRequestMapperDelegate)requestMapper).getDelegateMapper();
- }
-
- if (requestMapper instanceof ICompoundRequestMapper)
- {
- if (isPageMounted(pageClass, (ICompoundRequestMapper)requestMapper))
- {
- return true;
- }
- }
- else
- {
- if (requestMapper instanceof AbstractBookmarkableMapper && requestMapper != this)
- {
- AbstractBookmarkableMapper mapper = (AbstractBookmarkableMapper) requestMapper;
-
- if (mapper.checkPageClass(pageClass))
- {
- return true;
- }
- }
- }
- }
-
- return false;
- }
-
@Override
protected boolean pageMustHaveBeenCreatedBookmarkable()
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/76977412/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
index d308ac1..413e866 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
@@ -148,11 +148,6 @@ public class MountedMapper extends AbstractBookmarkableMapper
}
}
- protected PageParameters newPageParameters()
- {
- return new PageParameters();
- }
-
@Override
public Url mapHandler(IRequestHandler requestHandler)
{
@@ -175,7 +170,8 @@ public class MountedMapper extends AbstractBookmarkableMapper
PageInfo pageInfo = getPageInfo(handler);
ComponentInfo componentInfo = new ComponentInfo(renderCount, componentPath, handler.getBehaviorIndex());
PageComponentInfo pageComponentInfo = new PageComponentInfo(pageInfo, componentInfo);
- PageParameters parameters = new PageParameters(page.getPageParameters());
+ PageParameters parameters = newPageParameters();
+ parameters.mergeWith(page.getPageParameters());
UrlInfo urlInfo = new UrlInfo(pageComponentInfo, page.getClass(),
parameters.mergeWith(handler.getPageParameters()));
url = buildUrl(urlInfo);
@@ -198,7 +194,8 @@ public class MountedMapper extends AbstractBookmarkableMapper
}
encodePageComponentInfo(url, info.getPageComponentInfo());
- PageParameters copy = new PageParameters(info.getPageParameters());
+ PageParameters copy = newPageParameters();
+ copy.mergeWith(info.getPageParameters());
if (setPlaceholders(copy, url) == false)
{
// mandatory parameter is not provided => cannot build Url
http://git-wip-us.apache.org/repos/asf/wicket/blob/76977412/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
index 6205e78..a5a376e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
@@ -118,7 +118,8 @@ public class PackageMapper extends AbstractBookmarkableMapper
url.getSegments().add(packageRelativeClassName);
encodePageComponentInfo(url, info.getPageComponentInfo());
- PageParameters copy = new PageParameters(info.getPageParameters());
+ PageParameters copy = newPageParameters();
+ copy.mergeWith(info.getPageParameters());
if (setPlaceholders(copy, url) == false)
{
// mandatory parameter is not provided => cannot build Url
http://git-wip-us.apache.org/repos/asf/wicket/blob/76977412/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
index b6565be..8d8b0fa 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
@@ -126,6 +126,7 @@ public class ResourceMapper extends AbstractBookmarkableMapper
// now extract the page parameters from the request url
PageParameters parameters = extractPageParameters(request, mountSegments.length,
parametersEncoder);
+ parameters.setLocale(resolveLocale());
// remove caching information from current request
removeCachingDecoration(url, parameters);
@@ -146,7 +147,7 @@ public class ResourceMapper extends AbstractBookmarkableMapper
// extract the parameter from URL
if (parameters == null)
{
- parameters = new PageParameters();
+ parameters = newPageParameters();
}
parameters.add(placeholder, url.getSegments().get(index), INamedParameters.Type.PATH);
}
@@ -174,6 +175,7 @@ public class ResourceMapper extends AbstractBookmarkableMapper
{
Url originalUrl = new Url(request.getUrl());
PageParameters parameters = extractPageParameters(request, mountSegments.length, parametersEncoder);
+ parameters.setLocale(resolveLocale());
removeCachingDecoration(originalUrl, parameters);
Request requestWithoutDecoration = request.cloneWithUrl(originalUrl);
@@ -214,7 +216,8 @@ public class ResourceMapper extends AbstractBookmarkableMapper
}
// replace placeholder parameters
- PageParameters parameters = new PageParameters(handler.getPageParameters());
+ PageParameters parameters = newPageParameters();
+ parameters.mergeWith(handler.getPageParameters());
for (int index = 0; index < mountSegments.length; ++index)
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/76977412/wicket-core/src/test/java/org/apache/wicket/RequestEncodingTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/RequestEncodingTest.java b/wicket-core/src/test/java/org/apache/wicket/RequestEncodingTest.java
index edfe42d..8b66dce 100644
--- a/wicket-core/src/test/java/org/apache/wicket/RequestEncodingTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/RequestEncodingTest.java
@@ -23,23 +23,13 @@ import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-/**
- *
- */
public class RequestEncodingTest extends Assert
{
- /** Log. */
- private static final Logger log = LoggerFactory.getLogger(RequestEncodingTest.class);
private RedirectApplication application;
private WicketTester tester;
- /**
- * @see WicketTestCase#commonBefore()
- */
@Before
public void setUp()
{
@@ -49,18 +39,12 @@ public class RequestEncodingTest extends Assert
tester.assertRenderedPage(RedirectHomePage.class);
}
- /**
- *
- */
@After
public void tearDown()
{
tester.destroy();
}
- /**
- *
- */
@Test
public void defaultTest()
{
@@ -81,10 +65,6 @@ public class RequestEncodingTest extends Assert
assertTrue(document.contains("umlaut-\u00E4-\u00F6-\u00FC"));
}
-
- /**
- *
- */
@Test
public void umlautsInRequestUri()
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/76977412/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java
new file mode 100644
index 0000000..01453e9
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java
@@ -0,0 +1,106 @@
+package org.apache.wicket.core.request.mapper;
+
+import static org.hamcrest.Matchers.is;
+
+import java.util.Locale;
+
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.Page;
+import org.apache.wicket.Session;
+import org.apache.wicket.markup.IMarkupResourceStreamProvider;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.mock.MockApplication;
+import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.Response;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.resource.StringResourceStream;
+import org.apache.wicket.util.tester.WicketTestCase;
+import org.junit.Test;
+
+/**
+ * https://issues.apache.org/jira/browse/WICKET-6419
+ */
+public class LocaleAwarePageParametersTest extends WicketTestCase
+{
+ @Override
+ protected WebApplication newApplication()
+ {
+ return new MockApplication()
+ {
+ @Override
+ protected void init()
+ {
+ super.init();
+
+ mountPage("unaware", LocaleUnawarePageParametersPage.class);
+ mount(new MountedMapper("aware", LocaleAwarePageParametersPage.class)
+ {
+ @Override
+ protected Locale resolveLocale()
+ {
+ return resolveUserLocale();
+ }
+ }
+ );
+ }
+
+ @Override
+ public Session newSession(Request request, Response response)
+ {
+ final Session session = super.newSession(request, response);
+ session.setLocale(Locale.GERMANY);
+ return session;
+ }
+ };
+ }
+
+ @Test
+ public void localeUnaware()
+ {
+ tester.executeUrl("unaware?number=1.234,0");
+ final Page page = tester.getLastRenderedPage();
+
+ assertThat(page.getPageParameters().get("number").toDouble(), is(1.234));
+ }
+
+ @Test
+ public void localeAware()
+ {
+ tester.executeUrl("aware?number=1.234,0");
+ final Page page = tester.getLastRenderedPage();
+
+ assertThat(page.getPageParameters().get("number").toDouble(), is(1234d));
+ }
+
+ private static class BasePage extends WebPage implements IMarkupResourceStreamProvider
+ {
+ protected BasePage(PageParameters parameters)
+ {
+ super(parameters);
+ }
+
+ @Override
+ public IResourceStream getMarkupResourceStream(MarkupContainer container, Class<?> containerClass)
+ {
+ return new StringResourceStream("<html><body>content</body></html>");
+ }
+ }
+
+ public static class LocaleUnawarePageParametersPage extends BasePage
+ {
+ public LocaleUnawarePageParametersPage(PageParameters parameters)
+ {
+ super(parameters);
+ }
+ }
+
+ public static class LocaleAwarePageParametersPage extends BasePage
+ {
+ public LocaleAwarePageParametersPage(PageParameters parameters)
+ {
+ super(parameters);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/76977412/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java
index a9f7143..1fdf955 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/AbstractMapper.java
@@ -17,6 +17,7 @@
package org.apache.wicket.request.mapper;
import java.util.List;
+import java.util.Locale;
import org.apache.wicket.request.IRequestMapper;
import org.apache.wicket.request.Request;
@@ -251,4 +252,11 @@ public abstract class AbstractMapper implements IRequestMapper
return res;
}
+ /**
+ * @return the locale to use for parsing any numbers in the request parameters
+ */
+ protected Locale resolveLocale()
+ {
+ return Locale.getDefault(Locale.Category.DISPLAY);
+ }
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/76977412/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
index c985dcb..e1ce701 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
@@ -21,6 +21,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import java.util.Set;
import java.util.TreeSet;
@@ -55,6 +56,8 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP
private List<NamedPair> namedParameters;
+ private Locale locale = Locale.getDefault(Locale.Category.DISPLAY);
+
/**
* Constructor.
*/
@@ -72,15 +75,8 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP
{
if (copy != null)
{
- if (copy.indexedParameters != null)
- {
- indexedParameters = new ArrayList<>(copy.indexedParameters);
- }
-
- if (copy.namedParameters != null)
- {
- namedParameters = new ArrayList<>(copy.namedParameters);
- }
+ mergeWith(copy);
+ setLocale(copy.locale);
}
}
@@ -119,7 +115,7 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP
{
if ((index >= 0) && (index < indexedParameters.size()))
{
- return StringValue.valueOf(indexedParameters.get(index));
+ return StringValue.valueOf(indexedParameters.get(index), locale);
}
}
return StringValue.valueOf((String)null);
@@ -164,7 +160,7 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP
{
if (entry.getKey().equals(name))
{
- return StringValue.valueOf(entry.getValue());
+ return StringValue.valueOf(entry.getValue(), locale);
}
}
}
@@ -183,7 +179,7 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP
{
if (entry.getKey().equals(name))
{
- result.add(StringValue.valueOf(entry.getValue()));
+ result.add(StringValue.valueOf(entry.getValue(), locale));
}
}
return Collections.unmodifiableList(result);
@@ -401,6 +397,7 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP
{
indexedParameters = other.indexedParameters;
namedParameters = other.namedParameters;
+ locale = other.locale;
}
return this;
}
@@ -508,6 +505,12 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP
return (getIndexedCount() == 0) && getNamedKeys().isEmpty();
}
+ public PageParameters setLocale(Locale locale)
+ {
+ this.locale = locale != null ? locale : Locale.getDefault(Locale.Category.DISPLAY);
+ return this;
+ }
+
@Override
public String toString()
{
[3/4] wicket git commit: WICKET-6419 Localization of PageParameters
Posted by mg...@apache.org.
WICKET-6419 Localization of PageParameters
Add some checks to be on the safe side.
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/77dee2bb
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/77dee2bb
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/77dee2bb
Branch: refs/heads/master
Commit: 77dee2bbd513db2ee89eb4882e02142f1fa619cd
Parents: e75cb25
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Jul 18 23:45:58 2017 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Jul 18 23:45:58 2017 +0200
----------------------------------------------------------------------
.../request/mapper/AbstractBookmarkableMapper.java | 5 ++++-
.../mapper/BasicResourceReferenceMapper.java | 5 ++++-
.../core/request/mapper/BookmarkableMapper.java | 5 ++++-
.../wicket/core/request/mapper/ResourceMapper.java | 10 ++++++++--
.../mapper/LocaleAwarePageParametersTest.java | 16 ++++++++++++++++
.../core/request/mapper/ResourceMapperTest.java | 2 --
.../request/mapper/parameter/PageParameters.java | 2 +-
7 files changed, 37 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/77dee2bb/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
index 9cc0597..a6bab53 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
@@ -626,7 +626,10 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
for (int curMatchSize : matchedParameters)
total += curMatchSize;
PageParameters pageParameters = extractPageParameters(request, total, pageParametersEncoder);
- pageParameters.setLocale(resolveLocale());
+ if (pageParameters != null)
+ {
+ pageParameters.setLocale(resolveLocale());
+ }
int skippedParameters = 0;
for (int pathSegmentIndex = 0; pathSegmentIndex < pathSegments.size(); pathSegmentIndex++)
http://git-wip-us.apache.org/repos/asf/wicket/blob/77dee2bb/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
index aeaf81b..d0f1375 100755
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapper.java
@@ -93,7 +93,10 @@ public class BasicResourceReferenceMapper extends AbstractResourceReferenceMappe
// extract the PageParameters from URL if there are any
PageParameters pageParameters = extractPageParameters(request, segmentsSize,
pageParametersEncoder);
- pageParameters.setLocale(resolveLocale());
+ if (pageParameters != null)
+ {
+ pageParameters.setLocale(resolveLocale());
+ }
String className = url.getSegments().get(2);
StringBuilder name = new StringBuilder(segmentsSize * 2);
http://git-wip-us.apache.org/repos/asf/wicket/blob/77dee2bb/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
index 5388fcb..899500e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
@@ -123,7 +123,10 @@ public class BookmarkableMapper extends AbstractBookmarkableMapper
// extract the PageParameters from URL if there are any
PageParameters pageParameters = extractPageParameters(request, 3,
pageParametersEncoder);
- pageParameters.setLocale(resolveLocale());
+ if (pageParameters != null)
+ {
+ pageParameters.setLocale(resolveLocale());
+ }
return new UrlInfo(info, pageClass, pageParameters);
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/77dee2bb/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
index 8d8b0fa..69f82f7 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/ResourceMapper.java
@@ -126,7 +126,10 @@ public class ResourceMapper extends AbstractBookmarkableMapper
// now extract the page parameters from the request url
PageParameters parameters = extractPageParameters(request, mountSegments.length,
parametersEncoder);
- parameters.setLocale(resolveLocale());
+ if (parameters != null)
+ {
+ parameters.setLocale(resolveLocale());
+ }
// remove caching information from current request
removeCachingDecoration(url, parameters);
@@ -175,7 +178,10 @@ public class ResourceMapper extends AbstractBookmarkableMapper
{
Url originalUrl = new Url(request.getUrl());
PageParameters parameters = extractPageParameters(request, mountSegments.length, parametersEncoder);
- parameters.setLocale(resolveLocale());
+ if (parameters != null)
+ {
+ parameters.setLocale(resolveLocale());
+ }
removeCachingDecoration(originalUrl, parameters);
Request requestWithoutDecoration = request.cloneWithUrl(originalUrl);
http://git-wip-us.apache.org/repos/asf/wicket/blob/77dee2bb/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java
index 3087312..6a4bc88 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.wicket.core.request.mapper;
import static org.hamcrest.Matchers.is;
http://git-wip-us.apache.org/repos/asf/wicket/blob/77dee2bb/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java
index 6603c7b..cc00db8 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java
@@ -34,8 +34,6 @@ import org.apache.wicket.util.tester.WicketTestCase;
import org.junit.Before;
import org.junit.Test;
-/**
- */
public class ResourceMapperTest extends WicketTestCase
{
private static final Charset CHARSET = Charset.forName("UTF-8");
http://git-wip-us.apache.org/repos/asf/wicket/blob/77dee2bb/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
index e1ce701..d4736e5 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
@@ -411,7 +411,7 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP
*/
public PageParameters mergeWith(final PageParameters other)
{
- if (this != other)
+ if (other != null && this != other)
{
for (int index = 0; index < other.getIndexedCount(); index++)
{
[4/4] wicket git commit: Merge branch 'WICKET-6419'
Posted by mg...@apache.org.
Merge branch 'WICKET-6419'
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/04c96171
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/04c96171
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/04c96171
Branch: refs/heads/master
Commit: 04c96171e242d09fc34d4f93b1ca97f8fc61a67c
Parents: 8322023 77dee2b
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Jul 25 22:47:29 2017 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Jul 25 22:47:29 2017 +0300
----------------------------------------------------------------------
.../mapper/AbstractBookmarkableMapper.java | 51 ++++++-
.../mapper/BasicResourceReferenceMapper.java | 4 +
.../core/request/mapper/BookmarkableMapper.java | 40 +-----
.../core/request/mapper/MountedMapper.java | 11 +-
.../core/request/mapper/PackageMapper.java | 3 +-
.../core/request/mapper/ResourceMapper.java | 13 +-
.../org/apache/wicket/RequestEncodingTest.java | 20 ---
.../mapper/LocaleAwarePageParametersTest.java | 142 +++++++++++++++++++
.../core/request/mapper/ResourceMapperTest.java | 2 -
.../wicket/request/mapper/AbstractMapper.java | 8 ++
.../mapper/parameter/PageParameters.java | 29 ++--
11 files changed, 238 insertions(+), 85 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/04c96171/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
----------------------------------------------------------------------
[2/4] wicket git commit: WICKET-6419 Localization of PageParameters
Posted by mg...@apache.org.
WICKET-6419 Localization of PageParameters
Explicitly set the default locale to ENGLISH so that the test doesn't fail on developer machines with DE locale.
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e75cb256
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e75cb256
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e75cb256
Branch: refs/heads/master
Commit: e75cb25605ac64e4b2f6bc149f7f2e1243f824cb
Parents: 7697741
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Jul 18 23:12:47 2017 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Jul 18 23:12:47 2017 +0200
----------------------------------------------------------------------
.../mapper/LocaleAwarePageParametersTest.java | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/e75cb256/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java
index 01453e9..3087312 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/LocaleAwarePageParametersTest.java
@@ -17,6 +17,8 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.StringResourceStream;
import org.apache.wicket.util.tester.WicketTestCase;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
/**
@@ -24,6 +26,24 @@ import org.junit.Test;
*/
public class LocaleAwarePageParametersTest extends WicketTestCase
{
+ private Locale defaultLocale = null;
+
+ @Before
+ public void before()
+ {
+ defaultLocale = Locale.getDefault(Locale.Category.DISPLAY);
+ Locale.setDefault(Locale.Category.DISPLAY, Locale.ENGLISH);
+ }
+
+ @After
+ public void after()
+ {
+ if (defaultLocale != null)
+ {
+ Locale.setDefault(Locale.Category.DISPLAY, defaultLocale);
+ }
+ }
+
@Override
protected WebApplication newApplication()
{