This is an automated email from the ASF dual-hosted git repository.

mridulpathak pushed a commit to branch release24.09
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/release24.09 by this push:
     new d42c30f027 Improved: Keep the area id and target of the update areas 
of forms as expressions (OFBIZ-13644)
d42c30f027 is described below

commit d42c30f0273e0609ab1cff4094e3e075e829912d
Author: Mridul Pathak <[email protected]>
AuthorDate: Sun Oct 4 13:49:29 2026 +0530

    Improved: Keep the area id and target of the update areas of forms as 
expressions (OFBIZ-13644)
    
    ModelForm.UpdateArea kept the area id and the target as strings, with a 
flag, added by OFBIZ-13642 and OFBIZ-13643, that told the getters whether to 
evaluate them or to take them literally.
    
    They are now FlexibleStringExpander objects: created with getInstance for 
what is defined in the widgets, so that they are parsed once, and with 
getLiteral for the values that are already evaluated, so that they are never 
parsed. The getters that take a context return the evaluated value, and the 
ones that do not return the original text. The UpdateArea.literal factories and 
their callers are unchanged.
    
    (cherry picked from commit 8add56f61ee1fe4466b7cf44de1c1301dcaa6ce7)
---
 .../org/apache/ofbiz/widget/model/ModelForm.java   | 45 +++++++++++-----------
 1 file changed, 22 insertions(+), 23 deletions(-)

