You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by hi...@apache.org on 2015/01/04 19:00:41 UTC

[5/6] ant-ivy git commit: use java 5 constructs

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/report/ResolveReport.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/report/ResolveReport.java b/src/java/org/apache/ivy/core/report/ResolveReport.java
index 0f12488..7fc1df8 100644
--- a/src/java/org/apache/ivy/core/report/ResolveReport.java
+++ b/src/java/org/apache/ivy/core/report/ResolveReport.java
@@ -23,7 +23,6 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Date;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -31,6 +30,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.ivy.core.cache.ResolutionCacheManager;
+import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.descriptor.Configuration;
 import org.apache.ivy.core.module.descriptor.DefaultDependencyDescriptor;
 import org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor;
@@ -50,17 +50,16 @@ import org.apache.ivy.util.filter.Filter;
 public class ResolveReport {
     private ModuleDescriptor md;
 
-    /** String conf -> ConfigurationResolveReport report */
-    private Map confReports = new LinkedHashMap();
+    private Map<String, ConfigurationResolveReport> confReports = new LinkedHashMap<String, ConfigurationResolveReport>();
 
-    private List problemMessages = new ArrayList();
+    private List<String> problemMessages = new ArrayList<String>();
 
     /**
      * the list of all dependencies resolved, ordered from the more dependent to the less dependent
      */
-    private List/* <IvyNode> */dependencies = new ArrayList();
+    private List<IvyNode> dependencies = new ArrayList<IvyNode>();
 
-    private List/* <Artifact> */artifacts = new ArrayList();
+    private List<Artifact> artifacts = new ArrayList<Artifact>();
 
     private long resolveTime;
 
@@ -84,20 +83,20 @@ public class ResolveReport {
     }
 
     public ConfigurationResolveReport getConfigurationReport(String conf) {
-        return (ConfigurationResolveReport) confReports.get(conf);
+        return confReports.get(conf);
     }
 
     public String[] getConfigurations() {
-        return (String[]) confReports.keySet().toArray(new String[confReports.size()]);
+        return confReports.keySet().toArray(new String[confReports.size()]);
     }
 
     public boolean hasError() {
-        boolean hasError = false;
-        for (Iterator it = confReports.values().iterator(); it.hasNext() && !hasError;) {
-            ConfigurationResolveReport report = (ConfigurationResolveReport) it.next();
-            hasError |= report.hasError();
+        for (ConfigurationResolveReport report : confReports.values()) {
+            if (report.hasError()) {
+                return true;
+            }
         }
-        return hasError;
+        return false;
     }
 
     public void output(ReportOutputter[] outputters, ResolutionCacheManager cacheMgr,
@@ -112,21 +111,19 @@ public class ResolveReport {
     }
 
     public IvyNode[] getEvictedNodes() {
-        Collection all = new LinkedHashSet();
-        for (Iterator iter = confReports.values().iterator(); iter.hasNext();) {
-            ConfigurationResolveReport report = (ConfigurationResolveReport) iter.next();
+        Collection<IvyNode> all = new LinkedHashSet<IvyNode>();
+        for (ConfigurationResolveReport report : confReports.values()) {
             all.addAll(Arrays.asList(report.getEvictedNodes()));
         }
-        return (IvyNode[]) all.toArray(new IvyNode[all.size()]);
+        return all.toArray(new IvyNode[all.size()]);
     }
 
     public IvyNode[] getUnresolvedDependencies() {
-        Collection all = new LinkedHashSet();
-        for (Iterator iter = confReports.values().iterator(); iter.hasNext();) {
-            ConfigurationResolveReport report = (ConfigurationResolveReport) iter.next();
+        Collection<IvyNode> all = new LinkedHashSet<IvyNode>();
+        for (ConfigurationResolveReport report : confReports.values()) {
             all.addAll(Arrays.asList(report.getUnresolvedDependencies()));
         }
-        return (IvyNode[]) all.toArray(new IvyNode[all.size()]);
+        return all.toArray(new IvyNode[all.size()]);
     }
 
     /**
@@ -164,36 +161,32 @@ public class ResolveReport {
      */
     public ArtifactDownloadReport[] getArtifactsReports(DownloadStatus downloadStatus,
             boolean withEvicted) {
-        Collection all = new LinkedHashSet();
-        for (Iterator iter = confReports.values().iterator(); iter.hasNext();) {
-            ConfigurationResolveReport report = (ConfigurationResolveReport) iter.next();
+        Collection<ArtifactDownloadReport> all = new LinkedHashSet<ArtifactDownloadReport>();
+        for (ConfigurationResolveReport report : confReports.values()) {
             ArtifactDownloadReport[] reports = report.getArtifactsReports(downloadStatus,
                 withEvicted);
             all.addAll(Arrays.asList(reports));
         }
-        return (ArtifactDownloadReport[]) all.toArray(new ArtifactDownloadReport[all.size()]);
+        return all.toArray(new ArtifactDownloadReport[all.size()]);
     }
 
     public ArtifactDownloadReport[] getArtifactsReports(ModuleRevisionId mrid) {
-        Collection all = new LinkedHashSet();
-        for (Iterator iter = confReports.values().iterator(); iter.hasNext();) {
-            ConfigurationResolveReport report = (ConfigurationResolveReport) iter.next();
+        Collection<ArtifactDownloadReport> all = new LinkedHashSet<ArtifactDownloadReport>();
+        for (ConfigurationResolveReport report : confReports.values()) {
             all.addAll(Arrays.asList(report.getDownloadReports(mrid)));
         }
-        return (ArtifactDownloadReport[]) all.toArray(new ArtifactDownloadReport[all.size()]);
+        return all.toArray(new ArtifactDownloadReport[all.size()]);
     }
 
     public void checkIfChanged() {
-        for (Iterator iter = confReports.values().iterator(); iter.hasNext();) {
-            ConfigurationResolveReport report = (ConfigurationResolveReport) iter.next();
+        for (ConfigurationResolveReport report : confReports.values()) {
             report.checkIfChanged();
         }
     }
 
     /** Can only be called if checkIfChanged has been called */
     public boolean hasChanged() {
-        for (Iterator iter = confReports.values().iterator(); iter.hasNext();) {
-            ConfigurationResolveReport report = (ConfigurationResolveReport) iter.next();
+        for (ConfigurationResolveReport report : confReports.values()) {
             if (report.hasChanged()) {
                 return true;
             }
@@ -201,18 +194,17 @@ public class ResolveReport {
         return false;
     }
 
-    public void setProblemMessages(List problems) {
+    public void setProblemMessages(List<String> problems) {
         problemMessages = problems;
     }
 
-    public List getProblemMessages() {
+    public List<String> getProblemMessages() {
         return problemMessages;
     }
 
-    public List getAllProblemMessages() {
-        List ret = new ArrayList(problemMessages);
-        for (Iterator iter = confReports.values().iterator(); iter.hasNext();) {
-            ConfigurationResolveReport r = (ConfigurationResolveReport) iter.next();
+    public List<String> getAllProblemMessages() {
+        List<String> ret = new ArrayList<String>(problemMessages);
+        for (ConfigurationResolveReport r : confReports.values()) {
             IvyNode[] unresolved = r.getUnresolvedDependencies();
             for (int i = 0; i < unresolved.length; i++) {
                 String errMsg = unresolved[i].getProblemMessage();
@@ -230,12 +222,11 @@ public class ResolveReport {
         return ret;
     }
 
-    public void setDependencies(List dependencies, Filter artifactFilter) {
+    public void setDependencies(List<IvyNode> dependencies, Filter<Artifact> artifactFilter) {
         this.dependencies = dependencies;
         // collect list of artifacts
-        artifacts = new ArrayList();
-        for (Iterator iter = dependencies.iterator(); iter.hasNext();) {
-            IvyNode dependency = (IvyNode) iter.next();
+        artifacts = new ArrayList<Artifact>();
+        for (IvyNode dependency : dependencies) {
             if (!dependency.isCompletelyEvicted() && !dependency.hasProblem()) {
                 artifacts.addAll(Arrays.asList(dependency.getSelectedArtifacts(artifactFilter)));
             }
@@ -257,7 +248,7 @@ public class ResolveReport {
      * 
      * @return The list of all dependencies.
      */
-    public List/* <IvyNode> */getDependencies() {
+    public List<IvyNode> getDependencies() {
         return dependencies;
     }
 
@@ -267,7 +258,7 @@ public class ResolveReport {
      * 
      * @return The list of all artifacts.
      */
-    public List/* <Artifact> */getArtifacts() {
+    public List<Artifact> getArtifacts() {
         return artifacts;
     }
 
@@ -276,11 +267,10 @@ public class ResolveReport {
      * 
      * @return a list of ModuleId
      */
-    public List getModuleIds() {
-        List ret = new ArrayList();
-        List sortedDependencies = new ArrayList(dependencies);
-        for (Iterator iter = sortedDependencies.iterator(); iter.hasNext();) {
-            IvyNode dependency = (IvyNode) iter.next();
+    public List<ModuleId> getModuleIds() {
+        List<ModuleId> ret = new ArrayList<ModuleId>();
+        List<IvyNode> sortedDependencies = new ArrayList<IvyNode>(dependencies);
+        for (IvyNode dependency : sortedDependencies) {
             ModuleId mid = dependency.getResolvedId().getModuleId();
             if (!ret.contains(mid)) {
                 ret.add(mid);
@@ -408,7 +398,7 @@ public class ResolveReport {
 
         // add resolved dependencies
         for (int i = 0; i < dependencies.size(); i++) {
-            IvyNode node = (IvyNode) dependencies.get(i);
+            IvyNode node = dependencies.get(i);
             if (midToKeep != null && midToKeep.contains(node.getModuleId())) {
                 continue;
             }

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/resolve/ResolveData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/resolve/ResolveData.java b/src/java/org/apache/ivy/core/resolve/ResolveData.java
index 54cb661..f6cb9a7 100644
--- a/src/java/org/apache/ivy/core/resolve/ResolveData.java
+++ b/src/java/org/apache/ivy/core/resolve/ResolveData.java
@@ -37,7 +37,8 @@ import org.apache.ivy.util.Message;
 public class ResolveData {
     private ResolveEngine engine;
 
-    private Map visitData; // shared map of all visit data: Map (ModuleRevisionId -> VisitData)
+    // shared map of all visit data
+    private Map<ModuleRevisionId, VisitData> visitData;
 
     private ConfigurationResolveReport report;
 
@@ -55,16 +56,16 @@ public class ResolveData {
     }
 
     public ResolveData(ResolveEngine engine, ResolveOptions options) {
-        this(engine, options, null, new LinkedHashMap());
+        this(engine, options, null, new LinkedHashMap<ModuleRevisionId, VisitData>());
     }
 
     public ResolveData(ResolveEngine engine, ResolveOptions options,
             ConfigurationResolveReport report) {
-        this(engine, options, report, new LinkedHashMap());
+        this(engine, options, report, new LinkedHashMap<ModuleRevisionId, VisitData>());
     }
 
     public ResolveData(ResolveEngine engine, ResolveOptions options,
-            ConfigurationResolveReport report, Map visitData) {
+            ConfigurationResolveReport report, Map<ModuleRevisionId, VisitData> visitData) {
         this.engine = engine;
         this.report = report;
         this.visitData = visitData;
@@ -80,30 +81,28 @@ public class ResolveData {
         return visitData == null ? null : visitData.getNode();
     }
 
-    public Collection getNodes() {
-        Collection nodes = new ArrayList();
-        for (Iterator iter = visitData.values().iterator(); iter.hasNext();) {
-            VisitData vdata = (VisitData) iter.next();
+    public Collection<IvyNode> getNodes() {
+        Collection<IvyNode> nodes = new ArrayList<IvyNode>();
+        for (VisitData vdata : visitData.values()) {
             nodes.add(vdata.getNode());
         }
         return nodes;
     }
 
-    public Collection getNodeIds() {
+    public Collection<ModuleRevisionId> getNodeIds() {
         return visitData.keySet();
     }
 
     public VisitData getVisitData(ModuleRevisionId mrid) {
-        VisitData result = (VisitData) visitData.get(mrid);
+        VisitData result = visitData.get(mrid);
 
         if (result == null) {
             // search again, now ignore the missing extra attributes
-            for (Iterator it = visitData.entrySet().iterator(); it.hasNext();) {
-                Map.Entry entry = (Entry) it.next();
-                ModuleRevisionId current = (ModuleRevisionId) entry.getKey();
+            for (Entry<ModuleRevisionId, VisitData> entry : visitData.entrySet()) {
+                ModuleRevisionId current = entry.getKey();
 
                 if (isSubMap(mrid.getAttributes(), current.getAttributes())) {
-                    result = (VisitData) entry.getValue();
+                    result = entry.getValue();
                     break;
                 }
             }
@@ -115,7 +114,7 @@ public class ResolveData {
     /**
      * Checks whether one map is a sub-map of the other.
      */
-    private static boolean isSubMap(Map map1, Map map2) {
+    private static <K, V> boolean isSubMap(Map<K, V> map1, Map<K, V> map2) {
         int map1Size = map1.size();
         int map2Size = map2.size();
 
@@ -123,11 +122,10 @@ public class ResolveData {
             return map1.equals(map2);
         }
 
-        Map smallest = map1Size < map2Size ? map1 : map2;
-        Map largest = map1Size < map2Size ? map2 : map1;
+        Map<K, V> smallest = map1Size < map2Size ? map1 : map2;
+        Map<K, V> largest = map1Size < map2Size ? map2 : map1;
 
-        for (Iterator it = smallest.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Entry) it.next();
+        for (Entry<K, V> entry : smallest.entrySet()) {
 
             if (!largest.containsKey(entry.getKey())) {
                 return false;
@@ -258,9 +256,10 @@ public class ResolveData {
     }
 
     void blacklist(IvyNode node) {
-        for (Iterator iter = visitData.entrySet().iterator(); iter.hasNext();) {
-            Entry entry = (Entry) iter.next();
-            VisitData vdata = (VisitData) entry.getValue();
+        for (Iterator<Entry<ModuleRevisionId, VisitData>> iter = visitData.entrySet().iterator(); iter
+                .hasNext();) {
+            Entry<ModuleRevisionId, VisitData> entry = iter.next();
+            VisitData vdata = entry.getValue();
             if (vdata.getNode() == node && !node.getResolvedId().equals(entry.getKey())) {
                 // this visit data was associated with the blacklisted node,
                 // we discard this association
@@ -298,14 +297,13 @@ public class ResolveData {
         VisitNode current = getCurrentVisitNode();
         if (current != null) {
             // mediating dd through dependers stack
-            List dependers = new ArrayList(current.getPath());
+            List<VisitNode> dependers = new ArrayList<VisitNode>(current.getPath());
             // the returned path contains the currently visited node, we are only interested in
             // the dependers, so we remove the currently visted node from the end
             dependers.remove(dependers.size() - 1);
             // we want to apply mediation going up in the dependers stack, not the opposite
             Collections.reverse(dependers);
-            for (Iterator iterator = dependers.iterator(); iterator.hasNext();) {
-                VisitNode n = (VisitNode) iterator.next();
+            for (VisitNode n : dependers) {
                 ModuleDescriptor md = n.getDescriptor();
                 if (md != null) {
                     dd = md.mediate(dd);

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/resolve/ResolveEngine.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/resolve/ResolveEngine.java b/src/java/org/apache/ivy/core/resolve/ResolveEngine.java
index bb3bc95..33e908d 100644
--- a/src/java/org/apache/ivy/core/resolve/ResolveEngine.java
+++ b/src/java/org/apache/ivy/core/resolve/ResolveEngine.java
@@ -29,10 +29,8 @@ import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
-import java.util.ListIterator;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
@@ -88,7 +86,7 @@ public class ResolveEngine {
 
     private SortEngine sortEngine;
 
-    private Set fetchedSet = new HashSet();
+    private Set<String> fetchedSet = new HashSet<String>();
 
     private DependencyResolver dictatorResolver;
 
@@ -251,7 +249,7 @@ public class ResolveEngine {
                     .getResolvedModuleRevisionId());
             Properties props = new Properties();
             if (dependencies.length > 0) {
-                Map forcedRevisions = new HashMap();
+                Map<ModuleId, ModuleRevisionId> forcedRevisions = new HashMap<ModuleId, ModuleRevisionId>();
                 for (int i = 0; i < dependencies.length; i++) {
                     if (dependencies[i].getModuleRevision() != null
                             && dependencies[i].getModuleRevision().isForce()) {
@@ -262,8 +260,7 @@ public class ResolveEngine {
 
                 IvyNode root = dependencies[0].getRoot();
 
-                // <ModuleId,IvyNode>();
-                Map topLevelDeps = new HashMap(); //
+                Map<ModuleId, IvyNode> topLevelDeps = new HashMap<ModuleId, IvyNode>();
                 for (int i = 0; i < dependencies.length; i++) {
                     if (!dependencies[i].hasProblem()) {
                         DependencyDescriptor dd = dependencies[i].getDependencyDescriptor(root);
@@ -279,7 +276,7 @@ public class ResolveEngine {
                         DependencyDescriptor dd = dependencies[i].getDependencyDescriptor(root);
                         if (dd == null) {
                             ModuleId mid = dependencies[i].getModuleId();
-                            IvyNode tlDep = (IvyNode) topLevelDeps.get(mid);
+                            IvyNode tlDep = topLevelDeps.get(mid);
                             if (tlDep != null) {
                                 dd = tlDep.getDependencyDescriptor(root);
                             }
@@ -288,8 +285,8 @@ public class ResolveEngine {
                             ModuleRevisionId depResolvedId = dependencies[i].getResolvedId();
                             ModuleDescriptor depDescriptor = dependencies[i].getDescriptor();
                             ModuleRevisionId depRevisionId = dd.getDependencyRevisionId();
-                            ModuleRevisionId forcedRevisionId = (ModuleRevisionId) forcedRevisions
-                                    .get(dependencies[i].getModuleId());
+                            ModuleRevisionId forcedRevisionId = forcedRevisions.get(dependencies[i]
+                                    .getModuleId());
 
                             if (dependencies[i].getModuleRevision() != null
                                     && dependencies[i].getModuleRevision().isForce()
@@ -373,14 +370,14 @@ public class ResolveEngine {
         report.output(settings.getReportOutputters(), cacheMgr, options);
     }
 
-    public void downloadArtifacts(ResolveReport report, Filter artifactFilter,
+    public void downloadArtifacts(ResolveReport report, Filter<Artifact> artifactFilter,
             DownloadOptions options) {
         long start = System.currentTimeMillis();
-        IvyNode[] dependencies = (IvyNode[]) report.getDependencies().toArray(
+        IvyNode[] dependencies = report.getDependencies().toArray(
             new IvyNode[report.getDependencies().size()]);
 
-        eventManager.fireIvyEvent(new PrepareDownloadEvent((Artifact[]) report.getArtifacts()
-                .toArray(new Artifact[report.getArtifacts().size()])));
+        eventManager.fireIvyEvent(new PrepareDownloadEvent(report.getArtifacts().toArray(
+            new Artifact[report.getArtifacts().size()])));
 
         long totalSize = 0;
         for (int i = 0; i < dependencies.length; i++) {
@@ -541,7 +538,7 @@ public class ResolveEngine {
             throw new NullPointerException("module descriptor must not be null");
         }
         String[] confs = options.getConfs(md);
-        Collection missingConfs = new ArrayList();
+        Collection<String> missingConfs = new ArrayList<String>();
         for (int i = 0; i < confs.length; i++) {
             if (confs[i] == null) {
                 throw new NullPointerException("null conf not allowed: confs where: "
@@ -608,41 +605,39 @@ public class ResolveEngine {
                 }
 
                 // clean data
-                for (Iterator iter = data.getNodes().iterator(); iter.hasNext();) {
-                    IvyNode dep = (IvyNode) iter.next();
+                for (IvyNode dep : data.getNodes()) {
                     dep.clean();
                 }
             }
 
             // prune and reverse sort fectched dependencies
-            Collection nodes = data.getNodes();
+            Collection<IvyNode> nodes = data.getNodes();
             // use a Set to avoid duplicates, linked to preserve order
-            Collection dependencies = new LinkedHashSet(nodes.size());
-            for (Iterator iter = nodes.iterator(); iter.hasNext();) {
-                IvyNode node = (IvyNode) iter.next();
+            Collection<IvyNode> dependencies = new LinkedHashSet<IvyNode>(nodes.size());
+            for (IvyNode node : nodes) {
                 if (node != null && !node.isRoot() && !node.isCompletelyBlacklisted()) {
                     dependencies.add(node);
                 }
             }
-            List sortedDependencies = sortEngine.sortNodes(dependencies, SortOptions.SILENT);
+            List<IvyNode> sortedDependencies = sortEngine.sortNodes(dependencies,
+                SortOptions.SILENT);
             Collections.reverse(sortedDependencies);
 
             handleTransiviteEviction(md, confs, data, sortedDependencies);
 
-            return (IvyNode[]) dependencies.toArray(new IvyNode[dependencies.size()]);
+            return dependencies.toArray(new IvyNode[dependencies.size()]);
         } finally {
             IvyContext.popContext();
         }
     }
 
     private void handleTransiviteEviction(ModuleDescriptor md, String[] confs, ResolveData data,
-            List sortedDependencies) {
+            List<IvyNode> sortedDependencies) {
         // handle transitive eviction now:
         // if a module has been evicted then all its dependencies required only by it should be
         // evicted too. Since nodes are now sorted from the more dependent to the less one, we
         // can traverse the list and check only the direct parent and not all the ancestors
-        for (ListIterator iter = sortedDependencies.listIterator(); iter.hasNext();) {
-            IvyNode node = (IvyNode) iter.next();
+        for (IvyNode node : sortedDependencies) {
             if (!node.isCompletelyEvicted()) {
                 for (int i = 0; i < confs.length; i++) {
                     IvyNodeCallers.Caller[] callers = node.getCallers(confs[i]);
@@ -740,8 +735,7 @@ public class ResolveEngine {
             // update selected nodes with confs asked in evicted one
             EvictionData ed = node.getEvictedData();
             if (ed.getSelected() != null) {
-                for (Iterator iter = ed.getSelected().iterator(); iter.hasNext();) {
-                    IvyNode selected = (IvyNode) iter.next();
+                for (IvyNode selected : ed.getSelected()) {
                     if (!selected.isLoaded()) {
                         // the node is not yet loaded, we can simply update its set of
                         // configurations to fetch
@@ -793,9 +787,8 @@ public class ResolveEngine {
 
         // now we can actually resolve this configuration dependencies
         if (!isDependenciesFetched(node.getNode(), conf) && node.isTransitive()) {
-            Collection/* <VisitNode> */dependencies = node.getDependencies(conf);
-            for (Iterator iter = dependencies.iterator(); iter.hasNext();) {
-                VisitNode dep = (VisitNode) iter.next();
+            Collection<VisitNode> dependencies = node.getDependencies(conf);
+            for (VisitNode dep : dependencies) {
                 dep.useRealNode(); // the node may have been resolved to another real one while
                 // resolving other deps
                 String[] confs = dep.getRequiredConfigurations(node, conf);
@@ -853,7 +846,7 @@ public class ResolveEngine {
     }
 
     private void resolveConflict(VisitNode node, String conf) {
-        resolveConflict(node, node.getParent(), conf, Collections.EMPTY_SET);
+        resolveConflict(node, node.getParent(), conf, Collections.<IvyNode> emptySet());
     }
 
     /**
@@ -870,7 +863,7 @@ public class ResolveEngine {
      * @return true if conflict resolution has been done, false it can't be done yet
      */
     private boolean resolveConflict(VisitNode node, VisitNode ancestor, String conf,
-            Collection toevict) {
+            Collection<IvyNode> toevict) {
         if (ancestor == null || node == ancestor) {
             return true;
         }
@@ -907,15 +900,16 @@ public class ResolveEngine {
         }
 
         // compute conflicts
-        Set resolvedNodes = ancestor.getNode().getResolvedNodes(node.getModuleId(),
+        Set<IvyNode> resolvedNodes = ancestor.getNode().getResolvedNodes(node.getModuleId(),
             node.getRootModuleConf());
         resolvedNodes.addAll(ancestor.getNode().getPendingConflicts(node.getRootModuleConf(),
             node.getModuleId()));
-        Collection conflicts = computeConflicts(node, ancestor, conf, toevict, resolvedNodes);
+        Collection<IvyNode> conflicts = computeConflicts(node, ancestor, conf, toevict,
+            resolvedNodes);
 
         ConflictManager conflictManager = ancestor.getNode().getConflictManager(node.getModuleId());
 
-        Collection resolved = resolveConflicts(node, ancestor, conflicts, conflictManager);
+        Collection<IvyNode> resolved = resolveConflicts(node, ancestor, conflicts, conflictManager);
 
         if (resolved == null) {
             if (debugConflictResolution) {
@@ -939,8 +933,7 @@ public class ResolveEngine {
             toevict = resolvedNodes;
             toevict.removeAll(resolved);
 
-            for (Iterator iter = toevict.iterator(); iter.hasNext();) {
-                IvyNode te = (IvyNode) iter.next();
+            for (IvyNode te : toevict) {
                 te.markEvicted(node.getRootModuleConf(), ancestor.getNode(), conflictManager,
                     resolved);
 
@@ -956,14 +949,14 @@ public class ResolveEngine {
             ancestor.getNode().setResolvedNodes(node.getModuleId(), node.getRootModuleConf(),
                 resolved);
 
-            Collection evicted = new HashSet(ancestor.getNode().getEvictedNodes(node.getModuleId(),
-                node.getRootModuleConf()));
+            Collection<IvyNode> evicted = new HashSet<IvyNode>(ancestor.getNode().getEvictedNodes(
+                node.getModuleId(), node.getRootModuleConf()));
             evicted.removeAll(resolved);
             evicted.addAll(toevict);
             ancestor.getNode().setEvictedNodes(node.getModuleId(), node.getRootModuleConf(),
                 evicted);
             ancestor.getNode().setPendingConflicts(node.getModuleId(), node.getRootModuleConf(),
-                Collections.EMPTY_SET);
+                Collections.<IvyNode> emptySet());
 
             return resolveConflict(node, ancestor.getParent(), conf, toevict);
         } else {
@@ -977,8 +970,8 @@ public class ResolveEngine {
 
             // it's time to update parent resolved and evicted with what was found
 
-            Collection evicted = new HashSet(ancestor.getNode().getEvictedNodes(node.getModuleId(),
-                node.getRootModuleConf()));
+            Collection<IvyNode> evicted = new HashSet<IvyNode>(ancestor.getNode().getEvictedNodes(
+                node.getModuleId(), node.getRootModuleConf()));
             toevict.removeAll(resolved);
             evicted.removeAll(resolved);
             evicted.addAll(toevict);
@@ -986,7 +979,7 @@ public class ResolveEngine {
             ancestor.getNode().setEvictedNodes(node.getModuleId(), node.getRootModuleConf(),
                 evicted);
             ancestor.getNode().setPendingConflicts(node.getModuleId(), node.getRootModuleConf(),
-                Collections.EMPTY_SET);
+                Collections.<IvyNode> emptySet());
 
             node.markEvicted(ancestor, conflictManager, resolved);
             if (debugConflictResolution) {
@@ -994,14 +987,13 @@ public class ResolveEngine {
             }
 
             // if resolved changed we have to go up in the graph
-            Collection prevResolved = ancestor.getNode().getResolvedNodes(node.getModuleId(),
-                node.getRootModuleConf());
+            Collection<IvyNode> prevResolved = ancestor.getNode().getResolvedNodes(
+                node.getModuleId(), node.getRootModuleConf());
             boolean solved = true;
             if (!prevResolved.equals(resolved)) {
                 ancestor.getNode().setResolvedNodes(node.getModuleId(), node.getRootModuleConf(),
                     resolved);
-                for (Iterator iter = resolved.iterator(); iter.hasNext();) {
-                    IvyNode sel = (IvyNode) iter.next();
+                for (IvyNode sel : resolved) {
                     if (!prevResolved.contains(sel)) {
                         solved &= resolveConflict(node.gotoNode(sel), ancestor.getParent(), conf,
                             toevict);
@@ -1012,8 +1004,8 @@ public class ResolveEngine {
         }
     }
 
-    private Collection resolveConflicts(VisitNode node, VisitNode ancestor, Collection conflicts,
-            ConflictManager conflictManager) {
+    private Collection<IvyNode> resolveConflicts(VisitNode node, VisitNode ancestor,
+            Collection<IvyNode> conflicts, ConflictManager conflictManager) {
         if (node.getParent() != ancestor
         // we are not handling the direct parent
 
@@ -1064,9 +1056,9 @@ public class ResolveEngine {
      * @return a collection of IvyNode which may be in conflict with the given node in the given
      *         ancestor. This collection always contain at least the given node.
      */
-    private Collection computeConflicts(VisitNode node, VisitNode ancestor, String conf,
-            Collection toevict, Collection selectedNodes) {
-        Collection conflicts = new LinkedHashSet();
+    private Collection<IvyNode> computeConflicts(VisitNode node, VisitNode ancestor, String conf,
+            Collection<IvyNode> toevict, Collection<IvyNode> selectedNodes) {
+        Collection<IvyNode> conflicts = new LinkedHashSet<IvyNode>();
         conflicts.add(node.getNode());
         /*
          * We first try to remove all evicted nodes from the collection of selected nodes to update
@@ -1087,11 +1079,11 @@ public class ResolveEngine {
             data.setCurrentVisitNode(ancestor);
             try {
                 // In this case we need to compute selected nodes again.
-                Collection deps = ancestor.getNode().getDependencies(node.getRootModuleConf(),
+                Collection<IvyNode> deps = ancestor.getNode().getDependencies(
+                    node.getRootModuleConf(),
                     ancestor.getNode().getConfigurations(node.getRootModuleConf()),
                     ancestor.getRequestedConf());
-                for (Iterator iter = deps.iterator(); iter.hasNext();) {
-                    IvyNode dep = (IvyNode) iter.next();
+                for (IvyNode dep : deps) {
                     if (dep.getModuleId().equals(node.getModuleId())) {
                         conflicts.add(dep);
                     }
@@ -1108,12 +1100,11 @@ public class ResolveEngine {
              * the parent direct dependencies in current root module conf.
              */
             VisitNode parent = node.getParent();
-            Collection parentDepIvyNodes = parent.getNode().getDependencies(
+            Collection<IvyNode> parentDepIvyNodes = parent.getNode().getDependencies(
                 node.getRootModuleConf(),
                 parent.getNode().getConfigurations(node.getRootModuleConf()),
                 parent.getRequestedConf());
-            for (Iterator it = parentDepIvyNodes.iterator(); it.hasNext();) {
-                IvyNode parentDep = (IvyNode) it.next();
+            for (IvyNode parentDep : parentDepIvyNodes) {
                 if (parentDep.getModuleId().equals(node.getModuleId())) {
                     conflicts.add(parentDep);
                 }

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/resolve/ResolveOptions.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/resolve/ResolveOptions.java b/src/java/org/apache/ivy/core/resolve/ResolveOptions.java
index 9ffe43f..b872b4c 100644
--- a/src/java/org/apache/ivy/core/resolve/ResolveOptions.java
+++ b/src/java/org/apache/ivy/core/resolve/ResolveOptions.java
@@ -20,6 +20,7 @@ package org.apache.ivy.core.resolve;
 import java.util.Date;
 
 import org.apache.ivy.core.LogOptions;
+import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
 import org.apache.ivy.core.module.id.ModuleId;
 import org.apache.ivy.util.ConfigurationUtils;
@@ -100,7 +101,7 @@ public class ResolveOptions extends LogOptions {
     /**
      * A filter to use to avoid downloading all artifacts.
      */
-    private Filter artifactFilter = FilterHelper.NO_FILTER;
+    private Filter<Artifact> artifactFilter = FilterHelper.NO_FILTER;
 
     /**
      * The resolve mode to use. Should be one of {@link #RESOLVEMODES}, or <code>null</code> to use
@@ -140,11 +141,11 @@ public class ResolveOptions extends LogOptions {
         checkIfChanged = options.checkIfChanged;
     }
 
-    public Filter getArtifactFilter() {
+    public Filter<Artifact> getArtifactFilter() {
         return artifactFilter;
     }
 
-    public ResolveOptions setArtifactFilter(Filter artifactFilter) {
+    public ResolveOptions setArtifactFilter(Filter<Artifact> artifactFilter) {
         this.artifactFilter = artifactFilter;
         return this;
     }

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/resolve/VisitData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/resolve/VisitData.java b/src/java/org/apache/ivy/core/resolve/VisitData.java
index 16a10ab..3beb877 100644
--- a/src/java/org/apache/ivy/core/resolve/VisitData.java
+++ b/src/java/org/apache/ivy/core/resolve/VisitData.java
@@ -38,7 +38,7 @@ public class VisitData {
      * The associated visit nodes, per rootModuleConf Note that the value is a List, because a node
      * can be visited from several parents during the resolution process
      */
-    private Map visitNodes = new HashMap(); // Map (String rootModuleConf -> List(VisitNode))
+    private Map<String, List<VisitNode>> visitNodes = new HashMap<String, List<VisitNode>>();
 
     public VisitData(IvyNode node) {
         this.node = node;
@@ -49,10 +49,10 @@ public class VisitData {
         getVisitNodes(rootModuleConf).add(node);
     }
 
-    public List getVisitNodes(String rootModuleConf) {
-        List visits = (List) visitNodes.get(rootModuleConf);
+    public List<VisitNode> getVisitNodes(String rootModuleConf) {
+        List<VisitNode> visits = visitNodes.get(rootModuleConf);
         if (visits == null) {
-            visits = new ArrayList();
+            visits = new ArrayList<VisitNode>();
             visitNodes.put(rootModuleConf, visits);
         }
         return visits;
@@ -66,7 +66,7 @@ public class VisitData {
         this.node = node;
     }
 
-    public void addVisitNodes(String rootModuleConf, List visitNodes) {
+    public void addVisitNodes(String rootModuleConf, List<VisitNode> visitNodes) {
         getVisitNodes(rootModuleConf).addAll(visitNodes);
     }
 }

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/resolve/VisitNode.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/resolve/VisitNode.java b/src/java/org/apache/ivy/core/resolve/VisitNode.java
index 1547a40..ff2d5a1 100644
--- a/src/java/org/apache/ivy/core/resolve/VisitNode.java
+++ b/src/java/org/apache/ivy/core/resolve/VisitNode.java
@@ -21,7 +21,6 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
 
@@ -70,7 +69,7 @@ public class VisitNode {
      * Direct path from root to this node. Note that the colleciton is ordered but is not a list
      * implementation This collection is null until it is required, see getPath
      */
-    private Collection path = null; // Collection(VisitNode)
+    private Collection<VisitNode> path = null;
 
     /**
      * The configuration of the parent module in the current visit
@@ -159,16 +158,16 @@ public class VisitNode {
      * 
      * @return
      */
-    public Collection/* <VisitNode> */getPath() {
+    public Collection<VisitNode> getPath() {
         if (path == null) {
             path = computePath();
         }
         return path;
     }
 
-    private Collection/* <VisitNode> */computePath() {
+    private Collection<VisitNode> computePath() {
         if (parent != null) {
-            Collection p = new LinkedHashSet(parent.getPath());
+            Collection<VisitNode> p = new LinkedHashSet<VisitNode>(parent.getPath());
             p.add(this);
             return p;
         } else {
@@ -200,7 +199,7 @@ public class VisitNode {
 
     public static VisitNode getRoot(VisitNode parent) {
         VisitNode root = parent;
-        Collection path = new HashSet();
+        Collection<VisitNode> path = new HashSet<VisitNode>();
         path.add(root);
         while (root.getParent() != null && !root.getNode().isRoot()) {
             if (path.contains(root.getParent())) {
@@ -309,11 +308,10 @@ public class VisitNode {
         return loaded;
     }
 
-    public Collection/* <VisitNode> */getDependencies(String conf) {
-        Collection/* <IvyNode> */deps = node.getDependencies(rootModuleConf, conf, requestedConf);
-        Collection/* <VisitNode> */ret = new ArrayList(deps.size());
-        for (Iterator iter = deps.iterator(); iter.hasNext();) {
-            IvyNode depNode = (IvyNode) iter.next();
+    public Collection<VisitNode> getDependencies(String conf) {
+        Collection<IvyNode> deps = node.getDependencies(rootModuleConf, conf, requestedConf);
+        Collection<VisitNode> ret = new ArrayList<VisitNode>(deps.size());
+        for (IvyNode depNode : deps) {
             ret.add(traverseChild(conf, depNode));
         }
         return ret;
@@ -336,9 +334,8 @@ public class VisitNode {
         }
         VisitData visitData = data.getVisitData(node.getId());
         if (visitData != null) {
-            List visitNodes = visitData.getVisitNodes(rootModuleConf);
-            for (Iterator iter = visitNodes.iterator(); iter.hasNext();) {
-                VisitNode vnode = (VisitNode) iter.next();
+            List<VisitNode> visitNodes = visitData.getVisitNodes(rootModuleConf);
+            for (VisitNode vnode : visitNodes) {
                 if ((parent == null && vnode.getParent() == null)
                         || (parent != null && parent.getId().equals(vnode.getParent().getId()))) {
                     vnode.parentConf = parentConf;
@@ -371,11 +368,10 @@ public class VisitNode {
         return new VisitNode(data, node, parent, rootModuleConf, parentConf, usage);
     }
 
-    private ModuleRevisionId[] toMrids(Collection path, ModuleRevisionId last) {
+    private ModuleRevisionId[] toMrids(Collection<VisitNode> path, ModuleRevisionId last) {
         ModuleRevisionId[] ret = new ModuleRevisionId[path.size() + 1];
         int i = 0;
-        for (Iterator iter = path.iterator(); iter.hasNext(); i++) {
-            VisitNode node = (VisitNode) iter.next();
+        for (VisitNode node : path) {
             ret[i] = node.getNode().getId();
         }
         ret[ret.length - 1] = last;
@@ -386,7 +382,7 @@ public class VisitNode {
         return node.getResolvedId();
     }
 
-    public void updateConfsToFetch(Collection confs) {
+    public void updateConfsToFetch(Collection<String> confs) {
         node.updateConfsToFetch(confs);
     }
 
@@ -432,8 +428,7 @@ public class VisitNode {
             if (parent != null) {
                 isCircular = Boolean.FALSE; // asumme it's false, and see if it isn't by checking
                 // the parent path
-                for (Iterator iter = parent.getPath().iterator(); iter.hasNext();) {
-                    VisitNode ancestor = (VisitNode) iter.next();
+                for (VisitNode ancestor : parent.getPath()) {
                     if (getId().getModuleId().equals(ancestor.getId().getModuleId())) {
                         isCircular = Boolean.TRUE;
                         break;
@@ -458,7 +453,7 @@ public class VisitNode {
         return node.getModuleId();
     }
 
-    public Collection getResolvedRevisions(ModuleId mid) {
+    public Collection<ModuleRevisionId> getResolvedRevisions(ModuleId mid) {
         return node.getResolvedRevisions(mid, rootModuleConf);
     }
 
@@ -481,7 +476,8 @@ public class VisitNode {
      * @param selected
      *            a Collection of {@link IvyNode} which have been selected
      */
-    public void markEvicted(VisitNode parent, ConflictManager conflictMgr, Collection selected) {
+    public void markEvicted(VisitNode parent, ConflictManager conflictMgr,
+            Collection<IvyNode> selected) {
         node.markEvicted(rootModuleConf, parent.getNode(), conflictMgr, selected);
     }
 
@@ -493,7 +489,7 @@ public class VisitNode {
         return node.getEvictionDataInRoot(rootModuleConf, ancestor.getNode());
     }
 
-    public Collection getEvictedRevisions(ModuleId moduleId) {
+    public Collection<ModuleRevisionId> getEvictedRevisions(ModuleId moduleId) {
         return node.getEvictedRevisions(moduleId, rootModuleConf);
     }
 
@@ -508,6 +504,7 @@ public class VisitNode {
     // rootModuleConf = rootModuleConf;
     // }
 
+    @Override
     public String toString() {
         return node.toString();
     }

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/search/SearchEngine.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/search/SearchEngine.java b/src/java/org/apache/ivy/core/search/SearchEngine.java
index 84c2443..b35ee92 100644
--- a/src/java/org/apache/ivy/core/search/SearchEngine.java
+++ b/src/java/org/apache/ivy/core/search/SearchEngine.java
@@ -22,7 +22,6 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -56,125 +55,119 @@ public class SearchEngine {
      * @param otherTokenValues
      * @return
      */
-    public String[] listTokenValues(String token, Map otherTokenValues) {
-        Set entries = new LinkedHashSet();
+    public String[] listTokenValues(String token, Map<String, Object> otherTokenValues) {
+        Set<String> entries = new LinkedHashSet<String>();
 
-        for (Iterator iter = settings.getResolvers().iterator(); iter.hasNext();) {
-            DependencyResolver resolver = (DependencyResolver) iter.next();
-            Map[] values = resolver.listTokenValues(new String[] {token}, otherTokenValues);
+        for (DependencyResolver resolver : settings.getResolvers()) {
+            Map<String, String>[] values = resolver.listTokenValues(new String[] {token},
+                otherTokenValues);
             for (int i = 0; i < values.length; i++) {
                 entries.add(values[i].get(token));
             }
         }
 
-        return (String[]) entries.toArray(new String[entries.size()]);
+        return entries.toArray(new String[entries.size()]);
     }
 
     public OrganisationEntry[] listOrganisationEntries() {
-        Set entries = new HashSet();
+        Set<OrganisationEntry> entries = new HashSet<OrganisationEntry>();
 
-        for (Iterator iter = settings.getResolvers().iterator(); iter.hasNext();) {
-            DependencyResolver resolver = (DependencyResolver) iter.next();
-            Map[] orgs = resolver.listTokenValues(new String[] {IvyPatternHelper.ORGANISATION_KEY},
-                new HashMap());
+        for (DependencyResolver resolver : settings.getResolvers()) {
+            Map<String, String>[] orgs = resolver.listTokenValues(
+                new String[] {IvyPatternHelper.ORGANISATION_KEY}, new HashMap<String, Object>());
             for (int i = 0; i < orgs.length; i++) {
-                String org = (String) orgs[i].get(IvyPatternHelper.ORGANISATION_KEY);
+                String org = orgs[i].get(IvyPatternHelper.ORGANISATION_KEY);
                 entries.add(new OrganisationEntry(resolver, org));
             }
         }
 
-        return (OrganisationEntry[]) entries.toArray(new OrganisationEntry[entries.size()]);
+        return entries.toArray(new OrganisationEntry[entries.size()]);
     }
 
     public String[] listOrganisations() {
-        Set entries = new HashSet();
+        Set<String> entries = new HashSet<String>();
 
-        for (Iterator iter = settings.getResolvers().iterator(); iter.hasNext();) {
-            DependencyResolver resolver = (DependencyResolver) iter.next();
-            Map[] orgs = resolver.listTokenValues(new String[] {IvyPatternHelper.ORGANISATION_KEY},
-                new HashMap());
+        for (DependencyResolver resolver : settings.getResolvers()) {
+            Map<String, String>[] orgs = resolver.listTokenValues(
+                new String[] {IvyPatternHelper.ORGANISATION_KEY}, new HashMap<String, Object>());
             for (int i = 0; i < orgs.length; i++) {
                 entries.add(orgs[i].get(IvyPatternHelper.ORGANISATION_KEY));
             }
         }
 
-        return (String[]) entries.toArray(new String[entries.size()]);
+        return entries.toArray(new String[entries.size()]);
     }
 
     public ModuleEntry[] listModuleEntries(OrganisationEntry org) {
-        Set entries = new HashSet();
+        Set<ModuleEntry> entries = new HashSet<ModuleEntry>();
 
-        Map tokenValues = new HashMap();
+        Map<String, Object> tokenValues = new HashMap<String, Object>();
         tokenValues.put(IvyPatternHelper.ORGANISATION_KEY, org.getOrganisation());
 
-        for (Iterator iter = settings.getResolvers().iterator(); iter.hasNext();) {
-            DependencyResolver resolver = (DependencyResolver) iter.next();
-            Map[] modules = resolver.listTokenValues(new String[] {IvyPatternHelper.MODULE_KEY},
-                tokenValues);
+        for (DependencyResolver resolver : settings.getResolvers()) {
+            Map<String, String>[] modules = resolver.listTokenValues(
+                new String[] {IvyPatternHelper.MODULE_KEY}, tokenValues);
             for (int i = 0; i < modules.length; i++) {
-                String module = (String) modules[i].get(IvyPatternHelper.MODULE_KEY);
+                String module = modules[i].get(IvyPatternHelper.MODULE_KEY);
                 entries.add(new ModuleEntry(org, module));
             }
         }
 
-        return (ModuleEntry[]) entries.toArray(new ModuleEntry[entries.size()]);
+        return entries.toArray(new ModuleEntry[entries.size()]);
     }
 
     public String[] listModules(String org) {
-        Set entries = new HashSet();
+        Set<String> entries = new HashSet<String>();
 
-        Map tokenValues = new HashMap();
+        Map<String, Object> tokenValues = new HashMap<String, Object>();
         tokenValues.put(IvyPatternHelper.ORGANISATION_KEY, org);
 
-        for (Iterator iter = settings.getResolvers().iterator(); iter.hasNext();) {
-            DependencyResolver resolver = (DependencyResolver) iter.next();
-            Map[] modules = resolver.listTokenValues(new String[] {IvyPatternHelper.MODULE_KEY},
-                tokenValues);
+        for (DependencyResolver resolver : settings.getResolvers()) {
+            Map<String, String>[] modules = resolver.listTokenValues(
+                new String[] {IvyPatternHelper.MODULE_KEY}, tokenValues);
             for (int i = 0; i < modules.length; i++) {
                 entries.add(modules[i].get(IvyPatternHelper.MODULE_KEY));
             }
         }
 
-        return (String[]) entries.toArray(new String[entries.size()]);
+        return entries.toArray(new String[entries.size()]);
     }
 
     public RevisionEntry[] listRevisionEntries(ModuleEntry module) {
-        Set entries = new HashSet();
+        Set<RevisionEntry> entries = new HashSet<RevisionEntry>();
 
-        Map tokenValues = new HashMap();
+        Map<String, Object> tokenValues = new HashMap<String, Object>();
         tokenValues.put(IvyPatternHelper.ORGANISATION_KEY, module.getOrganisation());
         tokenValues.put(IvyPatternHelper.MODULE_KEY, module.getModule());
 
-        for (Iterator iter = settings.getResolvers().iterator(); iter.hasNext();) {
-            DependencyResolver resolver = (DependencyResolver) iter.next();
-            Map[] revisions = resolver.listTokenValues(
+        for (DependencyResolver resolver : settings.getResolvers()) {
+            Map<String, String>[] revisions = resolver.listTokenValues(
                 new String[] {IvyPatternHelper.REVISION_KEY}, tokenValues);
             for (int i = 0; i < revisions.length; i++) {
-                String revision = (String) revisions[i].get(IvyPatternHelper.REVISION_KEY);
+                String revision = revisions[i].get(IvyPatternHelper.REVISION_KEY);
                 entries.add(new RevisionEntry(module, revision));
             }
         }
 
-        return (RevisionEntry[]) entries.toArray(new RevisionEntry[entries.size()]);
+        return entries.toArray(new RevisionEntry[entries.size()]);
     }
 
     public String[] listRevisions(String org, String module) {
-        Set entries = new HashSet();
+        Set<String> entries = new HashSet<String>();
 
-        Map tokenValues = new HashMap();
+        Map<String, Object> tokenValues = new HashMap<String, Object>();
         tokenValues.put(IvyPatternHelper.ORGANISATION_KEY, org);
         tokenValues.put(IvyPatternHelper.MODULE_KEY, module);
 
-        for (Iterator iter = settings.getResolvers().iterator(); iter.hasNext();) {
-            DependencyResolver resolver = (DependencyResolver) iter.next();
-            Map[] revisions = resolver.listTokenValues(
+        for (DependencyResolver resolver : settings.getResolvers()) {
+            Map<String, String>[] revisions = resolver.listTokenValues(
                 new String[] {IvyPatternHelper.REVISION_KEY}, tokenValues);
             for (int i = 0; i < revisions.length; i++) {
                 entries.add(revisions[i].get(IvyPatternHelper.REVISION_KEY));
             }
         }
 
-        return (String[]) entries.toArray(new String[entries.size()]);
+        return entries.toArray(new String[entries.size()]);
     }
 
     /**
@@ -189,9 +182,9 @@ public class SearchEngine {
      * @return
      */
     public ModuleId[] listModules(ModuleId moduleCrit, PatternMatcher matcher) {
-        List ret = new ArrayList();
+        List<ModuleId> ret = new ArrayList<ModuleId>();
 
-        Map criteria = new HashMap();
+        Map<String, Object> criteria = new HashMap<String, Object>();
         addMatcher(matcher, moduleCrit.getOrganisation(), criteria,
             IvyPatternHelper.ORGANISATION_KEY);
         addMatcher(matcher, moduleCrit.getName(), criteria, IvyPatternHelper.MODULE_KEY);
@@ -199,19 +192,18 @@ public class SearchEngine {
         String[] tokensToList = new String[] {IvyPatternHelper.ORGANISATION_KEY,
                 IvyPatternHelper.MODULE_KEY};
 
-        for (Iterator iter = settings.getResolvers().iterator(); iter.hasNext();) {
-            DependencyResolver resolver = (DependencyResolver) iter.next();
-            Map[] moduleIdAsMap = resolver.listTokenValues(tokensToList, criteria);
+        for (DependencyResolver resolver : settings.getResolvers()) {
+            Map<String, String>[] moduleIdAsMap = resolver.listTokenValues(tokensToList, criteria);
             for (int i = 0; i < moduleIdAsMap.length; i++) {
-                String org = (String) moduleIdAsMap[i].get(IvyPatternHelper.ORGANISATION_KEY);
-                String name = (String) moduleIdAsMap[i].get(IvyPatternHelper.MODULE_KEY);
+                String org = moduleIdAsMap[i].get(IvyPatternHelper.ORGANISATION_KEY);
+                String name = moduleIdAsMap[i].get(IvyPatternHelper.MODULE_KEY);
                 ModuleId modId = ModuleId.newInstance(org, name);
                 ret.add(NameSpaceHelper.transform(modId, resolver.getNamespace()
                         .getToSystemTransformer()));
             }
         }
 
-        return (ModuleId[]) ret.toArray(new ModuleId[ret.size()]);
+        return ret.toArray(new ModuleId[ret.size()]);
     }
 
     /**
@@ -226,37 +218,33 @@ public class SearchEngine {
      * @return
      */
     public ModuleRevisionId[] listModules(ModuleRevisionId moduleCrit, PatternMatcher matcher) {
-        List ret = new ArrayList();
+        List<ModuleRevisionId> ret = new ArrayList<ModuleRevisionId>();
 
-        Map criteria = new HashMap();
-        for (Iterator it = moduleCrit.getAttributes().entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Entry) it.next();
-            addMatcher(matcher, (String) entry.getValue(), criteria, (String) entry.getKey());
+        Map<String, Object> criteria = new HashMap<String, Object>();
+        for (Entry<String, String> entry : moduleCrit.getAttributes().entrySet()) {
+            addMatcher(matcher, entry.getValue(), criteria, entry.getKey());
         }
 
-        String[] tokensToList = (String[]) moduleCrit.getAttributes().keySet()
+        String[] tokensToList = moduleCrit.getAttributes().keySet()
                 .toArray(new String[moduleCrit.getAttributes().size()]);
 
-        for (Iterator iter = settings.getResolvers().iterator(); iter.hasNext();) {
-            DependencyResolver resolver = (DependencyResolver) iter.next();
-            Map[] moduleIdAsMap = resolver.listTokenValues(tokensToList, criteria);
+        for (DependencyResolver resolver : settings.getResolvers()) {
+            Map<String, String>[] moduleIdAsMap = resolver.listTokenValues(tokensToList, criteria);
             for (int i = 0; i < moduleIdAsMap.length; i++) {
-                String org = (String) moduleIdAsMap[i].get(IvyPatternHelper.ORGANISATION_KEY);
-                String name = (String) moduleIdAsMap[i].get(IvyPatternHelper.MODULE_KEY);
-                String branch = (String) moduleIdAsMap[i].get(IvyPatternHelper.BRANCH_KEY);
-                String rev = (String) moduleIdAsMap[i].get(IvyPatternHelper.REVISION_KEY);
-
-                Map foundExtraAtts = new HashMap();
-                Set qualAttributes = moduleCrit.getQualifiedExtraAttributes().keySet();
-                for (Iterator iter2 = qualAttributes.iterator(); iter2.hasNext();) {
-                    String qualifiedKey = (String) iter2.next();
+                String org = moduleIdAsMap[i].get(IvyPatternHelper.ORGANISATION_KEY);
+                String name = moduleIdAsMap[i].get(IvyPatternHelper.MODULE_KEY);
+                String branch = moduleIdAsMap[i].get(IvyPatternHelper.BRANCH_KEY);
+                String rev = moduleIdAsMap[i].get(IvyPatternHelper.REVISION_KEY);
+
+                Map<String, String> foundExtraAtts = new HashMap<String, String>();
+                Set<String> qualAttributes = moduleCrit.getQualifiedExtraAttributes().keySet();
+                for (String qualifiedKey : qualAttributes) {
                     String value = null;
                     int colonIndex = qualifiedKey.indexOf(':');
                     if (colonIndex == -1) {
-                        value = (String) moduleIdAsMap[i].get(qualifiedKey);
+                        value = moduleIdAsMap[i].get(qualifiedKey);
                     } else {
-                        value = (String) moduleIdAsMap[i].get(qualifiedKey
-                                .substring(colonIndex + 1));
+                        value = moduleIdAsMap[i].get(qualifiedKey.substring(colonIndex + 1));
                     }
 
                     if (value != null) {
@@ -270,7 +258,7 @@ public class SearchEngine {
             }
         }
 
-        return (ModuleRevisionId[]) ret.toArray(new ModuleRevisionId[ret.size()]);
+        return ret.toArray(new ModuleRevisionId[ret.size()]);
     }
 
     /**
@@ -289,33 +277,32 @@ public class SearchEngine {
      */
     public ModuleRevisionId[] listModules(DependencyResolver resolver, ModuleRevisionId moduleCrit,
             PatternMatcher matcher) {
-        Map criteria = new HashMap();
-        for (Iterator it = moduleCrit.getAttributes().entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Entry) it.next();
-            addMatcher(matcher, (String) entry.getValue(), criteria, (String) entry.getKey());
+        Map<String, Object> criteria = new HashMap<String, Object>();
+        for (Entry<String, String> entry : moduleCrit.getAttributes().entrySet()) {
+            addMatcher(matcher, entry.getValue(), criteria, entry.getKey());
         }
 
-        String[] tokensToList = (String[]) moduleCrit.getAttributes().keySet()
+        String[] tokensToList = moduleCrit.getAttributes().keySet()
                 .toArray(new String[moduleCrit.getAttributes().size()]);
 
-        Map[] moduleIdAsMap = resolver.listTokenValues(tokensToList, criteria);
-        Set result = new LinkedHashSet(); // we use a Set to remove duplicates
+        Map<String, String>[] moduleIdAsMap = resolver.listTokenValues(tokensToList, criteria);
+        Set<ModuleRevisionId> result = new LinkedHashSet<ModuleRevisionId>(); // we use a Set to
+                                                                              // remove duplicates
         for (int i = 0; i < moduleIdAsMap.length; i++) {
-            String org = (String) moduleIdAsMap[i].get(IvyPatternHelper.ORGANISATION_KEY);
-            String name = (String) moduleIdAsMap[i].get(IvyPatternHelper.MODULE_KEY);
-            String branch = (String) moduleIdAsMap[i].get(IvyPatternHelper.BRANCH_KEY);
-            String rev = (String) moduleIdAsMap[i].get(IvyPatternHelper.REVISION_KEY);
-
-            Map foundExtraAtts = new HashMap();
-            Set qualExtraAttributes = moduleCrit.getQualifiedExtraAttributes().keySet();
-            for (Iterator iter2 = qualExtraAttributes.iterator(); iter2.hasNext();) {
-                String qualifiedKey = (String) iter2.next();
+            String org = moduleIdAsMap[i].get(IvyPatternHelper.ORGANISATION_KEY);
+            String name = moduleIdAsMap[i].get(IvyPatternHelper.MODULE_KEY);
+            String branch = moduleIdAsMap[i].get(IvyPatternHelper.BRANCH_KEY);
+            String rev = moduleIdAsMap[i].get(IvyPatternHelper.REVISION_KEY);
+
+            Map<String, String> foundExtraAtts = new HashMap<String, String>();
+            Set<String> qualExtraAttributes = moduleCrit.getQualifiedExtraAttributes().keySet();
+            for (String qualifiedKey : qualExtraAttributes) {
                 String value = null;
                 int colonIndex = qualifiedKey.indexOf(':');
                 if (colonIndex == -1) {
-                    value = (String) moduleIdAsMap[i].get(qualifiedKey);
+                    value = moduleIdAsMap[i].get(qualifiedKey);
                 } else {
-                    value = (String) moduleIdAsMap[i].get(qualifiedKey.substring(colonIndex + 1));
+                    value = moduleIdAsMap[i].get(qualifiedKey.substring(colonIndex + 1));
                 }
 
                 if (value != null) {
@@ -328,11 +315,11 @@ public class SearchEngine {
             result.add(resolver.getNamespace().getToSystemTransformer().transform(modRevId));
         }
 
-        return (ModuleRevisionId[]) result.toArray(new ModuleRevisionId[result.size()]);
+        return result.toArray(new ModuleRevisionId[result.size()]);
     }
 
-    private void addMatcher(PatternMatcher patternMatcher, String expression, Map criteria,
-            String key) {
+    private void addMatcher(PatternMatcher patternMatcher, String expression,
+            Map<String, Object> criteria, String key) {
         if (expression == null) {
             return;
         }
@@ -345,9 +332,9 @@ public class SearchEngine {
         }
     }
 
-    public Collection findModuleRevisionIds(DependencyResolver resolver, ModuleRevisionId pattern,
-            PatternMatcher matcher) {
-        Collection mrids = new ArrayList();
+    public Collection<ModuleRevisionId> findModuleRevisionIds(DependencyResolver resolver,
+            ModuleRevisionId pattern, PatternMatcher matcher) {
+        Collection<ModuleRevisionId> mrids = new ArrayList<ModuleRevisionId>();
         String resolverName = resolver.getName();
 
         Message.verbose("looking for modules matching " + pattern + " using " + matcher.getName());
@@ -356,7 +343,7 @@ public class SearchEngine {
             fromNamespace = ((AbstractResolver) resolver).getNamespace();
         }
 
-        Collection modules = new ArrayList();
+        Collection<ModuleEntry> modules = new ArrayList<ModuleEntry>();
 
         OrganisationEntry[] orgs = resolver.listOrganisations();
         if (orgs == null || orgs.length == 0) {
@@ -386,8 +373,7 @@ public class SearchEngine {
         Message.debug("found " + modules.size() + " modules for " + pattern.getOrganisation()
                 + " on " + resolverName);
         boolean foundModule = false;
-        for (Iterator iter = modules.iterator(); iter.hasNext();) {
-            ModuleEntry mEntry = (ModuleEntry) iter.next();
+        for (ModuleEntry mEntry : modules) {
 
             ModuleId foundMid = new ModuleId(mEntry.getOrganisation(), mEntry.getModule());
             ModuleId systemMid = foundMid;

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/settings/IvySettings.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/settings/IvySettings.java b/src/java/org/apache/ivy/core/settings/IvySettings.java
index 1ef8dc7..de806bf 100644
--- a/src/java/org/apache/ivy/core/settings/IvySettings.java
+++ b/src/java/org/apache/ivy/core/settings/IvySettings.java
@@ -31,10 +31,10 @@ import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Properties;
 
 import org.apache.ivy.Ivy;
@@ -115,9 +115,9 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
         ResolveEngineSettings, RetrieveEngineSettings, RepositoryManagementEngineSettings {
     private static final long INTERUPT_TIMEOUT = 2000;
 
-    private Map typeDefs = new HashMap();
+    private Map<String, Class<?>> typeDefs = new HashMap<String, Class<?>>();
 
-    private Map resolversMap = new HashMap();
+    private Map<String, DependencyResolver> resolversMap = new HashMap<String, DependencyResolver>();
 
     private DependencyResolver defaultResolver;
 
@@ -131,40 +131,29 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
 
     private boolean checkUpToDate = true;
 
-    private ModuleRules moduleSettings = new ModuleRules();
+    private ModuleRules<ModuleSettings> moduleSettings = new ModuleRules<ModuleSettings>();
 
-    // Map (String conflictManagerName -> ConflictManager)
-    private Map conflictsManager = new HashMap();
+    private Map<String, ConflictManager> conflictsManager = new HashMap<String, ConflictManager>();
 
-    // Map (String latestStrategyName -> LatestStrategy)
-    private Map latestStrategies = new HashMap();
+    private Map<String, LatestStrategy> latestStrategies = new HashMap<String, LatestStrategy>();
 
-    // Map (String name -> LockStrategy)
-    private Map lockStrategies = new HashMap();
+    private Map<String, LockStrategy> lockStrategies = new HashMap<String, LockStrategy>();
 
-    // Map (String namespaceName -> Namespace)
-    private Map namespaces = new HashMap();
+    private Map<String, Namespace> namespaces = new HashMap<String, Namespace>();
 
-    // Map (String matcherName -> Matcher)
-    private Map matchers = new HashMap();
+    private Map<String, PatternMatcher> matchers = new HashMap<String, PatternMatcher>();
 
-    // Map (String outputterName -> ReportOutputter)
-    private Map reportOutputters = new HashMap();
+    private Map<String, ReportOutputter> reportOutputters = new HashMap<String, ReportOutputter>();
 
-    // Map (String matcherName -> VersionMatcher)
-    private Map versionMatchers = new HashMap();
+    private Map<String, VersionMatcher> versionMatchers = new HashMap<String, VersionMatcher>();
 
-    // Map (String name -> CircularDependencyStrategy)
-    private Map circularDependencyStrategies = new HashMap();
+    private Map<String, CircularDependencyStrategy> circularDependencyStrategies = new HashMap<String, CircularDependencyStrategy>();
 
-    // Map (String name -> RepositoryCacheManager)
-    private Map repositoryCacheManagers = new HashMap();
+    private Map<String, RepositoryCacheManager> repositoryCacheManagers = new HashMap<String, RepositoryCacheManager>();
 
-    // Map (String name -> SignatureGenerator)
-    private Map signatureGenerators = new HashMap();
+    private Map<String, SignatureGenerator> signatureGenerators = new HashMap<String, SignatureGenerator>();
 
-    // List (Trigger)
-    private List triggers = new ArrayList();
+    private List<Trigger> triggers = new ArrayList<Trigger>();
 
     private IvyVariableContainer variableContainer = new IvyVariableContainerImpl();
 
@@ -182,7 +171,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
 
     private ResolutionCacheManager resolutionCacheManager = null;
 
-    private List listingIgnore = new ArrayList();
+    private List<String> listingIgnore = new ArrayList<String>();
 
     private boolean repositoriesConfigured;
 
@@ -192,7 +181,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
 
     private File baseDir = new File(".").getAbsoluteFile();
 
-    private List classpathURLs = new ArrayList();
+    private List<URL> classpathURLs = new ArrayList<URL>();
 
     private ClassLoader classloader;
 
@@ -278,8 +267,10 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
 
         try {
             // GlobPatternMatcher is optional. Only add it when available.
-            Class globClazz = IvySettings.class.getClassLoader().loadClass(
-                "org.apache.ivy.plugins.matcher.GlobPatternMatcher");
+            @SuppressWarnings("unchecked")
+            Class<? extends PatternMatcher> globClazz = (Class<? extends PatternMatcher>) IvySettings.class
+                    .getClassLoader()
+                    .loadClass("org.apache.ivy.plugins.matcher.GlobPatternMatcher");
             Field instanceField = globClazz.getField("INSTANCE");
             addMatcher((PatternMatcher) instanceField.get(null));
         } catch (Exception e) {
@@ -305,7 +296,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
 
     private synchronized void addSystemProperties() {
         try {
-            addAllVariables((Map) System.getProperties().clone());
+            addAllVariables((Map<?, ?>) System.getProperties().clone());
         } catch (AccessControlException ex) {
             Message.verbose("access denied to getting all system properties: they won't be available as Ivy variables."
                     + "\nset " + ex.getPermission() + " permission if you want to access them");
@@ -371,9 +362,9 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
     }
 
     public synchronized void typeDefs(Properties p, boolean silentFail) {
-        for (Iterator iter = p.keySet().iterator(); iter.hasNext();) {
-            String name = (String) iter.next();
-            typeDef(name, p.getProperty(name), silentFail);
+        for (Entry<Object, Object> entry : p.entrySet()) {
+            String name = entry.getKey().toString();
+            typeDef(name, entry.getValue().toString(), silentFail);
         }
     }
 
@@ -532,13 +523,12 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
 
         if (!classpathURLs.isEmpty()) {
             Message.verbose("\t-- " + classpathURLs.size() + " custom classpath urls:");
-            for (Iterator iter = classpathURLs.iterator(); iter.hasNext();) {
-                Message.debug("\t\t" + iter.next());
+            for (URL url : classpathURLs) {
+                Message.debug("\t\t" + url);
             }
         }
         Message.verbose("\t-- " + resolversMap.size() + " resolvers:");
-        for (Iterator iter = resolversMap.values().iterator(); iter.hasNext();) {
-            DependencyResolver resolver = (DependencyResolver) iter.next();
+        for (DependencyResolver resolver : resolversMap.values()) {
             resolver.dumpSettings();
         }
         Message.debug("\tmodule settings:");
@@ -600,7 +590,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
         variableContainer.setVariable(varName, value, overwrite);
     }
 
-    public synchronized void addAllVariables(Map variables) {
+    public synchronized void addAllVariables(Map<?, ?> variables) {
         addAllVariables(variables, true);
     }
 
@@ -635,11 +625,10 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
      * @return a new map of strings in which all current ivy variables in values have been
      *         substituted by their value
      */
-    public synchronized Map/* <String, String> */substitute(Map/* <String, String> */strings) {
-        Map substituted = new LinkedHashMap();
-        for (Iterator it = strings.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            substituted.put(entry.getKey(), substitute((String) entry.getValue()));
+    public synchronized Map<String, String> substitute(Map<String, String> strings) {
+        Map<String, String> substituted = new LinkedHashMap<String, String>();
+        for (Entry<String, String> entry : strings.entrySet()) {
+            substituted.put(entry.getKey(), substitute(entry.getValue()));
         }
         return substituted;
     }
@@ -654,19 +643,19 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
         return variableContainer;
     }
 
-    public synchronized Class typeDef(String name, String className) {
+    public synchronized Class<?> typeDef(String name, String className) {
         return typeDef(name, className, false);
     }
 
-    public synchronized Class typeDef(String name, String className, boolean silentFail) {
-        Class clazz = classForName(className, silentFail);
+    public synchronized Class<?> typeDef(String name, String className, boolean silentFail) {
+        Class<?> clazz = classForName(className, silentFail);
         if (clazz != null) {
             typeDefs.put(name, clazz);
         }
         return clazz;
     }
 
-    private Class classForName(String className, boolean silentFail) {
+    private Class<?> classForName(String className, boolean silentFail) {
         try {
             return getClassLoader().loadClass(className);
         } catch (ClassNotFoundException e) {
@@ -687,7 +676,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
                 classloader = Ivy.class.getClassLoader();
             } else {
                 classloader = new URLClassLoader(
-                        (URL[]) classpathURLs.toArray(new URL[classpathURLs.size()]),
+                        classpathURLs.toArray(new URL[classpathURLs.size()]),
                         Ivy.class.getClassLoader());
             }
         }
@@ -699,12 +688,12 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
         classloader = null;
     }
 
-    public synchronized Map getTypeDefs() {
+    public synchronized Map<String, Class<?>> getTypeDefs() {
         return typeDefs;
     }
 
-    public synchronized Class getTypeDef(String name) {
-        return (Class) typeDefs.get(name);
+    public synchronized Class<?> getTypeDef(String name) {
+        return typeDefs.get(name);
     }
 
     // methods which match ivy conf method signature specs
@@ -726,7 +715,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
     }
 
     public synchronized SignatureGenerator getSignatureGenerator(String name) {
-        return (SignatureGenerator) signatureGenerators.get(name);
+        return signatureGenerators.get(name);
     }
 
     public synchronized void addResolver(DependencyResolver resolver) {
@@ -736,9 +725,8 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
         init(resolver);
         resolversMap.put(resolver.getName(), resolver);
         if (resolver instanceof ChainResolver) {
-            List subresolvers = ((ChainResolver) resolver).getResolvers();
-            for (Iterator iter = subresolvers.iterator(); iter.hasNext();) {
-                DependencyResolver dr = (DependencyResolver) iter.next();
+            List<DependencyResolver> subresolvers = ((ChainResolver) resolver).getResolvers();
+            for (DependencyResolver dr : subresolvers) {
                 addResolver(dr);
             }
         } else if (resolver instanceof DualResolver) {
@@ -783,8 +771,9 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
     /**
      * regular expressions as explained in Pattern class may be used in attributes
      */
-    public synchronized void addModuleConfiguration(Map attributes, PatternMatcher matcher,
-            String resolverName, String branch, String conflictManager, String resolveMode) {
+    public synchronized void addModuleConfiguration(Map<String, String> attributes,
+            PatternMatcher matcher, String resolverName, String branch, String conflictManager,
+            String resolveMode) {
         checkResolverName(resolverName);
         moduleSettings.defineRule(new MapMatcher(attributes, matcher), new ModuleSettings(
                 resolverName, branch, conflictManager, resolveMode));
@@ -906,7 +895,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
         if (dictatorResolver != null) {
             return dictatorResolver;
         }
-        DependencyResolver resolver = (DependencyResolver) resolversMap.get(resolverName);
+        DependencyResolver resolver = resolversMap.get(resolverName);
         if (resolver == null) {
             Message.error("unknown resolver " + resolverName);
         }
@@ -918,24 +907,24 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
             return dictatorResolver;
         }
         if (defaultResolver == null) {
-            defaultResolver = (DependencyResolver) resolversMap.get(defaultResolverName);
+            defaultResolver = resolversMap.get(defaultResolverName);
         }
         return defaultResolver;
     }
 
     public synchronized String getResolverName(ModuleRevisionId mrid) {
-        ModuleSettings ms = (ModuleSettings) moduleSettings.getRule(mrid, new Filter() {
-            public boolean accept(Object o) {
-                return ((ModuleSettings) o).getResolverName() != null;
+        ModuleSettings ms = moduleSettings.getRule(mrid, new Filter<ModuleSettings>() {
+            public boolean accept(ModuleSettings o) {
+                return o.getResolverName() != null;
             }
         });
         return ms == null ? defaultResolverName : ms.getResolverName();
     }
 
     public synchronized String getDefaultBranch(ModuleId moduleId) {
-        ModuleSettings ms = (ModuleSettings) moduleSettings.getRule(moduleId, new Filter() {
-            public boolean accept(Object o) {
-                return ((ModuleSettings) o).getBranch() != null;
+        ModuleSettings ms = moduleSettings.getRule(moduleId, new Filter<ModuleSettings>() {
+            public boolean accept(ModuleSettings o) {
+                return o.getBranch() != null;
             }
         });
         return ms == null ? getDefaultBranch() : ms.getBranch();
@@ -950,9 +939,9 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
     }
 
     public synchronized ConflictManager getConflictManager(ModuleId moduleId) {
-        ModuleSettings ms = (ModuleSettings) moduleSettings.getRule(moduleId, new Filter() {
-            public boolean accept(Object o) {
-                return ((ModuleSettings) o).getConflictManager() != null;
+        ModuleSettings ms = moduleSettings.getRule(moduleId, new Filter<ModuleSettings>() {
+            public boolean accept(ModuleSettings o) {
+                return o.getConflictManager() != null;
             }
         });
         if (ms == null) {
@@ -968,9 +957,9 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
     }
 
     public synchronized String getResolveMode(ModuleId moduleId) {
-        ModuleSettings ms = (ModuleSettings) moduleSettings.getRule(moduleId, new Filter() {
-            public boolean accept(Object o) {
-                return ((ModuleSettings) o).getResolveMode() != null;
+        ModuleSettings ms = moduleSettings.getRule(moduleId, new Filter<ModuleSettings>() {
+            public boolean accept(ModuleSettings o) {
+                return o.getResolveMode() != null;
             }
         });
         return ms == null ? getDefaultResolveMode() : ms.getResolveMode();
@@ -992,7 +981,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
         if ("default".equals(name)) {
             return getDefaultConflictManager();
         }
-        return (ConflictManager) conflictsManager.get(name);
+        return conflictsManager.get(name);
     }
 
     public synchronized void addConflictManager(String name, ConflictManager cm) {
@@ -1008,7 +997,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
         if ("default".equals(name)) {
             return getDefaultLatestStrategy();
         }
-        return (LatestStrategy) latestStrategies.get(name);
+        return latestStrategies.get(name);
     }
 
     public synchronized void addLatestStrategy(String name, LatestStrategy latest) {
@@ -1024,7 +1013,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
         if ("default".equals(name)) {
             return getDefaultLockStrategy();
         }
-        return (LockStrategy) lockStrategies.get(name);
+        return lockStrategies.get(name);
     }
 
     public synchronized void addLockStrategy(String name, LockStrategy lockStrategy) {
@@ -1040,7 +1029,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
         if ("system".equals(name)) {
             return getSystemNamespace();
         }
-        return (Namespace) namespaces.get(name);
+        return namespaces.get(name);
     }
 
     public final Namespace getSystemNamespace() {
@@ -1057,7 +1046,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
     }
 
     public synchronized PatternMatcher getMatcher(String name) {
-        return (PatternMatcher) matchers.get(name);
+        return matchers.get(name);
     }
 
     public synchronized void addMatcher(PatternMatcher m) {
@@ -1070,7 +1059,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
     }
 
     public synchronized RepositoryCacheManager getRepositoryCacheManager(String name) {
-        return (RepositoryCacheManager) repositoryCacheManagers.get(name);
+        return repositoryCacheManagers.get(name);
     }
 
     public synchronized void addRepositoryCacheManager(RepositoryCacheManager c) {
@@ -1079,7 +1068,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
     }
 
     public synchronized RepositoryCacheManager[] getRepositoryCacheManagers() {
-        return (RepositoryCacheManager[]) repositoryCacheManagers.values().toArray(
+        return repositoryCacheManagers.values().toArray(
             new RepositoryCacheManager[repositoryCacheManagers.size()]);
     }
 
@@ -1088,7 +1077,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
     }
 
     public synchronized ReportOutputter getReportOutputter(String name) {
-        return (ReportOutputter) reportOutputters.get(name);
+        return reportOutputters.get(name);
     }
 
     public synchronized void addReportOutputter(ReportOutputter outputter) {
@@ -1097,8 +1086,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
     }
 
     public synchronized ReportOutputter[] getReportOutputters() {
-        return (ReportOutputter[]) reportOutputters.values().toArray(
-            new ReportOutputter[reportOutputters.size()]);
+        return reportOutputters.values().toArray(new ReportOutputter[reportOutputters.size()]);
     }
 
     public synchronized void addConfigured(VersionMatcher vmatcher) {
@@ -1106,7 +1094,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
     }
 
     public synchronized VersionMatcher getVersionMatcher(String name) {
-        return (VersionMatcher) versionMatchers.get(name);
+        return versionMatchers.get(name);
     }
 
     public synchronized void addVersionMatcher(VersionMatcher vmatcher) {
@@ -1124,8 +1112,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
     }
 
     public synchronized VersionMatcher[] getVersionMatchers() {
-        return (VersionMatcher[]) versionMatchers.values().toArray(
-            new VersionMatcher[versionMatchers.size()]);
+        return versionMatchers.values().toArray(new VersionMatcher[versionMatchers.size()]);
     }
 
     public synchronized VersionMatcher getVersionMatcher() {
@@ -1152,7 +1139,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
         if ("default".equals(name)) {
             name = "warn";
         }
-        return (CircularDependencyStrategy) circularDependencyStrategies.get(name);
+        return circularDependencyStrategies.get(name);
     }
 
     public synchronized void setCircularDependencyStrategy(CircularDependencyStrategy strategy) {
@@ -1188,7 +1175,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
      * Returns the file names of the files that should be ignored when creating a file listing.
      */
     public synchronized String[] getIgnorableFilenames() {
-        return (String[]) listingIgnore.toArray(new String[listingIgnore.size()]);
+        return listingIgnore.toArray(new String[listingIgnore.size()]);
     }
 
     /**
@@ -1197,7 +1184,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
      * 
      * @param names
      */
-    public synchronized void filterIgnore(Collection names) {
+    public synchronized void filterIgnore(Collection<String> names) {
         names.removeAll(listingIgnore);
     }
 
@@ -1286,7 +1273,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
         triggers.add(trigger);
     }
 
-    public synchronized List getTriggers() {
+    public synchronized List<Trigger> getTriggers() {
         return triggers;
     }
 
@@ -1375,6 +1362,7 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
             this.resolveMode = resolveMode;
         }
 
+        @Override
         public String toString() {
             return (resolverName != null ? "resolver: " + resolverName : "")
                     + (branch != null ? "branch: " + branch : "")
@@ -1403,15 +1391,15 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
         return INTERUPT_TIMEOUT;
     }
 
-    public synchronized Collection getResolvers() {
+    public synchronized Collection<DependencyResolver> getResolvers() {
         return resolversMap.values();
     }
 
-    public synchronized Collection getResolverNames() {
+    public synchronized Collection<String> getResolverNames() {
         return resolversMap.keySet();
     }
 
-    public synchronized Collection getMatcherNames() {
+    public synchronized Collection<String> getMatcherNames() {
         return matchers.keySet();
     }
 
@@ -1492,9 +1480,8 @@ public class IvySettings implements SortEngineSettings, PublishEngineSettings, P
      * @throws IllegalStateException
      *             if any of the objects is not valid.
      */
-    private void validateAll(Collection values) {
-        for (Iterator iterator = values.iterator(); iterator.hasNext();) {
-            Object object = iterator.next();
+    private void validateAll(Collection<?> values) {
+        for (Object object : values) {
             if (object instanceof Validatable) {
                 ((Validatable) object).validate();
             }

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/osgi/filter/AndFilter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/osgi/filter/AndFilter.java b/src/java/org/apache/ivy/osgi/filter/AndFilter.java
index 7fe700e..12a7567 100644
--- a/src/java/org/apache/ivy/osgi/filter/AndFilter.java
+++ b/src/java/org/apache/ivy/osgi/filter/AndFilter.java
@@ -29,6 +29,7 @@ public class AndFilter extends MultiOperatorFilter {
         super(filters);
     }
 
+    @Override
     protected char operator() {
         return '&';
     }