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/06/30 22:16:56 UTC

svn commit: r672897 [1/2] - in /ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext: data/ eca/ permission/ synchronization/

Author: doogie
Date: Mon Jun 30 13:16:55 2008
New Revision: 672897

URL: http://svn.apache.org/viewvc?rev=672897&view=rev
Log:
Generics and java1.5 features.

Modified:
    ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/data/EntityDataLoadContainer.java
    ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/data/EntityDataServices.java
    ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/DelegatorEcaHandler.java
    ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaAction.java
    ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaCondition.java
    ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaRule.java
    ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaSetField.java
    ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java
    ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/permission/EntityPermissionChecker.java
    ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/synchronization/EntitySyncContext.java
    ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/synchronization/EntitySyncServices.java

Modified: ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/data/EntityDataLoadContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/data/EntityDataLoadContainer.java?rev=672897&r1=672896&r2=672897&view=diff
==============================================================================
--- ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/data/EntityDataLoadContainer.java (original)
+++ ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/data/EntityDataLoadContainer.java Mon Jun 30 13:16:55 2008
@@ -22,11 +22,11 @@
 import java.net.MalformedURLException;
 import java.text.NumberFormat;
 import java.util.Iterator;
-import java.util.LinkedList;
 import java.util.List;
-import java.util.ArrayList;
 import java.io.File;
 
+import javolution.util.FastList;
+
 import org.ofbiz.base.container.Container;
 import org.ofbiz.base.container.ContainerConfig;
 import org.ofbiz.base.container.ContainerException;
@@ -51,7 +51,7 @@
     protected String configFile = null;
     protected String readers = null;
     protected String directory = null;
-    protected ArrayList files = new ArrayList();
+    protected List<String> files = FastList.newInstance();
     protected String component = null;
     protected boolean useDummyFks = false;
     protected boolean maintainTxs = false;
