Description

When using collection's new editWithDialog feature, the following stack trace is generated when one of the collectionGroup's items contains a render flag, like p:render="@

{#isAddLine}".

2014-10-03 11:57:32,520 [http-bio-8080-exec-9] u:quickstart/d: ERROR org.kuali.rice.krad.web.controller.UifHandlerExceptionResolver - Error getting property 'currentPage.items[0].layoutManager.allRowFields[11].group.items[2]' from org.kuali.rice.krad.uif.view.FormView@73399a12
java.lang.IllegalArgumentException: Error getting property 'currentPage.items[0].layoutManager.allRowFields[11].group.items[2]' from org.kuali.rice.krad.uif.view.FormView@73399a12
at org.kuali.rice.krad.uif.util.ObjectPropertyUtils.getPropertyValue(ObjectPropertyUtils.java:329)
at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.performComponentLifecycle(ViewLifecycle.java:252)
at org.kuali.rice.krad.web.service.impl.ModelAndViewServiceImpl.invokeViewLifecycle(ModelAndViewServiceImpl.java:289)
at org.kuali.rice.krad.web.service.impl.ModelAndViewServiceImpl.prepareView(ModelAndViewServiceImpl.java:263)
at org.kuali.rice.krad.web.controller.UifControllerHandlerInterceptor.postHandle(UifControllerHandlerInterceptor.java:188)
at org.springframework.web.servlet.HandlerExecutionChain.applyPostHandle(HandlerExecutionChain.java:149)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:928)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.kuali.rice.kew.web.UserPreferencesFilter.doFilter(UserPreferencesFilter.java:78)
at org.kuali.rice.kew.web.UserPreferencesFilter.doFilter(UserPreferencesFilter.java:62)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:89)
at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:327)
at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:82)
at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:62)
at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:320)
at org.kuali.rice.krad.web.filter.BootstrapFilter.doFilter(BootstrapFilter.java:199)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.kuali.coeus.sys.framework.controller.interceptor.PerformanceLoggingFilter.doFilter(PerformanceLoggingFilter.java:63)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.kuali.coeus.sys.framework.controller.interceptor.SessionExpiredFilter.doFilter(SessionExpiredFilter.java:40)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.kuali.rice.krad.web.filter.HideWebInfFilter.doFilter(HideWebInfFilter.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:214)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.RuntimeException: Class to retrieve property from was null
at org.kuali.rice.krad.uif.util.ObjectPropertyUtils$ObjectPropertyMetadata.<init>(ObjectPropertyUtils.java:1127)
at org.kuali.rice.krad.uif.util.ObjectPropertyUtils$ObjectPropertyMetadata.<init>(ObjectPropertyUtils.java:979)
at org.kuali.rice.krad.uif.util.ObjectPropertyUtils.getMetadata(ObjectPropertyUtils.java:966)
at org.kuali.rice.krad.uif.util.ObjectPropertyUtils.getReadMethod(ObjectPropertyUtils.java:153)
at org.kuali.rice.krad.uif.util.ObjectPropertyReference$ReferencePathEntry.parse(ObjectPropertyReference.java:141)
at org.kuali.rice.krad.uif.util.ObjectPathExpressionParser$ParseState.step(ObjectPathExpressionParser.java:211)
at org.kuali.rice.krad.uif.util.ObjectPathExpressionParser$ParseState.access$600(ObjectPathExpressionParser.java:57)
at org.kuali.rice.krad.uif.util.ObjectPathExpressionParser.parsePathExpression(ObjectPathExpressionParser.java:361)
at org.kuali.rice.krad.uif.util.ObjectPropertyReference.resolvePath(ObjectPropertyReference.java:365)
at org.kuali.rice.krad.uif.util.ObjectPropertyUtils.getPropertyValue(ObjectPropertyUtils.java:326)
... 55 more

Activity

This is caused by rendering differing between add and table lines
Recommendations:
the fields should not be taken into account at all for custom dialogs being shown
and it shouldn't blow up for a normal edit if some columns are not rendered for every line

So it needs to work in the following cases:
There is a column that is not rendered
There is a field that is not rendered in an add line dialog/group but is rendered for all lines

Throw exception when column count differs for lines that are part of the table

Brian Smith (Inactive)
added a comment - 03/Oct/14 4:48 PM - edited This is caused by rendering differing between add and table lines
Recommendations:
the fields should not be taken into account at all for custom dialogs being shown
and it shouldn't blow up for a normal edit if some columns are not rendered for every line
So it needs to work in the following cases:
There is a column that is not rendered
There is a field that is not rendered in an add line dialog/group but is rendered for all lines
Throw exception when column count differs for lines that are part of the table