WICKET-4471: unwrap ResourceBundleReference to render the url for the actual reference
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e0692c66 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e0692c66 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e0692c66 Branch: refs/heads/master Commit: e0692c6669b4780bec5cf51bf68dfa6a018dc7dd Parents: 2624d2d Author: Emond Papegaaij <[email protected]> Authored: Mon Mar 26 17:55:57 2012 +0200 Committer: Emond Papegaaij <[email protected]> Committed: Tue Mar 27 16:35:34 2012 +0200 ---------------------------------------------------------------------- .../mapper/BasicResourceReferenceMapper.java | 23 ++++++++++---- .../resource/bundles/ResourceBundleReference.java | 20 +++++++++--- 2 files changed, 31 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/e0692c66/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 89c7a4c..6f4d417 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 @@ -19,6 +19,7 @@ package org.apache.wicket.core.request.mapper; import java.util.List; import java.util.StringTokenizer; +import org.apache.wicket.core.util.lang.WicketObjects; import org.apache.wicket.request.IRequestHandler; import org.apache.wicket.request.Request; import org.apache.wicket.request.Url; @@ -32,8 +33,8 @@ import org.apache.wicket.request.resource.ResourceReference; import org.apache.wicket.request.resource.caching.IResourceCachingStrategy; import org.apache.wicket.request.resource.caching.IStaticCacheableResource; import org.apache.wicket.request.resource.caching.ResourceUrl; +import org.apache.wicket.resource.bundles.ResourceBundleReference; import org.apache.wicket.util.IProvider; -import org.apache.wicket.core.util.lang.WicketObjects; import org.apache.wicket.util.string.Strings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,14 +44,14 @@ import org.slf4j.LoggerFactory; * {@link ResourceReference}s. * <p> * Decodes and encodes the following URLs: - * + * * <pre> * /wicket/resource/org.apache.wicket.ResourceScope/name * /wicket/resource/org.apache.wicket.ResourceScope/name?en * /wicket/resource/org.apache.wicket.ResourceScope/name?-style * /wicket/resource/org.apache.wicket.ResourceScope/resource/name.xyz?en_EN-style * </pre> - * + * * @author Matej Knopp * @author igor.vaynberg * @author Peter Ertl @@ -66,7 +67,7 @@ class BasicResourceReferenceMapper extends AbstractResourceReferenceMapper /** * Construct. - * + * * @param pageParametersEncoder * @param cachingStrategy */ @@ -113,7 +114,8 @@ class BasicResourceReferenceMapper extends AbstractResourceReferenceMapper if (Strings.isEmpty(segment)) { - throw new IllegalStateException("caching strategy returned empty name for " + resourceUrl); + throw new IllegalStateException( + "caching strategy returned empty name for " + resourceUrl); } } if (name.length() > 0) @@ -167,6 +169,12 @@ class BasicResourceReferenceMapper extends AbstractResourceReferenceMapper Url url; + if (reference instanceof ResourceBundleReference) + { + // unwrap the bundle to render the url for the actual reference + reference = ((ResourceBundleReference)reference).getBundleReference(); + } + if (reference instanceof MetaInfStaticResourceReference) { url = ((MetaInfStaticResourceReference)reference).mapHandler(referenceRequestHandler); @@ -179,7 +187,7 @@ class BasicResourceReferenceMapper extends AbstractResourceReferenceMapper } else if (reference instanceof ExternalUrlResourceReference) { - ExternalUrlResourceReference externalUrlReference = (ExternalUrlResourceReference) reference; + ExternalUrlResourceReference externalUrlReference = (ExternalUrlResourceReference)reference; url = externalUrlReference.getUrl(); return url; } @@ -229,7 +237,8 @@ class BasicResourceReferenceMapper extends AbstractResourceReferenceMapper if (Strings.isEmpty(token)) { - throw new IllegalStateException("caching strategy returned empty name for " + resource); + throw new IllegalStateException( + "caching strategy returned empty name for " + resource); } } } http://git-wip-us.apache.org/repos/asf/wicket/blob/e0692c66/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ResourceBundleReference.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ResourceBundleReference.java b/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ResourceBundleReference.java index cd2ccc1..14042a6 100644 --- a/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ResourceBundleReference.java +++ b/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ResourceBundleReference.java @@ -31,9 +31,10 @@ import org.apache.wicket.request.resource.ResourceReference; /** * A resource reference that wraps another resource to make it into a bundle. The resources that are * provided by the wrapped reference, have to be added with - * {@link #addProvidedResources(org.apache.wicket.markup.head.HeaderItem...)}. Normally, you will have to register this bundle in - * {@link ResourceBundles} under {@link Application#getResourceBundles()}. Dependencies are - * inherited from the provided resources if the bundle does not provide them. + * {@link #addProvidedResources(org.apache.wicket.markup.head.HeaderItem...)}. Normally, you will + * have to register this bundle in {@link ResourceBundles} under + * {@link Application#getResourceBundles()}. Dependencies are inherited from the provided resources + * if the bundle does not provide them. * * @author papegaaij */ @@ -56,7 +57,15 @@ public class ResourceBundleReference extends ResourceReference implements IResou bundleRef.getStyle(), bundleRef.getVariation()); this.bundleRef = bundleRef; - this.providedResources = new ArrayList<HeaderItem>(); + providedResources = new ArrayList<HeaderItem>(); + } + + /** + * @return The resource reference that is served for this bundle + */ + public ResourceReference getBundleReference() + { + return bundleRef; } /** @@ -72,9 +81,10 @@ public class ResourceBundleReference extends ResourceReference implements IResou @Override public IResource getResource() { - return bundleRef.getResource(); + return getBundleReference().getResource(); } + @Override public Iterable<? extends HeaderItem> getProvidedResources() {
