Issue Details (XML | Word | Printable)

Key: WW-662
Type: Improvement Improvement
Status: Resolved Resolved
Resolution: Not A Problem
Priority: Major Major
Assignee: Don Brown
Reporter: Francisco Hernandez
Votes: 2
Watchers: 3
Operations

If you were logged in you would be able to see more operations.
Struts 2

change the way tags/ognl handle runtime exceptions thrown by propertys

Created: 26/May/04 04:59 AM   Updated: 29/Jan/07 01:51 AM
Return to search
Component/s: Expression Language
Affects Version/s: WW 2.1.4, 2.0.0
Fix Version/s: 2.0.0


 Description  « Hide
does anyone think that tags/ognl should re-throw runtime exceptions and let the container catch them instead of just just logging them how it is now and continuing to load the page normally?

I was using a previous version of webwork2 and this wasnt happening before.

what im doing is loading a proxied object from hibernate in my action then going to the view to display it but its throwing an ObjectNotFoundException when the tags try to access the proxy, I would have thought that hibernate would throw that ONFE when I did the actual session.load() instead of when I actually tried to use the proxy but thats not the case.



[ERROR] CompoundRootAccessor - Caught an Ognl exception while getting property ex
ognl.OgnlException: ex [java.lang.RuntimeException: getEx()]
        at ognl.OgnlRuntime.getMethodValue(OgnlRuntime.java:908)
        at ognl.ObjectPropertyAccessor.getPossibleProperty(ObjectPropertyAccessor.java:54)
        at ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:122)
        at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1616)
        at com.opensymphony.xwork.util.CompoundRootAccessor.getProperty(CompoundRootAccessor.java:95)
        at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1616)
        at ognl.ASTProperty.getValueBody(ASTProperty.java:96)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:171)
        at ognl.SimpleNode.getValue(SimpleNode.java:193)
        at ognl.Ognl.getValue(Ognl.java:333)
        at com.opensymphony.xwork.util.OgnlValueStack.findValue(OgnlValueStack.java:168)
        at com.opensymphony.webwork.views.jsp.WebWorkTagSupport.findValue(WebWorkTagSupport.java:51)
        at com.opensymphony.webwork.views.jsp.PropertyTag.doStartTag(PropertyTag.java:58)
        at __jspPage0_WEB_INF_views_index_jsp._jspService(__jspPage0_WEB_INF_views_index_jsp.java:29)
        at com.orionserver.http.OrionHttpJspPage.service(.:70)
        at com.evermind._ay._rkb(.:5741)
        at com.evermind.server.http.JSPServlet.service(.:31)
        at com.evermind._hb.doFilter(.:59)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:68)
        at com.evermind._ha.doFilter(.:16)
        at com.opensymphony.webwork.lifecycle.RequestLifecycleFilter.doFilter(RequestLifecycleFilter.java:75)
        at com.evermind._cub._pod(.:383)
        at com.evermind._cub._bmc(.:177)
        at com.evermind._cub.forward(.:147)
        at com.opensymphony.webwork.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:80)
        at com.opensymphony.webwork.dispatcher.WebWorkResultSupport.execute(WebWorkResultSupport.java:115)
        at com.opensymphony.xwork.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:261)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:185)
        at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.intercept(DefaultWorkflowInterceptor.java:55)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at o2.interceptor.SetServiceLocator.intercept(SetServiceLocator.java:42)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.TimerInterceptor.intercept(TimerInterceptor.java:63)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:115)
        at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:278)
        at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:248)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:336)
        at com.evermind._hb.doFilter(.:59)
        at o2.servlet.TimerFilter.doFilter(TimerFilter.java:14)
        at com.evermind._ha.doFilter(.:16)
        at org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:117)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:73)
        at com.evermind._ha.doFilter(.:20)
        at com.opensymphony.webwork.lifecycle.RequestLifecycleFilter.doFilter(RequestLifecycleFilter.java:75)
        at com.evermind._ha.doFilter(.:20)
        at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(Unknown Source)
        at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(Unknown Source)
        at com.evermind._cub._pod(.:383)
        at com.evermind._cub._bmc(.:177)
        at com.evermind._ax._ltc(.:666)
        at com.evermind._ax._uab(.:191)
        at com.evermind._bf.run(.:62)
