jsr372-experts@javaserverfaces-spec-public.java.net

[jsr372-experts] Re: Set and check component resource rendered via standard API

From: arjan tijms <arjan.tijms_at_gmail.com>
Date: Wed, 4 Mar 2015 16:25:08 +0100

Hi,

Sounds good, but one question:

If the proposed API just returns a Set<String> where presence of a
resource identifier means that resource has been rendered, how does
the library indicate it wants to suppress rendering of a certain
resource?

Kind regards,
Arjan




On Wed, Mar 4, 2015 at 4:09 PM, Bauke Scholtz <balusc_at_gmail.com> wrote:
> In hindsight, that boolean is superfluous. Make it a mutable
> Set<ResourceIdentifier> or Set<String> and just consider the presence in the
> set as already rendered.
>
> Cheers, B
>
> On Wed, Mar 4, 2015 at 4:05 PM, Bauke Scholtz <balusc_at_gmail.com> wrote:
>>
>> Hi,
>>
>> Both Mojarra and MyFaces have an internal way to mark a script or
>> stylesheet resource as rendered (to avoid duplicate rendering). Mojarra sets
>> it as a context attribute with name+library as key and a boolean true as
>> value (see a.o. StylesheetRenderer#encodeEnd()). MyFaces sets it as a
>> context attribute via a Map<String, Boolean> (see a.o.
>> HtmlStylesheetRenderer#encodeEnd() via a ResourceUtils helper class).
>>
>> For component library developers it would be very useful if this
>> information is available by standard API means so that the component library
>> can if necessary check and/or suppress the rendering of those resources. For
>> example to combine those resources via a special resource handler, or to
>> automatically delegate to a CDN host, or to turn a script resource into a
>> deferred script, etcetera.
>>
>> I'd propose adding UIViewRoot#getRenderedComponentResources() which
>> returns a mutable Map<ResourceIdentifier, Boolean> for the purpose where
>> ResourceIdentifier could also be a String in the standard format
>> library+":"+name.
>>
>> What do others think about it?
>>
>> Cheers, B
>
>