Repository: wicket Updated Branches: refs/heads/master 86af197ee -> 4db7a736e
WICKET-5635 Provide a way to modify ResourceReferenceRegistry.DefaultResourceReferenceFactory externally to be used by wicket-bootstrap-less (cherry picked from commit 6154fd6aae702ec5c23d39f6ac3ae9593da4d3b9) Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/4db7a736 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/4db7a736 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/4db7a736 Branch: refs/heads/master Commit: 4db7a736e7a2550f314eb00a874def76e9f9eb37 Parents: 86af197 Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Authored: Mon Jul 21 13:02:01 2014 +0300 Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Committed: Mon Jul 21 13:04:48 2014 +0300 ---------------------------------------------------------------------- .../resource/ResourceReferenceRegistry.java | 31 ++++++++++++++++++-- .../resource/LessResourceReferenceTest.java | 6 ++-- .../resource/ResourceReferenceRegistryTest.java | 31 ++++++++++++++++++-- 3 files changed, 61 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/4db7a736/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReferenceRegistry.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReferenceRegistry.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReferenceRegistry.java index 254f5af..3d2282d 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReferenceRegistry.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReferenceRegistry.java @@ -88,7 +88,7 @@ public class ResourceReferenceRegistry * The factory to use when a ResourceReference is not previously * registered and a new instance should be create */ - private final IResourceReferenceFactory resourceReferenceFactory; + private IResourceReferenceFactory resourceReferenceFactory; /** * Constructor. @@ -395,7 +395,12 @@ public class ResourceReferenceRegistry */ protected ResourceReference createDefaultResourceReference(final Key key) { - return resourceReferenceFactory.create(key); + IResourceReferenceFactory factory = getResourceReferenceFactory(); + if (factory == null) + { + factory = new DefaultResourceReferenceFactory(); + } + return factory.create(key); } /** @@ -466,4 +471,26 @@ public class ResourceReferenceRegistry { return map.size(); } + + /** + * @return the factory that will create the resource reference by using the parsed + * {@link org.apache.wicket.request.resource.ResourceReference.Key} + */ + public IResourceReferenceFactory getResourceReferenceFactory() + { + return resourceReferenceFactory; + } + + /** + * Sets the factory to use when a ResourceReference is not previously + * registered and a new instance should be created + * + * @param resourceReferenceFactory + * the factory that will create the resource reference by using the parsed + * {@link org.apache.wicket.request.resource.ResourceReference.Key} + */ + public void setResourceReferenceFactory(IResourceReferenceFactory resourceReferenceFactory) + { + this.resourceReferenceFactory = resourceReferenceFactory; + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/4db7a736/wicket-core/src/test/java/org/apache/wicket/request/resource/LessResourceReferenceTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/LessResourceReferenceTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/LessResourceReferenceTest.java index 6435752..a7161ef 100644 --- a/wicket-core/src/test/java/org/apache/wicket/request/resource/LessResourceReferenceTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/LessResourceReferenceTest.java @@ -46,7 +46,7 @@ public class LessResourceReferenceTest extends WicketTestCase * An {@link org.apache.wicket.request.resource.IResourceReferenceFactory} that creates * LessResourceReference for resources with extension '.less' */ - private static class LessResourceReferenceFactory extends ResourceReferenceRegistry.DefaultResourceReferenceFactory + static class LessResourceReferenceFactory extends ResourceReferenceRegistry.DefaultResourceReferenceFactory { @Override public ResourceReference create(ResourceReference.Key key) @@ -147,7 +147,7 @@ public class LessResourceReferenceTest extends WicketTestCase } } - private static class LessResourceReference extends CssResourceReference + static class LessResourceReference extends CssResourceReference { public LessResourceReference(Class<?> scope, String name) { @@ -166,7 +166,7 @@ public class LessResourceReferenceTest extends WicketTestCase } } - private static class LessPackageResource extends CssPackageResource + static class LessPackageResource extends CssPackageResource { public LessPackageResource(Class<?> scope, String name) { http://git-wip-us.apache.org/repos/asf/wicket/blob/4db7a736/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceRegistryTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceRegistryTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceRegistryTest.java index 6dd8088..0a90eaf 100644 --- a/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceRegistryTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/ResourceReferenceRegistryTest.java @@ -16,13 +16,16 @@ */ package org.apache.wicket.request.resource; -import org.junit.Assert; +import static org.hamcrest.Matchers.instanceOf; +import static org.hamcrest.Matchers.is; + +import org.apache.wicket.WicketTestCase; import org.junit.Test; /** * Tests for {@link ResourceReferenceRegistry} */ -public class ResourceReferenceRegistryTest extends Assert +public class ResourceReferenceRegistryTest extends WicketTestCase { /** @@ -59,4 +62,28 @@ public class ResourceReferenceRegistryTest extends Assert registry.registerResourceReference(reference); assertEquals(0, registry.getSize()); } + + @Test + public void setNullResourceReferenceFactoryStillUsesTheDefault() + { + ResourceReferenceRegistry registry = new ResourceReferenceRegistry(); + registry.setResourceReferenceFactory(null); + ResourceReference.Key key = new ResourceReference.Key(ResourceReferenceRegistryTest.class.getName(), + "a.css", null, null, null); + ResourceReference reference = registry.createDefaultResourceReference(key); + assertThat(reference, is(instanceOf(ResourceReference.class))); + assertThat(reference.getResource(), is(instanceOf(CssPackageResource.class))); + } + + @Test + public void createLessResourceReference() + { + ResourceReferenceRegistry registry = new ResourceReferenceRegistry(); + registry.setResourceReferenceFactory(new LessResourceReferenceTest.LessResourceReferenceFactory()); + ResourceReference.Key key = new ResourceReference.Key(ResourceReferenceRegistryTest.class.getName(), + "LessResourceReference.less", null, null, null); + ResourceReference reference = registry.createDefaultResourceReference(key); + assertThat(reference, is(instanceOf(LessResourceReferenceTest.LessResourceReference.class))); + assertThat(reference.getResource(), is(instanceOf(LessResourceReferenceTest.LessPackageResource.class))); + } }