[
https://issues.apache.org/jira/browse/SLING-6778?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Justin Edelson resolved SLING-6778.
-----------------------------------
Resolution: Fixed
Fix Version/s: Sling Models Impl 1.3.10
Sling Models API 1.3.4
patch applied in r1792071
> [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
> Fix For: Sling Models API 1.3.4, Sling Models Impl 1.3.10
>
> Attachments: SLING-6778.diff, 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 = ResourceSuperType.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)