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

Reply via email to