[ https://issues.apache.org/jira/browse/SLING-6778?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15965081#comment-15965081 ]
Justin Edelson edited comment on SLING-6778 at 4/11/17 10:57 PM: ----------------------------------------------------------------- proposed change implementing the vocabulary from the description. Assumes that SLING-5379 has been implemented. was (Author: justinedelson): proposed change implementing the vocabulary from the description. > [Sling Models] Support Delegate Pattern for Models adapted from interfaces > -------------------------------------------------------------------------- > > Key: SLING-6778 > URL: https://issues.apache.org/jira/browse/SLING-6778 > Project: Sling > Issue Type: New Feature > Components: Extensions > Reporter: Justin Edelson > Attachments: SLING-6778.diff > > > Consider this interface: > {code} > public interface Something { > > String getText(); > String getOther(); > } > {code} > With this model implementation: > {code} > @Model(adaptable = Resource.class, adapter = Something.class, resourceType = > "myco/something") > public class SomethingImpl implements Something { > > @Inject > private String text; > @Inject > private String other; > public String getText() { > return text; > } > public String getOther() { > return other; > } > } > {code} > And let's say that there is a resource with the type {{myco/somethingelse}} > and that {{myco/something}} is the super type of {{myco/somethingelse}}. > In order to create a model class associated with {{myco/somethingelse}} and > have that model class access the original class using the Delegate pattern, > it is quite difficult to do so since you need to manually create a wrapping > resource and then adapt that. I think we can facilitate this pattern through > SLING-5739 and a new @Via provider. > The syntax would be something along the lines of > {code} > @Self @Via(type = SuperResourceType.class) > private Something delegate; > {code} > Assuming you wanted the super type > We could also support manually setting the resource type, i.e. > {code} > @Self @Via(value = “some/other/resourceType”, type = > ForcedResourceType.class) > private Something delegate; > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)