You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by do...@apache.org on 2008/08/03 07:10:31 UTC

svn commit: r682102 - in /ofbiz/trunk/framework/widget/src/org/ofbiz/widget: form/ menu/ screen/ tree/

Author: doogie
Date: Sat Aug  2 22:10:30 2008
New Revision: 682102

URL: http://svn.apache.org/viewvc?rev=682102&view=rev
Log:
More generics work; a bit of fallout from the recent
FlexibleMapAccessor generification.  Plus a few additional changes.

Modified:
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuAction.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuCondition.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenCondition.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeAction.java
    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeCondition.java

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=682102&r1=682101&r2=682102&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Sat Aug  2 22:10:30 2008
@@ -87,7 +87,7 @@
     protected String tooltip;
     protected String listName;
     protected String listEntryName;
-    protected FlexibleMapAccessor defaultMapName;
+    protected FlexibleMapAccessor<Map<String, ? extends Object>> defaultMapName;
     protected String defaultEntityName;
     protected String defaultServiceName;
     protected String formTitleAreaStyle;
@@ -1785,8 +1785,8 @@
         return this.defaultMapName.getOriginalName();
     }
 
-    public Map getDefaultMap(Map<String, Object> context) {
-        return (Map) this.defaultMapName.get(context);
+    public Map<String, ? extends Object> getDefaultMap(Map<String, ? extends Object> context) {
+        return this.defaultMapName.get(context);
     }
     
     /**
@@ -2040,7 +2040,7 @@
      * @param string
      */
     public void setDefaultMapName(String string) {
-        this.defaultMapName = new FlexibleMapAccessor(string);
+        this.defaultMapName = new FlexibleMapAccessor<Map<String, ? extends Object>>(string);
     }
 
     /**

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java?rev=682102&r1=682101&r2=682102&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java Sat Aug  2 22:10:30 2008
@@ -34,6 +34,7 @@
 import org.ofbiz.base.util.GeneralException;
 import org.ofbiz.base.util.GroovyUtil;
 import org.ofbiz.base.util.ObjectType;
+import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.UtilXml;
@@ -67,10 +68,7 @@
     public static List<ModelFormAction> readSubActions(ModelForm modelForm, Element parentElement) {
         List<ModelFormAction> actions = new LinkedList<ModelFormAction>();
         
-        List actionElementList = UtilXml.childElementList(parentElement);
-        Iterator actionElementIter = actionElementList.iterator();
-        while (actionElementIter.hasNext()) {
-            Element actionElement = (Element) actionElementIter.next();
+        for (Element actionElement: UtilXml.childElementList(parentElement)) {
             if ("set".equals(actionElement.getNodeName())) {
                 actions.add(new SetField(modelForm, actionElement));
             } else if ("property-map".equals(actionElement.getNodeName())) {
@@ -95,20 +93,18 @@
         return actions;
     }
     
-    public static void runSubActions(List actions, Map<String, Object> context) {
+    public static void runSubActions(List<ModelFormAction> actions, Map<String, Object> context) {
         if (actions == null) return;
         
-        Iterator actionIter = actions.iterator();
-        while (actionIter.hasNext()) {
-            ModelFormAction action = (ModelFormAction) actionIter.next();
+        for (ModelFormAction action: actions) {
             if (Debug.verboseOn()) Debug.logVerbose("Running screen action " + action.getClass().getName(), module);
             action.runAction(context);
         }
     }
     
     public static class SetField extends ModelFormAction {
-        protected FlexibleMapAccessor field;
-        protected FlexibleMapAccessor fromField;
+        protected FlexibleMapAccessor<Object> field;
+        protected FlexibleMapAccessor<String> fromField;
         protected FlexibleStringExpander valueExdr;
         protected FlexibleStringExpander defaultExdr;
         protected FlexibleStringExpander globalExdr;
@@ -116,8 +112,8 @@
         
         public SetField(ModelForm modelForm, Element setElement) {
             super (modelForm, setElement);
-            this.field = new FlexibleMapAccessor(setElement.getAttribute("field"));
-            this.fromField = UtilValidate.isNotEmpty(setElement.getAttribute("from-field")) ? new FlexibleMapAccessor(setElement.getAttribute("from-field")) : null;
+            this.field = new FlexibleMapAccessor<Object>(setElement.getAttribute("field"));
+            this.fromField = UtilValidate.isNotEmpty(setElement.getAttribute("from-field")) ? new FlexibleMapAccessor<String>(setElement.getAttribute("from-field")) : null;
             this.valueExdr = UtilValidate.isNotEmpty(setElement.getAttribute("value")) ? new FlexibleStringExpander(setElement.getAttribute("value")) : null;
             this.defaultExdr = new FlexibleStringExpander(setElement.getAttribute("default-value"));
             this.globalExdr = new FlexibleStringExpander(setElement.getAttribute("global"));
@@ -159,14 +155,14 @@
             this.field.put(context, newValue);
             
             if (global) {
-                Map globalCtx = (Map) context.get("globalContext");
+                Map<String, Object> globalCtx = UtilGenerics.checkMap(context.get("globalContext"));
                 if (globalCtx != null) {
                     this.field.put(globalCtx, newValue);
                 }
             }
             
             // this is a hack for backward compatibility with the JPublish page object
-            Map page = (Map) context.get("page");
+            Map<String, Object> page = UtilGenerics.checkMap(context.get("page"));
             if (page != null) {
                 this.field.put(page, newValue);
             }
@@ -175,13 +171,13 @@
     
     public static class PropertyMap extends ModelFormAction {
         protected FlexibleStringExpander resourceExdr;
-        protected FlexibleMapAccessor mapNameAcsr;
+        protected FlexibleMapAccessor<Map<String, Object>> mapNameAcsr;
         protected FlexibleStringExpander globalExdr;
         
         public PropertyMap(ModelForm modelForm, Element setElement) {
             super (modelForm, setElement);
             this.resourceExdr = new FlexibleStringExpander(setElement.getAttribute("resource"));
-            this.mapNameAcsr = new FlexibleMapAccessor(setElement.getAttribute("map-name"));
+            this.mapNameAcsr = new FlexibleMapAccessor<Map<String, Object>>(setElement.getAttribute("map-name"));
             this.globalExdr = new FlexibleStringExpander(setElement.getAttribute("global"));
         }
         
@@ -192,11 +188,11 @@
 
             Locale locale = (Locale) context.get("locale");
             String resource = this.resourceExdr.expandString(context, locale);
-            Map propertyMap = UtilProperties.getResourceBundleMap(resource, locale);
+            Map<String, Object> propertyMap = UtilProperties.getResourceBundleMap(resource, locale);
             this.mapNameAcsr.put(context, propertyMap);
 
             if (global) {
-                Map globalCtx = (Map) context.get("globalContext");
+                Map<String, Object> globalCtx = UtilGenerics.checkMap(context.get("globalContext"));
                 if (globalCtx != null) {
                     this.mapNameAcsr.put(globalCtx, propertyMap);
                 }
@@ -208,20 +204,20 @@
         
         protected FlexibleStringExpander resourceExdr;
         protected FlexibleStringExpander propertyExdr;
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<String> fieldAcsr;
         protected FlexibleStringExpander defaultExdr;
         protected boolean noLocale;
-        protected FlexibleMapAccessor argListAcsr;
+        protected FlexibleMapAccessor<List<Object>> argListAcsr;
         protected FlexibleStringExpander globalExdr;
 
         public PropertyToField(ModelForm modelForm, Element setElement) {
             super (modelForm, setElement);
             this.resourceExdr = new FlexibleStringExpander(setElement.getAttribute("resource"));
             this.propertyExdr = new FlexibleStringExpander(setElement.getAttribute("property"));
-            this.fieldAcsr = new FlexibleMapAccessor(setElement.getAttribute("field"));
+            this.fieldAcsr = new FlexibleMapAccessor<String>(setElement.getAttribute("field"));
             this.defaultExdr = new FlexibleStringExpander(setElement.getAttribute("default"));
             noLocale = "true".equals(setElement.getAttribute("no-locale"));
-            this.argListAcsr = new FlexibleMapAccessor(setElement.getAttribute("arg-list-name"));
+            this.argListAcsr = new FlexibleMapAccessor<List<Object>>(setElement.getAttribute("arg-list-name"));
             this.globalExdr = new FlexibleStringExpander(setElement.getAttribute("global"));
         }
         
@@ -250,7 +246,7 @@
             value = FlexibleStringExpander.expandString(value, context);
 
             if (!argListAcsr.isEmpty()) {
-                List argList = (List) argListAcsr.get(context);
+                List<Object> argList = argListAcsr.get(context);
                 if (argList != null && argList.size() > 0) {
                     value = MessageFormat.format(value, argList.toArray());
                 }
@@ -293,7 +289,7 @@
 
     public static class Service extends ModelFormAction {
         protected FlexibleStringExpander serviceNameExdr;
-        protected FlexibleMapAccessor resultMapNameAcsr;
+        protected FlexibleMapAccessor<Map<String, Object>> resultMapNameAcsr;
         protected FlexibleStringExpander autoFieldMapExdr;
         protected FlexibleStringExpander resultMapListNameExdr;
         protected Map<FlexibleMapAccessor, Object> fieldMap;
@@ -301,7 +297,7 @@
         public Service(ModelForm modelForm, Element serviceElement) {
             super (modelForm, serviceElement);
             this.serviceNameExdr = new FlexibleStringExpander(serviceElement.getAttribute("service-name"));
-            this.resultMapNameAcsr = UtilValidate.isNotEmpty(serviceElement.getAttribute("result-map-name")) ? new FlexibleMapAccessor(serviceElement.getAttribute("result-map-name")) : null;
+            this.resultMapNameAcsr = UtilValidate.isNotEmpty(serviceElement.getAttribute("result-map-name")) ? new FlexibleMapAccessor<Map<String, Object>>(serviceElement.getAttribute("result-map-name")) : null;
             this.autoFieldMapExdr = new FlexibleStringExpander(serviceElement.getAttribute("auto-field-map"));
             if (UtilValidate.isEmpty(serviceElement.getAttribute("result-map-list-name"))) {
                 if (UtilValidate.isEmpty(serviceElement.getAttribute("result-map-list-iterator-name"))) {

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java?rev=682102&r1=682101&r2=682102&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java Sat Aug  2 22:10:30 2008
@@ -32,6 +32,7 @@
 import java.util.TimeZone;
 
 import javolution.util.FastList;
+import javolution.util.FastMap;
 
 import org.ofbiz.base.util.BshUtil;
 import org.ofbiz.base.util.Debug;
@@ -76,10 +77,10 @@
     protected ModelForm modelForm;
 
     protected String name;
-    protected FlexibleMapAccessor mapAcsr;
+    protected FlexibleMapAccessor<Map<String, ? extends Object>> mapAcsr;
     protected String entityName;
     protected String serviceName;
-    protected FlexibleMapAccessor entryAcsr;
+    protected FlexibleMapAccessor<Object> entryAcsr;
     protected String parameterName;
     protected String fieldName;
     protected String attributeName;
@@ -695,7 +696,7 @@
             }
         } else {
             //Debug.logInfo("Getting entry, isError false so getting from Map in context for field " + this.getName() + " of form " + this.modelForm.getName(), module);
-            Map dataMap = this.getMap(context);
+            Map<String, ? extends Object> dataMap = this.getMap(context);
             boolean dataMapIsContext = false;
             if (dataMap == null) {
                 //Debug.logInfo("Getting entry, no Map found with name " + this.getMapName() + ", using context for field " + this.getName() + " of form " + this.modelForm.getName(), module);
@@ -723,7 +724,7 @@
             
             // this is a special case to fill in fields during a create by default from parameters passed in
             if (dataMapIsContext && retVal == null && !Boolean.FALSE.equals(useRequestParameters)) {
-                Map parameters = (Map) context.get("parameters");
+                Map<String, ? extends Object> parameters = UtilGenerics.checkMap(context.get("parameters"));
                 if (parameters != null) {
                     if (this.entryAcsr != null && !this.entryAcsr.isEmpty()) {
                         retVal = this.entryAcsr.get(parameters);
@@ -760,13 +761,13 @@
         }
     }
 
-    public Map getMap(Map<String, Object> context) {
+    public Map<String, ? extends Object> getMap(Map<String, ? extends Object> context) {
         if (this.mapAcsr == null || this.mapAcsr.isEmpty()) {
             //Debug.logInfo("Getting Map from default of the form because of no mapAcsr for field " + this.getName(), module);
             return this.modelForm.getDefaultMap(context);
         } else {
             //Debug.logInfo("Getting Map from mapAcsr for field " + this.getName(), module);
-            return (Map) mapAcsr.get(context);
+            return mapAcsr.get(context);
         }
     }
 
@@ -1217,7 +1218,7 @@
      * @param string
      */
     public void setEntryName(String string) {
-        entryAcsr = new FlexibleMapAccessor(string);
+        entryAcsr = new FlexibleMapAccessor<Object>(string);
     }
 
     /**
@@ -1231,7 +1232,7 @@
      * @param string
      */
     public void setMapName(String string) {
-        this.mapAcsr = new FlexibleMapAccessor(string);
+        this.mapAcsr = new FlexibleMapAccessor<Map<String, ? extends Object>>(string);
     }
 
     /**
@@ -1624,35 +1625,34 @@
     }
 
     public static class ListOptions extends OptionSource {
-        protected FlexibleMapAccessor listAcsr;
+        protected FlexibleMapAccessor<List<? extends Object>> listAcsr;
         protected String listEntryName;
-        protected FlexibleMapAccessor keyAcsr;
+        protected FlexibleMapAccessor<String> keyAcsr;
         protected FlexibleStringExpander description;
 
         public ListOptions(String listName, String listEntryName, String keyName, String description, FieldInfo fieldInfo) {
-            this.listAcsr = new FlexibleMapAccessor(listName);
+            this.listAcsr = new FlexibleMapAccessor<List<? extends Object>>(listName);
             this.listEntryName = listEntryName;
-            this.keyAcsr = new FlexibleMapAccessor(keyName);
+            this.keyAcsr = new FlexibleMapAccessor<String>(keyName);
             this.description = new FlexibleStringExpander(description);
             this.fieldInfo = fieldInfo;
         }
 
         public ListOptions(Element optionElement, FieldInfo fieldInfo) {
             this.listEntryName = optionElement.getAttribute("list-entry-name");
-            this.keyAcsr = new FlexibleMapAccessor(optionElement.getAttribute("key-name"));
-            this.listAcsr = new FlexibleMapAccessor(optionElement.getAttribute("list-name"));
+            this.keyAcsr = new FlexibleMapAccessor<String>(optionElement.getAttribute("key-name"));
+            this.listAcsr = new FlexibleMapAccessor<List<? extends Object>>(optionElement.getAttribute("list-name"));
             this.listEntryName = optionElement.getAttribute("list-entry-name");
             this.description = new FlexibleStringExpander(optionElement.getAttribute("description"));
             this.fieldInfo = fieldInfo;
         }
 
         public void addOptionValues(List<OptionValue> optionValues, Map<String, Object> context, GenericDelegator delegator) {
-            List dataList = (List) this.listAcsr.get(context);
+            List<? extends Object> dataList = UtilGenerics.checkList(this.listAcsr.get(context));
             if (dataList != null && dataList.size() != 0) {
-                Iterator dataIter = dataList.iterator();
-                while (dataIter.hasNext()) {
-                    Object data = dataIter.next();
-                    Map<String, Object> localContext = new HashMap<String, Object>(context);
+                for (Object data: dataList) {
+                    Map<String, Object> localContext = FastMap.newInstance();
+                    localContext.putAll(context);
                     if (UtilValidate.isNotEmpty(this.listEntryName)) {
                         localContext.put(this.listEntryName, data);
                     } else {

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java?rev=682102&r1=682101&r2=682102&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java Sat Aug  2 22:10:30 2008
@@ -72,7 +72,7 @@
     protected String defaultCellWidth;
     protected Boolean defaultHideIfSelected;
     protected String defaultDisabledTitleStyle;
-    protected FlexibleMapAccessor selectedMenuItemContextFieldName;
+    protected FlexibleMapAccessor<String> selectedMenuItemContextFieldName;
     protected FlexibleStringExpander menuContainerStyleExdr;
     protected String defaultAlign;
     protected String defaultAlignStyle;
@@ -226,7 +226,7 @@
         if (this.defaultDisabledTitleStyle == null || menuElement.hasAttribute("default-disabled-title-style"))
             this.defaultDisabledTitleStyle = menuElement.getAttribute("default-disabled-title-style");
         if (this.selectedMenuItemContextFieldName == null || menuElement.hasAttribute("selected-menuitem-context-field-name"))
-            this.selectedMenuItemContextFieldName = new FlexibleMapAccessor(menuElement.getAttribute("selected-menuitem-context-field-name"));
+            this.selectedMenuItemContextFieldName = new FlexibleMapAccessor<String>(menuElement.getAttribute("selected-menuitem-context-field-name"));
         if (this.menuContainerStyleExdr == null || menuElement.hasAttribute("menu-container-style"))
             this.setMenuContainerStyle(menuElement.getAttribute("menu-container-style"));
         if (this.defaultAlign == null || menuElement.hasAttribute("default-align"))
@@ -440,7 +440,7 @@
      * @return
      */
     public String getSelectedMenuItemContextFieldName(Map<String, Object> context) {
-        String menuItemName = (String)this.selectedMenuItemContextFieldName.get(context);
+        String menuItemName = this.selectedMenuItemContextFieldName.get(context);
         if (UtilValidate.isEmpty(menuItemName)) {
             return this.defaultMenuItemName;
         }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuAction.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuAction.java?rev=682102&r1=682101&r2=682102&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuAction.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuAction.java Sat Aug  2 22:10:30 2008
@@ -19,7 +19,6 @@
 package org.ofbiz.widget.menu;
 
 import java.text.MessageFormat;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
@@ -27,10 +26,13 @@
 import java.util.Map;
 import java.util.TimeZone;
 
+import javolution.util.FastMap;
+
 import org.ofbiz.base.util.BshUtil;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.GeneralException;
 import org.ofbiz.base.util.ObjectType;
+import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilFormatOut;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.base.util.UtilValidate;
@@ -117,8 +119,8 @@
     }
     
     public static class SetField extends ModelMenuAction {
-        protected FlexibleMapAccessor field;
-        protected FlexibleMapAccessor fromField;
+        protected FlexibleMapAccessor<Object> field;
+        protected FlexibleMapAccessor<Object> fromField;
         protected FlexibleStringExpander valueExdr;
         protected FlexibleStringExpander defaultExdr;
         protected FlexibleStringExpander globalExdr;
@@ -128,8 +130,8 @@
         
         public SetField(ModelMenu modelMenu, Element setElement) {
             super (modelMenu, setElement);
-            this.field = new FlexibleMapAccessor(setElement.getAttribute("field"));
-            this.fromField = UtilValidate.isNotEmpty(setElement.getAttribute("from-field")) ? new FlexibleMapAccessor(setElement.getAttribute("from-field")) : null;
+            this.field = new FlexibleMapAccessor<Object>(setElement.getAttribute("field"));
+            this.fromField = UtilValidate.isNotEmpty(setElement.getAttribute("from-field")) ? new FlexibleMapAccessor<Object>(setElement.getAttribute("from-field")) : null;
             this.valueExdr = UtilValidate.isNotEmpty(setElement.getAttribute("value")) ? new FlexibleStringExpander(setElement.getAttribute("value")) : null;
             this.defaultExdr = UtilValidate.isNotEmpty(setElement.getAttribute("default-value")) ? new FlexibleStringExpander(setElement.getAttribute("default-value")) : null;
             this.globalExdr = new FlexibleStringExpander(setElement.getAttribute("global"));
@@ -219,14 +221,14 @@
             }
             
             if (global) {
-                Map globalCtx = (Map) context.get("globalContext");
+                Map<String, Object> globalCtx = UtilGenerics.checkMap(context.get("globalContext"));
                 if (globalCtx != null) {
                     this.field.put(globalCtx, newValue);
                 }
             }
             
             // this is a hack for backward compatibility with the JPublish page object
-            Map page = (Map) context.get("page");
+            Map<String, Object> page = UtilGenerics.checkMap(context.get("page"));
             if (page != null) {
                 this.field.put(page, newValue);
             }
@@ -235,13 +237,13 @@
     
     public static class PropertyMap extends ModelMenuAction {
         protected FlexibleStringExpander resourceExdr;
-        protected FlexibleMapAccessor mapNameAcsr;
+        protected FlexibleMapAccessor<Map<String, Object>> mapNameAcsr;
         protected FlexibleStringExpander globalExdr;
         
         public PropertyMap(ModelMenu modelMenu, Element setElement) {
             super (modelMenu, setElement);
             this.resourceExdr = new FlexibleStringExpander(setElement.getAttribute("resource"));
-            this.mapNameAcsr = new FlexibleMapAccessor(setElement.getAttribute("map-name"));
+            this.mapNameAcsr = new FlexibleMapAccessor<Map<String, Object>>(setElement.getAttribute("map-name"));
             this.globalExdr = new FlexibleStringExpander(setElement.getAttribute("global"));
         }
         
@@ -252,11 +254,11 @@
 
             Locale locale = (Locale) context.get("locale");
             String resource = this.resourceExdr.expandString(context, locale);
-            Map propertyMap = UtilProperties.getResourceBundleMap(resource, locale);
+            Map<String, Object> propertyMap = UtilProperties.getResourceBundleMap(resource, locale);
             this.mapNameAcsr.put(context, propertyMap);
 
             if (global) {
-                Map globalCtx = (Map) context.get("globalContext");
+                Map<String, Object> globalCtx = UtilGenerics.checkMap(context.get("globalContext"));
                 if (globalCtx != null) {
                     this.mapNameAcsr.put(globalCtx, propertyMap);
                 }
@@ -268,20 +270,20 @@
         
         protected FlexibleStringExpander resourceExdr;
         protected FlexibleStringExpander propertyExdr;
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         protected FlexibleStringExpander defaultExdr;
         protected boolean noLocale;
-        protected FlexibleMapAccessor argListAcsr;
+        protected FlexibleMapAccessor<List<? extends Object>> argListAcsr;
         protected FlexibleStringExpander globalExdr;
 
         public PropertyToField(ModelMenu modelMenu, Element setElement) {
             super (modelMenu, setElement);
             this.resourceExdr = new FlexibleStringExpander(setElement.getAttribute("resource"));
             this.propertyExdr = new FlexibleStringExpander(setElement.getAttribute("property"));
-            this.fieldAcsr = new FlexibleMapAccessor(setElement.getAttribute("field"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(setElement.getAttribute("field"));
             this.defaultExdr = new FlexibleStringExpander(setElement.getAttribute("default"));
             noLocale = "true".equals(setElement.getAttribute("no-locale"));
-            this.argListAcsr = new FlexibleMapAccessor(setElement.getAttribute("arg-list-name"));
+            this.argListAcsr = new FlexibleMapAccessor<List<? extends Object>>(setElement.getAttribute("arg-list-name"));
             this.globalExdr = new FlexibleStringExpander(setElement.getAttribute("global"));
         }
         
@@ -308,7 +310,7 @@
             value = FlexibleStringExpander.expandString(value, context);
 
             if (!argListAcsr.isEmpty()) {
-                List argList = (List) argListAcsr.get(context);
+                List<? extends Object> argList = argListAcsr.get(context);
                 if (argList != null && argList.size() > 0) {
                     value = MessageFormat.format(value, argList.toArray());
                 }
@@ -343,26 +345,24 @@
 
     public static class Service extends ModelMenuAction {
         protected FlexibleStringExpander serviceNameExdr;
-        protected FlexibleMapAccessor resultMapNameAcsr;
+        protected FlexibleMapAccessor<Map<String, Object>> resultMapNameAcsr;
         protected FlexibleStringExpander autoFieldMapExdr;
-        protected Map<FlexibleMapAccessor, FlexibleMapAccessor> fieldMap;
+        protected Map<FlexibleMapAccessor<Object>, FlexibleMapAccessor<Object>> fieldMap;
         
         public Service(ModelMenu modelMenu, Element serviceElement) {
             super (modelMenu, serviceElement);
             this.serviceNameExdr = new FlexibleStringExpander(serviceElement.getAttribute("service-name"));
-            this.resultMapNameAcsr = UtilValidate.isNotEmpty(serviceElement.getAttribute("result-map-name")) ? new FlexibleMapAccessor(serviceElement.getAttribute("result-map-name")) : null;
+            this.resultMapNameAcsr = UtilValidate.isNotEmpty(serviceElement.getAttribute("result-map-name")) ? new FlexibleMapAccessor<Map<String, Object>>(serviceElement.getAttribute("result-map-name")) : null;
             this.autoFieldMapExdr = new FlexibleStringExpander(serviceElement.getAttribute("auto-field-map"));
             
-            List fieldMapElementList = UtilXml.childElementList(serviceElement, "field-map");
+            List<? extends Element> fieldMapElementList = UtilXml.childElementList(serviceElement, "field-map");
             if (fieldMapElementList.size() > 0) {
-                this.fieldMap = new HashMap<FlexibleMapAccessor, FlexibleMapAccessor>();
-                Iterator fieldMapElementIter = fieldMapElementList.iterator();
-                while (fieldMapElementIter.hasNext()) {
-                    Element fieldMapElement = (Element) fieldMapElementIter.next();
+                this.fieldMap = FastMap.newInstance();
+                for (Element fieldMapElement: fieldMapElementList) {
                     // set the env-name for each field-name, noting that if no field-name is specified it defaults to the env-name
                     this.fieldMap.put(
-                            new FlexibleMapAccessor(UtilFormatOut.checkEmpty(fieldMapElement.getAttribute("field-name"), fieldMapElement.getAttribute("env-name"))), 
-                            new FlexibleMapAccessor(fieldMapElement.getAttribute("env-name")));
+                            new FlexibleMapAccessor<Object>(UtilFormatOut.checkEmpty(fieldMapElement.getAttribute("field-name"), fieldMapElement.getAttribute("env-name"))), 
+                            new FlexibleMapAccessor<Object>(fieldMapElement.getAttribute("env-name")));
                 }
             }
         }
@@ -381,15 +381,13 @@
                 if (autoFieldMapBool) {
                     serviceContext = this.modelMenu.getDispacher().getDispatchContext().makeValidContext(serviceNameExpanded, ModelService.IN_PARAM, context);
                 } else {
-                    serviceContext = new HashMap<String, Object>();
+                    serviceContext = FastMap.newInstance();
                 }
                 
                 if (this.fieldMap != null) {
-                    Iterator fieldMapEntryIter = this.fieldMap.entrySet().iterator();
-                    while (fieldMapEntryIter.hasNext()) {
-                        Map.Entry entry = (Map.Entry) fieldMapEntryIter.next();
-                        FlexibleMapAccessor serviceContextFieldAcsr = (FlexibleMapAccessor) entry.getKey();
-                        FlexibleMapAccessor contextEnvAcsr = (FlexibleMapAccessor) entry.getValue();
+                    for (Map.Entry<FlexibleMapAccessor<Object>, FlexibleMapAccessor<Object>> entry: this.fieldMap.entrySet()) {
+                        FlexibleMapAccessor<Object> serviceContextFieldAcsr = entry.getKey();
+                        FlexibleMapAccessor<Object> contextEnvAcsr = entry.getValue();
                         serviceContextFieldAcsr.put(serviceContext, contextEnvAcsr.get(context));
                     }
                 }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuCondition.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuCondition.java?rev=682102&r1=682101&r2=682102&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuCondition.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuCondition.java Sat Aug  2 22:10:30 2008
@@ -331,13 +331,13 @@
     }
 
     public static class IfValidateMethod extends MenuCondition {
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         protected FlexibleStringExpander methodExdr;
         protected FlexibleStringExpander classExdr;
         
         public IfValidateMethod(ModelMenuItem modelMenuItem, Element condElement) {
             super (modelMenuItem, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
             this.methodExdr = new FlexibleStringExpander(condElement.getAttribute("method"));
             this.classExdr = new FlexibleStringExpander(condElement.getAttribute("class"));
         }
@@ -390,7 +390,7 @@
     }
     
     public static class IfCompare extends MenuCondition {
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         protected FlexibleStringExpander valueExdr;
 
         protected String operator;
@@ -399,7 +399,7 @@
         
         public IfCompare(ModelMenuItem modelMenuItem, Element condElement) {
             super (modelMenuItem, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
             this.valueExdr = new FlexibleStringExpander(condElement.getAttribute("value"));
             
             this.operator = condElement.getAttribute("operator");
@@ -439,8 +439,8 @@
     }
     
     public static class IfCompareField extends MenuCondition {
-        protected FlexibleMapAccessor fieldAcsr;
-        protected FlexibleMapAccessor toFieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
+        protected FlexibleMapAccessor<Object> toFieldAcsr;
 
         protected String operator;
         protected String type;
@@ -448,8 +448,8 @@
         
         public IfCompareField(ModelMenuItem modelMenuItem, Element condElement) {
             super (modelMenuItem, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
-            this.toFieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("to-field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
+            this.toFieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("to-field-name"));
             
             this.operator = condElement.getAttribute("operator");
             this.type = condElement.getAttribute("type");
@@ -491,12 +491,12 @@
         static PatternMatcher matcher = new Perl5Matcher();
         static PatternCompiler compiler = new Perl5Compiler();
 
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         protected FlexibleStringExpander exprExdr;
         
         public IfRegexp(ModelMenuItem modelMenuItem, Element condElement) {
             super (modelMenuItem, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
             this.exprExdr = new FlexibleStringExpander(condElement.getAttribute("expr"));
         }
         
@@ -526,11 +526,11 @@
     }
     
     public static class IfEmpty extends MenuCondition {
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         
         public IfEmpty(ModelMenuItem modelMenuItem, Element condElement) {
             super (modelMenuItem, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
         }
         
         public boolean eval(Map<String, Object> context) {

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java?rev=682102&r1=682101&r2=682102&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java Sat Aug  2 22:10:30 2008
@@ -50,7 +50,7 @@
     
     protected ModelScreenWidget childWidget;
     protected List<ModelScreenWidget.Section> sectionList;
-    protected FlexibleMapAccessor listNameExdr;
+    protected FlexibleMapAccessor<Object> listNameExdr;
     protected FlexibleStringExpander entryNameExdr;
     protected FlexibleStringExpander keyNameExdr;
     protected FlexibleStringExpander paginateTarget;
@@ -67,7 +67,7 @@
 
     public IterateSectionWidget(ModelScreen modelScreen, Element iterateSectionElement) {
         super(modelScreen, iterateSectionElement);
-        listNameExdr = new FlexibleMapAccessor(iterateSectionElement.getAttribute("list-name"));
+        listNameExdr = new FlexibleMapAccessor<Object>(iterateSectionElement.getAttribute("list-name"));
         entryNameExdr = new FlexibleStringExpander(iterateSectionElement.getAttribute("entry-name"));
         keyNameExdr = new FlexibleStringExpander(iterateSectionElement.getAttribute("key-name"));
         if (this.paginateTarget == null || iterateSectionElement.hasAttribute("paginate-target"))
@@ -133,9 +133,7 @@
             contextMs.put("itemIndex", Integer.valueOf(itemIndex));
             
             rowCount++;
-            Iterator sectionIter = this.sectionList.iterator();
-            while (sectionIter.hasNext()) {
-                ModelScreenWidget.Section section = (ModelScreenWidget.Section)sectionIter.next();
+            for (ModelScreenWidget.Section section: this.sectionList) {
                 section.renderWidgetString(writer, contextMs, screenStringRenderer);
             }
         }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java?rev=682102&r1=682101&r2=682102&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java Sat Aug  2 22:10:30 2008
@@ -125,8 +125,8 @@
     
     @SuppressWarnings("serial")
     public static class SetField extends ModelScreenAction {
-        protected FlexibleMapAccessor field;
-        protected FlexibleMapAccessor fromField;
+        protected FlexibleMapAccessor<Object> field;
+        protected FlexibleMapAccessor<Object> fromField;
         protected FlexibleStringExpander valueExdr;
         protected FlexibleStringExpander defaultExdr;
         protected FlexibleStringExpander globalExdr;
@@ -136,8 +136,8 @@
         
         public SetField(ModelScreen modelScreen, Element setElement) {
             super (modelScreen, setElement);
-            this.field = new FlexibleMapAccessor(setElement.getAttribute("field"));
-            this.fromField = new FlexibleMapAccessor(setElement.getAttribute("from-field"));
+            this.field = new FlexibleMapAccessor<Object>(setElement.getAttribute("field"));
+            this.fromField = new FlexibleMapAccessor<Object>(setElement.getAttribute("from-field"));
             this.valueExdr = new FlexibleStringExpander(setElement.getAttribute("value"));
             this.defaultExdr = new FlexibleStringExpander(setElement.getAttribute("default-value"));
             this.globalExdr = new FlexibleStringExpander(setElement.getAttribute("global"));
@@ -232,7 +232,7 @@
             }
             
             if (global) {
-                Map globalCtx = (Map) context.get("globalContext");
+                Map<String, Object> globalCtx = UtilGenerics.checkMap(context.get("globalContext"));
                 if (globalCtx != null) {
                     this.field.put(globalCtx, newValue);
                 } else {
@@ -241,7 +241,7 @@
             }
             
             // this is a hack for backward compatibility with the JPublish page object
-            Map page = (Map) context.get("page");
+            Map<String, Object> page = UtilGenerics.checkMap(context.get("page"));
             if (page != null) {
                 this.field.put(page, newValue);
             }
@@ -280,13 +280,13 @@
     @SuppressWarnings("serial")
     public static class PropertyMap extends ModelScreenAction {
         protected FlexibleStringExpander resourceExdr;
-        protected FlexibleMapAccessor mapNameAcsr;
+        protected FlexibleMapAccessor<ResourceBundleMapWrapper> mapNameAcsr;
         protected FlexibleStringExpander globalExdr;
         
         public PropertyMap(ModelScreen modelScreen, Element setElement) {
             super (modelScreen, setElement);
             this.resourceExdr = new FlexibleStringExpander(setElement.getAttribute("resource"));
-            this.mapNameAcsr = new FlexibleMapAccessor(setElement.getAttribute("map-name"));
+            this.mapNameAcsr = new FlexibleMapAccessor<ResourceBundleMapWrapper>(setElement.getAttribute("map-name"));
             this.globalExdr = new FlexibleStringExpander(setElement.getAttribute("global"));
         }
         
@@ -298,7 +298,7 @@
             Locale locale = (Locale) context.get("locale");
             String resource = this.resourceExdr.expandString(context, locale);
             
-            ResourceBundleMapWrapper existingPropMap = (ResourceBundleMapWrapper) this.mapNameAcsr.get(context);
+            ResourceBundleMapWrapper existingPropMap = this.mapNameAcsr.get(context);
             if (existingPropMap == null) {
                 this.mapNameAcsr.put(context, UtilProperties.getResourceBundleMap(resource, locale, context));
             } else {
@@ -306,9 +306,9 @@
             }
 
             if (global) {
-                Map globalCtx = (Map) context.get("globalContext");
+                Map<String, Object> globalCtx = UtilGenerics.checkMap(context.get("globalContext"));
                 if (globalCtx != null) {
-                    ResourceBundleMapWrapper globalExistingPropMap = (ResourceBundleMapWrapper) this.mapNameAcsr.get(globalCtx);
+                    ResourceBundleMapWrapper globalExistingPropMap = this.mapNameAcsr.get(globalCtx);
                     if (globalExistingPropMap == null) {
                         this.mapNameAcsr.put(globalCtx, UtilProperties.getResourceBundleMap(resource, locale, context));
                     } else {
@@ -327,20 +327,20 @@
         
         protected FlexibleStringExpander resourceExdr;
         protected FlexibleStringExpander propertyExdr;
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         protected FlexibleStringExpander defaultExdr;
         protected boolean noLocale;
-        protected FlexibleMapAccessor argListAcsr;
+        protected FlexibleMapAccessor<List<? extends Object>> argListAcsr;
         protected FlexibleStringExpander globalExdr;
 
         public PropertyToField(ModelScreen modelScreen, Element setElement) {
             super (modelScreen, setElement);
             this.resourceExdr = new FlexibleStringExpander(setElement.getAttribute("resource"));
             this.propertyExdr = new FlexibleStringExpander(setElement.getAttribute("property"));
-            this.fieldAcsr = new FlexibleMapAccessor(setElement.getAttribute("field"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(setElement.getAttribute("field"));
             this.defaultExdr = new FlexibleStringExpander(setElement.getAttribute("default"));
             noLocale = "true".equals(setElement.getAttribute("no-locale"));
-            this.argListAcsr = new FlexibleMapAccessor(setElement.getAttribute("arg-list-name"));
+            this.argListAcsr = new FlexibleMapAccessor<List<? extends Object>>(setElement.getAttribute("arg-list-name"));
             this.globalExdr = new FlexibleStringExpander(setElement.getAttribute("global"));
         }
         
@@ -369,7 +369,7 @@
             value = FlexibleStringExpander.expandString(value, context);
 
             if (!argListAcsr.isEmpty()) {
-                List argList = (List) argListAcsr.get(context);
+                List<? extends Object> argList = argListAcsr.get(context);
                 if (argList != null && argList.size() > 0) {
                     value = MessageFormat.format(value, argList.toArray());
                 }
@@ -423,14 +423,14 @@
     @SuppressWarnings("serial")
     public static class Service extends ModelScreenAction {
         protected FlexibleStringExpander serviceNameExdr;
-        protected FlexibleMapAccessor resultMapNameAcsr;
+        protected FlexibleMapAccessor<Map<String, Object>> resultMapNameAcsr;
         protected FlexibleStringExpander autoFieldMapExdr;
         protected Map<FlexibleMapAccessor, Object> fieldMap;
         
         public Service(ModelScreen modelScreen, Element serviceElement) {
             super (modelScreen, serviceElement);
             this.serviceNameExdr = new FlexibleStringExpander(serviceElement.getAttribute("service-name"));
-            this.resultMapNameAcsr = UtilValidate.isNotEmpty(serviceElement.getAttribute("result-map-name")) ? new FlexibleMapAccessor(serviceElement.getAttribute("result-map-name")) : null;
+            this.resultMapNameAcsr = UtilValidate.isNotEmpty(serviceElement.getAttribute("result-map-name")) ? new FlexibleMapAccessor<Map<String, Object>>(serviceElement.getAttribute("result-map-name")) : null;
             this.autoFieldMapExdr = new FlexibleStringExpander(serviceElement.getAttribute("auto-field-map"));
             this.fieldMap = EntityFinderUtil.makeFieldMap(serviceElement);
         }
@@ -558,15 +558,15 @@
 
     @SuppressWarnings("serial")
     public static class GetRelatedOne extends ModelScreenAction {
-        protected FlexibleMapAccessor valueNameAcsr;
-        protected FlexibleMapAccessor toValueNameAcsr;
+        protected FlexibleMapAccessor<Object> valueNameAcsr;
+        protected FlexibleMapAccessor<Object> toValueNameAcsr;
         protected String relationName;
         protected boolean useCache;
         
         public GetRelatedOne(ModelScreen modelScreen, Element getRelatedOneElement) {
             super (modelScreen, getRelatedOneElement);
-            this.valueNameAcsr = new FlexibleMapAccessor(getRelatedOneElement.getAttribute("value-name"));
-            this.toValueNameAcsr = new FlexibleMapAccessor(getRelatedOneElement.getAttribute("to-value-name"));
+            this.valueNameAcsr = new FlexibleMapAccessor<Object>(getRelatedOneElement.getAttribute("value-name"));
+            this.toValueNameAcsr = new FlexibleMapAccessor<Object>(getRelatedOneElement.getAttribute("to-value-name"));
             this.relationName = getRelatedOneElement.getAttribute("relation-name");
             this.useCache = "true".equals(getRelatedOneElement.getAttribute("use-cache"));
         }
@@ -600,20 +600,20 @@
 
     @SuppressWarnings("serial")
     public static class GetRelated extends ModelScreenAction {
-        protected FlexibleMapAccessor valueNameAcsr;
-        protected FlexibleMapAccessor listNameAcsr;
-        protected FlexibleMapAccessor mapAcsr;
-        protected FlexibleMapAccessor orderByListAcsr;
+        protected FlexibleMapAccessor<Object> valueNameAcsr;
+        protected FlexibleMapAccessor<List<GenericValue>> listNameAcsr;
+        protected FlexibleMapAccessor<Map<String, Object>> mapAcsr;
+        protected FlexibleMapAccessor<List<String>> orderByListAcsr;
         protected String relationName;
         protected boolean useCache;
         
         public GetRelated(ModelScreen modelScreen, Element getRelatedElement) {
             super (modelScreen, getRelatedElement);
-            this.valueNameAcsr = new FlexibleMapAccessor(getRelatedElement.getAttribute("value-name"));
-            this.listNameAcsr = new FlexibleMapAccessor(getRelatedElement.getAttribute("list-name"));
+            this.valueNameAcsr = new FlexibleMapAccessor<Object>(getRelatedElement.getAttribute("value-name"));
+            this.listNameAcsr = new FlexibleMapAccessor<List<GenericValue>>(getRelatedElement.getAttribute("list-name"));
             this.relationName = getRelatedElement.getAttribute("relation-name");
-            this.mapAcsr = new FlexibleMapAccessor(getRelatedElement.getAttribute("map-name"));
-            this.orderByListAcsr = new FlexibleMapAccessor(getRelatedElement.getAttribute("order-by-list-name"));
+            this.mapAcsr = new FlexibleMapAccessor<Map<String, Object>>(getRelatedElement.getAttribute("map-name"));
+            this.orderByListAcsr = new FlexibleMapAccessor<List<String>>(getRelatedElement.getAttribute("order-by-list-name"));
             this.useCache = "true".equals(getRelatedElement.getAttribute("use-cache"));
         }
 
@@ -631,11 +631,11 @@
             GenericValue value = (GenericValue) valueObject;
             List<String> orderByNames = null;
             if (!orderByListAcsr.isEmpty()) {
-                orderByNames = UtilGenerics.toList(orderByListAcsr.get(context));
+                orderByNames = orderByListAcsr.get(context);
             }
             Map<String, Object> constraintMap = null;
             if (!mapAcsr.isEmpty()) {
-                constraintMap = UtilGenerics.toMap(mapAcsr.get(context));
+                constraintMap = mapAcsr.get(context);
             }
             try {
                 if (useCache) {

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenCondition.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenCondition.java?rev=682102&r1=682101&r2=682102&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenCondition.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenCondition.java Sat Aug  2 22:10:30 2008
@@ -324,13 +324,13 @@
     }
 
     public static class IfValidateMethod extends ScreenCondition {
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         protected FlexibleStringExpander methodExdr;
         protected FlexibleStringExpander classExdr;
         
         public IfValidateMethod(ModelScreen modelScreen, Element condElement) {
             super (modelScreen, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
             this.methodExdr = new FlexibleStringExpander(condElement.getAttribute("method"));
             this.classExdr = new FlexibleStringExpander(condElement.getAttribute("class"));
         }
@@ -383,7 +383,7 @@
     }
     
     public static class IfCompare extends ScreenCondition {
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         protected FlexibleStringExpander valueExdr;
 
         protected String operator;
@@ -392,7 +392,7 @@
         
         public IfCompare(ModelScreen modelScreen, Element condElement) {
             super (modelScreen, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
             this.valueExdr = new FlexibleStringExpander(condElement.getAttribute("value"));
             
             this.operator = condElement.getAttribute("operator");
@@ -432,8 +432,8 @@
     }
     
     public static class IfCompareField extends ScreenCondition {
-        protected FlexibleMapAccessor fieldAcsr;
-        protected FlexibleMapAccessor toFieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
+        protected FlexibleMapAccessor<Object> toFieldAcsr;
 
         protected String operator;
         protected String type;
@@ -441,8 +441,8 @@
         
         public IfCompareField(ModelScreen modelScreen, Element condElement) {
             super (modelScreen, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
-            this.toFieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("to-field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
+            this.toFieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("to-field-name"));
             
             this.operator = condElement.getAttribute("operator");
             this.type = condElement.getAttribute("type");
@@ -484,12 +484,12 @@
         static PatternMatcher matcher = new Perl5Matcher();
         static PatternCompiler compiler = new Perl5Compiler();
 
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         protected FlexibleStringExpander exprExdr;
         
         public IfRegexp(ModelScreen modelScreen, Element condElement) {
             super (modelScreen, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
             this.exprExdr = new FlexibleStringExpander(condElement.getAttribute("expr"));
         }
         
@@ -519,11 +519,11 @@
     }
     
     public static class IfEmpty extends ScreenCondition {
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         
         public IfEmpty(ModelScreen modelScreen, Element condElement) {
             super (modelScreen, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
         }
         
         public boolean eval(Map<String, Object> context) {

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java?rev=682102&r1=682101&r2=682102&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java Sat Aug  2 22:10:30 2008
@@ -20,8 +20,6 @@
 
 import java.io.IOException;
 import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
@@ -31,6 +29,7 @@
 import javax.xml.parsers.ParserConfigurationException;
 
 import javolution.util.FastList;
+import javolution.util.FastMap;
 
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.GeneralException;
@@ -69,8 +68,8 @@
     protected String rootNodeName;
     protected String defaultRenderStyle;
     protected FlexibleStringExpander defaultWrapStyleExdr;
-    protected List<ModelNode> nodeList = new ArrayList<ModelNode>();
-    protected Map<String, ModelNode> nodeMap = new HashMap<String, ModelNode>();
+    protected List<ModelNode> nodeList = FastList.newInstance();
+    protected Map<String, ModelNode> nodeMap = FastMap.newInstance();
     protected GenericDelegator delegator;
     protected LocalDispatcher dispatcher;
     protected FlexibleStringExpander expandCollapseRequestExdr;
@@ -266,8 +265,8 @@
         protected Label label;
         protected Link link;
         protected Image image;
-        protected List<ModelSubNode> subNodeList = new ArrayList<ModelSubNode>();
-        protected List<ModelTreeAction> actions = new ArrayList<ModelTreeAction>();
+        protected List<ModelSubNode> subNodeList = FastList.newInstance();
+        protected List<ModelTreeAction> actions = FastList.newInstance();
         protected String name;
         protected ModelTree modelTree;
         protected List<Object []> subNodeValues;
@@ -536,17 +535,15 @@
         }
 
         public void getChildren(Map<String, Object> context) {
-             this.subNodeValues = new ArrayList<Object []>();
-             Iterator nodeIter = subNodeList.iterator();
-             while (nodeIter.hasNext()) {
-                 ModelSubNode subNode = (ModelSubNode)nodeIter.next();
+             this.subNodeValues = FastList.newInstance();
+             for (ModelSubNode subNode: subNodeList) {
                  String nodeName = subNode.getNodeName(context);
                  ModelNode node = (ModelNode)modelTree.nodeMap.get(nodeName);
-                 List subNodeActions = subNode.getActions();
+                 List<ModelTreeAction> subNodeActions = subNode.getActions();
                  //if (Debug.infoOn()) Debug.logInfo(" context.currentValue:" + context.get("currentValue"), module);
                  ModelTreeAction.runSubActions(subNodeActions, context);
                  // List dataFound = (List)context.get("dataFound");
-                 ListIterator dataIter =  subNode.getListIterator();
+                 Iterator<? extends Map<String, ? extends Object>> dataIter =  subNode.getListIterator();
                  if (dataIter instanceof EntityListIterator) {
                      EntityListIterator eli = (EntityListIterator) dataIter;
                      Map val = null;
@@ -686,8 +683,8 @@
     
             protected ModelNode rootNode;
             protected FlexibleStringExpander nodeNameExdr;
-            protected List<ModelTreeAction> actions = new ArrayList<ModelTreeAction>();
-            protected ListIterator listIterator;
+            protected List<ModelTreeAction> actions = FastList.newInstance();
+            protected ListIterator<? extends Map<String, ? extends Object>> listIterator;
     
             public ModelSubNode() {}
     
@@ -726,15 +723,15 @@
                 return this.nodeNameExdr.expandString(context);
             }
     
-            public List getActions() {
+            public List<ModelTreeAction> getActions() {
                 return actions;
             }
             
-            public void setListIterator(ListIterator iter) {
+            public void setListIterator(ListIterator<? extends Map<String, ? extends Object>> iter) {
                 listIterator = iter;
             }
         
-            public ListIterator getListIterator() {
+            public ListIterator<? extends Map<String, ? extends Object>> getListIterator() {
                 return listIterator;
             }
         }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeAction.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeAction.java?rev=682102&r1=682101&r2=682102&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeAction.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeAction.java Sat Aug  2 22:10:30 2008
@@ -18,7 +18,6 @@
  *******************************************************************************/
 package org.ofbiz.widget.tree;
 
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
@@ -27,6 +26,8 @@
 import java.util.regex.PatternSyntaxException;
 import java.util.TimeZone;
 
+import javolution.util.FastMap;
+
 import org.ofbiz.base.util.BshUtil;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.GeneralException;
@@ -102,26 +103,24 @@
     }
     */
     
-    public static void runSubActions(List actions, Map<String, Object> context) {
-        Iterator actionIter = actions.iterator();
-        while (actionIter.hasNext()) {
-            ModelTreeAction action = (ModelTreeAction) actionIter.next();
+    public static void runSubActions(List<ModelTreeAction> actions, Map<String, Object> context) {
+        for (ModelTreeAction action: actions) {
             if (Debug.verboseOn()) Debug.logVerbose("Running tree action " + action.getClass().getName(), module);
             action.runAction(context);
         }
     }
     
     public static class SetField extends ModelTreeAction {
-        protected FlexibleMapAccessor field;
-        protected FlexibleMapAccessor fromField;
+        protected FlexibleMapAccessor<Object> field;
+        protected FlexibleMapAccessor<Object> fromField;
         protected FlexibleStringExpander valueExdr;
         protected FlexibleStringExpander globalExdr;
         protected String type;
         
         public SetField(ModelTree.ModelNode modelNode, Element setElement) {
             super (modelNode, setElement);
-            this.field = new FlexibleMapAccessor(setElement.getAttribute("field"));
-            this.fromField = UtilValidate.isNotEmpty(setElement.getAttribute("from-field")) ? new FlexibleMapAccessor(setElement.getAttribute("from-field")) : null;
+            this.field = new FlexibleMapAccessor<Object>(setElement.getAttribute("field"));
+            this.fromField = UtilValidate.isNotEmpty(setElement.getAttribute("from-field")) ? new FlexibleMapAccessor<Object>(setElement.getAttribute("from-field")) : null;
             this.valueExdr = UtilValidate.isNotEmpty(setElement.getAttribute("value")) ? new FlexibleStringExpander(setElement.getAttribute("value")) : null;
             this.globalExdr = new FlexibleStringExpander(setElement.getAttribute("global"));
             this.type = setElement.getAttribute("type");
@@ -154,14 +153,14 @@
             this.field.put(context, newValue);
             
             if (global) {
-                Map globalCtx = (Map) context.get("globalContext");
+                Map<String, Object> globalCtx = UtilGenerics.checkMap(context.get("globalContext"));
                 if (globalCtx != null) {
                     this.field.put(globalCtx, newValue);
                 }
             }
             
             // this is a hack for backward compatibility with the JPublish page object
-            Map page = (Map) context.get("page");
+            Map<String, Object> page = UtilGenerics.checkMap(context.get("page"));
             if (page != null) {
                 this.field.put(page, newValue);
             }
@@ -189,10 +188,13 @@
                     Object obj = context.get("_LIST_ITERATOR_");
                     if (this.modelSubNode != null) {
                         if (obj != null && (obj instanceof EntityListIterator || obj instanceof ListIterator)) {
-                            this.modelSubNode.setListIterator((ListIterator)obj);
+                            ListIterator<? extends Map<String, ? extends Object>> listIt = UtilGenerics.cast(obj);
+                            this.modelSubNode.setListIterator(listIt);
                         } else {
-                            if (obj instanceof List)
-                                this.modelSubNode.setListIterator(((List)obj).listIterator());
+                            if (obj instanceof List) {
+                                List<? extends Map<String, ? extends Object>> list = UtilGenerics.checkList(obj);
+                                this.modelSubNode.setListIterator(list.listIterator());
+                            }
                         }
                     }
                 } catch (GeneralException e) {
@@ -208,7 +210,7 @@
 
     public static class Service extends ModelTreeAction {
         protected FlexibleStringExpander serviceNameExdr;
-        protected FlexibleMapAccessor resultMapNameAcsr;
+        protected FlexibleMapAccessor<Map<String, Object>> resultMapNameAcsr;
         protected FlexibleStringExpander autoFieldMapExdr;
         protected FlexibleStringExpander resultMapListNameExdr;
         protected FlexibleStringExpander resultMapListIteratorNameExdr;
@@ -229,7 +231,7 @@
         public void initService( Element serviceElement ) {
             
             this.serviceNameExdr = new FlexibleStringExpander(serviceElement.getAttribute("service-name"));
-            this.resultMapNameAcsr = UtilValidate.isNotEmpty(serviceElement.getAttribute("result-map-name")) ? new FlexibleMapAccessor(serviceElement.getAttribute("result-map-name")) : null;
+            this.resultMapNameAcsr = UtilValidate.isNotEmpty(serviceElement.getAttribute("result-map-name")) ? new FlexibleMapAccessor<Map<String, Object>>(serviceElement.getAttribute("result-map-name")) : null;
             this.autoFieldMapExdr = new FlexibleStringExpander(serviceElement.getAttribute("auto-field-map"));
             this.resultMapListNameExdr = new FlexibleStringExpander(serviceElement.getAttribute("result-map-list-name"));
             this.resultMapListIteratorNameExdr = new FlexibleStringExpander(serviceElement.getAttribute("result-map-list-iterator-name"));
@@ -252,7 +254,7 @@
                 if (autoFieldMapBool) {
                     serviceContext = this.modelTree.getDispatcher().getDispatchContext().makeValidContext(serviceNameExpanded, ModelService.IN_PARAM, context);
                 } else {
-                    serviceContext = new HashMap<String, Object>();
+                    serviceContext = FastMap.newInstance();
                 }
                 
                 if (this.fieldMap != null) {
@@ -285,9 +287,10 @@
                 if (this.modelSubNode != null) {
                     //ListIterator iter = null;
                     if (UtilValidate.isNotEmpty(resultMapListIteratorName)) {
-                        this.modelSubNode.setListIterator((ListIterator)result.get(resultMapListIteratorName));
+                        ListIterator<? extends Map<String, ? extends Object>> listIt = UtilGenerics.cast(result.get(resultMapListIteratorName));
+                        this.modelSubNode.setListIterator(listIt);
                     } else if (UtilValidate.isNotEmpty(resultMapListName)) {
-                        List lst = (List)result.get(resultMapListName);
+                        List<? extends Map<String, ? extends Object>> lst = UtilGenerics.checkList(result.get(resultMapListName));
                         if (lst != null ) {
                             this.modelSubNode.setListIterator(lst.listIterator());
                         }
@@ -353,9 +356,13 @@
                 finder.runFind(context, this.modelTree.getDelegator());
                 Object obj = context.get(this.listName);
                 if (obj != null && (obj instanceof EntityListIterator || obj instanceof ListIterator)) {
-                    this.modelSubNode.setListIterator((ListIterator)obj);
+                    ListIterator<? extends Map<String, ? extends Object>> listIt = UtilGenerics.cast(obj);
+                    this.modelSubNode.setListIterator(listIt);
                 } else {
-                    if (obj instanceof List) this.modelSubNode.setListIterator(((List)obj).listIterator());
+                    if (obj instanceof List) {
+                        List<? extends Map<String, ? extends Object>> list = UtilGenerics.checkList(obj);
+                        this.modelSubNode.setListIterator(list.listIterator());
+                    }
                 }
             } catch (GeneralException e) {
                 String errMsg = "Error doing entity query by condition: " + e.toString();
@@ -387,9 +394,13 @@
                 finder.runFind(context, this.modelTree.getDelegator());
                 Object obj = context.get(this.listName);
                 if (obj != null && (obj instanceof EntityListIterator || obj instanceof ListIterator)) {
-                    this.modelSubNode.setListIterator((ListIterator)obj);
+                    ListIterator<? extends Map<String, ? extends Object>> listIt = UtilGenerics.cast(obj);
+                    this.modelSubNode.setListIterator(listIt);
                 } else {
-                    if (obj instanceof List) this.modelSubNode.setListIterator(((List)obj).listIterator());
+                    if (obj instanceof List) {
+                        List<? extends Map<String, ? extends Object>> list = UtilGenerics.cast(obj);
+                        this.modelSubNode.setListIterator(list.listIterator());
+                    }
                 }
             } catch (GeneralException e) {
                 String errMsg = "Error doing entity query by condition: " + e.toString();

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeCondition.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeCondition.java?rev=682102&r1=682101&r2=682102&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeCondition.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeCondition.java Sat Aug  2 22:10:30 2008
@@ -78,12 +78,9 @@
         public abstract boolean eval(Map<String, Object> context);
     }
     
-    public static List readSubConditions(ModelTree modelTree, Element conditionElement) {
+    public static List<TreeCondition> readSubConditions(ModelTree modelTree, Element conditionElement) {
         List<TreeCondition> condList = FastList.newInstance();
-        List subElementList = UtilXml.childElementList(conditionElement);
-        Iterator subElementIter = subElementList.iterator();
-        while (subElementIter.hasNext()) {
-            Element subElement = (Element) subElementIter.next();
+        for (Element subElement: UtilXml.childElementList(conditionElement)) {
             condList.add(readCondition(modelTree, subElement));
         }
         return condList;
@@ -121,7 +118,7 @@
     }
     
     public static class And extends TreeCondition {
-        protected List subConditions;
+        protected List<TreeCondition> subConditions;
         
         public And(ModelTree modelTree, Element condElement) {
             super (modelTree, condElement);
@@ -130,9 +127,7 @@
         
         public boolean eval(Map<String, Object> context) {
             // return false for the first one in the list that is false, basic and algo
-            Iterator subConditionIter = this.subConditions.iterator();
-            while (subConditionIter.hasNext()) {
-                TreeCondition subCondition = (TreeCondition) subConditionIter.next();
+            for (TreeCondition subCondition: subConditions) {
                 if (!subCondition.eval(context)) {
                     return false;
                 }
@@ -142,7 +137,7 @@
     }
     
     public static class Xor extends TreeCondition {
-        protected List subConditions;
+        protected List<TreeCondition> subConditions;
         
         public Xor(ModelTree modelTree, Element condElement) {
             super (modelTree, condElement);
@@ -152,9 +147,7 @@
         public boolean eval(Map<String, Object> context) {
             // if more than one is true stop immediately and return false; if all are false return false; if only one is true return true
             boolean foundOneTrue = false;
-            Iterator subConditionIter = this.subConditions.iterator();
-            while (subConditionIter.hasNext()) {
-                TreeCondition subCondition = (TreeCondition) subConditionIter.next();
+            for (TreeCondition subCondition: subConditions) {
                 if (subCondition.eval(context)) {
                     if (foundOneTrue) {
                         // now found two true, so return false
@@ -169,7 +162,7 @@
     }
     
     public static class Or extends TreeCondition {
-        protected List subConditions;
+        protected List<TreeCondition> subConditions;
         
         public Or(ModelTree modelTree, Element condElement) {
             super (modelTree, condElement);
@@ -178,9 +171,7 @@
         
         public boolean eval(Map<String, Object> context) {
             // return true for the first one in the list that is true, basic or algo
-            Iterator subConditionIter = this.subConditions.iterator();
-            while (subConditionIter.hasNext()) {
-                TreeCondition subCondition = (TreeCondition) subConditionIter.next();
+            for (TreeCondition subCondition: subConditions) {
                 if (subCondition.eval(context)) {
                     return true;
                 }
@@ -238,13 +229,13 @@
     }
 
     public static class IfValidateMethod extends TreeCondition {
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         protected FlexibleStringExpander methodExdr;
         protected FlexibleStringExpander classExdr;
         
         public IfValidateMethod(ModelTree modelTree, Element condElement) {
             super (modelTree, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
             this.methodExdr = new FlexibleStringExpander(condElement.getAttribute("method"));
             this.classExdr = new FlexibleStringExpander(condElement.getAttribute("class"));
         }
@@ -297,7 +288,7 @@
     }
     
     public static class IfCompare extends TreeCondition {
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         protected FlexibleStringExpander valueExdr;
 
         protected String operator;
@@ -306,7 +297,7 @@
         
         public IfCompare(ModelTree modelTree, Element condElement) {
             super (modelTree, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
             this.valueExdr = new FlexibleStringExpander(condElement.getAttribute("value"));
             
             this.operator = condElement.getAttribute("operator");
@@ -346,8 +337,8 @@
     }
     
     public static class IfCompareField extends TreeCondition {
-        protected FlexibleMapAccessor fieldAcsr;
-        protected FlexibleMapAccessor toFieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
+        protected FlexibleMapAccessor<Object> toFieldAcsr;
 
         protected String operator;
         protected String type;
@@ -355,8 +346,8 @@
         
         public IfCompareField(ModelTree modelTree, Element condElement) {
             super (modelTree, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
-            this.toFieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("to-field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
+            this.toFieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("to-field-name"));
             
             this.operator = condElement.getAttribute("operator");
             this.type = condElement.getAttribute("type");
@@ -398,12 +389,12 @@
         static PatternMatcher matcher = new Perl5Matcher();
         static PatternCompiler compiler = new Perl5Compiler();
 
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         protected FlexibleStringExpander exprExdr;
         
         public IfRegexp(ModelTree modelTree, Element condElement) {
             super (modelTree, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
             this.exprExdr = new FlexibleStringExpander(condElement.getAttribute("expr"));
         }
         
@@ -433,11 +424,11 @@
     }
     
     public static class IfEmpty extends TreeCondition {
-        protected FlexibleMapAccessor fieldAcsr;
+        protected FlexibleMapAccessor<Object> fieldAcsr;
         
         public IfEmpty(ModelTree modelTree, Element condElement) {
             super (modelTree, condElement);
-            this.fieldAcsr = new FlexibleMapAccessor(condElement.getAttribute("field-name"));
+            this.fieldAcsr = new FlexibleMapAccessor<Object>(condElement.getAttribute("field-name"));
         }
         
         public boolean eval(Map<String, Object> context) {