On Jun 25, 2008, at 2:15 PM, David Blevins wrote:

Is the annotated exception class listed in any of the throws clauses of the business interface methods in module B? (where module A has the exception class, module B does not)

If so, we could expand our support to looking there too in addition to scraping the module jar.

I think we should check exception classes at runtime for the annotation. Normally, this annotation is used for RuntimeExceptions which are not required to be listed, and therefore most likely not listed. I also don't think this will add much processing to our exception handling code.

If you look at the containers, you will see that they all delegate to org.apache.openejb.core.CoreDeploymentInfo#getExceptionType to determine if the Exception is an application exception or not. That method basically, checks a Map to determine if the exception was explicitly flagged as an application exception, and if not found in the map, it checks if the exception is a RuntimeException. We could change that final check to look for an annotation on the class (and up the chain if not found). Finally, once we make a determination about an exception class we should record that decision in the Map. With the addition of recording the decision, this should only impact exception processing the first time we run into a new exception type.

-dain

Reply via email to