Updated Branches: refs/heads/master d88d78e1c -> 831b11ccc
simply use locale.toString(), added testcase to prove it Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/831b11cc Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/831b11cc Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/831b11cc Branch: refs/heads/master Commit: 831b11ccc0c0990bdb50661077341008a28eefa4 Parents: d88d78e Author: svenmeier <[email protected]> Authored: Thu Feb 9 07:42:37 2012 +0100 Committer: svenmeier <[email protected]> Committed: Thu Feb 9 07:42:37 2012 +0100 ---------------------------------------------------------------------- .../markup/DefaultMarkupCacheKeyProvider.java | 25 +--- .../markup/DefaultMarkupCacheKeyProviderTest.java | 104 +++++++++++++++ 2 files changed, 111 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/831b11cc/wicket-core/src/main/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProvider.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProvider.java b/wicket-core/src/main/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProvider.java index e15edc5..1446f79 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProvider.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProvider.java @@ -54,33 +54,22 @@ public class DefaultMarkupCacheKeyProvider implements IMarkupCacheKeyProvider final StringBuilder buffer = new StringBuilder(classname.length() + 64); buffer.append(classname); - if (container.getVariation() != null) + final String variation = container.getVariation(); + if (variation != null) { - buffer.append('_').append(container.getVariation()); + buffer.append('_').append(variation); } - if (container.getStyle() != null) + final String style = container.getStyle(); + if (style != null) { - buffer.append('_').append(container.getStyle()); + buffer.append('_').append(style); } final Locale locale = container.getLocale(); if (locale != null) { - buffer.append('_').append(locale.getLanguage()); - - final boolean hasLocale = locale.getLanguage().length() != 0; - final boolean hasCountry = locale.getCountry().length() != 0; - final boolean hasVariant = locale.getVariant().length() != 0; - - if (hasCountry || (hasLocale && hasVariant)) - { - buffer.append('_').append(locale.getCountry()); - } - if (hasVariant && (hasLocale || hasCountry)) - { - buffer.append('_').append(locale.getVariant()); - } + buffer.append('_').append(locale.toString()); } buffer.append('.').append(container.getMarkupType().getExtension()); http://git-wip-us.apache.org/repos/asf/wicket/blob/831b11cc/wicket-core/src/test/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProviderTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProviderTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProviderTest.java new file mode 100644 index 0000000..f02852d --- /dev/null +++ b/wicket-core/src/test/java/org/apache/wicket/markup/DefaultMarkupCacheKeyProviderTest.java @@ -0,0 +1,104 @@ +/* + * 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.markup; + +import java.util.Locale; + +import org.apache.wicket.WicketTestCase; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.junit.Test; + +/** + * Test for {@link DefaultMarkupCacheKeyProvider}. + */ +public class DefaultMarkupCacheKeyProviderTest extends WicketTestCase +{ + + /** + */ + @Test + public void localeLanguageCountryVariant() + { + DefaultMarkupCacheKeyProvider provider = new DefaultMarkupCacheKeyProvider(); + + Foo foo = new Foo("foo"); + assertEquals("org.apache.wicket.markup.Foo.html", provider.getCacheKey(foo, foo.getClass())); + + foo.locale = new Locale(""); + assertEquals("org.apache.wicket.markup.Foo_.html", + provider.getCacheKey(foo, foo.getClass())); + + foo.locale = new Locale("language"); + assertEquals("org.apache.wicket.markup.Foo_language.html", provider.getCacheKey(foo, + foo.getClass())); + + foo.locale = new Locale("", "COUNTRY"); + assertEquals("org.apache.wicket.markup.Foo__COUNTRY.html", provider.getCacheKey(foo, + foo.getClass())); + + // variant only is ignored + foo.locale = new Locale("", "", "variant"); + assertEquals("org.apache.wicket.markup.Foo_.html", + provider.getCacheKey(foo, foo.getClass())); + + foo.locale = new Locale("language", "COUNTRY"); + assertEquals("org.apache.wicket.markup.Foo_language_COUNTRY.html", provider.getCacheKey( + foo, foo.getClass())); + + foo.locale = new Locale("language", "", "variant"); + assertEquals("org.apache.wicket.markup.Foo_language__variant.html", provider.getCacheKey( + foo, foo.getClass())); + + foo.locale = new Locale("", "COUNTRY", "variant"); + assertEquals("org.apache.wicket.markup.Foo__COUNTRY_variant.html", provider.getCacheKey( + foo, foo.getClass())); + + foo.locale = new Locale("language", "COUNTRY", "variant"); + assertEquals("org.apache.wicket.markup.Foo_language_COUNTRY_variant.html", + provider.getCacheKey(foo, foo.getClass())); + } +} + +class Foo extends WebMarkupContainer +{ + + private static final long serialVersionUID = 1L; + + public Locale locale; + + public Foo(String id) + { + super(id); + } + + @Override + protected void onRender() + { + } + + @Override + public Locale getLocale() + { + return locale; + } + + @Override + public MarkupType getMarkupType() + { + return MarkupType.HTML_MARKUP_TYPE; + } +} \ No newline at end of file
