Konrad Windszus created SLING-3709:
--------------------------------------

             Summary: 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)

Reply via email to