[ https://issues.apache.org/jira/browse/SLING-3709?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14155401#comment-14155401 ]
Justin Edelson commented on SLING-3709: --------------------------------------- In r1628824, I committed a version of this. I kept the API basically the same, but in order to keep the internals simpler, I created a Result object which can either throw the appropriate exception or generate the appropriate log message. I did change the name of one of the exceptions from NoInjectorException to MissingElementsException as that seemed more accurate. Leaving this issue open for a bit as I want to add some more unit tests for the ModelFactory code path. Thanks for the patch and for pushing this along. > 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 > Components: Extensions > Affects Versions: Sling Models Implementation 1.0.4, Sling Models > Implementation 1.0.6 > Reporter: Konrad Windszus > Labels: models > Fix For: Sling Models API 1.2.0, Sling Models Impl 1.2.0 > > > 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.3.4#6332)