On Tue, Sep 6, 2011 at 4:12 PM, Alex Porras <a...@twelve17.com> wrote:

> What is happening is that when FooException is thrown in the
> application, it is being handled by BarExceptionMapper.

I believe I have found the solution.  Despite the child exception
mappers specifying a generic type required by the parent (abstract)
exception mapper (which implements ExceptionMapper), each child class
also needs to include a "implements ExceptionMapper<T>" declaration,
to prevent CXF from bubbling up to the base interface implementation
declaration and using that class's generic type.

Thus, my exception mapper hierarchy is now:

(abstract) BaseRuntimeExceptionMapper <T extends BaseRuntimeException>
FooExceptionMapper extends BaseRuntimeExceptionMapper<FooException>
implements ExceptionMapper<FooException>
BarExceptionMapper extends
BaseRuntimeExceptionMapper<BarException>implements
ExceptionMapper<BarException>

This seems a little repetitive, but I think it makes sense given the
route that CXF seems to be using to determine the exception type.

Hope this helps someone else!

Alex

Reply via email to