You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "William Headrick (Jira)" <ji...@apache.org> on 2021/01/14 05:06:00 UTC
[jira] [Created] (WICKET-6860) ConcatBundleResource double scope
processing when CssUrlReplacer is used
William Headrick created WICKET-6860:
----------------------------------------
Summary: ConcatBundleResource double scope processing when CssUrlReplacer is used
Key: WICKET-6860
URL: https://issues.apache.org/jira/browse/WICKET-6860
Project: Wicket
Issue Type: Bug
Components: wicket-core
Affects Versions: 8.5.0
Reporter: William Headrick
There is "double scope processing" of a url in a PackageResource when the CssCompressor set on the Application ResourceSettings implements .IScopeAwareTextResourceProcessor.
The CssUrlReplacer (for example) makes the urls relative during the PackageResource.compressResponse call. The compressResponse ends up being called in ConcatBundleResource.readAllResources as part of `IOUtils.copy(curStream.getInputStream(), output)` and then ConcatBundleResource calls CssUrlReplacer.process again.
[https://github.com/apache/wicket/commit/e2a11151e2bc55ae3a637efd88b1202582461780/] causes a "double scope processing" of a url in a PackageResource. The second application of the CssCompressor happens here [https://github.com/apache/wicket/commit/e2a11151e2bc55ae3a637efd88b1202582461780/#diff-b394ae1f7fce4...|https://github.com/apache/wicket/commit/e2a11151e2bc55ae3a637efd88b1202582461780/#diff-b394ae1f7fce412b517619f435cf3f7035be89e283cd541c90975a70b7afd9caR194]
Set the CssCompressor on the Application. Something like this in the Application `init` for example:
this.getResourceSettings().setCssCompressor(new CssUrlReplacer())
The CssUrlReplacer gets set on both the PackageResource and ConcatBundleResource as the Compressor.
So, given this in the PackageResource css:
background: url('../img/header_logo_r.png');
this bad url gets inserted into the combined css file:
background (generated in 8.5.0+): url('../com.foo.pages.SomePage/stylesheet/com.foo.pages.SomePage/img/header_logo_r-ver-1.4.0-ver-1.4.0.png')
whereas this is the correct ScopeAware path (which is generated in <8.4.0):
background: url('../com.foo.pages.SomePage/img/header_logo_r-ver-1.4.0.png')
--
This message was sent by Atlassian Jira
(v8.3.4#803005)