@@ -86,8 +86,7 @@
            $ java -jar ofbiz.jar -install -file=/tmp/dataload.xml
         */
         if (args != null) {
-            for (int i = 0; i < args.length; i++) {
-                String argument = args[i];
+            for (String argument: args) {
                 // arguments can prefix w/ a '-'. Just strip them off
                 if (argument.startsWith("-")) {
                     int subIdx = 1;
@@ -179,10 +178,10 @@
         }
 
         // parse the pass in list of readers to use
-        List readerNames = null;
+        List<String> readerNames = null;
         if (this.readers != null && !"none".equalsIgnoreCase(this.readers)) {
             if (this.readers.indexOf(",") == -1) {
-                readerNames = new LinkedList();
+                readerNames = FastList.newInstance();
                 readerNames.add(this.readers);
             } else {
                 readerNames = StringUtil.split(this.readers, ",");
@@ -202,7 +201,7 @@
         }
 
         // get the reader name URLs first
-        List urlList = null;
+        List<URL> urlList = null;
         if (readerNames != null) {
             urlList = EntityDataLoader.getUrlList(helperName, component, readerNames);
         } else if (!"none".equalsIgnoreCase(this.readers)) {
@@ -211,13 +210,12 @@
 
         // need a list if it is empty
         if (urlList == null) {
-            urlList = new ArrayList();
+            urlList = FastList.newInstance();
         }
 
         // add in the defined extra files
-        Iterator it = this.files.iterator();
-        while (it.hasNext()) {
-            URL fileUrl = UtilURL.fromResource((String) it.next());
+        for (String fileName: this.files) {
+            URL fileUrl = UtilURL.fromResource((String) fileName);
             if (fileUrl != null) {
                 urlList.add(fileUrl);
             }
@@ -229,12 +227,12 @@
             if (dir.exists() && dir.isDirectory() && dir.canRead()) {
                 File[] fileArray = dir.listFiles();
                 if (fileArray != null && fileArray.length > 0) {
-                    for (int i = 0; i < fileArray.length; i++) {
-                        if (fileArray[i].getName().toLowerCase().endsWith(".xml")) {
+                    for (File file: fileArray) {
+                        if (file.getName().toLowerCase().endsWith(".xml")) {
                             try {
-                                urlList.add(fileArray[i].toURI().toURL());
+                                urlList.add(file.toURI().toURL());
                             } catch (MalformedURLException e) {
-                                Debug.logError(e, "Unable to load file (" + fileArray[i].getName() + "); not a valid URL.", module);
+                                Debug.logError(e, "Unable to load file (" + file.getName() + "); not a valid URL.", module);
                             }
                         }
                     }
@@ -247,22 +245,18 @@
         changedFormat.setMinimumIntegerDigits(5);
         changedFormat.setGroupingUsed(false);
         
-        List errorMessages = new LinkedList();
-        List infoMessages = new LinkedList();
+        List<Object> errorMessages = FastList.newInstance();
+        List<String> infoMessages = FastList.newInstance();
         int totalRowsChanged = 0;
         if (urlList != null && urlList.size() > 0) {
             Debug.logImportant("=-=-=-=-=-=-= Doing a data load with the following files:", module);
-            Iterator urlIter = urlList.iterator();
-            while (urlIter.hasNext()) {
-                URL dataUrl = (URL) urlIter.next();
+            for (URL dataUrl: urlList) {
                 Debug.logImportant(dataUrl.toExternalForm(), module);
             }
 
             Debug.logImportant("=-=-=-=-=-=-= Starting the data load...", module);
 
-            urlIter = urlList.iterator();
-            while (urlIter.hasNext()) {
-                URL dataUrl = (URL) urlIter.next();
+            for (URL dataUrl: urlList) {
                 try {
                     int rowsChanged = EntityDataLoader.loadData(dataUrl, helperName, delegator, errorMessages, txTimeout, useDummyFks, maintainTxs, tryInserts);
                     totalRowsChanged += rowsChanged;
@@ -277,17 +271,15 @@
 
         if (infoMessages.size() > 0) {
             Debug.logImportant("=-=-=-=-=-=-= Here is a summary of the data load:", module);
-            Iterator infoIter = infoMessages.iterator();
-            while (infoIter.hasNext()){
-              Debug.logImportant((String) infoIter.next(), module);
+            for (String message: infoMessages) {
+              Debug.logImportant(message, module);
             }
         }
         
         if (errorMessages.size() > 0) {
             Debug.logImportant("The following errors occured in the data load:", module);
-            Iterator errIter = errorMessages.iterator();
-            while (errIter.hasNext()){
-              Debug.logImportant((String) errIter.next(), module);
+            for (Object message: errorMessages) {
+              Debug.logImportant(message.toString(), module);
             }
         }
 

Modified: ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/data/EntityDataServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/data/EntityDataServices.java?rev=672897&r1=672896&r2=672897&view=diff
==============================================================================
--- ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/data/EntityDataServices.java (original)
+++ ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/data/EntityDataServices.java Mon Jun 30 13:16:55 2008
@@ -35,6 +35,8 @@
 import org.ofbiz.base.util.UtilURL;
 import org.ofbiz.base.util.UtilMisc;
 
+import javolution.util.FastList;
+
 import java.util.*;
 import java.io.*;
 import java.net.URI;
@@ -51,11 +53,11 @@
 
     public static final String module = EntityDataServices.class.getName();
 
-    public static Map exportDelimitedToDirectory(DispatchContext dctx, Map context) {
+    public static Map<String, Object> exportDelimitedToDirectory(DispatchContext dctx, Map<String, Object> context) {
         return ServiceUtil.returnError("This service is not implemented yet.");
     }
 
-    public static Map importDelimitedFromDirectory(DispatchContext dctx, Map context) {
+    public static Map<String, Object> importDelimitedFromDirectory(DispatchContext dctx, Map<String, Object> context) {
         LocalDispatcher dispatcher = dctx.getDispatcher();
         Security security = dctx.getSecurity();
 
@@ -90,13 +92,11 @@
         }
 
         // get the file list
-        List files = getFileList(root);
+        List<File> files = getFileList(root);
         if (files != null && files.size() > 0) {
-            Iterator i = files.iterator();
-            while (i.hasNext()) {
-                File file = (File) i.next();
+            for (File file: files) {
                 try {
-                    Map serviceCtx = UtilMisc.toMap("file", file, "delimiter", delimiter, "userLogin", userLogin);
+                    Map<String, Object> serviceCtx = UtilMisc.toMap("file", file, "delimiter", delimiter, "userLogin", userLogin);
                     dispatcher.runSyncIgnore("importDelimitedEntityFile", serviceCtx);
                 } catch (GenericServiceException e) {
                     Debug.logError(e, module);
@@ -109,7 +109,7 @@
         return ServiceUtil.returnSuccess();
     }
 
-    public static Map importDelimitedFile(DispatchContext dctx, Map context) {
+    public static Map<String, Object> importDelimitedFile(DispatchContext dctx, Map<String, Object> context) {
         GenericDelegator delegator = dctx.getDelegator();
         Security security = dctx.getSecurity();
 
@@ -144,13 +144,13 @@
         long runTime = endTime - startTime;
 
         Debug.logInfo("Imported/Updated [" + records + "] from : " + file.getAbsolutePath() + " [" + runTime + "ms]", module);
-        Map result = ServiceUtil.returnSuccess();
-        result.put("records", new Integer(records));
+        Map<String, Object> result = ServiceUtil.returnSuccess();
+        result.put("records", Integer.valueOf(records));
         return result;
     }
 
-    private static List getFileList(File root) {
-        List fileList = new ArrayList();
+    private static List<File> getFileList(File root) {
+        List<File> fileList = FastList.newInstance();
 
         // check for a file list file
         File listFile = new File(root, "FILELIST.txt");
@@ -186,11 +186,10 @@
                 Debug.logInfo("Read file list : " + fileList.size() + " entities.", module);
             }
         } else {
-            File[] files = root.listFiles();
-            for (int i = 0; i < files.length; i++) {
-                String fileName = files[i].getName();
+            for (File file: root.listFiles()) {
+                String fileName = file.getName();
                 if (!fileName.startsWith("_") && fileName.endsWith(".txt")) {
-                    fileList.add(files[i]);
+                    fileList.add(file);
                 }
             }
             Debug.logInfo("No file list found; using directory order : " + fileList.size() + " entities.", module);
@@ -311,21 +310,21 @@
         if (entity == null) {
             return null;
         }
-        List modelFields = entity.getFieldsUnmodifiable();
+        List<ModelField> modelFields = entity.getFieldsUnmodifiable();
         if (modelFields == null) {
             return null;
         }
 
         String[] fieldNames = new String[modelFields.size()];
         for (int i = 0; i < modelFields.size(); i++) {
-            ModelField field = (ModelField) modelFields.get(i);
+            ModelField field = modelFields.get(i);
             fieldNames[i] = field.getName();
         }
 
         return fieldNames;
     }
 
-    public static Map rebuildAllIndexesAndKeys(DispatchContext dctx, Map context) {
+    public static Map<String, Object> rebuildAllIndexesAndKeys(DispatchContext dctx, Map<String, Object> context) {
         GenericDelegator delegator = dctx.getDelegator();
         Security security = dctx.getSecurity();
 
@@ -350,54 +349,35 @@
             Debug.logError(e, errorMessage, module);
             return ServiceUtil.returnError(errorMessage);
         }
-        Set<String> modelEntityNames = new TreeSet(modelEntities.keySet());
-
-        Iterator<String> modelEntityNameIter = null;
 
         // step 1 - remove FK indices
         Debug.logImportant("Removing all foreign key indices", module);
-        modelEntityNameIter = modelEntityNames.iterator();
-        while (modelEntityNameIter.hasNext()) {
-      	    String modelEntityName = (String) modelEntityNameIter.next();
-      	    ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName);
+        for (ModelEntity modelEntity: modelEntities.values()) {
             dbUtil.deleteForeignKeyIndices(modelEntity, messages);
         }
-        modelEntityNameIter = null;
 
         // step 2 - remove FKs
         Debug.logImportant("Removing all foreign keys", module);
-        modelEntityNameIter = modelEntityNames.iterator();
-        while (modelEntityNameIter.hasNext()) {
-      	    String modelEntityName = (String) modelEntityNameIter.next();
-      	    ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName);
+        for (ModelEntity modelEntity: modelEntities.values()) {
             dbUtil.deleteForeignKeys(modelEntity, modelEntities, messages);
         }
-        modelEntityNameIter = null;
 
         // step 3 - remove PKs
         Debug.logImportant("Removing all primary keys", module);
-        modelEntityNameIter = modelEntityNames.iterator();
-        while (modelEntityNameIter.hasNext()) {
-            String modelEntityName = (String) modelEntityNameIter.next();
-            ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName);
+        for (ModelEntity modelEntity: modelEntities.values()) {
             dbUtil.deletePrimaryKey(modelEntity, messages);
         }
-        modelEntityNameIter = null;
 
         // step 4 - remove declared indices
         Debug.logImportant("Removing all declared indices", module);
-        modelEntityNameIter = modelEntityNames.iterator();
-        while (modelEntityNameIter.hasNext()) {
-            String modelEntityName = (String) modelEntityNameIter.next();
-            ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName);
+        for (ModelEntity modelEntity: modelEntities.values()) {
             dbUtil.deleteDeclaredIndices(modelEntity, messages);
         }
-        modelEntityNameIter = null;
 
         // step 5 - repair field sizes
         if (fixSizes.booleanValue()) {
             Debug.logImportant("Updating column field size changes", module);
-            List fieldsWrongSize = FastList.newInstance();
+            List<String> fieldsWrongSize = FastList.newInstance();
             dbUtil.checkDb(modelEntities, fieldsWrongSize, messages, true, true, true, true);
             if (fieldsWrongSize.size() > 0) {
                 dbUtil.repairColumnSizeChanges(modelEntities, fieldsWrongSize, messages);
@@ -410,54 +390,38 @@
 
         // step 6 - create PKs
         Debug.logImportant("Creating all primary keys", module);
-        modelEntityNameIter = modelEntityNames.iterator();
-        while (modelEntityNameIter.hasNext()) {
-            String modelEntityName = (String) modelEntityNameIter.next();
-            ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName);
+        for (ModelEntity modelEntity: modelEntities.values()) {
             dbUtil.createPrimaryKey(modelEntity, messages);
         }
-        modelEntityNameIter = null;
 
         // step 7 - create FK indices
         Debug.logImportant("Creating all foreign key indices", module);
-        modelEntityNameIter = modelEntityNames.iterator();
-        while (modelEntityNameIter.hasNext()) {
-      	    String modelEntityName = (String) modelEntityNameIter.next();
-      	    ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName);
+        for (ModelEntity modelEntity: modelEntities.values()) {
             dbUtil.createForeignKeyIndices(modelEntity, messages);
         }
-        modelEntityNameIter = null;
 
         // step 8 - create FKs
         Debug.logImportant("Creating all foreign keys", module);
-        modelEntityNameIter = modelEntityNames.iterator();
-        while (modelEntityNameIter.hasNext()) {
-      	    String modelEntityName = (String) modelEntityNameIter.next();
-      	    ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName);
+        for (ModelEntity modelEntity: modelEntities.values()) {
             dbUtil.createForeignKeys(modelEntity, modelEntities, messages);
         }
-        modelEntityNameIter = null;
 
         // step 8 - create FKs
         Debug.logImportant("Creating all declared indices", module);
-        modelEntityNameIter = modelEntityNames.iterator();
-        while (modelEntityNameIter.hasNext()) {
-      	    String modelEntityName = (String) modelEntityNameIter.next();
-      	    ModelEntity modelEntity = (ModelEntity) modelEntities.get(modelEntityName);
+        for (ModelEntity modelEntity: modelEntities.values()) {
             dbUtil.createDeclaredIndices(modelEntity, messages);
         }
-        modelEntityNameIter = null;
 
         // step 8 - checkdb
         Debug.logImportant("Running DB check with add missing enabled", module);
         dbUtil.checkDb(modelEntities, messages, true);
         
-        Map result = ServiceUtil.returnSuccess();
+        Map<String, Object> result = ServiceUtil.returnSuccess();
         result.put("messages", messages);
         return result;
     }
     
-    public static Map unwrapByteWrappers(DispatchContext dctx, Map context) {
+    public static Map<String, Object> unwrapByteWrappers(DispatchContext dctx, Map<String, Object> context) {
         GenericDelegator delegator = dctx.getDelegator();
         String entityName = (String) context.get("entityName");
         String fieldName = (String) context.get("fieldName");

Modified: ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/DelegatorEcaHandler.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/DelegatorEcaHandler.java?rev=672897&r1=672896&r2=672897&view=diff
==============================================================================
--- ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/DelegatorEcaHandler.java (original)
+++ ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/DelegatorEcaHandler.java Mon Jun 30 13:16:55 2008
@@ -18,13 +18,13 @@
  *******************************************************************************/
 package org.ofbiz.entityext.eca;
 
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
 
 import org.ofbiz.base.util.Debug;
+import static org.ofbiz.base.util.UtilGenerics.checkList;
 import org.ofbiz.entity.GenericDelegator;
 import org.ofbiz.entity.GenericEntity;
 import org.ofbiz.entity.GenericEntityException;
@@ -35,7 +35,7 @@
 /**
  * EntityEcaUtil
  */
-public class DelegatorEcaHandler implements EntityEcaHandler {
+public class DelegatorEcaHandler implements EntityEcaHandler<EntityEcaRule> {
 
     public static final String module = DelegatorEcaHandler.class.getName();
 
@@ -56,13 +56,13 @@
         EntityEcaUtil.getEntityEcaCache(this.entityEcaReaderName);
     }
 
-    public Map getEntityEventMap(String entityName) {
-        Map ecaCache = EntityEcaUtil.getEntityEcaCache(this.entityEcaReaderName);
+    public Map<String, List<EntityEcaRule>> getEntityEventMap(String entityName) {
+        Map<String, Map<String, List<EntityEcaRule>>> ecaCache = EntityEcaUtil.getEntityEcaCache(this.entityEcaReaderName);
         if (ecaCache == null) return null;
-        return (Map) ecaCache.get(entityName);
+        return ecaCache.get(entityName);
     }
 
-    public void evalRules(String currentOperation, Map eventMap, String event, GenericEntity value, boolean isError) throws GenericEntityException {
+    public void evalRules(String currentOperation, Map<String, List<EntityEcaRule>> eventMap, String event, GenericEntity value, boolean isError) throws GenericEntityException {
         // if the eventMap is passed we save a HashMap lookup, but if not that's okay we'll just look it up now
         if (eventMap == null) eventMap = this.getEntityEventMap(value.getEntityName());
         if (eventMap == null || eventMap.size() == 0) {
@@ -70,18 +70,16 @@
             return;
         }
 
-        List rules = (List) eventMap.get(event);
+        List<EntityEcaRule> rules = eventMap.get(event);
         //Debug.logInfo("Handler.evalRules for entity " + value.getEntityName() + ", event " + event + ", num rules=" + (rules == null ? 0 : rules.size()), module);
         
         if (rules == null || rules.size() == 0) {
             return;
         }
         
-        Iterator i = rules.iterator();
-        if (i.hasNext() && Debug.verboseOn()) Debug.logVerbose("Running ECA (" + event + ").", module);
-        Set actionsRun = new TreeSet();
-        while (i.hasNext()) {
-            EntityEcaRule eca = (EntityEcaRule) i.next();
+        if (!rules.isEmpty() && Debug.verboseOn()) Debug.logVerbose("Running ECA (" + event + ").", module);
+        Set<String> actionsRun = new TreeSet<String>();
+        for (EntityEcaRule eca: rules) {
             eca.eval(currentOperation, this.dctx, value, isError, actionsRun);
         }
     }

Modified: ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaAction.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaAction.java?rev=672897&r1=672896&r2=672897&view=diff
==============================================================================
--- ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaAction.java (original)
+++ ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaAction.java Mon Jun 30 13:16:55 2008
@@ -64,12 +64,12 @@
         this.valueAttr = action.getAttribute("value-attr");
     }
 
-    public void runAction(DispatchContext dctx, Map context, GenericEntity newValue) throws GenericEntityException {
-        Map actionResult = null;
+    public void runAction(DispatchContext dctx, Map<String, ? extends Object> context, GenericEntity newValue) throws GenericEntityException {
+        Map<String, Object> actionResult = null;
         
         try {
             // pull out context parameters needed for this service.
-            Map actionContext = dctx.getModelService(serviceName).makeValid(context, ModelService.IN_PARAM);
+            Map<String, Object> actionContext = dctx.getModelService(serviceName).makeValid(context, ModelService.IN_PARAM);
             // if value-attr is specified, insert the value object in that attr name
             if (valueAttr != null && valueAttr.length() > 0) {
                 actionContext.put(valueAttr, newValue);

Modified: ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaCondition.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaCondition.java?rev=672897&r1=672896&r2=672897&view=diff
==============================================================================
--- ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaCondition.java (original)
+++ ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaCondition.java Mon Jun 30 13:16:55 2008
@@ -19,9 +19,10 @@
 package org.ofbiz.entityext.eca;
 
 import java.util.Iterator;
-import java.util.LinkedList;
 import java.util.List;
 
+import javolution.util.FastList;
+
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.ObjectType;
 import org.ofbiz.entity.GenericEntity;
@@ -83,14 +84,13 @@
         if (Debug.verboseOn()) Debug.logVerbose("Comparing : " + lhsValue + " " + operator + " " + rhsValue, module);
 
         // evaluate the condition & invoke the action(s)
-        List messages = new LinkedList();
+        List<Object> messages = FastList.newInstance();
         Boolean cond = ObjectType.doRealCompare(lhsValue, rhsValue, operator, compareType, format, messages, null, dctx.getClassLoader(), constant);
 
         // if any messages were returned send them out
         if (messages.size() > 0) {
-            Iterator m = messages.iterator();
-            while (m.hasNext()) {
-                Debug.logWarning((String) m.next(), module);
+            for (Object message: messages) {
+                Debug.logWarning((String) message, module);
             }
         }
         if (cond != null) {
@@ -102,12 +102,12 @@
 
     public String toString() {
         StringBuilder buf = new StringBuilder();
-        buf.append("[" + lhsValueName + "]");
-        buf.append("[" + operator + "]");
-        buf.append("[" + rhsValueName + "]");
-        buf.append("[" + constant + "]");
-        buf.append("[" + compareType + "]");
-        buf.append("[" + format + "]");
+        buf.append("[").append(lhsValueName).append("]");
+        buf.append("[").append(operator).append("]");
+        buf.append("[").append(rhsValueName).append("]");
+        buf.append("[").append(constant).append("]");
+        buf.append("[").append(compareType).append("]");
+        buf.append("[").append(format).append("]");
         return buf.toString();
     }
 }

Modified: ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaRule.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaRule.java?rev=672897&r1=672896&r2=672897&view=diff
==============================================================================
--- ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaRule.java (original)
+++ ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaRule.java Mon Jun 30 13:16:55 2008
@@ -45,8 +45,8 @@
     protected String operationName = null;
     protected String eventName = null;
     protected boolean runOnError = false;
-    protected List conditions = FastList.newInstance();
-    protected List actionsAndSets = FastList.newInstance();
+    protected List<EntityEcaCondition> conditions = FastList.newInstance();
+    protected List<Object> actionsAndSets = FastList.newInstance();
     protected boolean enabled = true;
 
     protected EntityEcaRule() {}
@@ -57,27 +57,20 @@
         this.eventName = eca.getAttribute("event");
         this.runOnError = "true".equals(eca.getAttribute("run-on-error"));
 
-        List condList = UtilXml.childElementList(eca, "condition");
-        Iterator ci = condList.iterator();
-        while (ci.hasNext()) {
-            conditions.add(new EntityEcaCondition((Element) ci.next(), true));
+        for (Element element: UtilXml.childElementList(eca, "condition")) {
+            conditions.add(new EntityEcaCondition(element, true));
         }
 
-        List condFList = UtilXml.childElementList(eca, "condition-field");
-        Iterator cfi = condFList.iterator();
-        while (cfi.hasNext()) {
-            conditions.add(new EntityEcaCondition((Element) cfi.next(), false));
+        for (Element element: UtilXml.childElementList(eca, "condition-field")) {
+            conditions.add(new EntityEcaCondition(element, false));
         }
 
         if (Debug.verboseOn()) Debug.logVerbose("Conditions: " + conditions, module);
 
-        Set nameSet = FastSet.newInstance();
+        Set<String> nameSet = FastSet.newInstance();
         nameSet.add("set");
         nameSet.add("action");
-        List actionAndSetList = UtilXml.childElementList(eca, nameSet);
-        Iterator si = actionAndSetList.iterator();
-        while (si.hasNext()) {
-            Element actionOrSetElement = (Element) si.next();
+        for (Element actionOrSetElement: UtilXml.childElementList(eca, nameSet)) {
             if ("action".equals(actionOrSetElement.getNodeName())) {
                 this.actionsAndSets.add(new EntityEcaAction(actionOrSetElement));
             } else {
@@ -88,7 +81,7 @@
         if (Debug.verboseOn()) Debug.logVerbose("actions and sets (intermixed): " + actionsAndSets, module);
     }
 
-    public void eval(String currentOperation, DispatchContext dctx, GenericEntity value, boolean isError, Set actionsRun) throws GenericEntityException {
+    public void eval(String currentOperation, DispatchContext dctx, GenericEntity value, boolean isError, Set<String> actionsRun) throws GenericEntityException {
         if (!enabled) {
             Debug.logInfo("Entity ECA [" + this.entityName + "] on [" + this.eventName + "] is disabled; not running.", module);
             return;
@@ -103,13 +96,11 @@
             return;
         }
         
-        Map context = FastMap.newInstance();
+        Map<String, Object> context = FastMap.newInstance();
         context.putAll(value);
 
         boolean allCondTrue = true;
-        Iterator c = conditions.iterator();
-        while (c.hasNext()) {
-            EntityEcaCondition ec = (EntityEcaCondition) c.next();
+        for (EntityEcaCondition ec: conditions) {
             if (!ec.eval(dctx, value)) {
                 allCondTrue = false;
                 break;
@@ -117,9 +108,7 @@
         }
 
         if (allCondTrue) {
-            Iterator actionsAndSetIter = actionsAndSets.iterator();
-            while (actionsAndSetIter.hasNext()) {
-                Object actionOrSet = actionsAndSetIter.next();
+            for (Object actionOrSet: actionsAndSets) {
                 if (actionOrSet instanceof EntityEcaAction) {
                     EntityEcaAction ea = (EntityEcaAction) actionOrSet;
                     // in order to enable OR logic without multiple calls to the given service,

Modified: ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaSetField.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaSetField.java?rev=672897&r1=672896&r2=672897&view=diff
==============================================================================
--- ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaSetField.java (original)
+++ ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaSetField.java Mon Jun 30 13:16:55 2008
@@ -46,7 +46,7 @@
         this.format = set.getAttribute("format");
     }
 
-    public void eval(Map context) {
+    public void eval(Map<String, Object> context) {
         if (fieldName != null) {
             // try to expand the envName
             if (UtilValidate.isEmpty(value)) {
@@ -69,19 +69,19 @@
         }
     }
 
-    protected Object format(String s, Map c) {
+    protected Object format(String s, Map<String, ? extends Object> c) {
         if (UtilValidate.isEmpty(s) || UtilValidate.isEmpty(format)) {            
             return s;
         }
 
         // string formats
         if ("append".equalsIgnoreCase(format) && envName != null) {
-            String newStr = "";
+            StringBuilder newStr = new StringBuilder();
             if (c.get(envName) != null) {
-                newStr = newStr + c.get(envName);
+                newStr.append(c.get(envName));
             }
-            newStr = newStr + s;
-            return newStr; 
+            newStr.append(s);
+            return newStr.toString(); 
         }
         if ("to-upper".equalsIgnoreCase(format)) {
             return s.toUpperCase();
@@ -90,13 +90,13 @@
             return s.toLowerCase();
         }
         if ("hash-code".equalsIgnoreCase(format)) {
-            return new Integer(s.hashCode());
+            return Integer.valueOf(s.hashCode());
         }
         if ("long".equalsIgnoreCase(format)) {
-            return new Long(s);
+            return Long.valueOf(s);
         }
         if ("double".equalsIgnoreCase(format)) {
-            return new Double(s);
+            return Double.valueOf(s);
         }
 
         // entity formats

Modified: ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java?rev=672897&r1=672896&r2=672897&view=diff
==============================================================================
--- ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java (original)
+++ ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/eca/EntityEcaUtil.java Mon Jun 30 13:16:55 2008
@@ -48,13 +48,13 @@
 
     public static final String module = EntityEcaUtil.class.getName();
 
-    public static UtilCache entityEcaReaders = new UtilCache("entity.EcaReaders", 0, 0, false);
+    public static UtilCache<String, Map<String, Map<String, List<EntityEcaRule>>>> entityEcaReaders = new UtilCache<String, Map<String, Map<String, List<EntityEcaRule>>>>("entity.EcaReaders", 0, 0, false);
 
     public static Map<String, Map<String, List<EntityEcaRule>>> getEntityEcaCache(String entityEcaReaderName) {
-        Map<String, Map<String, List<EntityEcaRule>>> ecaCache = (Map) entityEcaReaders.get(entityEcaReaderName);
+        Map<String, Map<String, List<EntityEcaRule>>> ecaCache = entityEcaReaders.get(entityEcaReaderName);
         if (ecaCache == null) {
             synchronized (EntityEcaUtil.class) {
-                ecaCache = (Map) entityEcaReaders.get(entityEcaReaderName);
+                ecaCache = entityEcaReaders.get(entityEcaReaderName);
                 if (ecaCache == null) {
                     ecaCache = FastMap.newInstance();
                     readConfig(entityEcaReaderName, ecaCache);
@@ -74,32 +74,27 @@
         return delegatorInfo.entityEcaReader;
     }
 
-    protected static void readConfig(String entityEcaReaderName, Map ecaCache) {
+    protected static void readConfig(String entityEcaReaderName, Map<String, Map<String, List<EntityEcaRule>>> ecaCache) {
         EntityEcaReaderInfo entityEcaReaderInfo = EntityConfigUtil.getEntityEcaReaderInfo(entityEcaReaderName);
         if (entityEcaReaderInfo == null) {
             Debug.logError("BAD ERROR: Could not find entity-eca-reader config with name: " + entityEcaReaderName, module);
             return;
         }
 
-        Iterator eecaResourceIter = entityEcaReaderInfo.resourceElements.iterator();
-        while (eecaResourceIter.hasNext()) {
-            Element eecaResourceElement = (Element) eecaResourceIter.next();
+        for (Element eecaResourceElement: entityEcaReaderInfo.resourceElements) {
             ResourceHandler handler = new MainResourceHandler(EntityConfigUtil.ENTITY_ENGINE_XML_FILENAME, eecaResourceElement);
             addEcaDefinitions(handler, ecaCache);
         }
 
         // get all of the component resource eca stuff, ie specified in each ofbiz-component.xml file
-        List componentResourceInfos = ComponentConfig.getAllEntityResourceInfos("eca");
-        Iterator componentResourceInfoIter = componentResourceInfos.iterator();
-        while (componentResourceInfoIter.hasNext()) {
-            ComponentConfig.EntityResourceInfo componentResourceInfo = (ComponentConfig.EntityResourceInfo) componentResourceInfoIter.next();
+        for (ComponentConfig.EntityResourceInfo componentResourceInfo: ComponentConfig.getAllEntityResourceInfos("eca")) {
             if (entityEcaReaderName.equals(componentResourceInfo.readerName)) {
                 addEcaDefinitions(componentResourceInfo.createResourceHandler(), ecaCache);
             }
         }
     }
 
-    protected static void addEcaDefinitions(ResourceHandler handler, Map ecaCache) {
+    protected static void addEcaDefinitions(ResourceHandler handler, Map<String, Map<String, List<EntityEcaRule>>> ecaCache) {
         Element rootElement = null;
         try {
             rootElement = handler.getDocument().getDocumentElement();
@@ -108,22 +103,19 @@
             return;
         }
 
-        List ecaList = UtilXml.childElementList(rootElement, "eca");
-        Iterator ecaIt = ecaList.iterator();
         int numDefs = 0;
-        while (ecaIt.hasNext()) {
-            Element e = (Element) ecaIt.next();
+        for (Element e: UtilXml.childElementList(rootElement, "eca")) {
             String entityName = e.getAttribute("entity");
             String eventName = e.getAttribute("event");
-            Map eventMap = (Map) ecaCache.get(entityName);
-            List rules = null;
+            Map<String, List<EntityEcaRule>> eventMap = ecaCache.get(entityName);
+            List<EntityEcaRule> rules = null;
             if (eventMap == null) {
                 eventMap = FastMap.newInstance();
                 rules = FastList.newInstance();
                 ecaCache.put(entityName, eventMap);
                 eventMap.put(eventName, rules);
             } else {
-                rules = (List) eventMap.get(eventName);
+                rules = eventMap.get(eventName);
                 if (rules == null) {
                     rules = FastList.newInstance();
                     eventMap.put(eventName, rules);
@@ -135,14 +127,12 @@
         Debug.logImportant("Loaded " + numDefs + " Entity ECA definitions from " + handler.getLocation() + " in loader " + handler.getLoaderName(), module);
     }
 
-    public static Collection getEntityEcaRules(GenericDelegator delegator, String entityName, String event) {
-        Map ecaCache = EntityEcaUtil.getEntityEcaCache(EntityEcaUtil.getEntityEcaReaderName(delegator.getDelegatorName()));
-        Map eventMap = (Map) ecaCache.get(entityName);
+    public static Collection<EntityEcaRule> getEntityEcaRules(GenericDelegator delegator, String entityName, String event) {
+        Map<String, Map<String, List<EntityEcaRule>>> ecaCache = EntityEcaUtil.getEntityEcaCache(EntityEcaUtil.getEntityEcaReaderName(delegator.getDelegatorName()));
+        Map<String, List<EntityEcaRule>> eventMap = ecaCache.get(entityName);
         if (eventMap != null) {
             if (event != null) {
-                return (Collection) eventMap.get(event);
-            } else {
-                return eventMap.values();
+                return eventMap.get(event);
             }
         }
         return null;

Modified: ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/permission/EntityPermissionChecker.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/permission/EntityPermissionChecker.java?rev=672897&r1=672896&r2=672897&view=diff
==============================================================================
--- ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/permission/EntityPermissionChecker.java (original)
+++ ofbiz/trunk/framework/entityext/src/org/ofbiz/entityext/permission/EntityPermissionChecker.java Mon Jun 30 13:16:55 2008
@@ -19,23 +19,24 @@
 package org.ofbiz.entityext.permission;
 
 import java.sql.Timestamp;
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Map;
+import java.util.Set;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
 import javolution.util.FastList;
+import javolution.util.FastMap;
+import javolution.util.FastSet;
 
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.StringUtil;
 import org.ofbiz.base.util.UtilDateTime;
+import static org.ofbiz.base.util.UtilGenerics.checkList;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.UtilXml;
@@ -104,15 +105,15 @@
 
     }
 
-    public boolean runPermissionCheck(Map context) {
+    public boolean runPermissionCheck(Map<String, ?> context) {
         
         boolean passed = false;
         String idString = entityIdExdr.expandString(context);
-        List entityIdList = null;
+        List<String> entityIdList = null;
         if (UtilValidate.isNotEmpty(idString)) {
             entityIdList = StringUtil.split(idString, "|");
         } else {
-            entityIdList = new ArrayList();
+            entityIdList = FastList.newInstance();
         }
         String entityName = entityNameExdr.expandString(context);
         HttpServletRequest request = (HttpServletRequest)context.get("request");
@@ -136,7 +137,7 @@
             if (!passed && displayFailCond) {
                  String errMsg =  "Permission is denied. \nThese are the conditions of which one must be met:\n"
                      + permissionConditionGetter.dumpAsText();
-                 List errorMessageList = (List)context.get("errorMessageList");
+                 List<Object> errorMessageList = checkList(context.get("errorMessageList"));
                  errorMessageList.add(errMsg);
             }
         } catch(GenericEntityException e) {
@@ -145,47 +146,47 @@
         return passed;
     }
 
-    public static Map checkPermission(GenericValue content, String statusId, GenericValue userLogin, List passedPurposes, List targetOperations, List passedRoles, GenericDelegator delegator , Security security, String entityAction) {
+    public static Map<String, Object> checkPermission(GenericValue content, String statusId, GenericValue userLogin, List<String> passedPurposes, List<String> targetOperations, List<String> passedRoles, GenericDelegator delegator , Security security, String entityAction) {
          String privilegeEnumId = null;
          return checkPermission(content, statusId, userLogin, passedPurposes, targetOperations, passedRoles, delegator, security, entityAction, privilegeEnumId, null);
     }
 
-    public static Map checkPermission(GenericValue content, String statusId,
-                                  GenericValue userLogin, List passedPurposes,
-                                  List targetOperations, List passedRoles,
+    public static Map<String, Object> checkPermission(GenericValue content, String statusId,
+                                  GenericValue userLogin, List<String> passedPurposes,
+                                  List<String> targetOperations, List<String> passedRoles,
                                   GenericDelegator delegator ,
                                   Security security, String entityAction,
                                   String privilegeEnumId, String quickCheckContentId) {
-         List statusList = null;
+         List<String> statusList = null;
          if (statusId != null) {
              statusList = StringUtil.split(statusId, "|");
          }
          return checkPermission(content, statusList, userLogin, passedPurposes, targetOperations, passedRoles, delegator, security, entityAction, privilegeEnumId, quickCheckContentId);
     }
 
-    public static Map checkPermission(GenericValue content, List statusList,
-                                  GenericValue userLogin, List passedPurposes,
-                                  List targetOperations, List passedRoles,
+    public static Map<String, Object> checkPermission(GenericValue content, List<String> statusList,
+                                  GenericValue userLogin, List<String> passedPurposes,
+                                  List<String> targetOperations, List<String> passedRoles,
                                   GenericDelegator delegator ,
                                   Security security, String entityAction,
                                   String privilegeEnumId) {
          return checkPermission(content, statusList, userLogin, passedPurposes, targetOperations, passedRoles, delegator, security, entityAction, privilegeEnumId, null);
     }
  
-    public static Map checkPermission(GenericValue content, List statusList,
-                                  GenericValue userLogin, List passedPurposes,
-                                  List targetOperations, List passedRoles,
+    public static Map<String, Object> checkPermission(GenericValue content, List<String> statusList,
+                                  GenericValue userLogin, List<String> passedPurposes,
+                                  List<String> targetOperations, List<String> passedRoles,
                                   GenericDelegator delegator ,
                                   Security security, String entityAction,
                                   String privilegeEnumId, String quickCheckContentId) {
 
-        List entityIds = new ArrayList();
+        List<Object> entityIds = FastList.newInstance();
         if (content != null) entityIds.add(content);
         if (UtilValidate.isNotEmpty(quickCheckContentId)) {
-            List quickList = StringUtil.split(quickCheckContentId, "|"); 
+            List<String> quickList = StringUtil.split(quickCheckContentId, "|"); 
             if (UtilValidate.isNotEmpty(quickList)) entityIds.addAll(quickList);
         }
-        Map results  = new HashMap();
+        Map<String, Object> results  = FastMap.newInstance();
         boolean passed = false;
         if (userLogin != null && entityAction != null) {
             passed = security.hasEntityPermission("CONTENTMGR", entityAction, userLogin);
@@ -208,7 +209,7 @@
     }
     
     
-    public static boolean checkPermissionMethod(GenericDelegator delegator, GenericValue userLogin, List targetOperationList, String entityName, List entityIdList, List purposeList, List roleList, String privilegeEnumId) throws GenericEntityException {
+    public static boolean checkPermissionMethod(GenericDelegator delegator, GenericValue userLogin, List<String> targetOperationList, String entityName, List<? extends Object> entityIdList, List<String> purposeList, List<String> roleList, String privilegeEnumId) throws GenericEntityException {
         boolean passed = false;
     
         String lcEntityName = entityName.toLowerCase();
@@ -234,7 +235,7 @@
         if (modelEntity.getField("privilegeEnumId") != null)
             hasPrivilegeField = true;
     
-        List operationEntities = null;
+        List<GenericValue> operationEntities = null;
         ModelEntity modelOperationEntity = delegator.getModelEntity(entityName + "PurposeOperation");
         if (modelOperationEntity == null) {
             modelOperationEntity = delegator.getModelEntity(entityName + "Operation");            
@@ -257,7 +258,7 @@
         
         // Get all the condition operations that could apply, rather than having to go thru 
         // entire table each time.
-        //List condList = new ArrayList();
+        //List condList = FastList.newInstance();
         //Iterator iterType = targetOperationList.iterator();
         //while (iterType.hasNext()) {
         //    String op = (String)iterType.next();
@@ -267,8 +268,8 @@
         
         EntityCondition opCond = EntityCondition.makeCondition(lcEntityName + "OperationId", EntityOperator.IN, targetOperationList);
         
-        List targetOperationEntityList = delegator.findList(modelOperationEntity.getEntityName(), opCond, null, null, null, true);
-        Map entities = new HashMap();
+        List<GenericValue> targetOperationEntityList = delegator.findList(modelOperationEntity.getEntityName(), opCond, null, null, null, true);
+        Map<String, GenericValue> entities = FastMap.newInstance();
         String pkFieldName = modelEntity.getFirstPkFieldName();
     
         //TODO: privilegeEnumId test
@@ -318,14 +319,13 @@
         // check permission for each id in passed list until success.
         // Note that "quickCheck" id come first in the list
         // Check with no roles or purposes on the chance that the permission fields contain _NA_ s.
-        List alreadyCheckedIds = new ArrayList();
-        Map purposes = new HashMap();
-        Map roles = new HashMap();
-        Iterator iter = entityIdList.iterator();
+        List alreadyCheckedIds = FastList.newInstance();
+        Map<String, List<String>> purposes = FastMap.newInstance();
+        Map<String, List<String>> roles = FastMap.newInstance();
         //List purposeList = null;
         //List roleList = null;
-        while (iter.hasNext()) {
-               GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, iter.next(), entities);
+        for (Object id: entityIdList) {
+               GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, id, entities);
              if (entity == null) continue;
                    
             String statusId = null;
@@ -351,9 +351,8 @@
         
         if (hasPurposeOp) {
             // Check with just purposes next.
-            iter = entityIdList.iterator();
-            while (iter.hasNext()) {
-                GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, iter.next(), entities);
+            for (Object id: entityIdList) {
+                GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, id, entities);
                 if (entity == null) continue;
                  
                 String entityId = entity.getString(pkFieldName);
@@ -378,12 +377,11 @@
         if (userLogin == null) return false;
     
         // Check with roles.
-        iter = entityIdList.iterator();
-        while (iter.hasNext()) {
-            GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, iter.next(), entities);
+        for (Object id: entityIdList) {
+            GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, id, entities);
             if (entity == null) continue;
             String entityId = entity.getString(pkFieldName);
-            List tmpPurposeList = (List)purposes.get(entityId);
+            List<String> tmpPurposeList = purposes.get(entityId);
             if (purposeList != null ) {
                 if (tmpPurposeList != null) {
                     purposeList.addAll(tmpPurposeList);
@@ -392,7 +390,7 @@
                 purposeList = tmpPurposeList;
             }
                 
-            List tmpRoleList = getUserRoles(entity, userLogin, delegator);
+            List<String> tmpRoleList = getUserRoles(entity, userLogin, delegator);
             if (roleList != null ) {
                 if (tmpRoleList != null) {
                     roleList.addAll(tmpRoleList);
@@ -418,22 +416,21 @@
         
         // Follow ownedEntityIds
         if (modelEntity.getField("owner" + entityName + "Id") != null) {
-            iter = entityIdList.iterator();
-            while (iter.hasNext()) {
-                GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, iter.next(), entities);
+            for (Object id: entityIdList) {
+                GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, id, entities);
                 if (entity == null) continue;
                 
                 String entityId = entity.getString(pkFieldName);
-                List ownedContentIdList = new ArrayList();
+                List<String> ownedContentIdList = FastList.newInstance();
                 getEntityOwners(delegator, entity, ownedContentIdList, "Content", "ownerContentId");
     
-                List ownedContentRoleIds = getUserRolesFromList(delegator, ownedContentIdList, partyId, "contentId", "partyId", "roleTypeId", "ContentRole");
+                List<String> ownedContentRoleIds = getUserRolesFromList(delegator, ownedContentIdList, partyId, "contentId", "partyId", "roleTypeId", "ContentRole");
                 String statusId = null;
                 if (hasStatusOp && hasStatusField) {
                     statusId = entity.getString("statusId");
                 }
                    
-                purposeList = (List)purposes.get(entityId);
+                purposeList = purposes.get(entityId);
                 passed = hasMatch(entityName, targetOperationEntityList, ownedContentRoleIds, hasPurposeOp, purposeList, hasStatusOp, statusId);
                 if (passed) break;
                
@@ -499,7 +496,7 @@
         
         return passed;
     }
-    public static boolean checkPermissionMethod(GenericDelegator delegator, String partyId,  String entityName, List entityIdList, AuxiliaryValueGetter auxiliaryValueGetter, RelatedRoleGetter relatedRoleGetter, PermissionConditionGetter permissionConditionGetter) throws GenericEntityException {
+    public static boolean checkPermissionMethod(GenericDelegator delegator, String partyId,  String entityName, List<? extends Object> entityIdList, AuxiliaryValueGetter auxiliaryValueGetter, RelatedRoleGetter relatedRoleGetter, PermissionConditionGetter permissionConditionGetter) throws GenericEntityException {
     
         permissionConditionGetter.init(delegator);
         if (Debug.verboseOn()) Debug.logVerbose(permissionConditionGetter.dumpAsText(), module);
@@ -524,8 +521,7 @@
         String pkFieldName = modelEntity.getFirstPkFieldName();
         if (Debug.infoOn()) {
         String entityIdString = "ENTITIES: ";
-        for (int i=0; i < entityIdList.size(); i++) {
-            Object obj = entityIdList.get(i);
+        for (Object obj: entityIdList) {
             if (obj instanceof GenericValue) {
                 String s = ((GenericValue)obj).getString(pkFieldName);
                 entityIdString += s + "  ";
@@ -536,13 +532,12 @@
             //if (Debug.infoOn()) Debug.logInfo(entityIdString, module);
         }
         
-        List alreadyCheckedIds = new ArrayList();
-        Map entities = new HashMap();
-        Iterator iter = entityIdList.iterator();
+        List alreadyCheckedIds = FastList.newInstance();
+        Map<String, GenericValue> entities = FastMap.newInstance();
         //List purposeList = null;
         //List roleList = null;
-        while (iter.hasNext()) {
-            GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, iter.next(), entities);
+        for (Object id: entityIdList) {
+            GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, id, entities);
             if (entity == null) continue;
             checkAncestors = false;
             passed = hasMatch(entity, permissionConditionGetter, relatedRoleGetter, null, partyId, checkAncestors);
@@ -558,9 +553,8 @@
         if (auxiliaryValueGetter != null) {
             //if (Debug.infoOn()) Debug.logInfo(auxiliaryValueGetter.dumpAsText(), module);
             // Check with just purposes next.
-            iter = entityIdList.iterator();
-            while (iter.hasNext()) {
-                GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, iter.next(), entities);
+            for (Object id: entityIdList) {
+                GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, id, entities);
                 if (entity == null) continue;
                 checkAncestors = false;
                 passed = hasMatch(entity, permissionConditionGetter, relatedRoleGetter, auxiliaryValueGetter, partyId, checkAncestors);
@@ -578,9 +572,8 @@
     
         // Check with roles.
         if (relatedRoleGetter != null) {
-            iter = entityIdList.iterator();
-            while (iter.hasNext()) {
-                GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, iter.next(), entities);
+            for (Object id: entityIdList) {
+                GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, id, entities);
                 if (entity == null) continue;
                 checkAncestors = false;
                 passed = hasMatch(entity, permissionConditionGetter, relatedRoleGetter, auxiliaryValueGetter, partyId, checkAncestors);
@@ -595,9 +588,8 @@
             return true;
         
         if (relatedRoleGetter != null) {
-            iter = entityIdList.iterator();
-            while (iter.hasNext()) {
-                GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, iter.next(), entities);
+            for (Object id: entityIdList) {
+                GenericValue entity = getNextEntity(delegator, entityName, pkFieldName, id, entities);
                 if (entity == null) continue;
                 checkAncestors = true;
                 passed = hasMatch(entity, permissionConditionGetter, relatedRoleGetter, auxiliaryValueGetter, partyId, checkAncestors);
@@ -613,11 +605,11 @@
     }
     
     
-    public static GenericValue getNextEntity(GenericDelegator delegator, String entityName, String pkFieldName, Object obj, Map entities) throws GenericEntityException {
+    public static GenericValue getNextEntity(GenericDelegator delegator, String entityName, String pkFieldName, Object obj, Map<String, GenericValue> entities) throws GenericEntityException {
         GenericValue entity = null;
         if (obj instanceof String) {
             String entityId  = (String)obj; 
-            if (entities != null) entity = (GenericValue)entities.get(entityId);
+            if (entities != null) entity = entities.get(entityId);
             
             if (entity == null) entity = delegator.findByPrimaryKeyCache(entityName,UtilMisc.toMap(pkFieldName, entityId));
         } else if (obj instanceof GenericValue) {
@@ -627,11 +619,11 @@
     }
     
     public static boolean checkHasRoleOperations(String partyId,  PermissionConditionGetter permissionConditionGetter , GenericDelegator delegator) {
-        List targetOperations = permissionConditionGetter.getOperationList();
+        List<String> targetOperations = permissionConditionGetter.getOperationList();
         return checkHasRoleOperations(partyId, targetOperations, delegator);
     }
     
-    public static boolean checkHasRoleOperations(String partyId,  List targetOperations, GenericDelegator delegator) {
+    public static boolean checkHasRoleOperations(String partyId,  List<String> targetOperations, GenericDelegator delegator) {
         //if (Debug.infoOn()) Debug.logInfo("targetOperations:" + targetOperations, module);
         //if (Debug.infoOn()) Debug.logInfo("userLoginId:" + userLoginId, module);
         if (targetOperations == null) return false;
@@ -639,11 +631,9 @@
         if (partyId != null && targetOperations.contains("HAS_USER_ROLE")) return true;
     
         boolean hasRoleOperation = false;
-        Iterator targOpIter = targetOperations.iterator();
         boolean hasNeed = false;
-        List newHasRoleList = new ArrayList();
-        while (targOpIter.hasNext()) {
-            String roleOp = (String)targOpIter.next();
+        List<String> newHasRoleList = FastList.newInstance();
+        for (String roleOp: targetOperations) {
             int idx1 = roleOp.indexOf("HAS_");
             if (idx1 == 0) {
                 String roleOp1 = roleOp.substring(4); // lop off "HAS_"
@@ -660,14 +650,10 @@
         if (hasNeed) {
             try {
                 if (UtilValidate.isNotEmpty(partyId)) {
-                    List partyRoleList = delegator.findByAndCache("PartyRole", UtilMisc.toMap("partyId", partyId));
-                    Iterator partyRoleIter = partyRoleList.iterator();
-                    while (partyRoleIter.hasNext()) {
-                        GenericValue partyRole = (GenericValue)partyRoleIter.next();
+                    List<GenericValue> partyRoleList = delegator.findByAndCache("PartyRole", UtilMisc.toMap("partyId", partyId));
+                    for (GenericValue partyRole: partyRoleList) {
                         String roleTypeId = partyRole.getString("roleTypeId");
-                        targOpIter = newHasRoleList.iterator();
-                        while (targOpIter.hasNext()) {
-                            String thisRole = (String)targOpIter.next();
+                        for (String thisRole: newHasRoleList) {
                             if (roleTypeId.indexOf(thisRole) >= 0) {
                                 hasRoleOperation = true;
                                 break;
@@ -685,7 +671,7 @@
         return hasRoleOperation;
     }
     
-    public static boolean hasMatch(String entityName, List targetOperations, List roles, boolean hasPurposeOp, List purposes, boolean hasStatusOp, String targStatusId) {
+    public static boolean hasMatch(String entityName, List<GenericValue> targetOperations, List<String> roles, boolean hasPurposeOp, List<String> purposes, boolean hasStatusOp, String targStatusId) {
         boolean isMatch = false;
         int targPrivilegeSeq = 0;
     //    if (UtilValidate.isNotEmpty(targPrivilegeEnumId) && !targPrivilegeEnumId.equals("_NA_") && !targPrivilegeEnumId.equals("_00_") ) {
@@ -693,9 +679,7 @@
             // The lookup could be a static store or it could be done on Enumeration entity.
     //    }
         String lcEntityName = entityName.toLowerCase();
-        Iterator targetOpsIter = targetOperations.iterator();
-        while (targetOpsIter.hasNext() ) {
-            GenericValue targetOp = (GenericValue)targetOpsIter.next();
+        for (GenericValue targetOp: targetOperations) {
             String testRoleTypeId = (String)targetOp.get("roleTypeId");
             String testContentPurposeTypeId = null;
             if (hasPurposeOp)
@@ -732,7 +716,7 @@
         if (Debug.verboseOn()) Debug.logVerbose("\n\nIN hasMatch: entityId:" + entityId + " partyId:" + partyId + " checkAncestors:" + checkAncestors, module);
         boolean isMatch = false;
         permissionConditionGetter.restart();
-        List auxiliaryValueList = null;
+        List<String> auxiliaryValueList = null;
         if (auxiliaryValueGetter != null) {
            auxiliaryValueGetter.init(delegator, entityId);
            auxiliaryValueList =   auxiliaryValueGetter.getList();
@@ -740,7 +724,7 @@
         } else {
             if (Debug.verboseOn()) Debug.logVerbose("NO AUX GETTER", module);
         }
-        List roleValueList = null;
+        List<String> roleValueList = null;
         if (relatedRoleGetter != null) {
             if (checkAncestors) {
                 relatedRoleGetter.initWithAncestors(delegator, entity, partyId);
@@ -780,21 +764,22 @@
     /**
      * getRelatedPurposes
      */
-    public static List getRelatedPurposes(GenericValue entity, List passedPurposes) {
+    public static List<String> getRelatedPurposes(GenericValue entity, List<String> passedPurposes) {
     
         if(entity == null) return passedPurposes;
     
-        List purposeIds = null;
+        List<String> purposeIds = null;
         if (passedPurposes == null) {
-            purposeIds = new ArrayList( );
+            purposeIds = FastList.newInstance( );
         } else {
-            purposeIds = new ArrayList( passedPurposes );
+            purposeIds = FastList.newInstance( );
+            purposeIds.addAll( passedPurposes );
         }
     
         String entityName = entity.getEntityName();
         String lcEntityName = entityName.toLowerCase();
     
-        List purposes = null;
+        List<GenericValue> purposes = null;
         try {
             purposes = entity.getRelatedCache(entityName + "Purpose");
         } catch (GenericEntityException e) {
@@ -802,10 +787,8 @@
             return purposeIds;
         }
     
-        Iterator purposesIter = purposes.iterator();
-        while (purposesIter.hasNext() ) {
-            GenericValue val = (GenericValue)purposesIter.next();
-            purposeIds.add(val.get(lcEntityName + "PurposeTypeId"));
+        for (GenericValue val: purposes) {
+            purposeIds.add((String) val.get(lcEntityName + "PurposeTypeId"));
         }
         
     
@@ -819,10 +802,10 @@
      * and returns the ones that match the user.
      * Follows group parties to see if the user is a member.
      */
-    public static List getUserRoles(GenericValue entity, GenericValue userLogin, GenericDelegator delegator) throws GenericEntityException {
+    public static List<String> getUserRoles(GenericValue entity, GenericValue userLogin, GenericDelegator delegator) throws GenericEntityException {
     
         String entityName = entity.getEntityName();
-        List roles = new ArrayList();
+        List<String> roles = FastList.newInstance();
         if(entity == null) return roles;
             // TODO: Need to use ContentManagementWorker.getAuthorContent first
     
@@ -839,13 +822,11 @@
         }
         
         String partyId = (String)userLogin.get("partyId");
-        List relatedRoles = null;
-        List tmpRelatedRoles = entity.getRelatedCache(entityName + "Role");
+        List<GenericValue> relatedRoles = null;
+        List<GenericValue> tmpRelatedRoles = entity.getRelatedCache(entityName + "Role");
         relatedRoles = EntityUtil.filterByDate(tmpRelatedRoles);
         if(relatedRoles != null ) {
-            Iterator rolesIter = relatedRoles.iterator();
-            while (rolesIter.hasNext() ) {
-                GenericValue contentRole = (GenericValue)rolesIter.next();
+            for (GenericValue contentRole: relatedRoles) {
                 String roleTypeId = (String)contentRole.get("roleTypeId");
                 String targPartyId = (String)contentRole.get("partyId");
                 if (targPartyId.equals(partyId)) {
@@ -860,7 +841,7 @@
                         party = contentRole.getRelatedOne("Party");
                         partyTypeId = (String)party.get("partyTypeId");
                         if ( partyTypeId != null && partyTypeId.equals("PARTY_GROUP") ) {
-                           HashMap map = new HashMap();
+                           Map<String, Object> map = FastMap.newInstance();
                          
                            // At some point from/thru date will need to be added
                            map.put("partyIdFrom", partyId);
@@ -883,7 +864,7 @@
     /**
      * Tests to see if the user belongs to a group
      */
-    public static boolean isGroupMember( Map partyRelationshipValues, GenericDelegator delegator ) {
+    public static boolean isGroupMember( Map<String, ?> partyRelationshipValues, GenericDelegator delegator ) {
         boolean isMember = false;
         String partyIdFrom = (String)partyRelationshipValues.get("partyIdFrom") ;
         String partyIdTo = (String)partyRelationshipValues.get("partyIdTo") ;
@@ -917,10 +898,10 @@
     
         // This method is simplified to make it work, these conditions need to be added back in.
         //List joinList = UtilMisc.toList(fromExpr, thruCond, partyFromExpr, partyToExpr, relationExpr);
-        List joinList = UtilMisc.toList( partyFromExpr, partyToExpr);
+        List<? extends EntityCondition> joinList = UtilMisc.toList( partyFromExpr, partyToExpr);
         EntityCondition condition = EntityCondition.makeCondition(joinList);
     
-        List partyRelationships = null;
+        List<GenericValue> partyRelationships = null;
         try {
             partyRelationships = delegator.findList("PartyRelationship", condition, null, null, null, false);
         } catch (GenericEntityException e) {
@@ -946,17 +927,17 @@
         public void init(GenericDelegator delegator) throws GenericEntityException;
         public void restart();
         public void setOperationList(String operationIdString);
-        public void setOperationList(List opList);
-        public List getOperationList();
+        public void setOperationList(List<String> opList);
+        public List<String> getOperationList();
         public String dumpAsText();
         public void clearList();
     }
     
     public static class StdPermissionConditionGetter implements PermissionConditionGetter {
     
-        protected List entityList;
-        protected List operationList;
-        protected ListIterator iter;
+        protected List<GenericValue> entityList;
+        protected List<String> operationList;
+        protected ListIterator<GenericValue> iter;
         protected GenericValue currentValue;
         protected String operationFieldName;
         protected String roleFieldName;
@@ -997,7 +978,7 @@
         public boolean getNext() {
             boolean hasNext = false;
             if (iter != null && iter.hasNext()) {
-                currentValue = (GenericValue)iter.next();
+                currentValue = iter.next();
                 hasNext = true;
             }
             return hasNext;
@@ -1049,16 +1030,16 @@
             }
         }
         
-        public void setOperationList(List operationList) {
+        public void setOperationList(List<String> operationList) {
             this.operationList = operationList;
         }
         
-        public List getOperationList() {
+        public List<String> getOperationList() {
             return this.operationList;
         }
         
         public void clearList() {
-            this.entityList = new ArrayList();
+            this.entityList = FastList.newInstance();
         }
         
         public void init( GenericDelegator delegator) throws GenericEntityException {
@@ -1074,8 +1055,8 @@
         }
     
         public String dumpAsText() {
-             List fieldNames = UtilMisc.toList("roleFieldName",  "auxiliaryFieldName",  "statusFieldName");
-             Map widths = UtilMisc.toMap("roleFieldName", new Integer(24), "auxiliaryFieldName", new Integer(24), "statusFieldName", new Integer(24));
+             List<String> fieldNames = UtilMisc.toList("roleFieldName",  "auxiliaryFieldName",  "statusFieldName");
+             Map<String, Integer> widths = UtilMisc.toMap("roleFieldName", Integer.valueOf(24), "auxiliaryFieldName", Integer.valueOf(24), "statusFieldName", Integer.valueOf(24));
              StringBuilder buf = new StringBuilder();
              Integer wid = null;
              
@@ -1084,27 +1065,21 @@
              buf.append(" ops:");
              buf.append(StringUtil.join(this.operationList, ","));
              buf.append("\n");
-             Iterator itFields = fieldNames.iterator();
-             while (itFields.hasNext()) {
-                 String fld = (String)itFields.next();
+             for (String fld: fieldNames) {
                  wid = (Integer)widths.get(fld);
                  buf.append(fld);  
                  for (int i=0; i < (wid.intValue() - fld.length()); i++) buf.append("^");
                  buf.append("  ");
              }
                      buf.append("\n");
-             itFields = fieldNames.iterator();
-             while (itFields.hasNext()) {
-                 String fld = (String)itFields.next();
+             for (String fld: fieldNames) {
                  wid = (Integer)widths.get(fld);
                  for (int i=0; i < wid.intValue(); i++) buf.append("-");
                  buf.append("  ");
              }
                      buf.append("\n");
              if (entityList != null) {
-                 Iterator it = this.entityList.iterator();
-                 while (it.hasNext()) {
-                     GenericValue contentPurposeOperation = (GenericValue)it.next();  
+                 for (GenericValue contentPurposeOperation: this.entityList) {
                      /*
                      String contentOperationId = contentPurposeOperation.getString(this.operationFieldName);
                      if (UtilValidate.isEmpty(contentOperationId)) {
@@ -1154,14 +1129,14 @@
     
     public interface AuxiliaryValueGetter {
         public void init(GenericDelegator delegator, String entityId) throws GenericEntityException;
-        public List getList();
+        public List<String> getList();
         public void clearList();
         public String dumpAsText();
     }
     
     public static class StdAuxiliaryValueGetter implements AuxiliaryValueGetter {
     
-        protected List entityList = new ArrayList();
+        protected List<String> entityList = FastList.newInstance();
         protected String auxiliaryFieldName;
         protected String entityName;
         protected String entityIdName;
@@ -1187,30 +1162,28 @@
             this.entityIdName = getterElement.getAttribute("entity-id-name");
         }
         
-        public List getList() {
+        public List<String> getList() {
             return entityList;
         }
         
         public void clearList() {
-            this.entityList = new ArrayList();
+            this.entityList = FastList.newInstance();
         }
         
-        public void setList(List lst) {
+        public void setList(List<String> lst) {
             this.entityList = lst;
         }
         
         public void init(GenericDelegator delegator, String entityId) throws GenericEntityException {
             
             if (this.entityList == null) {
-               this.entityList = new ArrayList(); 
+               this.entityList = FastList.newInstance(); 
             }
             if (UtilValidate.isEmpty(this.entityName)) {
                 return;   
             }
-            List values = delegator.findByAndCache(this.entityName, UtilMisc.toMap(this.entityIdName, entityId));
-            Iterator iter = values.iterator();
-            while (iter.hasNext()) {
-                GenericValue entity = (GenericValue)iter.next();
+            List<GenericValue> values = delegator.findByAndCache(this.entityName, UtilMisc.toMap(this.entityIdName, entityId));
+            for (GenericValue entity: values) {
                 this.entityList.add(entity.getString(this.auxiliaryFieldName)); 
             }
         }
@@ -1219,8 +1192,7 @@
              StringBuilder buf = new StringBuilder();
              buf.append("AUXILIARY: ");
              if (entityList != null) {
-                for (int i=0; i < entityList.size(); i++) {
-                    String val = (String)entityList.get(i);
+                 for (String val: entityList) {
                     buf.append(val);
                     buf.append("  ");
                 }
@@ -1232,16 +1204,16 @@
     public interface RelatedRoleGetter {
         public void init(GenericDelegator delegator, String entityId, String partyId, GenericValue entity) throws GenericEntityException;
         public void initWithAncestors(GenericDelegator delegator, GenericValue entity, String partyId) throws GenericEntityException;
-        public List getList();
+        public List<String> getList();
         public void clearList();
-        public void setList(List lst);
+        public void setList(List<String> lst);
         public String dumpAsText();
         public boolean isOwner(GenericValue entity, String targetPartyId);
     }
     
     public static class StdRelatedRoleGetter implements RelatedRoleGetter {
     
-        protected List roleIdList = new ArrayList();
+        protected List<String> roleIdList = FastList.newInstance();
         protected String roleTypeFieldName;
         protected String partyFieldName;
         protected String entityName;
@@ -1279,21 +1251,21 @@
             this.roleEntityIdName = getterElement.getAttribute("entity-id-name");
         }
         
-        public List getList() {
+        public List<String> getList() {
             return this.roleIdList;
         }
         
         public void clearList() {
-            this.roleIdList = new ArrayList();
+            this.roleIdList = FastList.newInstance();
         }
         
-        public void setList(List lst) {
+        public void setList(List<String> lst) {
             this.roleIdList = lst;
         }
         
         public void init(GenericDelegator delegator, String entityId, String partyId, GenericValue entity) throws GenericEntityException {
             
-            List lst = getUserRolesFromList(delegator, UtilMisc.toList(entityId), partyId, this.roleEntityIdName, 
+            List<String> lst = getUserRolesFromList(delegator, UtilMisc.toList(entityId), partyId, this.roleEntityIdName, 
                                                this.partyFieldName, this.roleTypeFieldName, this.roleEntityName);
             this.roleIdList.addAll(lst);
             if (isOwner(entity, partyId)) {
@@ -1303,10 +1275,10 @@
         
         public void initWithAncestors(GenericDelegator delegator, GenericValue entity, String partyId) throws GenericEntityException {
             
-           List ownedContentIdList = new ArrayList();
+           List<String> ownedContentIdList = FastList.newInstance();
            getEntityOwners(delegator, entity, ownedContentIdList, this.entityName, this.ownerEntityFieldName);
            if (ownedContentIdList.size() > 0) {
-               List lst = getUserRolesFromList(delegator, ownedContentIdList, partyId, this.roleEntityIdName, this.partyFieldName, this.roleTypeFieldName, this.roleEntityName);
+               List<String> lst = getUserRolesFromList(delegator, ownedContentIdList, partyId, this.roleEntityIdName, this.partyFieldName, this.roleTypeFieldName, this.roleEntityName);
                this.roleIdList.addAll(lst);
            }
         }
@@ -1345,8 +1317,7 @@
              StringBuilder buf = new StringBuilder();
              buf.append("ROLES: ");
              if (roleIdList != null) {
-                for (int i=0; i < roleIdList.size(); i++) {
-                    String val = (String)roleIdList.get(i);
+                for (String val: roleIdList) {
                     buf.append(val);
                     buf.append("  ");
                 }
@@ -1355,25 +1326,23 @@
         }
     }
 
-    public static List getUserRolesFromList(GenericDelegator delegator, List idList, String partyId, String entityIdFieldName, String partyIdFieldName, String roleTypeIdFieldName, String entityName) throws GenericEntityException {
+    public static List<String> getUserRolesFromList(GenericDelegator delegator, List<String> idList, String partyId, String entityIdFieldName, String partyIdFieldName, String roleTypeIdFieldName, String entityName) throws GenericEntityException {
         
         EntityExpr expr = EntityCondition.makeCondition(entityIdFieldName, EntityOperator.IN, idList);
         EntityExpr expr2 = EntityCondition.makeCondition(partyIdFieldName, partyId);
         EntityConditionList condList = EntityCondition.makeCondition(UtilMisc.toList(expr, expr2));
-        List roleList = delegator.findList(entityName, condList, null, null, null, true);
-        List roleListFiltered = EntityUtil.filterByDate(roleList);
-        HashSet distinctSet = new HashSet();
-        Iterator iter = roleListFiltered.iterator();
-        while (iter.hasNext()) {
-            GenericValue contentRole = (GenericValue)iter.next();
+        List<GenericValue> roleList = delegator.findList(entityName, condList, null, null, null, true);
+        List<GenericValue> roleListFiltered = EntityUtil.filterByDate(roleList);
+        Set<String> distinctSet = FastSet.newInstance();
+        for (GenericValue contentRole: roleListFiltered) {
             String roleTypeId = contentRole.getString(roleTypeIdFieldName);
             distinctSet.add(roleTypeId);
         }
-        List distinctList = Arrays.asList(distinctSet.toArray());
+        List<String> distinctList = Arrays.asList(distinctSet.toArray(new String[distinctSet.size()]));
         return distinctList;
     }
 
-    public static void getEntityOwners(GenericDelegator delegator, GenericValue entity,  List contentOwnerList, String entityName, String ownerIdFieldName) throws GenericEntityException {
+    public static void getEntityOwners(GenericDelegator delegator, GenericValue entity,  List<String> contentOwnerList, String entityName, String ownerIdFieldName) throws GenericEntityException {
 
         String ownerContentId = entity.getString(ownerIdFieldName);
         if (UtilValidate.isNotEmpty(ownerContentId)) {