[ https://issues.apache.org/jira/browse/SLING-4447?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14481332#comment-14481332 ]
Radu Cotescu commented on SLING-4447: ------------------------------------- Besides [~sseif...@pro-vision.de]'s suggestion you should also clean the code in order to not use implementation classes from Sightly \[0\]\[1\]. \[0\] - https://github.com/apache/sling/blob/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/sightly/ModelFactoryUseProvider.java#L34 \[1\] - https://github.com/apache/sling/blob/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/sightly/ModelFactoryUseProvider.java#L80 > 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: Sling Models Impl 1.2.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)