This is an automated email from the ASF dual-hosted git repository.
mridulpathak pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new a6bee73947 Improved: Keep the area id and target of the update areas
of forms as expressions (OFBIZ-13644)
a6bee73947 is described below
commit a6bee739473261da9e4f7b70c9b4630ca9afecd3
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.
---
.../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 0932688789..8333d4c032 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();
}
/**