Justin Edelson created SLING-6778: ------------------------------------- Summary: [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
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)