Expand my Community achievements bar.

SOLVED

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

Avatar

Level 2

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?

1 Accepted Solution

Avatar

Correct answer by
Level 2

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.

View solution in original post

2 Replies

Avatar

Correct answer by
Level 2

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.

Avatar

Employee Advisor

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.