[ 
https://issues.apache.org/jira/browse/OWB-575?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13038639#comment-13038639
 ] 

Rohit Dilip Kelapure commented on OWB-575:
------------------------------------------


After looking at this some more I have changed the proposed fix to 
Should only unwrap InvocationTargetException.  The other exceptions should be 
thrown as-is since they represent coding errors.

org.apache.webbeans.proxy.ResourceProxyHandler

    @Override
    public Object invoke(Object self, Method actualMethod, Method proceed, 
Object[] args) throws Throwable
    {
                Object rc = null;
                try {

                        rc = actualMethod.invoke(this.actualResource, args);

                } catch (InvocationTargetException ite) {
                        throw ite.getCause();
                } catch (IllegalArgumentException e) {
                        throw e;
                } catch (IllegalAccessException e) {
                        throw e;
                }

                return rc;
    }


> ResourceProxyHandler.invoke should unwrap and throw the underlying cause of 
> the InvocationTargetException
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: OWB-575
>                 URL: https://issues.apache.org/jira/browse/OWB-575
>             Project: OpenWebBeans
>          Issue Type: Bug
>          Components: Java EE Integration, TCK
>    Affects Versions: 1.1.0, 1.0.0
>         Environment: any
>            Reporter: Rohit Dilip Kelapure
>            Assignee: Gurkan Erdogdu
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> Right now the ResourceProxyHandler simply rethrows the exception resulting 
> from an invoke.
> There may be cases where the ResourceProxyHandler needs to throw the root 
> cause of the exception upstream instead of the wrapped InvocationException.
> ResourceProxyHandler.invoke needs to unwrap the root cause exception from the 
> invoke and pass it up the chain since.
> This change is conceptually similar to 
> https://issues.apache.org/jira/browse/OWB-554
> This defect is needed to resolve a 
> org.jboss.jsr299.tck.tests.implementation.simple.resource.persistenceContext.PersistenceContextInjectionTest
>  TCK failure since the TCK looks for  the IllegalStateException as noted 
> below.
>       try
>       {
>          entityManager.getTransaction(); // <--
>          entityManagerValid = false;
>       }
>       catch (IllegalStateException e)
>       {
>          // an IllegalStateException is the expected result if this is a JTA 
> entityManager
>       }
> An IllegalStateException is not caught though - because it looks like it is 
> being wrapped by a java.lang.reflect.InvocationTargetException.
> proposed Fix: 
>     @Override
>     public Object invoke(Object self, Method actualMethod, Method proceed, 
> Object[] args) throws Throwable
>     {
>               Object rc = null;
>               try {
>                       rc = actualMethod.invoke(this.actualResource, args);
>               } catch (InvocationTargetException ite) {
>                       throw ite.getCause();
>               } catch (IllegalArgumentException e) {
>                       throw e.getCause();
>               } catch (IllegalAccessException e) {
>                       throw e.getCause();
>               }
>               return rc;
>     }

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to