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

2017-04-12 Thread Justin Edelson (JIRA)

 [ 
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

2017-04-12 Thread Justin Edelson (JIRA)

 [ 
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

2017-04-11 Thread Justin Edelson (JIRA)

 [ 
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

2017-04-11 Thread Justin Edelson (JIRA)

 [ 
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)