/-- Encapsulated exception ------------\
java.lang.RuntimeException: getEx()
        at o2.action.AbstractAction.getEx(AbstractAction.java:53)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:491)
        at ognl.OgnlRuntime.getMethodValue(OgnlRuntime.java:904)
        at ognl.ObjectPropertyAccessor.getPossibleProperty(ObjectPropertyAccessor.java:54)
        at ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:122)
        at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1616)
        at com.opensymphony.xwork.util.CompoundRootAccessor.getProperty(CompoundRootAccessor.java:95)
        at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1616)
        at ognl.ASTProperty.getValueBody(ASTProperty.java:96)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:171)
        at ognl.SimpleNode.getValue(SimpleNode.java:193)
        at ognl.Ognl.getValue(Ognl.java:333)
        at com.opensymphony.xwork.util.OgnlValueStack.findValue(OgnlValueStack.java:168)
        at com.opensymphony.webwork.views.jsp.WebWorkTagSupport.findValue(WebWorkTagSupport.java:51)
        at com.opensymphony.webwork.views.jsp.PropertyTag.doStartTag(PropertyTag.java:58)
        at __jspPage0_WEB_INF_views_index_jsp._jspService(__jspPage0_WEB_INF_views_index_jsp.java:29)
        at com.orionserver.http.OrionHttpJspPage.service(.:70)
        at com.evermind._ay._rkb(.:5741)
        at com.evermind.server.http.JSPServlet.service(.:31)
        at com.evermind._hb.doFilter(.:59)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:68)
        at com.evermind._ha.doFilter(.:16)
        at com.opensymphony.webwork.lifecycle.RequestLifecycleFilter.doFilter(RequestLifecycleFilter.java:75)
        at com.evermind._cub._pod(.:383)
        at com.evermind._cub._bmc(.:177)
        at com.evermind._cub.forward(.:147)
        at com.opensymphony.webwork.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:80)
        at com.opensymphony.webwork.dispatcher.WebWorkResultSupport.execute(WebWorkResultSupport.java:115)
        at com.opensymphony.xwork.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:261)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:185)
        at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.intercept(DefaultWorkflowInterceptor.java:55)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at o2.interceptor.SetServiceLocator.intercept(SetServiceLocator.java:42)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.TimerInterceptor.intercept(TimerInterceptor.java:63)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:115)
        at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:278)
        at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:248)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:336)
        at com.evermind._hb.doFilter(.:59)
        at o2.servlet.TimerFilter.doFilter(TimerFilter.java:14)
        at com.evermind._ha.doFilter(.:16)
        at org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:117)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:73)
        at com.evermind._ha.doFilter(.:20)
        at com.opensymphony.webwork.lifecycle.RequestLifecycleFilter.doFilter(RequestLifecycleFilter.java:75)
        at com.evermind._ha.doFilter(.:20)
        at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(Unknown Source)
        at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(Unknown Source)
        at com.evermind._cub._pod(.:383)
        at com.evermind._cub._bmc(.:177)
        at com.evermind._ax._ltc(.:666)
        at com.evermind._ax._uab(.:191)
        at com.evermind._bf.run(.:62)
\--------------------------------------/
[WARN] OgnlValueStack - Caught an exception while evaluating expression 'ex' against value stack
java.lang.RuntimeException: Caught an Ognl exception while getting property ex
        at com.opensymphony.xwork.util.CompoundRootAccessor.getProperty(CompoundRootAccessor.java:110)
        at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1616)
        at ognl.ASTProperty.getValueBody(ASTProperty.java:96)
        at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:171)
        at ognl.SimpleNode.getValue(SimpleNode.java:193)
        at ognl.Ognl.getValue(Ognl.java:333)
        at com.opensymphony.xwork.util.OgnlValueStack.findValue(OgnlValueStack.java:168)
        at com.opensymphony.webwork.views.jsp.WebWorkTagSupport.findValue(WebWorkTagSupport.java:51)
        at com.opensymphony.webwork.views.jsp.PropertyTag.doStartTag(PropertyTag.java:58)
        at __jspPage0_WEB_INF_views_index_jsp._jspService(__jspPage0_WEB_INF_views_index_jsp.java:29)
        at com.orionserver.http.OrionHttpJspPage.service(.:70)
        at com.evermind._ay._rkb(.:5741)
        at com.evermind.server.http.JSPServlet.service(.:31)
        at com.evermind._hb.doFilter(.:59)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:68)
        at com.evermind._ha.doFilter(.:16)
        at com.opensymphony.webwork.lifecycle.RequestLifecycleFilter.doFilter(RequestLifecycleFilter.java:75)
        at com.evermind._cub._pod(.:383)
        at com.evermind._cub._bmc(.:177)
        at com.evermind._cub.forward(.:147)
        at com.opensymphony.webwork.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:80)
        at com.opensymphony.webwork.dispatcher.WebWorkResultSupport.execute(WebWorkResultSupport.java:115)
        at com.opensymphony.xwork.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:261)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:185)
        at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.intercept(DefaultWorkflowInterceptor.java:55)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at o2.interceptor.SetServiceLocator.intercept(SetServiceLocator.java:42)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:34)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.interceptor.TimerInterceptor.intercept(TimerInterceptor.java:63)
        at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:163)
        at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:115)
        at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:278)
        at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:248)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:336)
        at com.evermind._hb.doFilter(.:59)
        at o2.servlet.TimerFilter.doFilter(TimerFilter.java:14)
        at com.evermind._ha.doFilter(.:16)
        at org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:117)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:73)
        at com.evermind._ha.doFilter(.:20)
        at com.opensymphony.webwork.lifecycle.RequestLifecycleFilter.doFilter(RequestLifecycleFilter.java:75)
        at com.evermind._ha.doFilter(.:20)
        at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(Unknown Source)
        at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(Unknown Source)
        at com.evermind._cub._pod(.:383)
        at com.evermind._cub._bmc(.:177)
        at com.evermind._ax._ltc(.:666)
        at com.evermind._ax._uab(.:191)
        at com.evermind._bf.run(.:62)
