• Type: Improvement Improvement
    • Status: Closed Closed
    • Priority: Major Major
    • Resolution: Complete
    • Affects Version/s: None
    • Fix Version/s: 2.3.1
    • Security Level: Public (Public: Anyone can view)
    • Labels:
    • Similar issues:
      KULRICE-8797Reduce object creation in view lifecycle
      KULRICE-10547Component lifecycle processing task and execution context
      KULRICE-10539retrieveViaAjax delay lifecycle for components implementation
      KULRICE-10538retrieveViaAjax delay lifecycle analysis
      KULRICE-11298Investigate error with component lifecycle
      KULRICE-8798Look into multithreading during the view lifecycle
      KULRICE-7220Look into replacing component update process with full view lifecycle
      KULRICE-9794Reduce template invocations
      KULRICE-9433Reduce size of html response
      KULRICE-10438Analysis for delaying lifecycle row details component before it is needed
    • Epic Link:
    • Rice Module:
    • KRAD Feature Area:
      UIF MVC
    • Sprint:
      2.3.1 Sprint 2
    • KAI Review Status:
      Not Required
    • KTI Review Status:
      Not Required


      The following method in the validator class makes multiple calls to getComponentsForLifecycle on the same object. Each call instantiates a large number of objects (due to the way that method is implemented). So minimizing the number of calls is very beneficial

      private void runValidationsOnLifecycle(Component component, ValidationTrace tracer)

      The below is a different implementation for that method which saves the result for each successive utilization.

      private void runValidationsOnLifecycle(Component component, ValidationTrace tracer) {
      List<Component> componentsForLifecycle = component.getComponentsForLifecycle();
      if (componentsForLifecycle == null)

      { return; }
      if (!doValidationOnUIFBean(component)) { return; }

      for (int j = 0; j < componentsForLifecycle.size(); j++) {
      Component temp = componentsForLifecycle.get(j);
      if (temp == null)

      { continue; }

      if (tracer.getValidationStage() == ValidationTrace.START_UP)

      { ExpressionUtils.populatePropertyExpressionsFromGraph(temp, false); }

      if (temp.isRender())

      { temp.completeValidation(tracer.getCopy()); runValidationsOnLifecycle(temp, tracer.getCopy()); }


        Issue Links


          Mark Fyffe (Inactive) logged work - 25/Aug/13 11:38 PM
          • Time Spent:
            4 hours
            <No comment>
          Mark Fyffe (Inactive) logged work - 08/Sep/13 12:12 PM - edited
          • Time Spent:
            2 hours
            First pass at reducing object creation overhead related to ComponentBase.
          Mark Fyffe (Inactive) logged work - 09/Sep/13 1:01 AM
          • Time Spent:
            2 hours
            Work on implementing transactional caching of componentsForLifecycle
          Mark Fyffe (Inactive) logged work - 13/Sep/13 6:17 AM
          • Time Spent:
            1 hour
            Merged deferred initialization of collections work to rice-2.3 branch
          Mark Fyffe (Inactive) logged work - 15/Sep/13 9:30 AM
          • Time Spent:
            2 hours
            Caching review and troubleshooting, third pass at reducing object creation.


            • Assignee:
              Mark Fyffe (Inactive)
              Jeff Domeyer (Inactive)
            • Votes:
              0 Vote for this issue
              2 Start watching this issue


              • Created:

                Time Tracking

                Original Estimate - 1 day, 2 hours Original Estimate - 1 day, 2 hours
                1d 2h
                Remaining Estimate - 0 minutes
                Time Spent - 1 day, 3 hours
                1d 3h


                    Structure Helper Panel