Konrad Windszus created SLING-4447:
--------------------------------------

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

Reply via email to