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

Avatar

Avatar

Elkish

Avatar

Elkish

Elkish

22-10-2019

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?

Accepted Solutions (1)

Accepted Solutions (1)

Avatar

Avatar

Elkish

Avatar

Elkish

Elkish

23-10-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.

Answers (1)

Answers (1)

Avatar

Avatar

Jörg_Hoh

Employee

Total Posts

3.0K

Likes

910

Correct Answer

1.0K

Avatar

Jörg_Hoh

Employee

Total Posts

3.0K

Likes

910

Correct Answer

1.0K
Jörg_Hoh
Employee

27-10-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.