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