[jbossseam-issues] [JBoss JIRA] Closed: (JBSEAM-1080) Component class obfuscates IllegalArgumentExceptions from Reflections class
Gavin King (JIRA)
jira-events at lists.jboss.org
Mon Mar 19 21:26:33 EDT 2007
[ 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
More information about the seam-issues
mailing list