[ https://issues.apache.org/jira/browse/SLING-4447?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14329832#comment-14329832 ]
Radu Cotescu commented on SLING-4447: ------------------------------------- What about providing a {{UseProvider}} for Sightly in Sling Models, and make Sightly an optional dependency for Sling Models? :) > Improve JavaUseProvider to not fall back to a simple Pojo instanciation in > case a Java class with @Model annotation cannot be instanciated > ------------------------------------------------------------------------------------------------------------------------------------------ > > Key: SLING-4447 > URL: https://issues.apache.org/jira/browse/SLING-4447 > Project: Sling > Issue Type: Improvement > Components: Scripting > Affects Versions: Scripting Sightly Engine 1.0.0 > Reporter: Konrad Windszus > > Currently in case a Java class is a Sling Model (i.e. has the Model > annotation) and cannot be instanciated (e.g. required injections not > possible) Sightly falls back to instanciate those as simple Pojos. > This is never good, since a lot of NullPointerException happen then, because > all injections have not been performed then. > Therefore in the following code should be used instead > {code} > if (modelFactory.isModelClass(resource, cls)) { > if (modelFactory.canCreateFromAdaptable(resource, cls)) { > obj = modelFactory.createModel(resource, cls); > } else if (modelFactory.canCreateFromAdaptable(request, cls)) { > obj = modelFactory.createModel(request, cls); > } else { > throw new IllegalStateException("Could not adapt the given Sling Model > from neither resource nor request: " + cls); > } > } > {code} > That way, exceptions would be propagated in case a Sling model cannot be > instanciated and developers more easily see why the Sling Model does not work > (instead of running into NullPointerExceptions in their model because it was > instanciated as simple -- This message was sent by Atlassian JIRA (v6.3.4#6332)