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 1076e4f7b5 Remove this-escape warnings in widget form fields, 
HtmlWidget and XML visitors
1076e4f7b5 is described below

commit 1076e4f7b5ec85df176dac48094650986b2e655e
Author: Mridul Pathak <[email protected]>
AuthorDate: Tue Oct 27 11:51:04 2026 +0530

    Remove this-escape warnings in widget form fields, HtmlWidget and XML 
visitors
    
    Constructors and field initializers in these classes called their own 
overridable methods, which javac's this-escape lint reports. There is no public 
API or behaviour change.
    
    - ModelFormField.DropDownField and TextField pass their modelFormField 
constructor parameter to SubHyperlink instead of calling getModelFormField().
    - HtmlWidget.HtmlTemplateDecoratorSection reads its sub-widgets with its 
modelScreen parameter. The HtmlTemplateDecorator and 
HtmlTemplateDecoratorSection fields are final, and the section map is 
unmodifiable, as in DecoratorScreen.
    - The XmlWidget*Visitor classes drop the writer field that copied 
XmlAbstractWidgetVisitor's writer and call getWriter() instead.
    - ModelFormFieldBuilder's XML constructor now calls only private methods: 
the public induceFieldInfoFromEntityField, induceFieldInfoFromServiceParam and 
setFieldInfo delegate to private versions, and the private auto-field helpers 
read the fields directly.
---
 .../org/apache/ofbiz/widget/model/HtmlWidget.java  |  12 +-
 .../apache/ofbiz/widget/model/ModelFormField.java  |   4 +-
 .../ofbiz/widget/model/ModelFormFieldBuilder.java  |  62 +++---
 .../ofbiz/widget/model/XmlWidgetActionVisitor.java |  69 +++---
 .../widget/model/XmlWidgetConditionVisitor.java    |  60 +++--
 .../ofbiz/widget/model/XmlWidgetFieldVisitor.java  | 157 +++++++------
 .../ofbiz/widget/model/XmlWidgetVisitor.java       | 245 ++++++++++-----------
 7 files changed, 309 insertions(+), 300 deletions(-)

