Details

    • Type: Task Task
    • Status: Closed Closed
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: Not version specific
    • Component/s: Performance
    • Security Level: Public (Public: Anyone can view)
    • Labels:
      None
    • Similar issues:
      KULRICE-10063Replace ObjectPropertyUtils BeanWrapper implementation
      KULRICE-10645Roll back recent ObjectPropertyUtils changes in rice-2.3 branch
      KULRICE-10677Correct issues with ObjectPropertyUtils
      KULRICE-12415Tie in KRAD PropertyEditors to ObjectPropertyUtils
      KULRICE-111Simplify UI control pluggability
      KULRICE-7022Cleanup, simplify, and unify Rice deployment environments
      KULRICE-12596Simplify Client Spring Bean configuration
      KULRICE-11529Consolidate and simplify ID generation logic
      KULRICE-13612revise/simplify local Rice install guide
      KULRICE-1069simplify rice client app spring config
    • KAI Review Status:
      Not Required
    • KTI Review Status:
      Not Required
    • Code Review Status:
      Not Required
    • Include in Release Notes?:
      Yes

      Activity

      Hide
      Mark Fyffe (Inactive) added a comment -

      Simplified ObjectPathExpressionParser by removing Java EE EL syntax, and nested expression support specific to the EL syntax. Pruned ObjectPropertyReference to remove unused parser methods. Only Spring syntax is now supported.

      Estimated additional 2h to address code review items.

      Show
      Mark Fyffe (Inactive) added a comment - Simplified ObjectPathExpressionParser by removing Java EE EL syntax, and nested expression support specific to the EL syntax. Pruned ObjectPropertyReference to remove unused parser methods. Only Spring syntax is now supported. Estimated additional 2h to address code review items.
      Hide
      Mark Fyffe (Inactive) added a comment -

      Committed another pass at simplifying ObjectPropertyReference and ObjectPathExpressionParser, based on items noted in Sonar reports. Removed syntax features not supported by Spring.

      Show
      Mark Fyffe (Inactive) added a comment - Committed another pass at simplifying ObjectPropertyReference and ObjectPathExpressionParser, based on items noted in Sonar reports. Removed syntax features not supported by Spring.
      Hide
      Mark Fyffe (Inactive) added a comment -

      Need to ensure that the scenario below has been addressed, and included in unit tests.

      That's what I put in to patch it. Thanks for the confirmation.

      On Thu, Oct 10, 2013 at 12:41 PM, Mark Fyffe <mark.w.fyffe@gmail.com> wrote:

      This scenario was obviously missed by unit tests. The purpose is to grow the list until the index is within capacity. Should be:

      private static void setList(List<?> list, String name, Object value) {
         int i = Integer.parseInt(name);
        while (i >= list.size()) {
          list.add(null);
         }
        ((List<Object>) list).set(i, value);
      }
      

      Thanks,

      Mark

      On Thu, Oct 10, 2013 at 3:21 PM, Kristina Taylor <kbtaylor@uw.edu> wrote:

      I found this in ObjectPropertyReference:

      http://pastie.org/8393150

      It causes my heap to overflow since it causes an infinite loop. What is its purpose and can we fix it by just re-evaluating the variables on each call to the while?

      Thanks!

      Kristina

      Show
      Mark Fyffe (Inactive) added a comment - Need to ensure that the scenario below has been addressed, and included in unit tests. That's what I put in to patch it. Thanks for the confirmation. On Thu, Oct 10, 2013 at 12:41 PM, Mark Fyffe <mark.w.fyffe@gmail.com> wrote: This scenario was obviously missed by unit tests. The purpose is to grow the list until the index is within capacity. Should be: private static void setList(List<?> list, String name, Object value) { int i = Integer .parseInt(name); while (i >= list.size()) { list.add( null ); } ((List< Object >) list).set(i, value); } Thanks, Mark On Thu, Oct 10, 2013 at 3:21 PM, Kristina Taylor <kbtaylor@uw.edu> wrote: I found this in ObjectPropertyReference: http://pastie.org/8393150 It causes my heap to overflow since it causes an infinite loop. What is its purpose and can we fix it by just re-evaluating the variables on each call to the while? Thanks! Kristina
      Hide
      Mark Fyffe (Inactive) added a comment -

      Noted in rice-sampleapp, Kitchen Sink - will need to look into whether the empty string should be a treated as a null property without error, or if the call itself should check for empty string.

      2013-10-22 07:32:52,496 [http-8080-4] u:admin/d: WARN  org.kuali.rice.krad.uif.util.ObjectPropertyReference - java.lang.IllegalArgumentException: No property name '' is readable or writable on class edu.sampleu.demo.kitchensink.UifComponentsTestForm
      java.lang.IllegalArgumentException: No property name '' is readable or writable on class edu.sampleu.demo.kitchensink.UifComponentsTestForm
              at org.kuali.rice.krad.uif.util.ObjectPropertyReference.getPropertyTypeFromReadOrWriteMethod(ObjectPropertyReference.java:799)
              at org.kuali.rice.krad.uif.util.ObjectPropertyReference.getPropertyType(ObjectPropertyReference.java:838)
              at org.kuali.rice.krad.uif.util.ObjectPropertyUtils.getPropertyType(ObjectPropertyUtils.java:243)
              at org.kuali.rice.krad.uif.field.DataField.performFinalize(DataField.java:201)
              at org.kuali.rice.krad.uif.field.InputField.performFinalize(InputField.java:276)
              at org.kuali.rice.krad.uif.lifecycle.finalize.ComponentDefaultFinalizeTask.performLifecycleTask(ComponentDefaultFinalizeTask.java:53)
              at org.kuali.rice.krad.uif.lifecycle.AbstractViewLifecycleTask.run(AbstractViewLifecycleTask.java:93)
              at org.kuali.rice.krad.uif.lifecycle.ViewLifecyclePhaseBase.run(ViewLifecyclePhaseBase.java:285)
              at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.performPendingPhases(ViewLifecycle.java:1489)
              at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.performPendingPhases(ViewLifecycle.java:1477)
              at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.performFinalize(ViewLifecycle.java:457)
              at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle$1.run(ViewLifecycle.java:937)
              at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.encapsulateLifecycle(ViewLifecycle.java:780)
              at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.buildView(ViewLifecycle.java:906)
              at org.kuali.rice.krad.web.controller.UifControllerHelper.prepareViewForRendering(UifControllerHelper.java:250)
              at org.kuali.rice.krad.web.controller.UifControllerHelper.postControllerHandle(UifControllerHelper.java:144)
              at org.kuali.rice.krad.web.controller.UifControllerHandlerInterceptor.postHandle(UifControllerHandlerInterceptor.java:89)
              at org.springframework.web.servlet.HandlerExecutionChain.applyPostHandle(HandlerExecutionChain.java:149)
              at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:934)
              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.CharsetFilter.doFilter(CharsetFilter.java:58)
              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.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:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              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:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.kuali.rice.krad.web.filter.UifSessionTimeoutFilter.doFilter(UifSessionTimeoutFilter.java:128)
              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.uif.util.ProcessLoggingFilter$1.call(ProcessLoggingFilter.java:72)
              at org.kuali.rice.krad.uif.util.ProcessLoggingFilter$1.call(ProcessLoggingFilter.java:69)
              at org.kuali.rice.krad.uif.util.ProcessLogger.follow(ProcessLogger.java:645)
              at org.kuali.rice.krad.uif.util.ProcessLoggingFilter.doFilter(ProcessLoggingFilter.java:69)
              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 - Noted in rice-sampleapp, Kitchen Sink - will need to look into whether the empty string should be a treated as a null property without error, or if the call itself should check for empty string. 2013-10-22 07:32:52,496 [http-8080-4] u:admin/d: WARN org.kuali.rice.krad.uif.util.ObjectPropertyReference - java.lang.IllegalArgumentException: No property name '' is readable or writable on class edu.sampleu.demo.kitchensink.UifComponentsTestForm java.lang.IllegalArgumentException: No property name '' is readable or writable on class edu.sampleu.demo.kitchensink.UifComponentsTestForm at org.kuali.rice.krad.uif.util.ObjectPropertyReference.getPropertyTypeFromReadOrWriteMethod(ObjectPropertyReference.java:799) at org.kuali.rice.krad.uif.util.ObjectPropertyReference.getPropertyType(ObjectPropertyReference.java:838) at org.kuali.rice.krad.uif.util.ObjectPropertyUtils.getPropertyType(ObjectPropertyUtils.java:243) at org.kuali.rice.krad.uif.field.DataField.performFinalize(DataField.java:201) at org.kuali.rice.krad.uif.field.InputField.performFinalize(InputField.java:276) at org.kuali.rice.krad.uif.lifecycle.finalize.ComponentDefaultFinalizeTask.performLifecycleTask(ComponentDefaultFinalizeTask.java:53) at org.kuali.rice.krad.uif.lifecycle.AbstractViewLifecycleTask.run(AbstractViewLifecycleTask.java:93) at org.kuali.rice.krad.uif.lifecycle.ViewLifecyclePhaseBase.run(ViewLifecyclePhaseBase.java:285) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.performPendingPhases(ViewLifecycle.java:1489) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.performPendingPhases(ViewLifecycle.java:1477) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.performFinalize(ViewLifecycle.java:457) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle$1.run(ViewLifecycle.java:937) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.encapsulateLifecycle(ViewLifecycle.java:780) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.buildView(ViewLifecycle.java:906) at org.kuali.rice.krad.web.controller.UifControllerHelper.prepareViewForRendering(UifControllerHelper.java:250) at org.kuali.rice.krad.web.controller.UifControllerHelper.postControllerHandle(UifControllerHelper.java:144) at org.kuali.rice.krad.web.controller.UifControllerHandlerInterceptor.postHandle(UifControllerHandlerInterceptor.java:89) at org.springframework.web.servlet.HandlerExecutionChain.applyPostHandle(HandlerExecutionChain.java:149) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:934) 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.CharsetFilter.doFilter(CharsetFilter.java:58) 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.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:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 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:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.web.filter.UifSessionTimeoutFilter.doFilter(UifSessionTimeoutFilter.java:128) 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.uif.util.ProcessLoggingFilter$1.call(ProcessLoggingFilter.java:72) at org.kuali.rice.krad.uif.util.ProcessLoggingFilter$1.call(ProcessLoggingFilter.java:69) at org.kuali.rice.krad.uif.util.ProcessLogger.follow(ProcessLogger.java:645) at org.kuali.rice.krad.uif.util.ProcessLoggingFilter.doFilter(ProcessLoggingFilter.java:69) 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
      Brian Smith (Inactive) added a comment -

      Heads up, we rolled back some of these changes as they were causing issues in trunk

      Show
      Brian Smith (Inactive) added a comment - Heads up, we rolled back some of these changes as they were causing issues in trunk

        People

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

          Dates

          • Created:
            Updated:
            Resolved:

            Time Tracking

            Estimated:
            Original Estimate - 4 hours
            4h
            Remaining:
            Time Spent - 3 hours Remaining Estimate - 1 hour
            1h
            Logged:
            Time Spent - 3 hours Remaining Estimate - 1 hour
            3h

              Structure Helper Panel