[INFO] LoggingInterceptor - Finishing execution stack for action index


 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Francisco Hernandez added a comment - 20/Jul/04 04:23 AM
related to this, when one a setter of a property throws an exception nothing is reported anywhere, its just silently ignored and execution continues like if nothing ever happened

Patrick Lightbody made changes - 21/Jul/04 07:33 PM
Field Original Value New Value
Affects Version/s 1.0.1 [ 21213 ]
Fix Version/s 1.1 [ 21330 ]
Key WW-538 XW-199
Project WebWork [ 10030 ] XWork [ 10050 ]
Mark Woon made changes - 19/Oct/04 01:10 AM
Project XWork [ 10050 ] WebWork [ 10030 ]
Affects Version/s 1.0.1 [ 21213 ]
Component/s Expression Language [ 20007 ]
Affects Version/s 2.1.x [ 21413 ]
Key XW-199 WW-662
Fix Version/s 1.1 [ 21330 ]
Patrick Lightbody made changes - 19/Oct/04 06:18 PM
Affects Version/s 2.1.4 [ 21393 ]
Fix Version/s 2.1.x [ 21413 ]
Affects Version/s 2.1.x [ 21413 ]
Patrick Lightbody made changes - 03/Jul/05 06:31 PM
Assignee Patrick Lightbody [ plightbo ]
Patrick Lightbody made changes - 24/Aug/05 05:18 AM
Fix Version/s 2.3 [ 21510 ]
Fix Version/s 2.2 [ 21320 ]
Don Brown added a comment - 14/Jun/06 12:29 PM
Since this is working the way it was intended, I'm marking this as an improvement. That said, I agree RuntimeExceptions shouldn't just be logged and swallowed. Any objections?

Don Brown made changes - 14/Jun/06 12:29 PM
Assignee Patrick Lightbody [ plightbo ] Don Brown [ mrdon ]
Type Bug [ 1 ] Improvement [ 4 ]
Don Brown added a comment - 25/Jun/06 12:29 PM
I'm moving this to XWork, since that is where the fix would be. See http://jira.opensymphony.com/browse/XW-395

Don Brown made changes - 25/Jun/06 12:29 PM
Resolution Not A Problem [ 7 ]
Status Open [ 1 ] Resolved [ 5 ]
Fix Version/s 2.0.0 [ 21510 ]
Don Brown made changes - 08/Jan/07 06:20 PM
Workflow jira [ 33039 ] Struts [ 39997 ]
Ted Husted made changes - 29/Jan/07 01:48 AM
Affects Version/s 2.0.0 [ 21510 ]
Ted Husted made changes - 29/Jan/07 01:51 AM
Fix Version/s 2.0.0 [ 21510 ]
Jeff Turner made changes - 09/Aug/07 07:22 AM
Workflow Struts [ 39997 ] Struts - editable closed status [ 44191 ]
Antonio Petrelli made changes - 08/Jan/09 08:57 AM
Workflow Struts - editable closed status [ 44191 ] Struts - editable closed status (temporary) [ 46900 ]
Antonio Petrelli made changes - 08/Jan/09 09:05 AM
Workflow Struts - editable closed status (temporary) [ 46900 ] Struts - editable closed status [ 50169 ]