Guest User

Untitled

a guest
May 26th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.91 KB | None | 0 0
  1. --- a/src/resources/apps/fr/includes/persistence-model.xml
  2. +++ b/src/resources/apps/fr/includes/persistence-model.xml
  3. @@ -121,6 +121,14 @@
  4. <xforms:action if="$form-data">
  5. <xxforms:variable name="xml-data" select="saxon:parse(saxon:base64Binary-to-string(xs:base64Binary($form-data), 'UTF-8'))"/>
  6. <xforms:insert nodeset="xxforms:instance('fr-form-instance')" origin="$xml-data"/>
  7. + <xforms:rebuild model="fr-form-model"/>
  8. + <xforms:recalculate forceRecalculateDefaults="true" model="fr-form-model"/>
  9. + <xforms:revalidate model="fr-form-model"/>
  10. + <xforms:refresh model="fr-form-model"/>
  11. </xforms:action>
  12. </xforms:action>
  13. </xforms:action>
  14.  
  15.  
  16. --- a/src/java/org/orbeon/oxf/xforms/XFormsModel.java
  17. +++ b/src/java/org/orbeon/oxf/xforms/XFormsModel.java
  18. @@ -963,12 +963,13 @@ public class XFormsModel implements XFormsEventTarget, XFormsEventObserver, XFor
  19. // Recalculate only if needed
  20. if (instances.size() > 0 && binds != null && deferredActionContext.recalculate) {
  21. // Apply calculate binds
  22. - binds.applyCalculateBinds(propertyContext);
  23. + binds.applyCalculateBinds(propertyContext, deferredActionContext.recalculateDefaults);
  24. }
  25.  
  26. // "Actions that directly invoke rebuild, recalculate, revalidate, or refresh always
  27. // have an immediate effect, and clear the corresponding flag."
  28. deferredActionContext.recalculate = false;
  29. + deferredActionContext.recalculateDefaults = false;
  30. }
  31.  
  32.  
  33. @@ -1073,6 +1074,7 @@ public class XFormsModel implements XFormsEventTarget, XFormsEventObserver, XFor
  34. public boolean rebuild;
  35. public boolean recalculate;
  36. public boolean revalidate;
  37. + public boolean recalculateDefaults;
  38.  
  39. public void setAllDeferredFlags(boolean value) {
  40. rebuild = value;
  41.  
  42.  
  43. --- a/src/java/org/orbeon/oxf/xforms/XFormsModelBinds.java
  44. +++ b/src/java/org/orbeon/oxf/xforms/XFormsModelBinds.java
  45. @@ -145,8 +145,9 @@ public class XFormsModelBinds {
  46. * Apply calculate binds.
  47. *
  48. * @param propertyContext current context
  49. + * @param rebuildDefaults force a rebuild of the defaults
  50. */
  51. - public void applyCalculateBinds(final PropertyContext propertyContext) {
  52. + public void applyCalculateBinds(final PropertyContext propertyContext, boolean rebuildDefaults) {
  53.  
  54. if (indentedLogger.isDebugEnabled())
  55. indentedLogger.startHandleOperation("model", "performing recalculate", "model id", model.getEffectiveId());
  56. @@ -159,7 +160,7 @@ public class XFormsModelBinds {
  57. // Reset context stack just to re-evaluate the variables
  58. model.getContextStack().resetBindingContext(propertyContext, model);
  59.  
  60. - if (isFirstCalculate) {
  61. + if (rebuildDefaults || isFirstCalculate) {
  62. // Handle default values
  63. iterateBinds(propertyContext, new BindRunner() {
  64. public void applyBind(PropertyContext propertyContext, Bind bind, List<Item> nodeset, int position) {
  65.  
  66.  
  67. --- a/src/java/org/orbeon/oxf/xforms/action/actions/XFormsRecalculateAction.java
  68. +++ b/src/java/org/orbeon/oxf/xforms/action/actions/XFormsRecalculateAction.java
  69. @@ -48,6 +48,8 @@ public class XFormsRecalculateAction extends XFormsAction {
  70.  
  71. // Because of inter-model dependencies, we consider for now that the action must force the operation
  72. model.getDeferredActionContext().recalculate = true;
  73. + model.getDeferredActionContext().recalculateDefaults = actionElement.attributeValue("forceRecalculateDefaults") != null &&
  74. + actionElement.attributeValue("forceRecalculateDefaults").equals("true");
  75. container.dispatchEvent(propertyContext, new XFormsRecalculateEvent(containingDocument, model));
  76. }
  77. }
Add Comment
Please, Sign In to add comment