[ https://issues.apache.org/jira/browse/SLING-10645?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17411049#comment-17411049 ]
Henry Kuijpers commented on SLING-10645: ---------------------------------------- Hi [~bdelacretaz], Indeed, there is an "overriding" and an "overlaying" way, however, the names of the services behind it are quite confusing because they don't correctly explain what they do (overriding = Overriding Resource Picker, overlay = Merging Resource Picker). Overriding means *merging* based on the sling:resourceType/sling:resourceSuperType properties. Overlaying means *merging* based on the search path (/libs, /apps, ...) They both merge. :) Current set of properties that can be put on nodes (that function as instructions to the Resource Merger), already provide a good arsenal of functionality. In terms of controlling properties, it is possible to discard a property, or overwrite a property. That is totally fine for almost all use-cases. With the exception of multi-valued properties. With multi-valued properties, it could be very nice to have more fine-grained control over what happens with the parent's property values. Some use-cases: 1. Inherit all values, but add a (set of) values at the end, at the beginning, or somewhere in-between 2. Inherit no values (can already be done with sling:hideProperties=[x]) 3. Inherit no values, but redefine the property (can already be done by just specifying the property again, without instructions) 4. Inherit all values, except for 2 specific values 5. Inherit values, exclude some, add some (combination of 1 and 4) The specific use-case I'm trying to tackle now indeed allows for a simple "merge"-mode, where our values can just be appended to the set of values from the parent. But I can imagine #5 and #1 could also be desired. It seems [~JelleBouwmans] also has a requirement for this concept, so at least there are 2 use-cases already. I did notice that my proposal didn't account for inserting a property value after a specific value. > Update Sling Resource Merger with handling for multi-valued properties > ---------------------------------------------------------------------- > > Key: SLING-10645 > URL: https://issues.apache.org/jira/browse/SLING-10645 > Project: Sling > Issue Type: Improvement > Components: ResourceResolver > Affects Versions: Resource Merger 1.4.0 > Reporter: Henry Kuijpers > Priority: Major > > Sling Resource Merger is able to handle properties, not individual property > values. > When setting up this node structure (with AEM's extraClientlibs property in > TouchUI dialogs): > + /libs/wcm/basicpage/cq:dialog@extraClientlibs=["a", "b", "c"] > + /apps/website/components/page@sling:resourceSuperType="wcm/basicpage" > + /apps/website/components/page/cq:dialog@extraClientlibs=["d", "e"] > We want to make sure that the extraClientlibs property that is being read in > website/components/page/cq:dialog will return ["a", "b", "c", "d", "e"]. > Currently, it will just return ["d", "e"], since the extraClientlibs-property > is *overwritten*. > It would be nice to add additional logic to allow more control over the > inheritance of the values that are tied to a parent's > extraClientlibs-property. > Maybe we can come up with some additional properties that can function as > instructions to the Resource Merger (next to the ones we already have), so > that there can be more fine-grained control over the inheritance/removal of > property values in multi-valued scenarios. -- This message was sent by Atlassian Jira (v8.3.4#803005)