Uploaded image for project: 'Kuali Rice Development'
  1. Kuali Rice Development
  2. KULRICE-9612

Reimplement cloning to use component clone method

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Critical
    • Resolution: Complete
    • Affects Version/s: 2.2
    • Fix Version/s: 2.3.0-rc1, 2.3
    • Component/s: Development, Performance
    • Security Level: Public (Public: Anyone can view)
    • Labels:
      None
    • Rice Module:
      KRAD
    • KRAD Feature Area:
      UIF Component
    • KAI Review Status:
      Not Required
    • KTI Review Status:
      Not Required
    • Include in Release Notes?:
      Yes

      Description

      POC work that compared copying with CloneUtils versus implementing a clone method on an object showed for 3175827 objects (which is equal to a large view) the difference in time is:

      Clone Utils Speed: 5074 ms
      Clone Speed: 883 ms

      This along with reducing cloning should eliminate this bottleneck.

      Make Component and LayoutManager interface extend Cloneable.

      In ComponentBase and LayoutManagerBase, implement the clone() method by:

      creating a new instance of the class this.getClass().newInstance()

      Call a new method copyProperties(Cloneable), return the object.

      Then for every component and layout manager copyProperties(Cloneable)needs to be implemented by first calling super.copyProperties, then copying all the properties in the subclass. This includes lists and maps. Note any nested components will need clone() called on them when copying the property value (including lists and map values), except those marked with @ReferenceCopy

      After this is in place, change ComponentUtils#copy to call the clone method instead of using CloneUtils.

        Attachments

          Issue Links

            Activity

            Hide
            jkneal Jerry Neal (Inactive) added a comment -

            Matt,

            Please make this task your priority.

            thanks,
            Jerry

            Show
            jkneal Jerry Neal (Inactive) added a comment - Matt, Please make this task your priority. thanks, Jerry

              People

              • Assignee:
                matthew.wuertz Matthew Wuertz (Inactive)
                Reporter:
                jkneal Jerry Neal (Inactive)
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: