Details

    • Type: Task Task
    • Status: Closed Closed
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.4
    • Component/s: Development
    • Security Level: Public (Public: Anyone can view)
    • Labels:
      None
    • Similar issues:
      KULRICE-7803Fix or work around bad class error in rice-trunk-unit-test
      KULRICE-10781Double check 2.3 to trunk merger
      KULRICE-147Fix the DocumentService instanceof checks
      KULRICE-8636fix failing KRMS tests in trunk
      KULRICE-10340KRAD Demo Library Account Multi-Value Lookup inline Freemarker exception searching when result checked.
      KULRICE-6878Update 2.2 branch from latest Rice trunk
      KULRICE-13318Fix CompareFieldCreateModifier to check for null field propertyName.
      KULRICE-1319Fix initiator check on parameter maintenance rule
      KULRICE-5449Verify if these 1.0.3.2 fixes made it to 2.0 and if not, apply to 2.0 trunk
      KULRICE-12779KSA Transaction: Expand section causes FreeMarker errors
    • Application Requirement:
      Rice
    • KAI Review Status:
      Not Required
    • KTI Review Status:
      Not Required
    • Code Review Status:
      Not Required

      Description

      After merging the 2.3 code into trunk we got the following error:

       
      ==> ${request.contextPath} [in template "krad/WEB-INF/ftl/lib/html.ftl" in macro "html" at line 37, column 25]
      #else [in template "krad/WEB-INF/ftl/lib/html.ftl" in macro "html" at line 36, column 9]
      @krad.html view=view [in template "krad/WEB-INF/ftl/fullView.ftl" at line 18, column 1]
      #include "fullView.ftl" [in template "krad/WEB-INF/ftl/uifRender.ftl" at line 71, column 9]
      #else [in template "krad/WEB-INF/ftl/uifRender.ftl" at line 70, column 5]
      

      I tracked the offending code change down and removed it. It's the unmodifiableContext code in the LayoutManagerBase that was introduced by you in 2.3. See https://fisheye.kuali.org/changelog/rice?cs=41711

      Please double check the merge and the code changes I made in trunk. Thanks.

        Issue Links

          Activity

          Hide
          Mark Fyffe (Inactive) added a comment -

          This update was introduced to reduce object creation on KULRICE-8954.

          Accompanying changes were needed in a few places on 2.3 to prevent external modification of the context. I'll check for fallout on 2.4 before reintroducing this update.

          Show
          Mark Fyffe (Inactive) added a comment - This update was introduced to reduce object creation on KULRICE-8954 . Accompanying changes were needed in a few places on 2.3 to prevent external modification of the context. I'll check for fallout on 2.4 before reintroducing this update.
          Hide
          Mark Fyffe (Inactive) added a comment -

          It looks like this block in ViewHelperServiceImpl may have been left out of the merge - this would cause issues. The correct version is still in place on 2.3.

          trunk:

                  // set context evaluate expressions on the layout manager
                  if (component instanceof Container) {
                      LayoutManager layoutManager = ((Container) component).getLayoutManager();
          
                      if (layoutManager != null) {
                          layoutManager.getContext().putAll(getCommonContext(view, component));
                          layoutManager.pushObjectToContext(UifConstants.ContextVariableNames.PARENT, component);
                          layoutManager.pushObjectToContext(UifConstants.ContextVariableNames.MANAGER, layoutManager);
          
                          getExpressionEvaluator().evaluateExpressionsOnConfigurable(view, layoutManager,
                                  layoutManager.getContext());
          
                          layoutManager.setId(adjustIdIfNecessary(layoutManager.getId(), visitedIds));
                      }
                  }
          

          branches/rice-2.3

                  // set context evaluate expressions on the layout manager
                  if (component instanceof Container) {
                      LayoutManager layoutManager = ((Container) component).getLayoutManager();       
                      
                      if (layoutManager != null) {
                          layoutManager.pushAllToContext(getCommonContext(view, component));              
                          layoutManager.pushObjectToContext(UifConstants.ContextVariableNames.PARENT, component);
                          layoutManager.pushObjectToContext(UifConstants.ContextVariableNames.MANAGER, layoutManager);
                          
                          getExpressionEvaluator().evaluateExpressionsOnConfigurable(view, layoutManager,         
                                  layoutManager.getContext());
                          
                          layoutManager.setId(adjustIdIfNecessary(layoutManager.getId(), visitedIds));
                      }
                  }
          
          Show
          Mark Fyffe (Inactive) added a comment - It looks like this block in ViewHelperServiceImpl may have been left out of the merge - this would cause issues. The correct version is still in place on 2.3. trunk: // set context evaluate expressions on the layout manager if (component instanceof Container) { LayoutManager layoutManager = ((Container) component).getLayoutManager(); if (layoutManager != null ) { layoutManager.getContext().putAll(getCommonContext(view, component)); layoutManager.pushObjectToContext(UifConstants.ContextVariableNames.PARENT, component); layoutManager.pushObjectToContext(UifConstants.ContextVariableNames.MANAGER, layoutManager); getExpressionEvaluator().evaluateExpressionsOnConfigurable(view, layoutManager, layoutManager.getContext()); layoutManager.setId(adjustIdIfNecessary(layoutManager.getId(), visitedIds)); } } branches/rice-2.3 // set context evaluate expressions on the layout manager if (component instanceof Container) { LayoutManager layoutManager = ((Container) component).getLayoutManager(); if (layoutManager != null ) { layoutManager.pushAllToContext(getCommonContext(view, component)); layoutManager.pushObjectToContext(UifConstants.ContextVariableNames.PARENT, component); layoutManager.pushObjectToContext(UifConstants.ContextVariableNames.MANAGER, layoutManager); getExpressionEvaluator().evaluateExpressionsOnConfigurable(view, layoutManager, layoutManager.getContext()); layoutManager.setId(adjustIdIfNecessary(layoutManager.getId(), visitedIds)); } }
          Hide
          Mark Fyffe (Inactive) added a comment -

          Reproduced the error reported in KULRICE-10678 by reverse-merging r41711

          Prior to the FTL error on the console, the following is reported. This is on the incident report form, which is why the FM error is seen. Prior to this report, a similar error is seen on the login form.

          2013-09-21 22:15:27,620 [http-8080-1] u:/d: ERROR org.kuali.rice.krad.web.controller.UifHandlerExceptionResolver - An error stopped the incident form from loading
          java.lang.UnsupportedOperationException
                  at java.util.AbstractMap.put(AbstractMap.java:203)
                  at java.util.AbstractMap.putAll(AbstractMap.java:273)
                  at org.kuali.rice.krad.uif.service.impl.ViewHelperServiceImpl.performComponentApplyModel(ViewHelperServiceImpl.java:1033)
                  at org.kuali.rice.krad.uif.service.impl.ViewHelperServiceImpl.performComponentApplyModel(ViewHelperServiceImpl.java:1081)
                  at org.kuali.rice.krad.uif.service.impl.ViewHelperServiceImpl.performApplyModel(ViewHelperServiceImpl.java:903)
                  at org.kuali.rice.krad.uif.service.impl.ViewServiceImpl.performViewLifecycle(ViewServiceImpl.java:187)
                  at org.kuali.rice.krad.uif.service.impl.ViewServiceImpl.buildView(ViewServiceImpl.java:135)
                  at org.kuali.rice.krad.web.controller.UifControllerHelper.prepareViewForRendering(UifControllerHelper.java:278)
                  at org.kuali.rice.krad.web.controller.UifControllerHelper.postControllerHandle(UifControllerHelper.java:145)
                  at org.kuali.rice.krad.web.controller.UifHandlerExceptionResolver.resolveException(UifHandlerExceptionResolver.java:127)
                  at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1148)
                  at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:985)
                  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
                  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
                  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
                  at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
                  at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
                  at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
                  at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                  at org.kuali.rice.krad.web.filter.DummyLoginFilter.loginRequired(DummyLoginFilter.java:96)
                  at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:69)
                  at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:62)
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                  at org.kuali.rice.core.web.Log4JContextClearingFilter.doFilterInternal(Log4JContextClearingFilter.java:37)
                  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                  at org.kuali.rice.krad.web.filter.HideWebInfFilter.doFilter(HideWebInfFilter.java:68)
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                  at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:213)
                  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
                  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
                  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
                  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
                  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
                  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
                  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
                  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
                  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
                  at java.lang.Thread.run(Thread.java:724)
          
          Show
          Mark Fyffe (Inactive) added a comment - Reproduced the error reported in KULRICE-10678 by reverse-merging r41711 Prior to the FTL error on the console, the following is reported. This is on the incident report form, which is why the FM error is seen. Prior to this report, a similar error is seen on the login form. 2013-09-21 22:15:27,620 [http-8080-1] u:/d: ERROR org.kuali.rice.krad.web.controller.UifHandlerExceptionResolver - An error stopped the incident form from loading java.lang.UnsupportedOperationException at java.util.AbstractMap.put(AbstractMap.java:203) at java.util.AbstractMap.putAll(AbstractMap.java:273) at org.kuali.rice.krad.uif.service.impl.ViewHelperServiceImpl.performComponentApplyModel(ViewHelperServiceImpl.java:1033) at org.kuali.rice.krad.uif.service.impl.ViewHelperServiceImpl.performComponentApplyModel(ViewHelperServiceImpl.java:1081) at org.kuali.rice.krad.uif.service.impl.ViewHelperServiceImpl.performApplyModel(ViewHelperServiceImpl.java:903) at org.kuali.rice.krad.uif.service.impl.ViewServiceImpl.performViewLifecycle(ViewServiceImpl.java:187) at org.kuali.rice.krad.uif.service.impl.ViewServiceImpl.buildView(ViewServiceImpl.java:135) at org.kuali.rice.krad.web.controller.UifControllerHelper.prepareViewForRendering(UifControllerHelper.java:278) at org.kuali.rice.krad.web.controller.UifControllerHelper.postControllerHandle(UifControllerHelper.java:145) at org.kuali.rice.krad.web.controller.UifHandlerExceptionResolver.resolveException(UifHandlerExceptionResolver.java:127) at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1148) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:985) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.web.filter.DummyLoginFilter.loginRequired(DummyLoginFilter.java:96) at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:69) at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:62) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.core.web.Log4JContextClearingFilter.doFilterInternal(Log4JContextClearingFilter.java:37) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.web.filter.HideWebInfFilter.doFilter(HideWebInfFilter.java:68) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:213) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:724)
          Hide
          Mark Fyffe (Inactive) added a comment -

          Confirmed that changing ViewHelperServiceImpl.java as previously noted corrects the issue.

          Committed updates to LayoutManagerBase and ViewHelperServiceImpl to match 2.3 version.

          Show
          Mark Fyffe (Inactive) added a comment - Confirmed that changing ViewHelperServiceImpl.java as previously noted corrects the issue. Committed updates to LayoutManagerBase and ViewHelperServiceImpl to match 2.3 version.

            People

            • Assignee:
              Mark Fyffe (Inactive)
              Reporter:
              Claus Niesen
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 1 hour
                1h
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 1 hour
                1h

                  Structure Helper Panel