Updated Branches:
  refs/heads/master bfc1b6631 -> a6c5037bf

WICKET-4474 Disallow PackageResources in the bundles


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/a6c5037b
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a6c5037b
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a6c5037b

Branch: refs/heads/master
Commit: a6c5037bf7fc91576ccb368cd8300f770b31b4d3
Parents: bfc1b66
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Mon Mar 26 17:28:40 2012 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Mon Mar 26 17:28:40 2012 +0200

----------------------------------------------------------------------
 .../java/org/apache/wicket/ResourceBundles.java    |   29 +++++++++------
 .../bundles/ConcatResourceBundleReference.java     |    9 +++--
 2 files changed, 23 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/a6c5037b/wicket-core/src/main/java/org/apache/wicket/ResourceBundles.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ResourceBundles.java 
b/wicket-core/src/main/java/org/apache/wicket/ResourceBundles.java
index d1dd755..5d138f5 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ResourceBundles.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ResourceBundles.java
@@ -27,10 +27,12 @@ import org.apache.wicket.markup.head.HeaderItem;
 import org.apache.wicket.markup.head.IReferenceHeaderItem;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
-import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.request.resource.CssResourceReference;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
 import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.wicket.request.resource.ResourceReferenceRegistry;
 import org.apache.wicket.resource.bundles.ConcatResourceBundleReference;
+import org.apache.wicket.util.lang.Args;
 
 /**
  * Contains all resource bundles that are registered in the application. 
Resource bundles provide a
@@ -46,19 +48,17 @@ public class ResourceBundles
 {
        private final ResourceReferenceRegistry registry;
 
-       private final List<HeaderItem> bundles;
-
        private final Map<HeaderItem, HeaderItem> providedResourcesToBundles;
 
        /**
         * Construct.
         * 
         * @param registry
+        *      the registry that keeps all referenced resources
         */
-       public ResourceBundles(ResourceReferenceRegistry registry)
+       public ResourceBundles(final ResourceReferenceRegistry registry)
        {
-               this.registry = registry;
-               this.bundles= new ArrayList<HeaderItem>();
+               this.registry = Args.notNull(registry, "registry");
                this.providedResourcesToBundles = new HashMap<HeaderItem, 
HeaderItem>();
        }
 
@@ -80,10 +80,10 @@ public class ResourceBundles
         * @return the newly created bundle
         */
        public JavaScriptReferenceHeaderItem addJavaScriptBundle(Class<?> 
scope, String name,
-               PackageResourceReference... references)
+               JavaScriptResourceReference... references)
        {
                List<JavaScriptReferenceHeaderItem> items = new 
ArrayList<JavaScriptReferenceHeaderItem>();
-               for (PackageResourceReference curReference : references)
+               for (JavaScriptResourceReference curReference : references)
                {
                        
items.add(JavaScriptHeaderItem.forReference(curReference));
                }
@@ -110,10 +110,10 @@ public class ResourceBundles
         * @return the newly created bundle
         */
        public CssReferenceHeaderItem addCssBundle(Class<?> scope, String name,
-               PackageResourceReference... references)
+               CssResourceReference... references)
        {
                List<CssReferenceHeaderItem> items = new 
ArrayList<CssReferenceHeaderItem>();
-               for (PackageResourceReference curReference : references)
+               for (CssResourceReference curReference : references)
                {
                        items.add(CssHeaderItem.forReference(curReference));
                }
@@ -144,9 +144,14 @@ public class ResourceBundles
                        }
                        providedResourcesToBundles.put(curProvidedResource, 
bundle);
                }
-               bundles.add(bundle);
                if (bundle instanceof IReferenceHeaderItem)
-                       
registry.registerResourceReference(((IReferenceHeaderItem)bundle).getReference());
+               {
+                       ResourceReference reference = ((IReferenceHeaderItem) 
bundle).getReference();
+                       if (reference.canBeRegistered())
+                       {
+                               registry.registerResourceReference(reference);
+                       }
+               }
                return bundle;
        }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/a6c5037b/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ConcatResourceBundleReference.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ConcatResourceBundleReference.java
 
b/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ConcatResourceBundleReference.java
index c1af038..ebf37e6 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ConcatResourceBundleReference.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/resource/bundles/ConcatResourceBundleReference.java
@@ -26,7 +26,9 @@ import org.apache.wicket.Application;
 import org.apache.wicket.ResourceBundles;
 import org.apache.wicket.markup.head.HeaderItem;
 import org.apache.wicket.markup.head.IReferenceHeaderItem;
+import org.apache.wicket.request.resource.CssResourceReference;
 import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
 import org.apache.wicket.request.resource.PackageResourceReference;
 import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.wicket.util.lang.Args;
@@ -118,12 +120,13 @@ public class ConcatResourceBundleReference<T extends 
HeaderItem & IReferenceHead
        {
                for (T curProvidedResource : providedResources)
                {
-                       if (!(curProvidedResource.getReference() instanceof 
PackageResourceReference))
+                       ResourceReference reference = 
curProvidedResource.getReference();
+                       if (!(reference instanceof CssResourceReference || 
reference instanceof JavaScriptResourceReference))
                        {
                                throw new IllegalArgumentException(
-                                       "ConcatResourceBundleReference only 
works with PackageResourceReference, " +
+                                       "ConcatResourceBundleReference only 
works with CssResourceReference and JavaScriptResourceReference, " +
                                                curProvidedResource + " 
provides a " +
-                                               
curProvidedResource.getReference().getClass().getSimpleName());
+                                               
reference.getClass().getSimpleName());
                        }
                }
        }

Reply via email to