[Sling Model] Is there a way to use adaptTo and catch any thrown exceptions? | Community
Skip to main content
New Participant
October 22, 2019
Solved

[Sling Model] Is there a way to use adaptTo and catch any thrown exceptions?

  • October 22, 2019
  • 2 replies
  • 2515 views

We have been making decent use of sling models on our site, but one of the things that has been frustrating is that whenever an exception is thrown as part of the adaptTo step it seems to get eaten in the process, leaving behind a null object.  Is there a way to do an adaptTo step and actually catch any exceptions?

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by Elkish

So I actually found the solution while looking through docs on an unrelated issue:

Apache Sling :: Sling Models

It looks like Sling has a factory class you can use that will pass exceptions when used to adapt objects to new types.  Instead of using the object's adaptTo function, you can simply use:

MyModel model = modelFactory.createModel(object, MyModel.class);

Which will throw catchable exceptions.

2 replies

joerghoh
Employee
October 27, 2019

Good to know that you have a found a way to deal with that; but in general adaptTo() does not allow exceptions to be thrown. I remeber a discussion on the sling list of this behavior should be changed, but I do not recall why this proposal has been declined.

Anyway, I find this behavior also odd, unless you start using it in combination with Java8's Optional type.

ElkishAuthorAccepted solution
New Participant
October 23, 2019

So I actually found the solution while looking through docs on an unrelated issue:

Apache Sling :: Sling Models

It looks like Sling has a factory class you can use that will pass exceptions when used to adapt objects to new types.  Instead of using the object's adaptTo function, you can simply use:

MyModel model = modelFactory.createModel(object, MyModel.class);

Which will throw catchable exceptions.