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/07/03 11:50:25 UTC

[jira] [Commented] (SLING-3709) Sling Models: Allow caller to deal with exceptions

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

Konrad Windszus commented on SLING-3709:
----------------------------------------

It seems that throwing a RuntimeException from an AdapterFactory should be fine (http://www.mail-archive.com/dev@sling.apache.org/msg31420.html).
[~justinedelson] Would you accept a patch which lets the ModelAdapterFactory throw RuntimeExceptions if
# Required methods/fields could not be injected (for whatever reason)
# Model class does not have a usable constructor
# Invoking PostConstruct does fail for whatever reason

Do you think we would need a switch for that behaviour (as configurable OSGi property) or we can just change to throwing RuntimeException instead of returning null in that case?

> Sling Models: Allow caller to deal with exceptions
> --------------------------------------------------
>
>                 Key: SLING-3709
>                 URL: https://issues.apache.org/jira/browse/SLING-3709
>             Project: Sling
>          Issue Type: Improvement
>    Affects Versions: Sling Models Implementation 1.0.4, Sling Models Implementation 1.0.6
>            Reporter: Konrad Windszus
>
> Currently due to the specification of the adaptTo-method to return null if adaptation is not possible, the caller is not notified about any exceptions (because they are caught within the ModelAdapterFactory).
> This is e.g. necessary to deal with validation exceptions properly (i.e. required field injection not possible).  The problem was also discussed briefly in http://apache-sling.73963.n3.nabble.com/Silng-Models-Validation-Framework-td4033411.html.
> All exceptions either being thrown by the 
> @PostConstruct method or caused by the field/method injection are not propagated but basically swallowed by Sling Models.
> It would be great to be able to catch those exceptions either in the view or in a servlet filter. I think it should be possible to throw unchecked exceptions in the ModelAdapterFactory.getFactory() method if it is requested (i.e. through a global OSGi configuration flag for Sling Models).
> WDYT?
> Would you accept such a patch or do you think this breaks the API (also compare with https://issues.apache.org/jira/browse/SLING-2712?focusedCommentId=13561516&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13561516).
> If it does not work through the adaptTo, SlingModels should provide an alternative way of instanciating models (and propagating exceptions), although this is kind of tricky, because it internally relies on adaptTo as well (e.g. in https://github.com/apache/sling/blob/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java#L647)



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