You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Justin Edelson (JIRA)" <ji...@apache.org> on 2017/04/11 22:55:41 UTC

[jira] [Updated] (SLING-6778) [Sling Models] Support Delegate Pattern for Models adapted from interfaces

     [ https://issues.apache.org/jira/browse/SLING-6778?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Justin Edelson updated SLING-6778:
----------------------------------
    Attachment: SLING-6778.diff

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)