You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Konrad Windszus (JIRA)" <ji...@apache.org> on 2014/11/13 16:01:33 UTC

[jira] [Comment Edited] (SLING-4155) DefaultInjectionStrategy not considered for injector-specific annotations

    [ https://issues.apache.org/jira/browse/SLING-4155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14209860#comment-14209860 ] 

Konrad Windszus edited comment on SLING-4155 at 11/13/14 3:01 PM:
------------------------------------------------------------------

In my pull-request I already raised the exported package version number to 2.0 (thanks to the new baseline feature of the maven-bundle-plugin).

I don't want that feature to be broken until we release 2.0 so what about the following approach:
# add a *new* field to all injector-specific annotations named {{isOptional}} with the default value {{DEFAULT}} (following the default injection strategy)
# deprecate the old field {{optional}} (which still has {{false}} as its default value)

With v2.0 of Sling Models we could then finally remove the field {{optional}}

Now the default injection strategy should be followed if
# {{isOptional = DEFAULT}} and
# optional = false (either explicitly set or just because it is the default - it is impossible to distinguish those two cases)

Now if we look at the following usecases this is the new vs. the old behaviour:

||optional||DefaultInjectionStrategy||old behaviour||new behaviour||
|{{false}}(default)|{{Required}}(default)|required|required|
|{{false}}(default)|{{Optional}}|required|optional|
|{{true}}|{{Required}}(default)|optional|optional|
|{{true}}|{{Optional}}|optional|optional|

Although this actually changes the second of the four usecases I don't think this will ever affect someone, because the DefaultInjectionStrategy was probably never set on models using injector-specific annotations (due to this bug).
WDYT?


was (Author: kwin):
In my pull-request I already raised the exported package version number to 2.0 (thanks to the new baseline feature of the maven-bundle-plugin).

I don't want that feature to be broken until we release 2.0 so what about the following approach:
# add a *new* field to all injector-specific annotations named {{isOptional}} with the default value {{DEFAULT}} (following the default injection strategy)
# deprecate the old field {{optional}} (which still has {{false}} as its default value)

With v2.0 of Sling Models we could then finally remove the field {{optional}}

Now the default injection strategy should be followed if
# {{isOptional = DEFAULT}}
# optional = false (either explicitly set or just because it is the default - it is impossible to distinguish those two cases)

Now if we look at the following usecases this is the new vs. the old behaviour:

||optional||DefaultInjectionStrategy||old behaviour||new behaviour||
|{{false}}(default)|{{Required}}(default)|required|required|
|{{false}}(default)|{{Optional}}|required|optional|
|{{true}}|{{Required}}(default)|optional|optional|
|{{true}}|{{Optional}}|optional|optional|

Although this actually changes the second of the four usecases I don't think this will ever affect someone, because the DefaultInjectionStrategy was probably never set on models using injector-specific annotations (due to this bug).
WDYT?

> DefaultInjectionStrategy not considered for injector-specific annotations
> -------------------------------------------------------------------------
>
>                 Key: SLING-4155
>                 URL: https://issues.apache.org/jira/browse/SLING-4155
>             Project: Sling
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: Sling Models Implementation 1.0.6
>            Reporter: Konrad Windszus
>
> The default injection strategy (being implemented in SLING-3696) is only considered, in case there is no injector-specific annotation being used.
> Otherwise it is just ignored.
> The logic should be like this:
> if annotationProcessor.isOptional() returns null
> -> the default injection strategy should be used
> in any other case the boolean value should be used.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)