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()
        {

Reply via email to