This is an automated email from the ASF dual-hosted git repository.

pedro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/master by this push:
     new 692c257d7e WICKET-7024 restoring ResourceReferenceRegistry API
692c257d7e is described below

commit 692c257d7e6281ee7fb8ba2418943a78945ca467
Author: Pedro Santos <[email protected]>
AuthorDate: Sat Nov 2 15:05:54 2024 -0300

    WICKET-7024 restoring ResourceReferenceRegistry API
---
 .../mapper/BasicResourceReferenceMapperTest.java   | 17 ++++
 .../core/request/mapper/TestMapperContext.java     |  2 +-
 .../resource/LessResourceReferenceTest.java        | 11 ++-
 .../resource/PackageResourceReferenceTest.java     | 14 +---
 .../mapper/BasicResourceReferenceMapper.java       | 12 +--
 .../wicket/request/resource/PackageResource.java   | 90 ++++------------------
 .../request/resource/PackageResourceReference.java |  1 -
 .../resource/ResourceReferenceRegistry.java        | 70 ++++-------------
 8 files changed, 59 insertions(+), 158 deletions(-)

diff --git 
a/wicket-core-tests/src/test/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapperTest.java
 
b/wicket-core-tests/src/test/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapperTest.java
index def27a4068..550424ecfc 100644
--- 
a/wicket-core-tests/src/test/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapperTest.java
+++ 
b/wicket-core-tests/src/test/java/org/apache/wicket/core/request/mapper/BasicResourceReferenceMapperTest.java
@@ -42,6 +42,9 @@ import org.apache.wicket.util.ValueProvider;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
+import org.apache.wicket.util.tester.WicketTester;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -62,6 +65,20 @@ class BasicResourceReferenceMapperTest extends 
AbstractResourceReferenceMapperTe
                }
        };
 
+       WicketTester tester;
+       @BeforeEach
+       public void setup()
+       {
+               // set the application ResourceSettings, used by the 
BasicResourceReferenceMapper
+               tester = new WicketTester();
+       }
+
+       @AfterEach
+       public void destroy()
+       {
+               tester.destroy();
+       }
+
        /**
         *
         */
diff --git 
a/wicket-core-tests/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java
 
b/wicket-core-tests/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java
index 57be3aa65c..1f163a29e6 100644
--- 
a/wicket-core-tests/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java
+++ 
b/wicket-core-tests/src/test/java/org/apache/wicket/core/request/mapper/TestMapperContext.java
@@ -126,7 +126,7 @@ public class TestMapperContext implements IMapperContext
        private final ResourceReferenceRegistry registry = new 
