[ https://issues.apache.org/jira/browse/SLING-4447?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Radu Cotescu closed SLING-4447. ------------------------------- > Improve JavaUseProvider to not fall back to a simple Pojo instantiation in > case a Java class with @Model annotation cannot be instantiated > ------------------------------------------------------------------------------------------------------------------------------------------ > > 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 > Assignee: Konrad Windszus > Fix For: Scripting Sightly Models Use Provider 1.0.0 > > Attachments: SLING-4447-v01.patch > > > Currently in case a Java class is a Sling Model (i.e. has the Model > annotation) and cannot be instantiated (e.g. required injections not > possible) Sightly falls back to instantiate those as simple Pojos. > This is never good, since a lot of NullPointerException might happen 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 > instantiated and developers more easily see why the Sling Model does not work > (instead of running into NullPointerExceptions in their model because it was > instantiated as simple Pojo) -- This message was sent by Atlassian JIRA (v6.3.4#6332)