[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 updated diff > [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, 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)
[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: -- Description: 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} was: 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} > [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 = ResourceSuperType.class) > private Something delegate; > {code} > Assuming you wanted the
[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: -- Description: 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} was: 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} > [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
[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)