[
http://jira.jboss.com/jira/browse/JBSEAM-1080?page=all ]
Gavin King closed JBSEAM-1080.
------------------------------
Resolution: Rejected
The outer exception contains information that the inner one does not have. And the inner
information is still there in the stack trace.
Component class obfuscates IllegalArgumentExceptions from Reflections
class
---------------------------------------------------------------------------
Key: JBSEAM-1080
URL:
http://jira.jboss.com/jira/browse/JBSEAM-1080
Project: JBoss Seam
Issue Type: Bug
Components: Core
Affects Versions: 1.2.0.GA
Environment: Seam 1.2.0PATCH1, OS X 10.4.9, JDK 1.5, JBOSS 4.0.2
Reporter: Stuart Robertson
Priority: Minor
Reflections.java:63 generates a very clear exception message when rethrowing
IllegalArgumentException. In stepping through the debugger for instance, here's what
I saw was the message at this point:
Could not set field value by reflection:
CatalogItemSearchAction.itemFilterCriteriaSelection on:
com.fb.core.action.CatalogItemSearchAction with value: class
com.fb.util.criteria.ItemFilterCriterion
Outstanding.
However this exception is then caught by Component.java:1559 by the following method:
private void setFieldValue(Object bean, Field field, String name, Object value)
{
try
{
Reflections.set(field, bean, value);
}
catch (Exception e)
{
throw new IllegalArgumentException("could not set field value: " +
getAttributeMessage(name), e);
}
}
...and the beautiful message is lost. Below is the complete stacktrace seen in the
application.
FAILED: test
javax.ejb.EJBException: java.lang.IllegalArgumentException: could not set field value:
itemSearch.itemFilterCriteria
at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:69)
at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:197)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at
org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at
org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulInstanceInterceptor.java:81)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at
org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at
org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at org.jboss.ejb3.stateful.StatefulContainer.localInvoke(StatefulContainer.java:189)
at org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:98)
at $Proxy59.getItemResults(Unknown Source)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:20)
at
org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)
at
org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideInterceptor.java:72)
at
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:57)
at
org.jboss.seam.interceptors.RemoveInterceptor.aroundInvoke(RemoveInterceptor.java:40)
at
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:103)
at org.jboss.seam.intercept.ClientSideInterceptor.invoke(ClientSideInterceptor.java:50)
at
org.javassist.tmp.java.lang.Object_$$_javassist_1.getItemResults(Object_$$_javassist_1.java)
at com.fb.core.test.CatalogSearchTest$1.invokeApplication(CatalogSearchTest.java:88)
at org.jboss.seam.mock.SeamTest$Request.run(SeamTest.java:489)
at com.fb.core.test.CatalogSearchTest.test(CatalogSearchTest.java:97)
Caused by: java.lang.IllegalArgumentException: could not set field value:
itemSearch.itemFilterCriteria
at org.jboss.seam.Component.setFieldValue(Component.java:1559)
at org.jboss.seam.Component.access$500(Component.java:135)
at org.jboss.seam.Component$BijectedField.set(Component.java:2285)
at org.jboss.seam.Component.injectDataModelSelection(Component.java:1285)
at org.jboss.seam.Component.injectDataModelSelections(Component.java:1254)
at org.jboss.seam.Component.inject(Component.java:1196)
at
org.jboss.seam.interceptors.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:46)
at
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
at
org.jboss.seam.interceptors.ManagedEntityIdentityInterceptor.aroundInvoke(ManagedEntityIdentityInterceptor.java:37)
at
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
at
org.jboss.seam.interceptors.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:27)
at
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:103)
at
org.jboss.seam.intercept.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:53)
at
org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118)
at
org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at
org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor.invoke(ExtendedPersistenceContextPropagationInterceptor.java:57)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at
org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at
org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
... 52 more
at org.jboss.seam.util.Reflections.set(Reflections.java:77)
at org.jboss.seam.Component.setFieldValue(Component.java:1555)
... 78 more
Caused by: java.lang.IllegalArgumentException
at org.jboss.seam.util.Reflections.set(Reflections.java:63)
... 79 more
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira