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

Stefan Seifert updated SLING-3716:
----------------------------------

    Attachment: 140701_SLING-3716_slingmodes_constructorinjection.patch

attached is a patch for adding constructor injection support to sling models 
including unit tests.

some remarks:
* due to missing support in java reflection it is not possible to get the name 
of a constructor parameter without resorting external tools like objectweb ASM. 
i did not wanted to introduce this only for this usecase. So if an injector is 
used that depends on name-based injection a @Named parameter or equivalent 
injector-specific annotation with name attribute is mandatory. the existing 
injector implementations where extended to ensure that they can cope with a 
null name attribute and unit tests were added for this case.
* by default only constructors which are annotated with @Inject are supported 
for constructor injection. to keep compatibility with previous sling 
implementation releases the special case with one-parameter constructor 
matching the adaptable is still supported.
* to make the injection of the adaptable itself more generic and support it in 
multiple parameter constructors i added a new "SelfInjector". this is supported 
for field injection as well.
* currently there is no SelfInjector-specific annotation, the matching is class 
based. we can easily add one, this touches the topics discussed in SLING-3715 
and SLING-3718 as well.
* integration test added as well

> Sling Models: Add support for constructor dependency injection
> --------------------------------------------------------------
>
>                 Key: SLING-3716
>                 URL: https://issues.apache.org/jira/browse/SLING-3716
>             Project: Sling
>          Issue Type: Improvement
>          Components: Extensions
>            Reporter: Stefan Seifert
>            Priority: Minor
>         Attachments: 140701_SLING-3716_slingmodes_constructorinjection.patch
>
>
> Currently, Sling Models only supports dependency injection for fields (or 
> interface getter methods), but not for constructor arguments. This ticket is 
> for discussing what this constructor dependency injection should support, and 
> perhaps finally provide a patch to implement it.
> This is somewhat related to SLING-3715 for class-based dependency injection, 
> because this would come in especially handy for constructor injection.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to