/** Called after sending a successful update response. */
  public void afterUpdateResponse() {

    getRequestStats().afterUpdateResponse();

    clearClientState();
    xformsControls.afterUpdateResponse();
    // Tell dependencies
    xpathDependencies.afterUpdateResponse();
  }
  public void initializeNestedControls() {
    // Call-back from super class models initialization

    // This is important because if controls use binds, those must be up to date. In addition, MIP
    // values will be up
    // to date. Finally, upon receiving xforms-ready after initialization, it is better if
    // calculations and
    // validations are up to date.
    rebuildRecalculateRevalidateIfNeeded();

    // Initialize controls
    xformsControls.createControlTree();
  }
 @Override
 public List<XFormsControl> getChildrenControls(XFormsControls controls) {
   return controls.getCurrentControlTree().getChildren();
 }
 /**
  * Whether the document is dirty since the last request.
  *
  * @return whether the document is dirty since the last request
  */
 public boolean isDirtySinceLastRequest() {
   return xformsControls.isDirtySinceLastRequest();
 }
 public XFormsControl getControlByEffectiveId(String effectiveId) {
   return xformsControls.getObjectByEffectiveId(effectiveId);
 }