ResourceReferenceRegistry()
        {
                @Override
-               protected ResourceReference createDefaultResourceReference(Key 
key, boolean updateCache)
+               protected ResourceReference createDefaultResourceReference(Key 
key)
                {
                        // Do not create package resource here because it 
requires "real" application
                        return null;
diff --git 
a/wicket-core-tests/src/test/java/org/apache/wicket/core/request/resource/LessResourceReferenceTest.java
 
b/wicket-core-tests/src/test/java/org/apache/wicket/core/request/resource/LessResourceReferenceTest.java
index e136cd663e..56146d4a48 100644
--- 
a/wicket-core-tests/src/test/java/org/apache/wicket/core/request/resource/LessResourceReferenceTest.java
+++ 
b/wicket-core-tests/src/test/java/org/apache/wicket/core/request/resource/LessResourceReferenceTest.java
@@ -29,7 +29,11 @@ import 
org.apache.wicket.markup.html.SecurePackageResourceGuard;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.mock.MockApplication;
 import org.apache.wicket.protocol.http.WebApplication;
-import org.apache.wicket.request.resource.*;
+import org.apache.wicket.request.resource.CssPackageResource;
+import org.apache.wicket.request.resource.CssResourceReference;
+import org.apache.wicket.request.resource.PackageResource;
+import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.request.resource.ResourceReferenceRegistry;
 import org.apache.wicket.util.file.Files;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
@@ -50,7 +54,7 @@ class LessResourceReferenceTest extends WicketTestCase
         * An {@link 
org.apache.wicket.request.resource.IResourceReferenceFactory} that creates
         * LessResourceReference for resources with extension '.less'
         */
-       static class LessResourceReferenceFactory implements 
IResourceReferenceFactory
+       static class LessResourceReferenceFactory extends 
ResourceReferenceRegistry.DefaultResourceReferenceFactory
        {
                @Override
                public ResourceReference create(ResourceReference.Key key)
@@ -64,8 +68,7 @@ class LessResourceReferenceTest extends WicketTestCase
                                }
                                else
                                {
-                                       result = new 
ResourceReferenceRegistry.DefaultResourceReferenceFactory().create(
-                                               key);
+                                       result = super.create(key);
                                }
                        }
                        return result;
diff --git 
a/wicket-core-tests/src/test/java/org/apache/wicket/core/request/resource/PackageResourceReferenceTest.java
 
b/wicket-core-tests/src/test/java/org/apache/wicket/core/request/resource/PackageResourceReferenceTest.java
index 11444c5a61..a909ad38f4 100644
--- 
a/wicket-core-tests/src/test/java/org/apache/wicket/core/request/resource/PackageResourceReferenceTest.java
+++ 
b/wicket-core-tests/src/test/java/org/apache/wicket/core/request/resource/PackageResourceReferenceTest.java
@@ -447,9 +447,6 @@ class PackageResourceReferenceTest extends WicketTestCase
        public void doNotFindResourceInTheCache()
        {
                IResourceStreamLocator resourceStreamLocator = 
mock(IResourceStreamLocator.class);
-               when(resourceStreamLocator.locate(scope, 
"org/apache/wicket/core/request/resource/a.css",
-                       "yellow", null, defaultLocale, null, false)).thenReturn(
-                       new UrlResourceStream(scope.getResource("a.css")));
                when(resourceStreamLocator.locate(scope, 
"org/apache/wicket/core/request/resource/a.css",
                        "yellow", null, null, null, false)).thenReturn(
                        new UrlResourceStream(scope.getResource("a.css")));
@@ -462,12 +459,8 @@ class PackageResourceReferenceTest extends WicketTestCase
                tester.executeUrl(
                        
"wicket/resource/org.apache.wicket.core.request.resource.PackageResourceReferenceTest/a.css?-yellow");
 
-               // WICKET-7129: proposal to remove the duplicated resource 
resolution
                verify(resourceStreamLocator, 
times(2)).locate(PackageResourceReferenceTest.class,
                        "org/apache/wicket/core/request/resource/a.css", 
"yellow", null, null, null, false);
-               verify(resourceStreamLocator, 
times(2)).locate(PackageResourceReferenceTest.class,
-                       "org/apache/wicket/core/request/resource/a.css", 
"yellow", null, defaultLocale, null,
-                       false);
        }
 
        @Test
@@ -475,7 +468,7 @@ class PackageResourceReferenceTest extends WicketTestCase
        {
                IResourceStreamLocator resourceStreamLocator = 
mock(IResourceStreamLocator.class);
                when(resourceStreamLocator.locate(scope, 
"org/apache/wicket/core/request/resource/a.css",
-                       "yellow", null, defaultLocale, null, false)).thenReturn(
+                       "yellow", null, null, null, false)).thenReturn(
                        new UrlResourceStream(scope.getResource("a.css")));
 
                tester.getApplication().getResourceSettings()
@@ -487,12 +480,11 @@ class PackageResourceReferenceTest extends WicketTestCase
                tester.executeUrl("a.css?-yellow");
 
                verify(resourceStreamLocator, times(2)).locate(scope,
-                       "org/apache/wicket/core/request/resource/a.css", 
"yellow", null, defaultLocale, null,
-                       false);
+                       "org/apache/wicket/core/request/resource/a.css", 
"yellow", null, null, null, false);
        }
 
        /**
-        * @see https://issues.apache.org/jira/browse/WICKET-7024
+        * https://issues.apache.org/jira/browse/WICKET-7024
         */
        @Test
        public void notDecodeStyleFromUrl()
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 500370145a..23f34ab351 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
@@ -132,17 +132,7 @@ public class BasicResourceReferenceMapper extends 
AbstractResourceReferenceMappe
 
                        if (scope != null && scope.getPackage() != null)
                        {
-                               ResourceReference auxRes = 
getContext().getResourceReferenceRegistry()
-                                       .getResourceReference(scope, 
name.toString(), attributes.getLocale(),
-                                               attributes.getStyle(), 
attributes.getVariation(), true, true, false);
-                               if (auxRes != null)
-                               {
-                                       IResource resource = 
auxRes.getResource();
-                                       if (resource instanceof PackageResource 
packageResource)
-                                       {
-                                               attributes = 
PackageResource.sanitize(attributes, scope, name.toString());
-                                       }
-                               }
+                               attributes = 
PackageResource.sanitize(attributes, scope, name.toString());
 
                                ResourceReference res = 
getContext().getResourceReferenceRegistry()
                                        .getResourceReference(scope, 
name.toString(), attributes.getLocale(),
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
 
b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
index be4f11fae0..c1897f5d02 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java
@@ -150,13 +150,6 @@ public class PackageResource extends AbstractResource 
implements IStaticCacheabl
         */
        private boolean cachingEnabled = true;
 
-       /**
-        * controls whether
-        * {@link 
org.apache.wicket.core.util.resource.locator.caching.CachingResourceStreamLocator}
-        * should update the cache
-        */
-       private boolean serverResourceStreamReferenceCacheUpdate = true;
-
        /**
         * text encoding (may be null) - only makes sense for character-based 
resources
         */
@@ -248,27 +241,6 @@ public class PackageResource extends AbstractResource 
implements IStaticCacheabl
                this.cachingEnabled = enabled;
        }
 
-       /**
-        * Returns true if the cache should be updated for this resource
-        *
-        * @return if the cache update is enabled
-        */
-       public boolean isServerResourceStreamReferenceCacheUpdate()
-       {
-               return serverResourceStreamReferenceCacheUpdate;
-       }
-
-       /**
-        * Sets the cache update for this resource to be enabled
-        *
-        * @param enabled
-        *      if the cache update should be enabled
-        */
-       public void setServerResourceStreamReferenceCacheUpdate(final boolean 
enabled)
-       {
-               this.serverResourceStreamReferenceCacheUpdate = enabled;
-       }
-
        /**
         * get text encoding (intended for character-based resources)
         *
@@ -560,8 +532,8 @@ public class PackageResource extends AbstractResource 
implements IStaticCacheabl
        @Override
        public IResourceStream getResourceStream()
        {
-               return internalGetResourceStream(getCurrentStyle(), 
getCurrentLocale(), isServerResourceStreamReferenceCacheUpdate());
-       }
+               return internalGetResourceStream(getCurrentStyle(), 
getCurrentLocale());
+       }
 
        /**
         * @return whether {@link 
org.apache.wicket.resource.ITextResourceCompressor} can be used to
@@ -581,23 +553,13 @@ public class PackageResource extends AbstractResource 
implements IStaticCacheabl
                this.compress = compress;
        }
 
-       private IResourceStream internalGetResourceStream(final String style, 
final Locale locale, boolean updateCache)
+       private IResourceStream internalGetResourceStream(final String style, 
final Locale locale)
        {
                IResourceStreamLocator resourceStreamLocator = Application.get()
                        .getResourceSettings()
                        .getResourceStreamLocator();
-               IResourceStream resourceStream = null;
-
-               if (resourceStreamLocator instanceof 
CachingResourceStreamLocator cache)
-               {
-                       resourceStream = cache.locate(getScope(), absolutePath, 
style, variation, locale, null,
-                               false, updateCache);
-               }
-               else
-               {
-                       resourceStream = 
resourceStreamLocator.locate(getScope(), absolutePath, style,
-                               variation, locale, null, false);
-               }
+               IResourceStream resourceStream = 
resourceStreamLocator.locate(getScope(), absolutePath,
+                       style, variation, locale, null, false);
 
                String realPath = absolutePath;
                if (resourceStream instanceof IFixedLocationResourceStream)
@@ -737,35 +699,14 @@ public class PackageResource extends AbstractResource 
implements IStaticCacheabl
         * @param variation
         *            The component's variation (of the style)
         * @return {@code true} if a resource could be loaded, {@code false} 
otherwise
-        *
-        * @deprecated use {@link PackageResource#exists(Class, String, Locale, 
String, String, boolean)}
         */
        public static boolean exists(final Class<?> scope, final String path, 
final Locale locale,
                final String style, final String variation)
        {
-               return exists(scope, path, locale, style, variation, true);
+               return getResourceStream(scope, path, locale, style, variation, 
true) != null;
        }
 
-       /**
-        * Checks whether a resource for a given set of criteria exists.
-        *
-        * @param scope
-        *            This argument will be used to get the class loader for 
loading the package
-        *            resource, and to determine what package it is in. 
Typically this is the class in
-        *            which you call this method
-        * @param path
-        *            The path to the resource
-        * @param locale
-        *            The locale of the resource
-        * @param style
-        *            The style of the resource (see {@link 
org.apache.wicket.Session})
-        * @param variation
-        *            The component's variation (of the style)
-        * @param updateCache
-        *            if the server resource stream reference cache should be 
updated
-        * @return {@code true} if a resource could be loaded, {@code false} 
otherwise
-        */
-       public static boolean exists(final Class<?> scope, final String path, 
final Locale locale,
+       private static IResourceStream getResourceStream(final Class<?> scope, 
final String path, final Locale locale,
                final String style, final String variation, final boolean 
updateCache)
        {
                String absolutePath = Packages.absolutePath(scope, path);
@@ -773,13 +714,11 @@ public class PackageResource extends AbstractResource 
implements IStaticCacheabl
                        .getResourceStreamLocator();
                if (resourceStreamLocator instanceof 
CachingResourceStreamLocator cache)
                {
-                       return cache.locate(scope, absolutePath, style, 
variation, locale, null, false,
-                               updateCache) != null;
+                       return cache.locate(scope, absolutePath, style, 
variation, locale, null, false, updateCache);
                }
                else
                {
-                       return resourceStreamLocator.locate(scope, 
absolutePath, style, variation, locale, null,
-                               false) != null;
+                       return resourceStreamLocator.locate(scope, 
absolutePath, style, variation, locale, null, false);
                }
        }
 
@@ -933,10 +872,13 @@ public class PackageResource extends AbstractResource 
implements IStaticCacheabl
        public static ResourceReference.UrlAttributes sanitize(
                ResourceReference.UrlAttributes urlAttributes, Class<?> scope, 
String name)
        {
-               PackageResource urlResource = new PackageResource(scope, name, 
urlAttributes.getLocale(),
-                       urlAttributes.getStyle(), urlAttributes.getVariation());
-               urlResource.setServerResourceStreamReferenceCacheUpdate(false);
-               IResourceStream filesystemMatch = 
urlResource.getResourceStream();
+               IResourceStream filesystemMatch = getResourceStream(scope, 
name, urlAttributes.getLocale(),
+                       urlAttributes.getStyle(), urlAttributes.getVariation(), 
false);
+
+               if (filesystemMatch == null)
+               {
+                       return urlAttributes;
+               }
 
                ResourceReference.Key urlKey = new 
ResourceReference.Key(scope.getName(), name,
                        urlAttributes.getLocale(), urlAttributes.getStyle(), 
urlAttributes.getVariation());
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
 
b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
index 324531d990..3a5958cfd9 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResourceReference.java
@@ -18,7 +18,6 @@ package org.apache.wicket.request.resource;
 
 import static 
org.apache.wicket.util.resource.ResourceUtils.MIN_POSTFIX_DEFAULT_AS_EXTENSION;
 
-import java.io.IOException;
 import java.util.Locale;
 import java.util.concurrent.ConcurrentMap;
 
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 82e143e0c8..b021342f8d 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
@@ -74,15 +74,9 @@ public class ResourceReferenceRegistry
        {
                @Override
                public ResourceReference create(Key key)
-               {
-                       return create(key, true);
-               }
-
-               public ResourceReference create(Key key, boolean updateCache)
                {
                        ResourceReference result = null;
-                       if (PackageResource.exists(key.getScopeClass(), 
key.getName(), key.getLocale(),
-                               key.getStyle(), key.getVariation(), 
updateCache))
+                       if (PackageResource.exists(key))
                        {
                                result = new PackageResourceReference(key);
                        }
@@ -186,17 +180,6 @@ public class ResourceReferenceRegistry
                return removed;
        }
 
-       /**
-        * @deprecated use {@link 
ResourceReferenceRegistry#getResourceReference(Class, String, Locale, String, 
String, boolean, boolean, boolean)}
-        */
-       public final ResourceReference getResourceReference(final Class<?> 
scope, final String name,
-               final Locale locale, final String style, final String 
variation, final boolean strict,
-               final boolean createIfNotFound)
-       {
-               return getResourceReference(scope, name, locale, style, 
variation, strict, createIfNotFound,
-                       true);
-       }
-
        /**
         * Get a resource reference matching the parameters from the registry 
or if not found and
         * requested, create an default resource reference and add it to the 
registry.
@@ -204,10 +187,10 @@ public class ResourceReferenceRegistry
         * Part of the search is scanning the class (scope) and it's superclass 
for static
         * ResourceReference fields. Found fields get registered automatically 
(but are different from
         * auto-generated ResourceReferences).
-        *
+        * 
         * @see 
#createDefaultResourceReference(org.apache.wicket.request.resource.ResourceReference.Key)
         * @see ClassScanner
-        *
+        * 
         * @param scope
         *            The scope of resource reference (e.g. the Component's 
class)
         * @param name
@@ -223,25 +206,16 @@ public class ResourceReferenceRegistry
         * @param createIfNotFound
         *            If true a default resource reference is created if no 
entry can be found in the
         *            registry. The newly created resource reference will be 
added to the registry.
-        * @param updateCache
-        *            If true, the server resource stream reference cache 
should be updated
         * @return Either the resource reference found in the registry or, if 
requested, a resource
         *         reference automatically created based on the parameters 
provided. The automatically
         *         created resource reference will automatically be added to 
the registry.
         */
-       public ResourceReference getResourceReference(Class<?> scope, String 
name, Locale locale,
-               String style, String variation, boolean strict, boolean 
createIfNotFound, boolean updateCache)
+       public final ResourceReference getResourceReference(final Class<?> 
scope, final String name,
+               final Locale locale, final String style, final String 
variation, final boolean strict,
+               final boolean createIfNotFound)
        {
                return getResourceReference(new Key(scope.getName(), name, 
locale, style, variation),
-                       strict, createIfNotFound, updateCache);
-       }
-
-       /**
-        * @deprecated use {@link 
ResourceReferenceRegistry#getResourceReference(Key, boolean, boolean, boolean)}
-        */
-       public final ResourceReference getResourceReference(final Key key, 
final boolean strict,
-               final boolean createIfNotFound){
-               return getResourceReference(key, strict, createIfNotFound, 
true);
+                       strict, createIfNotFound);
        }
 
        /**
@@ -262,14 +236,12 @@ public class ResourceReferenceRegistry
         * @param createIfNotFound
         *            If true a default resource reference is created if no 
entry can be found in the
         *            registry. The newly created resource reference will be 
added to the registry.
-        * @param updateCache
-        *            If true, the server resource stream reference cache 
should be updated
         * @return Either the resource reference found in the registry or, if 
requested, a resource
         *         reference automatically created based on the parameters 
provided. The automatically
         *         created resource reference will automatically be added to 
the registry.
         */
        public final ResourceReference getResourceReference(final Key key, 
final boolean strict,
-               final boolean createIfNotFound, boolean updateCache)
+               final boolean createIfNotFound)
        {
                ResourceReference resource = 
_getResourceReference(key.getScope(), key.getName(),
                        key.getLocale(), key.getStyle(), key.getVariation(), 
strict);
@@ -290,7 +262,7 @@ public class ResourceReferenceRegistry
                        // Still nothing found => Shall a new reference be 
auto-created?
                        if ((resource == null) && createIfNotFound)
                        {
-                               resource = addDefaultResourceReference(key, 
updateCache);
+                               resource = addDefaultResourceReference(key);
                        }
                }
 
@@ -362,12 +334,12 @@ public class ResourceReferenceRegistry
         *      the data making up the resource reference
         * @return The default resource created
         */
-       private ResourceReference addDefaultResourceReference(final Key key, 
final boolean updateCache)
+       private ResourceReference addDefaultResourceReference(final Key key)
        {
                // Can be subclassed to create other than 
PackagedResourceReference
-               ResourceReference reference = 
createDefaultResourceReference(key, updateCache);
+               ResourceReference reference = 
createDefaultResourceReference(key);
 
-               if (reference != null && updateCache)
+               if (reference != null)
                {
                        // number of RRs which can be auto-added is restricted 
(cache size). Remove entries, and
                        // unregister excessive ones, if needed.
@@ -411,14 +383,6 @@ public class ResourceReferenceRegistry
                }
        }
 
-       /**
-        * @deprecated use {@link 
ResourceReferenceRegistry#createDefaultResourceReference(Key, boolean)}
-        */
-       protected ResourceReference createDefaultResourceReference(final Key 
key)
-       {
-               return createDefaultResourceReference(key, true);
-       }
-
        /**
         * Creates a default resource reference in case no registry entry and 
it was requested to create
         * one.
@@ -429,20 +393,14 @@ public class ResourceReferenceRegistry
         *      the data making up the resource reference
         * @return The {@link ResourceReference} created or {@code null} if not 
successful
         */
-       protected ResourceReference createDefaultResourceReference(final Key 
key, final boolean updateCache)
+       protected ResourceReference createDefaultResourceReference(final Key 
key)
        {
                IResourceReferenceFactory factory = 
getResourceReferenceFactory();
                if (factory == null)
                {
                        factory = new DefaultResourceReferenceFactory();
                }
-               if (factory instanceof DefaultResourceReferenceFactory 
defaultFactory)
-               {
-                       return defaultFactory.create(key, updateCache);
-
-               } else {
-                       return factory.create(key);
-               }
+               return factory.create(key);
        }
 
        /**

Reply via email to