diff --git 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
index 876a349a26..92b27ad4d2 100644
--- 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
+++ 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java
@@ -428,7 +428,7 @@ public abstract class ModelForm extends ModelWidget {
             if ("paginate".equals(updateArea.getEventType())) {
                 int index = onPaginateUpdateAreas.indexOf(updateArea);
                 if (index != -1) {
-                    if (!updateArea.areaTarget.isEmpty()) {
+                    if (!updateArea.getAreaTarget().isEmpty()) {
                         onPaginateUpdateAreas.set(index, updateArea);
                     } else {
                         // blank target indicates a removing override
@@ -447,7 +447,7 @@ public abstract class ModelForm extends ModelWidget {
             } else if ("sort-column".equals(updateArea.getEventType())) {
                 int index = onSortColumnUpdateAreas.indexOf(updateArea);
                 if (index != -1) {
-                    if (!updateArea.areaTarget.isEmpty()) {
+                    if (!updateArea.getAreaTarget().isEmpty()) {
                         onSortColumnUpdateAreas.set(index, updateArea);
                     } else {
                         // blank target indicates a removing override
@@ -2287,10 +2287,8 @@ public abstract class ModelForm extends ModelWidget {
      */
     public static class UpdateArea {
         private final String eventType;
-        private final String areaId;
-        private final String areaTarget;
-        // true when the area id and the target are already evaluated values, 
which must not be evaluated again
-        private final boolean literal;
+        private final FlexibleStringExpander areaIdExdr;
+        private final FlexibleStringExpander areaTargetExdr;
         private final String defaultServiceName;
         private final String defaultEntityName;
         private final CommonWidgetModels.AutoEntityParameters 
autoEntityParameters;
@@ -2307,9 +2305,8 @@ public abstract class ModelForm extends ModelWidget {
          */
         public UpdateArea(Element updateAreaElement, String 
defaultServiceName, String defaultEntityName) {
             this.eventType = updateAreaElement.getAttribute("event-type");
-            this.areaId = updateAreaElement.getAttribute("area-id");
-            this.areaTarget = updateAreaElement.getAttribute("area-target");
-            this.literal = false;
+            this.areaIdExdr = 
FlexibleStringExpander.getInstance(updateAreaElement.getAttribute("area-id"));
+            this.areaTargetExdr = 
FlexibleStringExpander.getInstance(updateAreaElement.getAttribute("area-target"));
             this.defaultServiceName = defaultServiceName;
             this.defaultEntityName = defaultEntityName;
             List<? extends Element> parameterElementList = 
UtilXml.childElementList(updateAreaElement, "parameter");
@@ -2355,7 +2352,8 @@ public abstract class ModelForm extends ModelWidget {
          * @param areaTarget The target URL called to update the area
          */
         public UpdateArea(String eventType, String areaId, String areaTarget) {
-            this(eventType, areaId, areaTarget, Collections.emptyList(), 
false);
+            this(eventType, FlexibleStringExpander.getInstance(areaId), 
FlexibleStringExpander.getInstance(areaTarget),
+                    Collections.emptyList());
         }
 
         /** String constructor.
@@ -2365,15 +2363,15 @@ public abstract class ModelForm extends ModelWidget {
          */
         public UpdateArea(String eventType, String areaId, String areaTarget,
                           List<CommonWidgetModels.Parameter> parameterList) {
-            this(eventType, areaId, areaTarget, parameterList, false);
+            this(eventType, FlexibleStringExpander.getInstance(areaId), 
FlexibleStringExpander.getInstance(areaTarget),
+                    parameterList);
         }
 
-        private UpdateArea(String eventType, String areaId, String areaTarget,
-                           List<CommonWidgetModels.Parameter> parameterList, 
boolean literal) {
+        private UpdateArea(String eventType, FlexibleStringExpander 
areaIdExdr, FlexibleStringExpander areaTargetExdr,
+                           List<CommonWidgetModels.Parameter> parameterList) {
             this.eventType = eventType;
-            this.areaId = areaId;
-            this.areaTarget = areaTarget;
-            this.literal = literal;
+            this.areaIdExdr = areaIdExdr;
+            this.areaTargetExdr = areaTargetExdr;
             this.defaultServiceName = null;
             this.defaultEntityName = null;
             this.parameterList = parameterList;
@@ -2390,7 +2388,8 @@ public abstract class ModelForm extends ModelWidget {
          */
         public static UpdateArea literal(String eventType, String areaId, 
String areaTarget,
                                          List<CommonWidgetModels.Parameter> 
parameterList) {
-            return new UpdateArea(eventType, areaId, areaTarget, 
parameterList, true);
+            return new UpdateArea(eventType, 
FlexibleStringExpander.getLiteral(areaId),
+                    FlexibleStringExpander.getLiteral(areaTarget), 
parameterList);
         }
 
         /** Creates an update area without parameters whose area id and target 
are already evaluated values, so that they
@@ -2400,7 +2399,7 @@ public abstract class ModelForm extends ModelWidget {
          * @return the update area
          */
         public static UpdateArea literal(String eventType, String areaId, 
String areaTarget) {
-            return new UpdateArea(eventType, areaId, areaTarget, 
Collections.emptyList(), true);
+            return literal(eventType, areaId, areaTarget, 
Collections.emptyList());
         }
 
         @Override
@@ -2413,7 +2412,7 @@ public abstract class ModelForm extends ModelWidget {
          * @return the area id
          */
         public String getAreaId() {
-            return areaId;
+            return areaIdExdr.getOriginal();
         }
 
         /**
@@ -2422,7 +2421,7 @@ public abstract class ModelForm extends ModelWidget {
          * @return the area id
          */
         public String getAreaId(Map<String, ? extends Object> context) {
-            return literal ? areaId : 
FlexibleStringExpander.expandString(areaId, context);
+            return areaIdExdr.expandString(context);
         }
 
         /**
@@ -2431,7 +2430,7 @@ public abstract class ModelForm extends ModelWidget {
          * @return the area target
          */
         public String getAreaTarget(Map<String, ? extends Object> context) {
-            return literal ? areaTarget : 
FlexibleStringExpander.expandString(areaTarget, context);
+            return areaTargetExdr.expandString(context);
         }
 
         /**
@@ -2464,7 +2463,7 @@ public abstract class ModelForm extends ModelWidget {
 
         @Override
         public int hashCode() {
-            return areaId.hashCode();
+            return areaIdExdr.getOriginal().hashCode();
         }
 
         /**
@@ -2472,7 +2471,7 @@ public abstract class ModelForm extends ModelWidget {
          * @return the area target
          */
         public String getAreaTarget() {
-            return areaTarget;
+            return areaTargetExdr.getOriginal();
         }
 
         /**

Reply via email to