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);
}
/**