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()); } } }
