[
https://issues.apache.org/jira/browse/SLING-8706?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17142111#comment-17142111
]
Justin Edelson commented on SLING-8706:
---------------------------------------
The question of how HTL interprets methods which return {{Optional}} should
really be orthogonal. Whether or not Sling Models supports *injection* of
{{Optional}} fields has no bearing on the API exposed by a model class. One
could have a Sling Model class *today* used by HTL which had a method which
returned an {{Optional}} value.
I don't see why the lack of serialization support is a problem, for two reasons
-- one, I'm not sure how common is it to use Java serialization for model
classes, second, this is (no pun intended) an _optional_ feature so worst case
a model developer would need to make a choice between using Java serialization
and this method for optional field injection. While yes, {{Optional}} wasn't
intended to be used in this way, I see no documentation that its usage as a
field is *prohibited*.
> Injections for java.util.Optional<> should be automatic optional
> -----------------------------------------------------------------
>
> Key: SLING-8706
> URL: https://issues.apache.org/jira/browse/SLING-8706
> Project: Sling
> Issue Type: Improvement
> Components: Sling Models
> Reporter: Jörg Hoh
> Priority: Major
> Time Spent: 2h 20m
> Remaining Estimate: 0h
>
> The current approach to support optional injections requires to annotate the
> field with {{@Optional}} plus proper handling within the javacode (null
> checks etc), which can be forgotten.
> So instead of
> {code}
> @Inject @Optional
> String fieldname;
> {code}
> it should also be possible to use this
> {code}
> @Inject
> Optional<String> fieldname;
> {code}
> with the very same semantic. But the developer is forced to deal with the
> case that the value is not present.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)