As you probably figured out, Tapestry's parsing of CSS files is just
using a regular expression rather than a true parser, and coming up
with a regex that skipped urls within comments was judged too hard at
the time (https://issues.apache.org/jira/browse/TAP5-2368). However,
it looks like you're right, AssetSourceImpl.getAsset is throwing a
RuntimeException when the asset is not found, but Tapestry is
erroneously checking for a null instead of catching an exception in
that case (CSSURLRewriter.java:179), breaking effective use of the
STRICT_CSS_URL_REWRITING symbol.

Care to file a bug? (A patch would be nice too!)

https://github.com/apache/tapestry-5/blob/master/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java

On Tue, Dec 20, 2016 at 3:42 PM, Robert Hannebauer
<rob...@hannebauer.org> wrote:
> Hello,
>
> i'm playing with webjars (https://github.com/eddyson-de/tapestry-webjars) and 
> jquery-ui. Everything work fine, except when i try to use the jquery-ui.css.
>
> It took me some time to understand the following error message, while trying 
> to load the css file:
>
> Caused by: java.lang.RuntimeException: Unable to locate asset 
> 'webjars:META-INF/resources/webjars/jquery-ui/1.12.1/%22images%2Fui-icons_555555_256x240.png%22'
> (the file does not exist).
>     at 
> org.apache.tapestry5.internal.services.AssetSourceImpl.getLocalizedAssetFromResource(AssetSourceImpl.java:390)
>     at 
> org.apache.tapestry5.internal.services.AssetSourceImpl.getAssetInLocale(AssetSourceImpl.java:305)
>     at 
> org.apache.tapestry5.internal.services.AssetSourceImpl.getAsset(AssetSourceImpl.java:131)
>     at $AssetSource_25dc8e7415b4a.getAsset(Unknown Source)
>     at 
> org.apache.tapestry5.internal.services.assets.CSSURLRewriter.replaceURLs(CSSURLRewriter.java:177)
>     at 
> org.apache.tapestry5.internal.services.assets.CSSURLRewriter.access$100(CSSURLRewriter.java:46)
>     at 
> org.apache.tapestry5.internal.services.assets.CSSURLRewriter$1.perform(CSSURLRewriter.java:109)
>     at 
> org.apache.tapestry5.internal.services.assets.CSSURLRewriter$1.perform(CSSURLRewriter.java:104)
>     at 
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:110)
>
> The file %22images%2Fui-icons_555555_256x240.png%22  does really not exists.
>
> Playing with SymbolConstants.STRICT_CSS_URL_REWRITING does not really help, 
> because the CSSURLRewriter fails too early.
>
> The root cause is the *comment* header of  jquery-ui.css. Within this header 
> exists the string "url(%22images%2Fui-icons_555555_256x240.png%22)".
> I assume, it would be a good idea to either ignore comments or to be more 
> tolerant or catch the exception and then evaluate STRICT_CSS_URL_REWRITING.
> What do you think?
>
> Regards,
> Robert
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to