diff --git 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/HtmlWidget.java 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/HtmlWidget.java
index 0a2fa1005b..a45a5890f3 100644
--- 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/HtmlWidget.java
+++ 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/HtmlWidget.java
@@ -358,8 +358,8 @@ public class HtmlWidget extends ModelScreenWidget {
     }
 
     public static class HtmlTemplateDecorator extends ModelScreenWidget {
-        private FlexibleStringExpander locationExdr;
-        private Map<String, ModelScreenWidget> sectionMap = new HashMap<>();
+        private final FlexibleStringExpander locationExdr;
+        private final Map<String, ModelScreenWidget> sectionMap;
 
         public HtmlTemplateDecorator(ModelScreen modelScreen, Element 
htmlTemplateDecoratorElement) {
             super(modelScreen, htmlTemplateDecoratorElement);
@@ -367,10 +367,12 @@ public class HtmlWidget extends ModelScreenWidget {
 
             List<? extends Element> htmlTemplateDecoratorSectionElementList = 
UtilXml.childElementList(
                     htmlTemplateDecoratorElement, 
"html-template-decorator-section");
+            Map<String, ModelScreenWidget> sectionMap = new HashMap<>();
             for (Element htmlTemplateDecoratorSectionElement: 
htmlTemplateDecoratorSectionElementList) {
                 String name = 
htmlTemplateDecoratorSectionElement.getAttribute("name");
-                this.sectionMap.put(name, new 
HtmlTemplateDecoratorSection(modelScreen, htmlTemplateDecoratorSectionElement));
+                sectionMap.put(name, new 
HtmlTemplateDecoratorSection(modelScreen, htmlTemplateDecoratorSectionElement));
             }
+            this.sectionMap = Collections.unmodifiableMap(sectionMap);
         }
 
         @Override
@@ -421,12 +423,12 @@ public class HtmlWidget extends ModelScreenWidget {
     }
 
     public static class HtmlTemplateDecoratorSection extends ModelScreenWidget 
{
-        private List<ModelScreenWidget> subWidgets;
+        private final List<ModelScreenWidget> subWidgets;
 
         public HtmlTemplateDecoratorSection(ModelScreen modelScreen, Element 
htmlTemplateDecoratorSectionElement) {
             super(modelScreen, htmlTemplateDecoratorSectionElement);
             List<? extends Element> subElementList = 
UtilXml.childElementList(htmlTemplateDecoratorSectionElement);
-            this.subWidgets = 
ModelScreenWidget.readSubWidgets(getModelScreen(), subElementList);
+            this.subWidgets = ModelScreenWidget.readSubWidgets(modelScreen, 
subElementList);
         }
 
         @Override
diff --git 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
index 0070e917d8..ad84a14169 100644
--- 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
+++ 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
@@ -2475,7 +2475,7 @@ public final class ModelFormField {
             this.size = size;
             Element subHyperlinkElement = UtilXml.firstChildElement(element, 
"sub-hyperlink");
             if (subHyperlinkElement != null) {
-                this.subHyperlink = new SubHyperlink(subHyperlinkElement, 
this.getModelFormField());
+                this.subHyperlink = new SubHyperlink(subHyperlinkElement, 
modelFormField);
             } else {
                 this.subHyperlink = null;
             }
@@ -5944,7 +5944,7 @@ public final class ModelFormField {
             this.size = size;
             Element subHyperlinkElement = UtilXml.firstChildElement(element, 
"sub-hyperlink");
             if (subHyperlinkElement != null) {
-                this.subHyperlink = new SubHyperlink(subHyperlinkElement, 
this.getModelFormField());
+                this.subHyperlink = new SubHyperlink(subHyperlinkElement, 
modelFormField);
             } else {
                 this.subHyperlink = null;
             }
diff --git 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java
 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java
index d6d833ff2c..6462000b1e 100644
--- 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java
+++ 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java
@@ -754,6 +754,10 @@ public class ModelFormFieldBuilder {
      * @return the boolean
      */
     public boolean induceFieldInfoFromEntityField(ModelEntity modelEntity, 
ModelField modelField, String defaultFieldType) {
+        return induceFromEntityField(modelEntity, modelField, 
defaultFieldType);
+    }
+
+    private boolean induceFromEntityField(ModelEntity modelEntity, ModelField 
modelField, String defaultFieldType) {
         if (modelEntity == null || modelField == null) {
             return false;
         }
@@ -768,31 +772,31 @@ public class ModelFormFieldBuilder {
                         new ModelFormField.SingleOption("N", null, null));
                 ModelFormField.DropDownField dropDownField = new 
ModelFormField.DropDownField(FieldInfo.SOURCE_AUTO_ENTITY,
                         optionSources);
-                this.setFieldInfo(dropDownField);
+                this.updateFieldInfo(dropDownField);
             } else if (TEXT_FIELD_TYPES.contains(fieldType)) {
                 ModelFormField.TextFindField textField = new 
ModelFormField.TextFindField(FieldInfo.SOURCE_AUTO_ENTITY,
                         TEXT_SIZE_BY_FIELD_TYPES.get(fieldType), 
TEXT_MAX_SIZE_BY_FIELD_TYPES.get(fieldType), null);
-                this.setFieldInfo(textField);
+                this.updateFieldInfo(textField);
             } else if (NUMERIC_FIELD_TYPES.contains(fieldType)) {
                 ModelFormField.RangeFindField textField = new 
ModelFormField.RangeFindField(FieldInfo.SOURCE_AUTO_ENTITY, 6, null);
-                this.setFieldInfo(textField);
+                this.updateFieldInfo(textField);
             } else if (DATA_FIELD_TYPES.contains(fieldType)) {
                 String type = fieldType;
                 if ("date-time".equals(fieldType)) {
                     type = "timestamp";
                 }
                 ModelFormField.DateFindField dateTimeField = new 
ModelFormField.DateFindField(FieldInfo.SOURCE_AUTO_ENTITY, type);
-                this.setFieldInfo(dateTimeField);
+                this.updateFieldInfo(dateTimeField);
             } else {
                 ModelFormField.TextFindField textField = new 
ModelFormField.TextFindField(FieldInfo.SOURCE_AUTO_ENTITY, null);
-                this.setFieldInfo(textField);
+                this.updateFieldInfo(textField);
             }
         } else if ("display".equals(defaultFieldType)) {
             ModelFormField.DisplayField displayField = new 
ModelFormField.DisplayField(FieldInfo.SOURCE_AUTO_ENTITY, null);
-            this.setFieldInfo(displayField);
+            this.updateFieldInfo(displayField);
         } else if ("hidden".equals(defaultFieldType)) {
             ModelFormField.HiddenField hiddenField = new 
ModelFormField.HiddenField(FieldInfo.SOURCE_AUTO_ENTITY, null);
-            this.setFieldInfo(hiddenField);
+            this.updateFieldInfo(hiddenField);
         } else {
             if ("indicator".equals(fieldType)) {
                 List<OptionSource> optionSources;
@@ -808,42 +812,42 @@ public class ModelFormFieldBuilder {
                 }
                 ModelFormField.DropDownField dropDownField = new 
ModelFormField.DropDownField(FieldInfo.SOURCE_AUTO_ENTITY,
                         optionSources);
-                this.setFieldInfo(dropDownField);
+                this.updateFieldInfo(dropDownField);
             } else if ("very-long".equals(fieldType)) {
                 ModelFormField.TextareaField textareaField = new 
ModelFormField.TextareaField(FieldInfo.SOURCE_AUTO_ENTITY, null);
-                this.setFieldInfo(textareaField);
+                this.updateFieldInfo(textareaField);
             } else if (TEXT_FIELD_TYPES.contains(fieldType)) {
                 ModelFormField.TextField textField = new 
ModelFormField.TextField(FieldInfo.SOURCE_AUTO_ENTITY,
                         TEXT_SIZE_BY_FIELD_TYPES.get(fieldType), 
TEXT_MAX_SIZE_BY_FIELD_TYPES.get(fieldType), "text", null);
-                this.setFieldInfo(textField);
+                this.updateFieldInfo(textField);
             } else if (NUMERIC_FIELD_TYPES.contains(fieldType)) {
                 ModelFormField.TextField textField = new 
ModelFormField.TextField(FieldInfo.SOURCE_AUTO_ENTITY, 6, null, "number", null);
-                this.setFieldInfo(textField);
+                this.updateFieldInfo(textField);
             } else if (DATA_FIELD_TYPES.contains(fieldType)) {
                 String type = fieldType;
                 if ("date-time".equals(fieldType)) {
                     type = "timestamp";
                 }
                 ModelFormField.DateTimeField dateTimeField = new 
ModelFormField.DateTimeField(FieldInfo.SOURCE_AUTO_ENTITY, type);
-                this.setFieldInfo(dateTimeField);
+                this.updateFieldInfo(dateTimeField);
             } else {
                 ModelFormField.TextField textField = new 
ModelFormField.TextField(FieldInfo.SOURCE_AUTO_ENTITY, null);
-                this.setFieldInfo(textField);
+                this.updateFieldInfo(textField);
             }
         }
         return true;
     }
 
     private boolean induceFieldInfoFromEntityField(String defaultFieldType, 
ModelReader entityModelReader) {
-        if (UtilValidate.isEmpty(this.getEntityName()) || 
UtilValidate.isEmpty(this.getFieldName())) {
+        if (UtilValidate.isEmpty(this.entityName) || 
UtilValidate.isEmpty(this.fieldName)) {
             return false;
         }
         try {
-            ModelEntity modelEntity = 
entityModelReader.getModelEntity(this.getEntityName());
-            ModelField modelField = modelEntity.getField(this.getFieldName());
+            ModelEntity modelEntity = 
entityModelReader.getModelEntity(this.entityName);
+            ModelField modelField = modelEntity.getField(this.fieldName);
             if (modelField != null) {
                 // okay, populate using the entity field info...
-                this.induceFieldInfoFromEntityField(modelEntity, modelField, 
defaultFieldType);
+                this.induceFromEntityField(modelEntity, modelField, 
defaultFieldType);
                 return true;
             }
         } catch (GenericEntityException e) {
@@ -860,6 +864,10 @@ public class ModelFormFieldBuilder {
      * @return the boolean
      */
     public boolean induceFieldInfoFromServiceParam(ModelService modelService, 
ModelParam modelParam, String defaultFieldType) {
+        return induceFromServiceParam(modelService, modelParam, 
defaultFieldType);
+    }
+
+    private boolean induceFromServiceParam(ModelService modelService, 
ModelParam modelParam, String defaultFieldType) {
         if (modelService == null || modelParam == null) {
             return false;
         }
@@ -900,7 +908,7 @@ public class ModelFormFieldBuilder {
                 fieldInfo = new 
ModelFormField.DateTimeField(FieldInfo.SOURCE_AUTO_SERVICE, "time");
             }
         }
-        this.setFieldInfo(fieldInfo);
+        this.updateFieldInfo(fieldInfo);
         return fieldInfo != null;
     }
 
@@ -931,12 +939,12 @@ public class ModelFormFieldBuilder {
 
     private boolean induceFieldInfoFromServiceParam(String defaultFieldType, 
ModelReader entityModelReader,
             DispatchContext dispatchContext) {
-        if (UtilValidate.isEmpty(this.getServiceName()) || 
UtilValidate.isEmpty(this.getAttributeName())) {
+        if (UtilValidate.isEmpty(this.serviceName) || 
UtilValidate.isEmpty(this.attributeName)) {
             return false;
         }
         try {
-            ModelService modelService = 
dispatchContext.getModelService(this.getServiceName());
-            ModelParam modelParam = 
modelService.getParam(this.getAttributeName());
+            ModelService modelService = 
dispatchContext.getModelService(this.serviceName);
+            ModelParam modelParam = modelService.getParam(this.attributeName);
             if (modelParam != null) {
                 if (UtilValidate.isNotEmpty(modelParam.getEntityName()) && 
UtilValidate.isNotEmpty(modelParam.getFieldName())) {
                     this.entityName = modelParam.getEntityName();
@@ -946,13 +954,13 @@ public class ModelFormFieldBuilder {
                     }
                 }
 
-                this.induceFieldInfoFromServiceParam(modelService, modelParam, 
defaultFieldType);
+                this.induceFromServiceParam(modelService, modelParam, 
defaultFieldType);
                 return true;
             }
         } catch (GenericServiceException e) {
             Debug.logError(e,
-                    "error getting service parameter definition for auto-field 
with serviceName: " + this.getServiceName()
-                            + ", and attributeName: " + 
this.getAttributeName(), MODULE);
+                    "error getting service parameter definition for auto-field 
with serviceName: " + this.serviceName
+                            + ", and attributeName: " + this.attributeName, 
MODULE);
         }
         return false;
     }
@@ -1129,10 +1137,14 @@ public class ModelFormFieldBuilder {
      * @return the field info
      */
     public ModelFormFieldBuilder setFieldInfo(FieldInfo fieldInfo) {
+        updateFieldInfo(fieldInfo);
+        return this;
+    }
+
+    private void updateFieldInfo(FieldInfo fieldInfo) {
         if (fieldInfo != null && (this.fieldInfo == null || 
(fieldInfo.getFieldSource() <= this.fieldInfo.getFieldSource()))) {
             this.fieldInfo = fieldInfo;
         }
-        return this;
     }
 
     /**
diff --git 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetActionVisitor.java
 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetActionVisitor.java
index fb7b48e57c..45afa4c577 100644
--- 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetActionVisitor.java
+++ 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetActionVisitor.java
@@ -39,7 +39,6 @@ import 
org.apache.ofbiz.widget.model.ModelFormAction.CallParentActions;
 public class XmlWidgetActionVisitor extends XmlAbstractWidgetVisitor 
implements ModelActionVisitor {
 
     private static final String MODULE = 
XmlWidgetActionVisitor.class.getName();
-    private final Appendable writer = getWriter();
 
     public XmlWidgetActionVisitor(Appendable writer) {
         super(writer);
@@ -47,73 +46,73 @@ public class XmlWidgetActionVisitor extends 
XmlAbstractWidgetVisitor implements
 
     @Override
     public void visit(CallParentActions callParentActions) throws Exception {
-        writer.append("<call-parent-actions/>");
+        getWriter().append("<call-parent-actions/>");
     }
 
     @Override
     public void visit(EntityAnd entityAnd) throws Exception {
-        writer.append("<entity-and/>");
+        getWriter().append("<entity-and/>");
         // TODO: Create ByAndFinder visitor
     }
 
     @Override
     public void visit(org.apache.ofbiz.widget.model.ModelTreeAction.EntityAnd 
entityAnd) throws Exception {
-        writer.append("<entity-and/>");
+        getWriter().append("<entity-and/>");
         // TODO: Create ByAndFinder visitor
     }
 
     @Override
     public void visit(EntityCondition entityCondition) throws Exception {
-        writer.append("<entity-condition/>");
+        getWriter().append("<entity-condition/>");
         // TODO: Create ByConditionFinder visitor
     }
 
     @Override
     public void 
visit(org.apache.ofbiz.widget.model.ModelTreeAction.EntityCondition 
entityCondition) throws Exception {
-        writer.append("<entity-condition/>");
+        getWriter().append("<entity-condition/>");
         // TODO: Create ByConditionFinder visitor
     }
 
     @Override
     public void visit(EntityOne entityOne) throws Exception {
-        writer.append("<entity-one/>");
+        getWriter().append("<entity-one/>");
         // TODO: Create PrimaryKeyFinder visitor
     }
 
     @Override
     public void visit(GetRelated getRelated) throws Exception {
-        writer.append("<get-related");
+        getWriter().append("<get-related");
         visitAttribute("value-field", getRelated.getValueNameAcsr());
         visitAttribute("list", getRelated.getListNameAcsr());
         visitAttribute("relation-name", getRelated.getRelationName());
         visitAttribute("map", getRelated.getMapAcsr());
         visitAttribute("order-by-list", getRelated.getOrderByListAcsr());
         visitAttribute("use-cache", getRelated.getUseCache());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(GetRelatedOne getRelatedOne) throws Exception {
-        writer.append("<get-related-one");
+        getWriter().append("<get-related-one");
         visitAttribute("value-field", getRelatedOne.getValueNameAcsr());
         visitAttribute("to-value-field", getRelatedOne.getToValueNameAcsr());
         visitAttribute("relation-name", getRelatedOne.getRelationName());
         visitAttribute("use-cache", getRelatedOne.getUseCache());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(PropertyMap propertyMap) throws Exception {
-        writer.append("<property-map");
+        getWriter().append("<property-map");
         visitAttribute("resource", propertyMap.getResourceExdr());
         visitAttribute("map-name", propertyMap.getMapNameAcsr());
         visitAttribute("global", propertyMap.getGlobalExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(PropertyToField propertyToField) throws Exception {
-        writer.append("<property-map");
+        getWriter().append("<property-map");
         visitAttribute("resource", propertyToField.getResourceExdr());
         visitAttribute("property", propertyToField.getPropertyExdr());
         visitAttribute("field", propertyToField.getFieldAcsr());
@@ -121,69 +120,69 @@ public class XmlWidgetActionVisitor extends 
XmlAbstractWidgetVisitor implements
         visitAttribute("no-locale", propertyToField.getNoLocale());
         visitAttribute("arg-list-name", propertyToField.getArgListAcsr());
         visitAttribute("global", propertyToField.getGlobalExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(Script script) throws Exception {
-        writer.append("<script");
+        getWriter().append("<script");
         visitAttribute("location", script.getLocation());
         visitAttribute("method", script.getMethod());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(org.apache.ofbiz.widget.model.ModelTreeAction.Script 
script) throws Exception {
-        writer.append("<script");
+        getWriter().append("<script");
         visitAttribute("location", script.getLocation());
         visitAttribute("method", script.getMethod());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(Service service) throws Exception {
-        writer.append("<service");
+        getWriter().append("<service");
         visitAttribute("service-name", service.getServiceNameExdr());
         visitAttribute("result-map", service.getResultMapNameAcsr());
         visitAttribute("auto-field-map", service.getAutoFieldMapExdr());
-        writer.append(">");
+        getWriter().append(">");
         // TODO: Create Field Map visitor
-        writer.append("<field-map/>");
-        writer.append("</service>");
+        getWriter().append("<field-map/>");
+        getWriter().append("</service>");
     }
 
     @Override
     public void visit(org.apache.ofbiz.widget.model.ModelFormAction.Service 
service) throws Exception {
-        writer.append("<service");
+        getWriter().append("<service");
         visitAttribute("service-name", service.getServiceNameExdr());
         visitAttribute("result-map", service.getResultMapNameAcsr());
         visitAttribute("auto-field-map", service.getAutoFieldMapExdr());
         visitAttribute("result-map-list", service.getResultMapListNameExdr());
         visitAttribute("ignore-error", service.getIgnoreError());
-        writer.append(">");
+        getWriter().append(">");
         // TODO: Create Field Map visitor
-        writer.append("<field-map/>");
-        writer.append("</service>");
+        getWriter().append("<field-map/>");
+        getWriter().append("</service>");
     }
 
     @Override
     public void visit(org.apache.ofbiz.widget.model.ModelTreeAction.Service 
service) throws Exception {
-        writer.append("<service");
+        getWriter().append("<service");
         visitAttribute("service-name", service.getServiceNameExdr());
         visitAttribute("result-map", service.getResultMapNameAcsr());
         visitAttribute("auto-field-map", service.getAutoFieldMapExdr());
         visitAttribute("result-map-list", service.getResultMapListNameExdr());
         visitAttribute("result-map-value", 
service.getResultMapValueNameExdr());
         visitAttribute("value", service.getValueNameExdr());
-        writer.append(">");
+        getWriter().append(">");
         // TODO: Create Field Map visitor
-        writer.append("<field-map/>");
-        writer.append("</service>");
+        getWriter().append("<field-map/>");
+        getWriter().append("</service>");
     }
 
     @Override
     public void visit(SetField setField) throws Exception {
-        writer.append("<set");
+        getWriter().append("<set");
         visitAttribute("field", setField.getField());
         visitAttribute("from-field", setField.getFromField());
         visitAttribute("value", setField.getValueExdr());
@@ -192,12 +191,12 @@ public class XmlWidgetActionVisitor extends 
XmlAbstractWidgetVisitor implements
         visitAttribute("type", setField.getType());
         visitAttribute("to-scope", setField.getToScope());
         visitAttribute("from-scope", setField.getFromScope());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(org.apache.ofbiz.widget.model.ModelMenuAction.SetField 
setField) throws Exception {
-        writer.append("<set");
+        getWriter().append("<set");
         visitAttribute("field", setField.getField());
         visitAttribute("from-field", setField.getFromField());
         visitAttribute("value", setField.getValueExdr());
@@ -206,6 +205,6 @@ public class XmlWidgetActionVisitor extends 
XmlAbstractWidgetVisitor implements
         visitAttribute("type", setField.getType());
         visitAttribute("to-scope", setField.getToScope());
         visitAttribute("from-scope", setField.getFromScope());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 }
diff --git 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetConditionVisitor.java
 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetConditionVisitor.java
index bb081cf2de..09b62cf873 100644
--- 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetConditionVisitor.java
+++ 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetConditionVisitor.java
@@ -45,122 +45,120 @@ public class XmlWidgetConditionVisitor extends 
XmlAbstractWidgetVisitor implemen
         super(writer);
     }
 
-    private final Appendable writer = getWriter();
-
     @Override
     public void visit(And and) throws Exception {
-        writer.append("<and>");
+        getWriter().append("<and>");
         visitSubConditions(and.getSubConditions());
-        writer.append("</and>");
+        getWriter().append("</and>");
     }
 
     @Override
     public void visit(IfCompare ifCompare) throws Exception {
-        writer.append("<if-compare");
+        getWriter().append("<if-compare");
         visitAttribute("field", ifCompare.getFieldAcsr());
         visitAttribute("operator", ifCompare.getOperator());
         visitAttribute("value", ifCompare.getValueExdr());
         visitAttribute("type", ifCompare.getType());
         visitAttribute("format", ifCompare.getFormatExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(IfCompareField ifCompareField) throws Exception {
-        writer.append("<if-compare-field");
+        getWriter().append("<if-compare-field");
         visitAttribute("field", ifCompareField.getFieldAcsr());
         visitAttribute("operator", ifCompareField.getOperator());
         visitAttribute("to-field", ifCompareField.getToFieldAcsr());
         visitAttribute("type", ifCompareField.getType());
         visitAttribute("format", ifCompareField.getFormatExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(IfEmpty ifEmpty) throws Exception {
-        writer.append("<if-empty");
+        getWriter().append("<if-empty");
         visitAttribute("field", ifEmpty.getFieldAcsr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(IfEmptySection ifEmptySection) throws Exception {
-        writer.append("<if-empty-section");
+        getWriter().append("<if-empty-section");
         visitAttribute("section-name", ifEmptySection.getSectionExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(IfHasPermission ifHasPermission) throws Exception {
-        writer.append("<if-has-permission");
+        getWriter().append("<if-has-permission");
         visitAttribute("permission", ifHasPermission.getPermissionExdr());
         visitAttribute("action", ifHasPermission.getActionExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(IfRegexp ifRegexp) throws Exception {
-        writer.append("<if-regexp");
+        getWriter().append("<if-regexp");
         visitAttribute("field", ifRegexp.getFieldAcsr());
         visitAttribute("expr", ifRegexp.getExprExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(IfServicePermission ifServicePermission) throws 
Exception {
-        writer.append("<if-service-permission");
+        getWriter().append("<if-service-permission");
         visitAttribute("service-name", ifServicePermission.getServiceExdr());
         visitAttribute("main-action", ifServicePermission.getActionExdr());
         visitAttribute("context-map", ifServicePermission.getCtxMapExdr());
         visitAttribute("resource-description", 
ifServicePermission.getResExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(IfValidateMethod ifValidateMethod) throws Exception {
-        writer.append("<if-validate-method");
+        getWriter().append("<if-validate-method");
         visitAttribute("field", ifValidateMethod.getFieldAcsr());
         visitAttribute("method", ifValidateMethod.getMethodExdr());
         visitAttribute("class", ifValidateMethod.getClassExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(ModelMenuCondition modelMenuCondition) throws Exception {
-        writer.append("<condition");
+        getWriter().append("<condition");
         visitAttribute("pass-style", modelMenuCondition.getPassStyleExdr());
         visitAttribute("disabled-style", 
modelMenuCondition.getFailStyleExdr());
-        writer.append("/>");
+        getWriter().append("/>");
         modelMenuCondition.getCondition().accept(this);
-        writer.append("</condition>");
+        getWriter().append("</condition>");
     }
 
     @Override
     public void visit(ModelTreeCondition modelTreeCondition) throws Exception {
-        writer.append("<condition>");
+        getWriter().append("<condition>");
         modelTreeCondition.getCondition().accept(this);
-        writer.append("</condition>");
+        getWriter().append("</condition>");
     }
 
     @Override
     public void visit(Not not) throws Exception {
-        writer.append("<not>");
+        getWriter().append("<not>");
         not.getSubCondition().accept(this);
-        writer.append("</not>");
+        getWriter().append("</not>");
     }
 
     @Override
     public void visit(Or or) throws Exception {
-        writer.append("<or>");
+        getWriter().append("<or>");
         visitSubConditions(or.getSubConditions());
-        writer.append("</or>");
+        getWriter().append("</or>");
     }
 
     @Override
     public void visit(Xor xor) throws Exception {
-        writer.append("<xor>");
+        getWriter().append("<xor>");
         visitSubConditions(xor.getSubConditions());
-        writer.append("</xor>");
+        getWriter().append("</xor>");
     }
 
     private void visitSubConditions(Collection<ModelCondition> subConditions) 
throws Exception {
diff --git 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetFieldVisitor.java
 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetFieldVisitor.java
index 15e519dfd6..d4433cf3f4 100644
--- 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetFieldVisitor.java
+++ 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetFieldVisitor.java
@@ -62,77 +62,76 @@ public class XmlWidgetFieldVisitor extends 
XmlAbstractWidgetVisitor implements M
     public XmlWidgetFieldVisitor(Appendable writer) {
         super(writer);
     }
-    private final Appendable writer = getWriter();
 
     @Override
     public void visit(CheckField checkField) throws Exception {
         visitModelField(checkField.getModelFormField());
-        writer.append("<check");
+        getWriter().append("<check");
         visitAttribute("all-checked", checkField.getAllChecked());
         visitFieldInfoWithOptions(checkField);
-        writer.append("</check></field>");
+        getWriter().append("</check></field>");
     }
 
     @Override
     public void visit(ContainerField containerField) throws Exception {
         visitModelField(containerField.getModelFormField());
-        writer.append("<container/></field>");
+        getWriter().append("<container/></field>");
     }
 
     @Override
     public void visit(DateFindField dateTimeField) throws Exception {
         visitModelField(dateTimeField.getModelFormField());
-        writer.append("<date-find");
+        getWriter().append("<date-find");
         visitDateTimeFieldAttrs(dateTimeField);
         visitAttribute("default-option-from", 
dateTimeField.getDefaultOptionFrom());
         visitAttribute("default-option-thru", 
dateTimeField.getDefaultOptionThru());
-        writer.append("/></field>");
+        getWriter().append("/></field>");
     }
 
     @Override
     public void visit(DateTimeField dateTimeField) throws Exception {
         visitModelField(dateTimeField.getModelFormField());
-        writer.append("<date-time");
+        getWriter().append("<date-time");
         visitDateTimeFieldAttrs(dateTimeField);
-        writer.append("/></field>");
+        getWriter().append("/></field>");
     }
 
     @Override
     public void visit(ModelFormField.DateRangePickerField 
dateRangePickerField) throws Exception {
         visitModelField(dateRangePickerField.getModelFormField());
-        writer.append("<date-range-picker");
+        getWriter().append("<date-range-picker");
         visitDateRangePickerFieldAttrs(dateRangePickerField);
-        writer.append("/></field>");
+        getWriter().append("/></field>");
     }
 
     @Override
     public void visit(DisplayEntityField displayField) throws Exception {
         visitModelField(displayField.getModelFormField());
-        writer.append("<display-entity");
+        getWriter().append("<display-entity");
         visitDisplayFieldAttrs(displayField);
         visitAttribute("cache", displayField.getCache());
         visitAttribute("entity-name", displayField.getEntityName());
         visitAttribute("key-field-name", displayField.getKeyFieldName());
-        writer.append(">");
+        getWriter().append(">");
         visitInPlaceEditor(displayField.getInPlaceEditor());
         visitSubHyperlink(displayField.getSubHyperlink());
-        writer.append("</display-entity></field>");
+        getWriter().append("</display-entity></field>");
     }
 
     @Override
     public void visit(DisplayField displayField) throws Exception {
         visitModelField(displayField.getModelFormField());
-        writer.append("<display");
+        getWriter().append("<display");
         visitDisplayFieldAttrs(displayField);
-        writer.append(">");
+        getWriter().append(">");
         visitInPlaceEditor(displayField.getInPlaceEditor());
-        writer.append("</display></field>");
+        getWriter().append("</display></field>");
     }
 
     @Override
     public void visit(DropDownField dropDownField) throws Exception {
         visitModelField(dropDownField.getModelFormField());
-        writer.append("<drop-down");
+        getWriter().append("<drop-down");
         visitAttribute("allow-empty", dropDownField.getAllowEmpty());
         visitAttribute("allow-multiple", dropDownField.getAllowMultiple());
         visitAttribute("current", dropDownField.getCurrent());
@@ -148,31 +147,31 @@ public class XmlWidgetFieldVisitor extends 
XmlAbstractWidgetVisitor implements M
         visitFieldInfoWithOptions(dropDownField);
         visitAutoComplete(dropDownField.getAutoComplete());
         visitSubHyperlink(dropDownField.getSubHyperlink());
-        writer.append("</drop-down></field>");
+        getWriter().append("</drop-down></field>");
     }
 
     @Override
     public void visit(FileField textField) throws Exception {
         visitModelField(textField.getModelFormField());
-        writer.append("<file");
+        getWriter().append("<file");
         visitTextFieldAttrs(textField);
-        writer.append(">");
+        getWriter().append(">");
         visitSubHyperlink(textField.getSubHyperlink());
-        writer.append("</file></field>");
+        getWriter().append("</file></field>");
     }
 
     @Override
     public void visit(HiddenField hiddenField) throws Exception {
         visitModelField(hiddenField.getModelFormField());
-        writer.append("<hidden");
+        getWriter().append("<hidden");
         visitAttribute("value", hiddenField.getValue());
-        writer.append("/></field>");
+        getWriter().append("/></field>");
     }
 
     @Override
     public void visit(HyperlinkField hyperlinkField) throws Exception {
         visitModelField(hyperlinkField.getModelFormField());
-        writer.append("<hyperlink");
+        getWriter().append("<hyperlink");
         visitAttribute("also-hidden", hyperlinkField.getAlsoHidden());
         visitAttribute("confirmation-message", 
hyperlinkField.getConfirmationMsgExdr());
         visitAttribute("description", hyperlinkField.getDescription());
@@ -180,77 +179,77 @@ public class XmlWidgetFieldVisitor extends 
XmlAbstractWidgetVisitor implements M
         Link link = hyperlinkField.getLink();
         visitLinkAttributes(link);
         if (link.getImage() != null || link.getAutoEntityParameters() != null 
|| link.getAutoServiceParameters() != null) {
-            writer.append(">");
+            getWriter().append(">");
             visitImage(link.getImage());
             visitAutoEntityParameters(link.getAutoEntityParameters());
             visitAutoServiceParameters(link.getAutoServiceParameters());
-            writer.append("</hyperlink>");
+            getWriter().append("</hyperlink>");
         } else {
-            writer.append("/>");
+            getWriter().append("/>");
         }
-        writer.append("</field>");
+        getWriter().append("</field>");
     }
 
     @Override
     public void visit(FormField formField) throws Exception {
         visitModelField(formField.getModelFormField());
-        writer.append("<include-form");
+        getWriter().append("<include-form");
         visitAttribute("name", formField.getFormName());
         visitAttribute("location", formField.getFormLocation());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(GridField gridField) throws Exception {
         visitModelField(gridField.getModelFormField());
-        writer.append("<include-grid");
+        getWriter().append("<include-grid");
         visitAttribute("name", gridField.getGridName());
         visitAttribute("location", gridField.getGridLocation());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(MenuField menuField) throws Exception {
         visitModelField(menuField.getModelFormField());
-        writer.append("<include-menu");
+        getWriter().append("<include-menu");
         visitAttribute("name", menuField.getMenuName());
         visitAttribute("location", menuField.getMenuLocation());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(ScreenField screenField) throws Exception {
         visitModelField(screenField.getModelFormField());
-        writer.append("<include-screen");
+        getWriter().append("<include-screen");
         visitAttribute("name", screenField.getScreenName());
         visitAttribute("location", screenField.getScreenLocation());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(IgnoredField ignoredField) throws Exception {
         visitModelField(ignoredField.getModelFormField());
-        writer.append("<ignored/></field>");
+        getWriter().append("<ignored/></field>");
     }
 
     @Override
     public void visit(ImageField imageField) throws Exception {
         visitModelField(imageField.getModelFormField());
-        writer.append("<image");
+        getWriter().append("<image");
         visitAttribute("alternate", imageField.getAlternate());
         visitAttribute("default-value", imageField.getDefaultValue());
         visitAttribute("description", imageField.getDescription());
         visitAttribute("style", imageField.getStyle());
         visitAttribute("value", imageField.getValue());
-        writer.append(">");
+        getWriter().append(">");
         visitSubHyperlink(imageField.getSubHyperlink());
-        writer.append("</image></field>");
+        getWriter().append("</image></field>");
     }
 
     @Override
     public void visit(LookupField textField) throws Exception {
         visitModelField(textField.getModelFormField());
-        writer.append("<lookup");
+        getWriter().append("<lookup");
         visitTextFieldAttrs(textField);
         visitAttribute("description-field-name", 
textField.getDescriptionFieldName());
         visitAttribute("fade-background", textField.getFadeBackground());
@@ -262,63 +261,63 @@ public class XmlWidgetFieldVisitor extends 
XmlAbstractWidgetVisitor implements M
         visitAttribute("width", textField.getLookupWidth());
         visitAttribute("show-description", textField.getShowDescription());
         visitAttribute("target-parameter", textField.getTargetParameter());
-        writer.append(">");
+        getWriter().append(">");
         visitSubHyperlink(textField.getSubHyperlink());
-        writer.append("</lookup></field>");
+        getWriter().append("</lookup></field>");
     }
 
     @Override
     public void visit(PasswordField textField) throws Exception {
         visitModelField(textField.getModelFormField());
-        writer.append("<password");
+        getWriter().append("<password");
         visitTextFieldAttrs(textField);
-        writer.append(">");
+        getWriter().append(">");
         visitSubHyperlink(textField.getSubHyperlink());
-        writer.append("</password></field>");
+        getWriter().append("</password></field>");
     }
 
     @Override
     public void visit(RadioField radioField) throws Exception {
         visitModelField(radioField.getModelFormField());
-        writer.append("<radio");
+        getWriter().append("<radio");
         visitFieldInfoWithOptions(radioField);
-        writer.append("</radio></field>");
+        getWriter().append("</radio></field>");
     }
 
     @Override
     public void visit(RangeFindField textField) throws Exception {
         visitModelField(textField.getModelFormField());
-        writer.append("<range-find");
+        getWriter().append("<range-find");
         visitTextFieldAttrs(textField);
         visitAttribute("default-option-from", 
textField.getDefaultOptionFrom());
         visitAttribute("default-option-thru", 
textField.getDefaultOptionThru());
-        writer.append(">");
+        getWriter().append(">");
         visitSubHyperlink(textField.getSubHyperlink());
-        writer.append("</range-find></field>");
+        getWriter().append("</range-find></field>");
     }
 
     @Override
     public void visit(ResetField resetField) throws Exception {
         visitModelField(resetField.getModelFormField());
-        writer.append("<reset/></field>");
+        getWriter().append("<reset/></field>");
     }
 
     @Override
     public void visit(SubmitField submitField) throws Exception {
         visitModelField(submitField.getModelFormField());
-        writer.append("<submit");
+        getWriter().append("<submit");
         visitAttribute("background-submit-refresh-target", 
submitField.getBackgroundSubmitRefreshTargetExdr());
         visitAttribute("button-type", submitField.getButtonType());
         visitAttribute("confirmation-message", 
submitField.getConfirmationMsgExdr());
         visitAttribute("image-location", submitField.getImageLocation());
         visitAttribute("request-confirmation", 
submitField.getRequestConfirmation());
-        writer.append("/></field>");
+        getWriter().append("/></field>");
     }
 
     @Override
     public void visit(TextareaField textareaField) throws Exception {
         visitModelField(textareaField.getModelFormField());
-        writer.append("<textarea");
+        getWriter().append("<textarea");
         visitAttribute("cols", textareaField.getCols());
         visitAttribute("default-value", textareaField.getDefaultValue());
         visitAttribute("read-only", textareaField.isReadOnly());
@@ -326,30 +325,30 @@ public class XmlWidgetFieldVisitor extends 
XmlAbstractWidgetVisitor implements M
         visitAttribute("visual-editor-buttons", 
textareaField.getVisualEditorButtons());
         visitAttribute("visual-editor-enable", 
textareaField.getVisualEditorEnable());
         visitAttribute("placeholder", textareaField.getPlaceholder());
-        writer.append("/></field>");
+        getWriter().append("/></field>");
     }
 
     @Override
     public void visit(TextField textField) throws Exception {
         visitModelField(textField.getModelFormField());
-        writer.append("<text");
+        getWriter().append("<text");
         visitTextFieldAttrs(textField);
-        writer.append(">");
+        getWriter().append(">");
         visitSubHyperlink(textField.getSubHyperlink());
-        writer.append("</text></field>");
+        getWriter().append("</text></field>");
     }
 
     @Override
     public void visit(TextFindField textField) throws Exception {
         visitModelField(textField.getModelFormField());
-        writer.append("<text-find");
+        getWriter().append("<text-find");
         visitTextFieldAttrs(textField);
         visitAttribute("default-option", textField.getDefaultOption());
         visitAttribute("hide-options", textField.getHideOptions());
         visitAttribute("ignore-case", textField.getIgnoreCase());
-        writer.append(">");
+        getWriter().append(">");
         visitSubHyperlink(textField.getSubHyperlink());
-        writer.append("</text-find></field>");
+        getWriter().append("</text-find></field>");
     }
 
     private void visitTextFieldAttrs(TextField field) throws Exception {
@@ -410,13 +409,13 @@ public class XmlWidgetFieldVisitor extends 
XmlAbstractWidgetVisitor implements M
 
     private void visitFieldInfoWithOptions(FieldInfoWithOptions fieldInfo) 
throws Exception {
         visitAttribute("no-current-selected-key", 
fieldInfo.getNoCurrentSelectedKey());
-        writer.append(">");
+        getWriter().append(">");
         // TODO: Options
     }
 
     private void visitModelField(ModelFormField modelField) throws Exception {
         if (modelField != null) {
-            writer.append("<field");
+            getWriter().append("<field");
             visitAttribute("name", modelField.getName());
             visitAttribute("action", modelField.getAction());
             visitAttribute("attribute-name", modelField.getAttributeName());
@@ -449,7 +448,7 @@ public class XmlWidgetFieldVisitor extends 
XmlAbstractWidgetVisitor implements M
             visitAttribute("use-when", modelField.getUseWhen());
             visitAttribute("widget-area-style", 
modelField.getWidgetAreaStyle());
             visitAttribute("widget-style", modelField.getWidgetStyle());
-            writer.append(">");
+            getWriter().append(">");
             visitUpdateAreas(modelField.getOnChangeUpdateAreas());
             visitUpdateAreas(modelField.getOnClickUpdateAreas());
         }
@@ -457,26 +456,26 @@ public class XmlWidgetFieldVisitor extends 
XmlAbstractWidgetVisitor implements M
 
     private void visitSubHyperlink(SubHyperlink hyperlink) throws Exception {
         if (hyperlink != null) {
-            writer.append("<sub-hyperlink");
+            getWriter().append("<sub-hyperlink");
             Link link = hyperlink.getLink();
             visitLinkAttributes(link);
             visitAttribute("description", hyperlink.getDescription());
             visitAttribute("use-when", hyperlink.getUseWhen());
             if (link.getImage() != null || link.getAutoEntityParameters() != 
null || link.getAutoServiceParameters() != null) {
-                writer.append(">");
+                getWriter().append(">");
                 visitImage(link.getImage());
                 visitAutoEntityParameters(link.getAutoEntityParameters());
                 visitAutoServiceParameters(link.getAutoServiceParameters());
-                writer.append("</sub-hyperlink>");
+                getWriter().append("</sub-hyperlink>");
             } else {
-                writer.append("/>");
+                getWriter().append("/>");
             }
         }
     }
 
     private void visitAutoComplete(AutoComplete autoComplete) throws Exception 
{
         if (autoComplete != null) {
-            writer.append("<auto-complete");
+            getWriter().append("<auto-complete");
             visitAttribute("auto-select", autoComplete.getAutoSelect());
             visitAttribute("frequency", autoComplete.getFrequency());
             visitAttribute("min-chars", autoComplete.getMinChars());
@@ -485,13 +484,13 @@ public class XmlWidgetFieldVisitor extends 
XmlAbstractWidgetVisitor implements M
             visitAttribute("partial-chars", autoComplete.getPartialChars());
             visitAttribute("ignore-case", autoComplete.getIgnoreCase());
             visitAttribute("full-search", autoComplete.getFullSearch());
-            writer.append("/>");
+            getWriter().append("/>");
         }
     }
 
     private void visitInPlaceEditor(InPlaceEditor editor) throws Exception {
         if (editor != null) {
-            writer.append("<in-place-editor");
+            getWriter().append("<in-place-editor");
             visitAttribute("cancel-control", editor.getCancelControl());
             visitAttribute("cancel-text", editor.getCancelText());
             visitAttribute("click-to-edit-text", editor.getClickToEditText());
@@ -515,28 +514,28 @@ public class XmlWidgetFieldVisitor extends 
XmlAbstractWidgetVisitor implements M
             visitAttribute("update-after-request-call", 
editor.getUpdateAfterRequestCall());
             visitAttribute("url", editor.getUrl());
             if (!editor.getCols().isEmpty() || !editor.getRows().isEmpty()) {
-                writer.append(">");
-                writer.append("<simple-editor");
+                getWriter().append(">");
+                getWriter().append("<simple-editor");
                 visitAttribute("cols", editor.getCols());
                 visitAttribute("rows", editor.getRows());
-                writer.append("/></in-place-editor>");
+                getWriter().append("/></in-place-editor>");
             } else {
-                writer.append("/>");
+                getWriter().append("/>");
             }
         }
     }
 
     private void visitUpdateAreas(Collection<ModelForm.UpdateArea> 
updateAreas) throws Exception {
         for (ModelForm.UpdateArea updateArea : updateAreas) {
-            writer.append("<on-field-event-update-area");
+            getWriter().append("<on-field-event-update-area");
             visitAttribute("event-type", updateArea.getEventType());
             visitAttribute("area-id", updateArea.getAreaId());
             visitAttribute("area-target", updateArea.getAreaTarget());
-            writer.append(">");
+            getWriter().append(">");
             visitAutoEntityParameters(updateArea.getAutoEntityParameters());
             visitAutoServiceParameters(updateArea.getAutoServiceParameters());
             visitParameters(updateArea.getParameterList());
-            writer.append("</on-field-event-update-area>");
+            getWriter().append("</on-field-event-update-area>");
         }
     }
 }
diff --git 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetVisitor.java
 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetVisitor.java
index 366d8222fe..123eed80d2 100644
--- 
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetVisitor.java
+++ 
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetVisitor.java
@@ -58,7 +58,6 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
     private final ModelFieldVisitor fieldVisitor;
     private final ModelActionVisitor actionVisitor;
     private final ModelConditionVisitor conditionVisitor;
-    private final Appendable writer = getWriter();
 
     public XmlWidgetVisitor(Appendable writer) {
         super(writer);
@@ -69,42 +68,42 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
 
     @Override
     public void visit(Column column) throws Exception {
-        writer.append("<column");
+        getWriter().append("<column");
         visitModelWidget(column);
         visitAttribute("id", column.getIdExdr());
         visitAttribute("style", column.getStyleExdr());
-        writer.append(">");
+        getWriter().append(">");
         visitSubWidgets(column.getSubWidgets());
-        writer.append("</column>");
+        getWriter().append("</column>");
     }
 
     @Override
     public void visit(ColumnContainer columnContainer) throws Exception {
-        writer.append("<column-container");
+        getWriter().append("<column-container");
         visitModelWidget(columnContainer);
         visitAttribute("id", columnContainer.getIdExdr());
         visitAttribute("style", columnContainer.getStyleExdr());
-        writer.append(">");
+        getWriter().append(">");
         visitSubWidgets(columnContainer.getColumns());
-        writer.append("</column-container>");
+        getWriter().append("</column-container>");
     }
 
     @Override
     public void visit(Container container) throws Exception {
-        writer.append("<container");
+        getWriter().append("<container");
         visitModelWidget(container);
         visitAttribute("auto-update-interval", 
container.getAutoUpdateInterval());
         visitAttribute("auto-update-target", 
container.getAutoUpdateTargetExdr());
         visitAttribute("id", container.getIdExdr());
         visitAttribute("style", container.getStyleExdr());
-        writer.append(">");
+        getWriter().append(">");
         visitSubWidgets(container.getSubWidgets());
-        writer.append("</container>");
+        getWriter().append("</container>");
     }
 
     @Override
     public void visit(Content content) throws Exception {
-        writer.append("<content");
+        getWriter().append("<content");
         visitModelWidget(content);
         visitAttribute("border", content.getBorder());
         visitAttribute("content-id", content.getContentId());
@@ -115,79 +114,79 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
         visitAttribute("height", content.getHeight());
         visitAttribute("width", content.getWidth());
         visitAttribute("xml-escape", content.xmlEscape());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(DecoratorScreen decoratorScreen) throws Exception {
-        writer.append("<decorator-screen");
+        getWriter().append("<decorator-screen");
         visitModelWidget(decoratorScreen);
         visitAttribute("location", decoratorScreen.getLocationExdr());
-        writer.append(">");
+        getWriter().append(">");
         visitSubWidgets(decoratorScreen.getSectionMap().values());
-        writer.append("</decorator-screen>");
+        getWriter().append("</decorator-screen>");
     }
 
     @Override
     public void visit(DecoratorSection decoratorSection) throws Exception {
-        writer.append("<decorator-section");
+        getWriter().append("<decorator-section");
         visitModelWidget(decoratorSection);
-        writer.append(">");
+        getWriter().append(">");
         visitSubWidgets(decoratorSection.getSubWidgets());
-        writer.append("</decorator-screen>");
+        getWriter().append("</decorator-screen>");
     }
 
     @Override
     public void visit(DecoratorSectionInclude decoratorSectionInclude) throws 
Exception {
-        writer.append("<decorator-section-include");
+        getWriter().append("<decorator-section-include");
         visitModelWidget(decoratorSectionInclude);
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(Form form) throws Exception {
-        writer.append("<include-form");
+        getWriter().append("<include-form");
         visitModelWidget(form);
         visitAttribute("location", form.getLocationExdr());
         visitAttribute("share-scope", form.getShareScopeExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(HorizontalSeparator horizontalSeparator) throws 
Exception {
-        writer.append("<horizontal-separator");
+        getWriter().append("<horizontal-separator");
         visitModelWidget(horizontalSeparator);
         visitAttribute("id", horizontalSeparator.getIdExdr());
         visitAttribute("style", horizontalSeparator.getStyleExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(HtmlTemplate htmlTemplate) throws Exception {
-        writer.append("<html-template");
+        getWriter().append("<html-template");
         visitModelWidget(htmlTemplate);
         visitAttribute("location", htmlTemplate.getLocationExdr());
         visitAttribute("multi-block", htmlTemplate.isMultiBlock());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(HtmlTemplateDecorator htmlTemplateDecorator) throws 
Exception {
-        writer.append("<html-template-decorator");
+        getWriter().append("<html-template-decorator");
         visitModelWidget(htmlTemplateDecorator);
         visitAttribute("location", htmlTemplateDecorator.getLocationExdr());
-        writer.append(">");
+        getWriter().append(">");
         visitSubWidgets(htmlTemplateDecorator.getSectionMap().values());
-        writer.append("</html-template-decorator>");
+        getWriter().append("</html-template-decorator>");
     }
 
     @Override
     public void visit(HtmlTemplateDecoratorSection 
htmlTemplateDecoratorSection) throws Exception {
-        writer.append("<html-template-decorator-section");
+        getWriter().append("<html-template-decorator-section");
         visitModelWidget(htmlTemplateDecoratorSection);
-        writer.append(">");
+        getWriter().append(">");
         visitSubWidgets(htmlTemplateDecoratorSection.getSubWidgets());
-        writer.append("</html-template-decorator-section>");
+        getWriter().append("</html-template-decorator-section>");
     }
 
     @Override
@@ -197,16 +196,16 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
 
     @Override
     public void visit(IncludeScreen includeScreen) throws Exception {
-        writer.append("<include-screen");
+        getWriter().append("<include-screen");
         visitModelWidget(includeScreen);
         visitAttribute("location", includeScreen.getLocationExdr());
         visitAttribute("share-scope", includeScreen.getShareScopeExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(IterateSectionWidget iterateSectionWidget) throws 
Exception {
-        writer.append("<iterate-section");
+        getWriter().append("<iterate-section");
         visitModelWidget(iterateSectionWidget);
         visitAttribute("entry", iterateSectionWidget.getEntryNameExdr());
         visitAttribute("key", iterateSectionWidget.getKeyNameExdr());
@@ -214,56 +213,56 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
         visitAttribute("paginate", iterateSectionWidget.getPaginate());
         visitAttribute("paginate-target", 
iterateSectionWidget.getPaginateTarget());
         visitAttribute("view-size", iterateSectionWidget.getViewSize());
-        writer.append(">");
+        getWriter().append(">");
         visitSubWidgets(iterateSectionWidget.getSectionList());
-        writer.append("</iterate-section>");
+        getWriter().append("</iterate-section>");
     }
 
     @Override
     public void visit(Label label) throws Exception {
-        writer.append("<label");
+        getWriter().append("<label");
         visitModelWidget(label);
         visitAttribute("id", label.getIdExdr());
         visitAttribute("style", label.getStyleExdr());
-        writer.append(">");
-        writer.append(label.getTextExdr().getOriginal());
-        writer.append("</label>");
+        getWriter().append(">");
+        getWriter().append(label.getTextExdr().getOriginal());
+        getWriter().append("</label>");
     }
 
     @Override
     public void visit(Menu menu) throws Exception {
-        writer.append("<include-menu");
+        getWriter().append("<include-menu");
         visitModelWidget(menu);
         visitAttribute("location", menu.getLocationExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(ModelSingleForm modelForm) throws Exception {
-        writer.append("<form");
+        getWriter().append("<form");
         visitModelForm(modelForm);
-        writer.append("</form>");
+        getWriter().append("</form>");
     }
 
     @Override
     public void visit(ModelGrid modelGrid) throws Exception {
-        writer.append("<grid");
+        getWriter().append("<grid");
         visitModelForm(modelGrid);
-        writer.append("</grid>");
+        getWriter().append("</grid>");
     }
 
     @Override
     public void visit(Grid grid) throws Exception {
-        writer.append("<include-grid");
+        getWriter().append("<include-grid");
         visitModelWidget(grid);
         visitAttribute("location", grid.getLocationExdr());
         visitAttribute("share-scope", grid.getShareScopeExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
     public void visit(ModelMenu modelMenu) throws Exception {
-        writer.append("<menu");
+        getWriter().append("<menu");
         visitModelWidget(modelMenu);
         if (modelMenu.getParentMenu() != null) {
             visitAttribute("extends", modelMenu.getParentMenu().getName());
@@ -294,21 +293,21 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
         visitAttribute("default-align-style", 
modelMenu.getDefaultAlignStyle());
         visitAttribute("fill-style", modelMenu.getFillStyle());
         visitAttribute("extra-index", modelMenu.getExtraIndex());
-        writer.append(">");
+        getWriter().append(">");
         if (!modelMenu.getActions().isEmpty()) {
-            writer.append("<actions>");
+            getWriter().append("<actions>");
             visitActions(modelMenu.getActions());
-            writer.append("</actions>");
+            getWriter().append("</actions>");
         }
         for (ModelMenuItem menuItem : modelMenu.getMenuItemList()) {
             menuItem.accept(this);
         }
-        writer.append("</menu>");
+        getWriter().append("</menu>");
     }
 
     @Override
     public void visit(ModelMenuItem modelMenuItem) throws Exception {
-        writer.append("<menu-item");
+        getWriter().append("<menu-item");
         visitModelWidget(modelMenuItem);
         visitAttribute("entity-name", modelMenuItem.getEntityName());
         visitAttribute("title", modelMenuItem.getTitle());
@@ -327,14 +326,14 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
         visitAttribute("associated-content-id", 
modelMenuItem.getAssociatedContentId());
         visitAttribute("cell-width", modelMenuItem.getCellWidth());
         visitAttribute("sub-menu", modelMenuItem.getSubMenu());
-        writer.append(">");
+        getWriter().append(">");
         if (modelMenuItem.getCondition() != null) {
             
modelMenuItem.getCondition().getCondition().accept(conditionVisitor);
         }
         if (!modelMenuItem.getActions().isEmpty()) {
-            writer.append("<actions>");
+            getWriter().append("<actions>");
             visitActions(modelMenuItem.getActions());
-            writer.append("</actions>");
+            getWriter().append("</actions>");
         }
         if (modelMenuItem.getLink() != null) {
             visitLink(modelMenuItem.getLink().getLink());
@@ -342,12 +341,12 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
         for (ModelMenuItem menuItem : modelMenuItem.getMenuItemList()) {
             menuItem.accept(this);
         }
-        writer.append("</menu-item>");
+        getWriter().append("</menu-item>");
     }
 
     @Override
     public void visit(ModelNode modelNode) throws Exception {
-        writer.append("<node");
+        getWriter().append("<node");
         visitModelWidget(modelNode);
         visitAttribute("expand-collapse-style", 
modelNode.getExpandCollapseStyle());
         visitAttribute("wrap-style", modelNode.getWrapStyleExdr());
@@ -355,35 +354,35 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
         visitAttribute("entry-name", modelNode.getEntryName());
         visitAttribute("entity-name", modelNode.getEntityName());
         visitAttribute("join-field-name", modelNode.getPkName());
-        writer.append(">");
+        getWriter().append(">");
         if (modelNode.getCondition() != null) {
             modelNode.getCondition().getCondition().accept(conditionVisitor);
         }
         if (!modelNode.getActions().isEmpty()) {
-            writer.append("<actions>");
+            getWriter().append("<actions>");
             visitActions(modelNode.getActions());
-            writer.append("</actions>");
+            getWriter().append("</actions>");
         }
         if (!modelNode.getScreenNameExdr().isEmpty()) {
-            writer.append("<include-screen");
+            getWriter().append("<include-screen");
             visitAttribute("name", modelNode.getScreenNameExdr());
             visitAttribute("location", modelNode.getScreenLocationExdr());
             visitAttribute("share-scope", modelNode.getShareScope());
             visitAttribute("name", modelNode.getScreenNameExdr());
-            writer.append("/>");
+            getWriter().append("/>");
         }
         if (modelNode.getLabel() != null) {
             ModelNode.Label label = modelNode.getLabel();
-            writer.append("<label");
+            getWriter().append("<label");
             visitAttribute("id", label.getIdExdr());
             visitAttribute("style", label.getStyleExdr());
-            writer.append(">");
-            writer.append(label.getTextExdr().getOriginal());
-            writer.append("</label>");
+            getWriter().append(">");
+            getWriter().append(label.getTextExdr().getOriginal());
+            getWriter().append("</label>");
         }
         if (modelNode.getLink() != null) {
             ModelNode.Link link = modelNode.getLink();
-            writer.append("<link");
+            getWriter().append("<link");
             visitAttribute("encode", link.getEncode());
             visitAttribute("full-path", link.getFullPath());
             visitAttribute("id", link.getIdExdr());
@@ -396,45 +395,45 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
             visitAttribute("text", link.getTextExdr());
             visitAttribute("url-mode", link.getUrlMode());
             if (!link.getParameterList().isEmpty()) {
-                writer.append(">");
+                getWriter().append(">");
                 visitParameters(link.getParameterList());
-                writer.append("</link>");
+                getWriter().append("</link>");
             } else {
-                writer.append("/>");
+                getWriter().append("/>");
             }
         }
-        writer.append("</node>");
+        getWriter().append("</node>");
     }
 
     @Override
     public void visit(ModelScreen modelScreen) throws Exception {
-        writer.append("<screen");
+        getWriter().append("<screen");
         visitModelWidget(modelScreen);
         visitAttribute("transaction-timeout", 
modelScreen.getTransactionTimeout());
         visitAttribute("use-transaction", modelScreen.getUseTransaction());
         visitAttribute("use-cache", modelScreen.getUseCache());
-        writer.append(">");
+        getWriter().append(">");
         modelScreen.getSection().accept(this);
-        writer.append("</screen>");
+        getWriter().append("</screen>");
     }
 
     @Override
     public void visit(ModelSubNode modelSubNode) throws Exception {
-        writer.append("<sub-node");
+        getWriter().append("<sub-node");
         visitModelWidget(modelSubNode);
         visitAttribute("node-name", modelSubNode.getNodeNameExdr());
-        writer.append(">");
+        getWriter().append(">");
         if (!modelSubNode.getActions().isEmpty()) {
-            writer.append("<actions>");
+            getWriter().append("<actions>");
             visitActions(modelSubNode.getActions());
-            writer.append("</actions>");
+            getWriter().append("</actions>");
         }
-        writer.append("</sub-node>");
+        getWriter().append("</sub-node>");
     }
 
     @Override
     public void visit(ModelTree modelTree) throws Exception {
-        writer.append("<tree");
+        getWriter().append("<tree");
         visitModelWidget(modelTree);
         visitAttribute("root-node-name", modelTree.getRootNodeName());
         visitAttribute("default-render-style", 
modelTree.getDefaultRenderStyle());
@@ -446,30 +445,30 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
         visitAttribute("entity-name", modelTree.getDefaultEntityName());
         visitAttribute("open-depth", modelTree.getOpenDepth());
         visitAttribute("post-trail-open-depth", 
modelTree.getPostTrailOpenDepth());
-        writer.append(">");
+        getWriter().append(">");
         visitSubWidgets(modelTree.getNodeMap().values());
-        writer.append("</tree>");
+        getWriter().append("</tree>");
     }
 
     @Override
     public void visit(PlatformSpecific platformSpecific) throws Exception {
-        writer.append("<platform-specific>");
+        getWriter().append("<platform-specific>");
         for (Map.Entry<String, ModelScreenWidget> entry : 
platformSpecific.getSubWidgets().entrySet()) {
-            writer.append("<").append(entry.getKey()).append(">");
+            getWriter().append("<").append(entry.getKey()).append(">");
             entry.getValue().accept(this);
-            writer.append("</").append(entry.getKey()).append(">");
+            getWriter().append("</").append(entry.getKey()).append(">");
         }
-        writer.append("</platform-specific>");
+        getWriter().append("</platform-specific>");
     }
 
     @Override
     public void visit(PortalPage portalPage) throws Exception {
-        writer.append("<include-portal-page");
+        getWriter().append("<include-portal-page");
         visitModelWidget(portalPage);
         visitAttribute("id", portalPage.getIdExdr());
         visitAttribute("conf-mode", portalPage.getConfModeExdr());
         visitAttribute("use-private", portalPage.getUsePrivate());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     @Override
@@ -479,7 +478,7 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
 
     @Override
     public void visit(Screenlet screenlet) throws Exception {
-        writer.append("<screenlet");
+        getWriter().append("<screenlet");
         visitModelWidget(screenlet);
         visitAttribute("id", screenlet.getIdExdr());
         visitAttribute("collapsible", screenlet.getCollapsible());
@@ -487,9 +486,9 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
         visitAttribute("save-collapsed", screenlet.getSaveCollapsed());
         visitAttribute("padded", screenlet.getPadded());
         visitAttribute("title", screenlet.getTitleExdr());
-        writer.append(">");
+        getWriter().append(">");
         visitSubWidgets(screenlet.getSubWidgets());
-        writer.append("</screenlet>");
+        getWriter().append("</screenlet>");
     }
 
     @Override
@@ -499,39 +498,39 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
 
     @Override
     public void visit(Section section) throws Exception {
-        writer.append("<section");
+        getWriter().append("<section");
         visitModelWidget(section);
-        writer.append(">");
+        getWriter().append(">");
         if (section.getCondition() != null) {
-            writer.append("<condition>");
+            getWriter().append("<condition>");
             section.getCondition().accept(conditionVisitor);
-            writer.append("</condition>");
+            getWriter().append("</condition>");
         }
         if (!section.getActions().isEmpty()) {
-            writer.append("<actions>");
+            getWriter().append("<actions>");
             visitActions(section.getActions());
-            writer.append("</actions>");
+            getWriter().append("</actions>");
         }
         if (!section.getSubWidgets().isEmpty()) {
-            writer.append("<widgets>");
+            getWriter().append("<widgets>");
             visitSubWidgets(section.getSubWidgets());
-            writer.append("</widgets>");
+            getWriter().append("</widgets>");
         }
         if (!section.getFailWidgets().isEmpty()) {
-            writer.append("<fail-widgets>");
+            getWriter().append("<fail-widgets>");
             visitSubWidgets(section.getFailWidgets());
-            writer.append("</fail-widgets>");
+            getWriter().append("</fail-widgets>");
         }
-        writer.append("</section>");
+        getWriter().append("</section>");
     }
 
     @Override
     public void visit(Tree tree) throws Exception {
-        writer.append("<include-tree");
+        getWriter().append("<include-tree");
         visitModelWidget(tree);
         visitAttribute("location", tree.getLocationExdr());
         visitAttribute("share-scope", tree.getShareScopeExdr());
-        writer.append("/>");
+        getWriter().append("/>");
     }
 
     private void visitActions(Collection<? extends ModelAction> actions) 
throws Exception {
@@ -603,44 +602,44 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
         visitAttribute("use-row-submit", modelForm.getUseRowSubmit());
         visitAttribute("row-count", modelForm.getRowCount());
         visitAttribute("focus-field-name", modelForm.getFocusFieldName());
-        writer.append(">");
+        getWriter().append(">");
         if (!modelForm.getActions().isEmpty()) {
-            writer.append("<actions>");
+            getWriter().append("<actions>");
             visitActions(modelForm.getActions());
-            writer.append("</actions>");
+            getWriter().append("</actions>");
         }
         if (!modelForm.getRowActions().isEmpty()) {
-            writer.append("<row-actions>");
+            getWriter().append("<row-actions>");
             visitActions(modelForm.getRowActions());
-            writer.append("</row-actions>");
+            getWriter().append("</row-actions>");
         }
         for (ModelForm.AltRowStyle rowStyle : modelForm.getAltRowStyles()) {
-            writer.append("<alt-row-style");
+            getWriter().append("<alt-row-style");
             visitAttribute("use-when", rowStyle.getUseWhen());
             visitAttribute("style", rowStyle.getStyle());
-            writer.append("/>");
+            getWriter().append("/>");
         }
         for (ModelForm.AltTarget target : modelForm.getAltTargets()) {
-            writer.append("<alt-target");
+            getWriter().append("<alt-target");
             visitAttribute("use-when", target.getUseWhen());
             visitAttribute("target", target.getTargetExdr());
-            writer.append("/>");
+            getWriter().append("/>");
         }
         for (ModelForm.AutoFieldsService service : 
modelForm.getAutoFieldsServices()) {
-            writer.append("<auto-fields-service");
+            getWriter().append("<auto-fields-service");
             visitAttribute("service-name", service.getServiceName());
             visitAttribute("map-name", service.getMapName());
             visitAttribute("default-field-type", 
service.getDefaultFieldType());
             visitAttribute("default-position", service.getDefaultPosition());
-            writer.append("/>");
+            getWriter().append("/>");
         }
         for (ModelForm.AutoFieldsEntity entity : 
modelForm.getAutoFieldsEntities()) {
-            writer.append("<auto-fields-entity");
+            getWriter().append("<auto-fields-entity");
             visitAttribute("entity-name", entity.getEntityName());
             visitAttribute("map-name", entity.getMapName());
             visitAttribute("default-field-type", entity.getDefaultFieldType());
             visitAttribute("default-position", entity.getDefaultPosition());
-            writer.append("/>");
+            getWriter().append("/>");
         }
         for (ModelFormField field : modelForm.getFieldList()) {
             field.getFieldInfo().accept(fieldVisitor);
@@ -658,15 +657,15 @@ public class XmlWidgetVisitor extends 
XmlAbstractWidgetVisitor implements ModelW
 
     private void visitUpdateAreas(Collection<ModelForm.UpdateArea> 
updateAreas) throws Exception {
         for (ModelForm.UpdateArea updateArea : updateAreas) {
-            writer.append("<on-event-update-area");
+            getWriter().append("<on-event-update-area");
             visitAttribute("event-type", updateArea.getEventType());
             visitAttribute("area-id", updateArea.getAreaId());
             visitAttribute("area-target", updateArea.getAreaTarget());
-            writer.append(">");
+            getWriter().append(">");
             visitAutoEntityParameters(updateArea.getAutoEntityParameters());
             visitAutoServiceParameters(updateArea.getAutoServiceParameters());
             visitParameters(updateArea.getParameterList());
-            writer.append("</on-event-update-area>");
+            getWriter().append("</on-event-update-area>");
         }
     }
 }

Reply via email to