[WICKET-5909] Session style is not taken into account when loading mounted resources.
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/830794f8 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/830794f8 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/830794f8 Branch: refs/heads/WICKET-5906-7.x Commit: 830794f88ab2848fb039be75cf6e083cc9b52f7c Parents: e8ca0dd Author: Andrea Del Bene <â[email protected]â> Authored: Wed Jun 3 15:10:13 2015 +0200 Committer: Andrea Del Bene <â[email protected]â> Committed: Thu Jun 4 15:52:57 2015 +0200 ---------------------------------------------------------------------- .../resource/PackageResourceReference.java | 1 + .../apache/wicket/resource/ResourceUtil.java | 63 ++++++++++++++++---- .../org/apache/wicket/util/lang/Objects.java | 19 ++++-- .../org/apache/wicket/util/string/Strings.java | 21 ++++--- 4 files changed, 81 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/830794f8/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java index c7f8da1..e50dbc6 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java @@ -125,6 +125,7 @@ public class PackageResourceReference extends ResourceReference final PackageResource resource; final Url url = RequestCycle.get().getRequest().getUrl(); + //resource attributes (locale, style, variation) might be encoded in the URL final UrlAttributes urlAttributes = ResourceUtil.decodeResourceReferenceAttributes(url); if (CSS_EXTENSION.equals(extension)) http://git-wip-us.apache.org/repos/asf/wicket/blob/830794f8/wicket-core/src/main/java/org/apache/wicket/resource/ResourceUtil.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/ResourceUtil.java b/wicket-core/src/main/java/org/apache/wicket/resource/ResourceUtil.java index b94ad25..6e55197 100644 --- a/wicket-core/src/main/java/org/apache/wicket/resource/ResourceUtil.java +++ b/wicket-core/src/main/java/org/apache/wicket/resource/ResourceUtil.java @@ -37,30 +37,47 @@ import org.apache.wicket.util.string.Strings; */ public class ResourceUtil { - - public static ResourceReference.UrlAttributes decodeResourceReferenceAttributes(String attributes) + /** + * Reads resource reference attributes (style, locale, variation) encoded in the given string. + * + * @param encodedAttributes + * the string containing the resource attributes + * @return the encoded attributes + * + * @see ResourceReference.UrlAttributes + */ + public static ResourceReference.UrlAttributes decodeResourceReferenceAttributes(String encodedAttributes) { Locale locale = null; String style = null; String variation = null; - if (Strings.isEmpty(attributes) == false) + if (Strings.isEmpty(encodedAttributes) == false) { - String split[] = Strings.split(attributes, '-'); + String split[] = Strings.split(encodedAttributes, '-'); locale = parseLocale(split[0]); if (split.length == 2) { - style = Strings.notEmpty(unescapeAttributesSeparator(split[1]), null); + style = Strings.defaultIfEmpty(unescapeAttributesSeparator(split[1]), null); } else if (split.length == 3) { - style = Strings.notEmpty(unescapeAttributesSeparator(split[1]), null); - variation = Strings.notEmpty(unescapeAttributesSeparator(split[2]), null); + style = Strings.defaultIfEmpty(unescapeAttributesSeparator(split[1]), null); + variation = Strings.defaultIfEmpty(unescapeAttributesSeparator(split[2]), null); } } return new ResourceReference.UrlAttributes(locale, style, variation); } - + + /** + * Reads resource reference attributes (style, locale, variation) encoded in the given URL. + * + * @param url + * the url containing the resource attributes + * @return the encoded attributes + * + * @see ResourceReference.UrlAttributes + */ public static ResourceReference.UrlAttributes decodeResourceReferenceAttributes(Url url) { Args.notNull(url, "url"); @@ -76,6 +93,15 @@ public class ResourceUtil return new ResourceReference.UrlAttributes(null, null, null); } + /** + * Encodes the given resource reference attributes returning the corresponding textual representation. + * + * @param attributes + * the resource reference attributes to encode + * @return the textual representation for the given attributes + * + * @see ResourceReference.UrlAttributes + */ public static String encodeResourceReferenceAttributes(ResourceReference.UrlAttributes attributes) { if (attributes == null || @@ -111,7 +137,17 @@ public class ResourceUtil return res.toString(); } } - + + /** + * Encodes the attributes of the given resource reference in the specified url. + * + * @param url + * the resource reference attributes to encode + * @param reference + * + * @see ResourceReference.UrlAttributes + * @see Url + */ public static void encodeResourceReferenceAttributes(Url url, ResourceReference reference) { String encoded = encodeResourceReferenceAttributes(reference.getUrlAttributes()); @@ -134,7 +170,14 @@ public class ResourceUtil CharSequence tmp = Strings.replaceAll(attribute, "~", "~~"); return Strings.replaceAll(tmp, "-", "~"); } - + + /** + * Parses the string representation of a {@link java.util.Locale} (for example 'en_GB'). + * + * @param locale + * the string representation of a {@link java.util.Locale} + * @return the corresponding {@link java.util.Locale} instance + */ public static Locale parseLocale(String locale) { if (Strings.isEmpty(locale)) http://git-wip-us.apache.org/repos/asf/wicket/blob/830794f8/wicket-util/src/main/java/org/apache/wicket/util/lang/Objects.java ---------------------------------------------------------------------- diff --git a/wicket-util/src/main/java/org/apache/wicket/util/lang/Objects.java b/wicket-util/src/main/java/org/apache/wicket/util/lang/Objects.java index 42b14c5..787778b 100755 --- a/wicket-util/src/main/java/org/apache/wicket/util/lang/Objects.java +++ b/wicket-util/src/main/java/org/apache/wicket/util/lang/Objects.java @@ -767,14 +767,25 @@ public final class Objects } /** + * Returns the original object if this one is != null. If the original object is null + * the default one is returned. The default object has no restriction, it might be itself null. + * + * @param originalObj + * the original object + * @param defaultObj + * the default object + * @return the original object if not null, the default one otherwise. + */ + public static <T> T defaultIfNull(T originalObj, T defaultObj) + { + return originalObj != null ? originalObj : defaultObj; + } + + /** * Instantiation not allowed */ private Objects() { } - public static <T> T defaultIfNull(T originalObj, T defaultObj) - { - return originalObj != null ? originalObj : defaultObj; - } } http://git-wip-us.apache.org/repos/asf/wicket/blob/830794f8/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java ---------------------------------------------------------------------- diff --git a/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java b/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java index a9a54b9..3ac1c10 100755 --- a/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java +++ b/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java @@ -1563,15 +1563,18 @@ public final class Strings } } - public static String notEmpty(String originalString, String normalizedValue) + /** + * Returns the original string if this one is not empty (i.e. {@link #isEmpty(CharSequence)} returns false), + * otherwise the default one is returned. The default string might be itself an empty one. + * + * @param originalString + * the original sting value + * @param defaultValue + * the default string to return if the original is empty + * @return the original string value if not empty, the default one otherwise + */ + public static String defaultIfEmpty(String originalString, String defaultValue) { - if (isEmpty(originalString)) - { - return normalizedValue; - } - else - { - return originalString; - } + return isEmpty(originalString) ? defaultValue : originalString; } }
