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:42 UTC

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

use java 5 constructs


Project: http://git-wip-us.apache.org/repos/asf/ant-ivy/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant-ivy/commit/e1276e0a
Tree: http://git-wip-us.apache.org/repos/asf/ant-ivy/tree/e1276e0a
Diff: http://git-wip-us.apache.org/repos/asf/ant-ivy/diff/e1276e0a

Branch: refs/heads/master
Commit: e1276e0ac2407111d7bebd16e32a944660166ff6
Parents: a42d2dc
Author: Nicolas Lalevée <ni...@hibnet.org>
Authored: Tue Dec 30 17:55:53 2014 +0100
Committer: Nicolas Lalevée <ni...@hibnet.org>
Committed: Sun Jan 4 19:00:21 2015 +0100

----------------------------------------------------------------------
 src/java/org/apache/ivy/Ivy.java                |  17 +-
 src/java/org/apache/ivy/ant/FixDepsTask.java    |  10 +-
 src/java/org/apache/ivy/ant/IvyBuildList.java   | 123 +++++------
 src/java/org/apache/ivy/ant/IvyDependency.java  |  25 +--
 src/java/org/apache/ivy/ant/IvyResolve.java     |  27 +--
 .../cache/DefaultRepositoryCacheManager.java    |  19 +-
 .../core/module/descriptor/Configuration.java   |  20 +-
 .../descriptor/DefaultModuleDescriptor.java     | 119 +++++------
 .../ivy/core/module/id/MatcherLookup.java       |  38 ++--
 .../org/apache/ivy/core/module/id/ModuleId.java |  25 ++-
 .../ivy/core/module/id/ModuleRevisionId.java    |  46 +++--
 .../apache/ivy/core/module/id/ModuleRules.java  |  72 +++----
 .../apache/ivy/core/report/ResolveReport.java   |  92 ++++-----
 .../apache/ivy/core/resolve/ResolveData.java    |  48 +++--
 .../apache/ivy/core/resolve/ResolveEngine.java  | 107 +++++-----
 .../apache/ivy/core/resolve/ResolveOptions.java |   7 +-
 .../org/apache/ivy/core/resolve/VisitData.java  |  10 +-
 .../org/apache/ivy/core/resolve/VisitNode.java  |  43 ++--
 .../apache/ivy/core/search/SearchEngine.java    | 196 ++++++++----------
 .../apache/ivy/core/settings/IvySettings.java   | 177 ++++++++--------
 .../org/apache/ivy/osgi/filter/AndFilter.java   |   1 +
 .../apache/ivy/osgi/filter/CompareFilter.java   |  20 +-
 .../ivy/osgi/filter/MultiOperatorFilter.java    |   3 +
 .../org/apache/ivy/osgi/filter/NotFilter.java   |   1 +
 .../org/apache/ivy/osgi/filter/OSGiFilter.java  |   1 +
 .../ivy/osgi/filter/OSGiFilterParser.java       |  36 +++-
 .../org/apache/ivy/osgi/filter/OrFilter.java    |   1 +
 .../ivy/osgi/filter/UniOperatorFilter.java      |   3 +
 .../org/apache/ivy/osgi/obr/OBRResolver.java    |   6 +-
 .../apache/ivy/osgi/obr/xml/OBRXMLParser.java   |  20 +-
 .../apache/ivy/osgi/p2/P2ArtifactParser.java    |   8 +
 .../apache/ivy/osgi/p2/P2CompositeParser.java   |   4 +
 .../apache/ivy/osgi/p2/P2MetadataParser.java    |  30 +++
 .../apache/ivy/osgi/p2/PropertiesParser.java    |   3 +
 .../ivy/osgi/repo/AbstractOSGiResolver.java     |  75 ++++---
 .../updatesite/xml/EclipseUpdateSiteParser.java |   7 +-
 .../ivy/osgi/updatesite/xml/FeatureParser.java  |  15 +-
 .../updatesite/xml/UpdateSiteDigestParser.java  |   6 +-
 .../apache/ivy/osgi/util/DelegatingHandler.java |  19 +-
 .../conflict/AbstractConflictManager.java       |   5 +-
 .../ivy/plugins/conflict/ConflictManager.java   |   5 +-
 .../plugins/conflict/FixedConflictManager.java  |  13 +-
 .../LatestCompatibleConflictManager.java        |  67 +++---
 .../plugins/conflict/LatestConflictManager.java |  24 +--
 .../ivy/plugins/conflict/NoConflictManager.java |   2 +-
 .../plugins/conflict/RegexpConflictManager.java |   6 +-
 .../plugins/conflict/StrictConflictManager.java |   7 +-
 .../plugins/latest/AbstractLatestStrategy.java  |   7 +-
 .../latest/ComparatorLatestStrategy.java        |  12 +-
 .../latest/LatestLexicographicStrategy.java     |   8 +-
 .../plugins/latest/LatestRevisionStrategy.java  |  36 ++--
 .../ivy/plugins/latest/LatestStrategy.java      |   2 +-
 .../ivy/plugins/latest/LatestTimeStrategy.java  |   8 +-
 .../plugins/matcher/AbstractPatternMatcher.java |   1 +
 .../matcher/ExactOrRegexpPatternMatcher.java    |   1 +
 .../plugins/matcher/ExactPatternMatcher.java    |   1 +
 .../ivy/plugins/matcher/GlobPatternMatcher.java |   1 +
 .../apache/ivy/plugins/matcher/MapMatcher.java  |  25 +--
 .../plugins/matcher/RegexpPatternMatcher.java   |   1 +
 .../parser/AbstractModuleDescriptorParser.java  |   9 +-
 .../parser/ModuleDescriptorParserRegistry.java  |   9 +-
 .../ivy/plugins/parser/ParserSettings.java      |   2 +-
 .../ivy/plugins/parser/m2/PomDependencyMgt.java |   4 +-
 .../parser/m2/PomModuleDescriptorBuilder.java   |  95 ++++-----
 .../apache/ivy/plugins/parser/m2/PomReader.java |  46 ++---
 .../parser/xml/XmlModuleDescriptorParser.java   |  44 ++--
 .../plugins/repository/AbstractRepository.java  |   1 +
 .../ivy/plugins/repository/Repository.java      |   4 +-
 .../resolver/AbstractPatternsBasedResolver.java | 137 +++++++------
 .../ivy/plugins/resolver/AbstractResolver.java  |   5 +-
 .../resolver/AbstractSshBasedResolver.java      |   1 +
 .../ivy/plugins/resolver/BasicResolver.java     | 100 ++++-----
 .../ivy/plugins/resolver/BintrayResolver.java   |   2 -
 .../ivy/plugins/resolver/CacheResolver.java     |  14 +-
 .../ivy/plugins/resolver/ChainResolver.java     |  74 +++----
 .../plugins/resolver/DependencyResolver.java    |   6 +-
 .../ivy/plugins/resolver/DualResolver.java      |   7 +
 .../plugins/resolver/FileSystemResolver.java    |  28 ++-
 .../ivy/plugins/resolver/IBiblioResolver.java   |  55 +++--
 .../ivy/plugins/resolver/IvyRepResolver.java    |  29 ++-
 .../ivy/plugins/resolver/JarResolver.java       |   2 +
 .../plugins/resolver/MirroredURLResolver.java   |  16 +-
 .../plugins/resolver/RepositoryResolver.java    |  24 ++-
 .../ivy/plugins/resolver/ResolverSettings.java  |   2 +-
 .../ivy/plugins/resolver/SFTPResolver.java      |   1 +
 .../ivy/plugins/resolver/SshResolver.java       |   1 +
 .../ivy/plugins/resolver/URLResolver.java       |   1 +
 .../ivy/plugins/resolver/VfsResolver.java       |   2 +
 .../ivy/plugins/resolver/VsftpResolver.java     |   1 +
 .../resolver/util/ApacheHttpURLLister.java      |   3 +-
 .../plugins/resolver/util/FileURLLister.java    |   7 +-
 .../plugins/resolver/util/ResolvedResource.java |   1 +
 .../plugins/resolver/util/ResolverHelper.java   |  34 ++-
 .../ivy/plugins/resolver/util/URLLister.java    |   2 +-
 .../apache/ivy/util/AbstractMessageLogger.java  |  82 +-------
 .../apache/ivy/util/ContextualSAXHandler.java   |   9 +-
 .../apache/ivy/util/MessageLoggerEngine.java    |  29 ++-
 .../apache/ivy/util/cli/CommandLineParser.java  |  29 ++-
 .../ivy/util/extendable/ExtendableItem.java     |   6 +-
 .../util/extendable/ExtendableItemHelper.java   |  22 +-
 .../extendable/UnmodifiableExtendableItem.java  |  34 +--
 .../apache/ivy/util/url/ApacheURLLister.java    |  10 +-
 .../apache/ivy/core/module/id/ModuleIdTest.java |  13 --
 .../apache/ivy/core/resolve/ResolveTest.java    | 205 +++++++++----------
 104 files changed, 1483 insertions(+), 1437 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/Ivy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/Ivy.java b/src/java/org/apache/ivy/Ivy.java
index c3799e9..6cbd02c 100644
--- a/src/java/org/apache/ivy/Ivy.java
+++ b/src/java/org/apache/ivy/Ivy.java
@@ -24,7 +24,6 @@ import java.net.URL;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -45,6 +44,7 @@ import org.apache.ivy.core.publish.PublishEngine;
 import org.apache.ivy.core.publish.PublishOptions;
 import org.apache.ivy.core.report.ResolveReport;
 import org.apache.ivy.core.repository.RepositoryManagementEngine;
+import org.apache.ivy.core.resolve.IvyNode;
 import org.apache.ivy.core.resolve.ResolveData;
 import org.apache.ivy.core.resolve.ResolveEngine;
 import org.apache.ivy.core.resolve.ResolveOptions;
@@ -631,7 +631,7 @@ public class Ivy {
     /**
      * Sorts the collection of IvyNode from the less dependent to the more dependent
      */
-    public List sortNodes(Collection nodes, SortOptions options) {
+    public List<IvyNode> sortNodes(Collection<IvyNode> nodes, SortOptions options) {
         pushContext();
         try {
             return getSortEngine().sortNodes(nodes, options);
@@ -654,7 +654,8 @@ public class Ivy {
      *             if a circular dependency exists and circular dependency strategy decide to throw
      *             an exception
      */
-    public List sortModuleDescriptors(Collection moduleDescriptors, SortOptions options) {
+    public List<ModuleDescriptor> sortModuleDescriptors(
+            Collection<ModuleDescriptor> moduleDescriptors, SortOptions options) {
         pushContext();
         try {
             return getSortEngine().sortModuleDescriptors(moduleDescriptors, options);
@@ -750,7 +751,7 @@ public class Ivy {
         }
     }
 
-    public String[] listTokenValues(String token, Map otherTokenValues) {
+    public String[] listTokenValues(String token, Map<String, Object> otherTokenValues) {
         pushContext();
         try {
             return searchEngine.listTokenValues(token, otherTokenValues);
@@ -833,14 +834,12 @@ public class Ivy {
     }
 
     private void postConfigure() {
-        Collection triggers = settings.getTriggers();
-        for (Iterator iter = triggers.iterator(); iter.hasNext();) {
-            Trigger trigger = (Trigger) iter.next();
+        List<Trigger> triggers = settings.getTriggers();
+        for (Trigger trigger : triggers) {
             eventManager.addIvyListener(trigger, trigger.getEventFilter());
         }
 
-        for (Iterator iter = settings.getResolvers().iterator(); iter.hasNext();) {
-            DependencyResolver resolver = (DependencyResolver) iter.next();
+        for (DependencyResolver resolver : settings.getResolvers()) {
             if (resolver instanceof BasicResolver) {
                 ((BasicResolver) resolver).setEventManager(eventManager);
             }

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/ant/FixDepsTask.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/ant/FixDepsTask.java b/src/java/org/apache/ivy/ant/FixDepsTask.java
index 1be9222..8695cb8 100644
--- a/src/java/org/apache/ivy/ant/FixDepsTask.java
+++ b/src/java/org/apache/ivy/ant/FixDepsTask.java
@@ -32,7 +32,7 @@ public class FixDepsTask extends IvyPostResolveTask {
 
     private File dest;
 
-    private List/* <Keep> */keeps = new ArrayList();
+    private List<Keep> keeps = new ArrayList<Keep>();
 
     public void setToFile(File dest) {
         this.dest = dest;
@@ -59,6 +59,7 @@ public class FixDepsTask extends IvyPostResolveTask {
         return k;
     }
 
+    @Override
     public void doExecute() throws BuildException {
         prepareAndCheck();
 
@@ -72,10 +73,9 @@ public class FixDepsTask extends IvyPostResolveTask {
 
         ResolveReport report = getResolvedReport();
 
-        List/* <ModuleId> */midToKeep = new ArrayList();
-        for (int i = 0; i < keeps.size(); i++) {
-            midToKeep.add(ModuleId.newInstance(((Keep) keeps.get(i)).org,
-                ((Keep) keeps.get(i)).module));
+        List<ModuleId> midToKeep = new ArrayList<ModuleId>();
+        for (Keep keep : keeps) {
+            midToKeep.add(ModuleId.newInstance(keep.org, keep.module));
         }
 
         ModuleDescriptor md = report.toFixedModuleDescriptor(getSettings(), midToKeep);

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/ant/IvyBuildList.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/ant/IvyBuildList.java b/src/java/org/apache/ivy/ant/IvyBuildList.java
index 0620b49..ba4b1a3 100644
--- a/src/java/org/apache/ivy/ant/IvyBuildList.java
+++ b/src/java/org/apache/ivy/ant/IvyBuildList.java
@@ -23,7 +23,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.ListIterator;
@@ -66,7 +65,7 @@ public class IvyBuildList extends IvyTask {
 
     public static final String DESCRIPTOR_REQUIRED = "required";
 
-    private List buildFileSets = new ArrayList(); // List (FileSet)
+    private List<FileSet> buildFileSets = new ArrayList<FileSet>();
 
     private String reference;
 
@@ -152,6 +151,7 @@ public class IvyBuildList extends IvyTask {
         this.onlydirectdep = onlydirectdep;
     }
 
+    @Override
     public void doExecute() throws BuildException {
         if (reference == null) {
             throw new BuildException("reference should be provided in ivy build list");
@@ -168,12 +168,12 @@ public class IvyBuildList extends IvyTask {
 
         Path path = new Path(getProject());
 
-        Map buildFiles = new HashMap(); // Map (ModuleDescriptor -> File buildFile)
-        List independent = new ArrayList();
-        List noDescriptor = new ArrayList();
-        Collection mds = new ArrayList();
+        Map<ModuleDescriptor, File> buildFiles = new HashMap<ModuleDescriptor, File>();
+        List<File> independent = new ArrayList<File>();
+        List<File> noDescriptor = new ArrayList<File>();
+        Collection<ModuleDescriptor> mds = new ArrayList<ModuleDescriptor>();
 
-        Set rootModuleNames = new LinkedHashSet();
+        Set<String> rootModuleNames = new LinkedHashSet<String>();
         if (!"*".equals(root)) {
             StringTokenizer st = new StringTokenizer(root, delimiter);
             while (st.hasMoreTokens()) {
@@ -181,7 +181,7 @@ public class IvyBuildList extends IvyTask {
             }
         }
 
-        Set leafModuleNames = new LinkedHashSet();
+        Set<String> leafModuleNames = new LinkedHashSet<String>();
         if (!"*".equals(leaf)) {
             StringTokenizer st = new StringTokenizer(leaf, delimiter);
             while (st.hasMoreTokens()) {
@@ -189,15 +189,14 @@ public class IvyBuildList extends IvyTask {
             }
         }
 
-        Set restartFromModuleNames = new LinkedHashSet();
+        Set<String> restartFromModuleNames = new LinkedHashSet<String>();
         if (!"*".equals(restartFrom)) {
             StringTokenizer st = new StringTokenizer(restartFrom, delimiter);
             // Only accept one (first) module
             restartFromModuleNames.add(st.nextToken());
         }
 
-        for (ListIterator iter = buildFileSets.listIterator(); iter.hasNext();) {
-            FileSet fs = (FileSet) iter.next();
+        for (FileSet fs : buildFileSets) {
             DirectoryScanner ds = fs.getDirectoryScanner(getProject());
             String[] builds = ds.getIncludedFiles();
             for (int i = 0; i < builds.length; i++) {
@@ -228,12 +227,12 @@ public class IvyBuildList extends IvyTask {
             }
         }
 
-        List leafModuleDescriptors = convertModuleNamesToModuleDescriptors(mds, leafModuleNames,
-            "leaf");
-        List rootModuleDescriptors = convertModuleNamesToModuleDescriptors(mds, rootModuleNames,
-            "root");
-        List restartFromModuleDescriptors = convertModuleNamesToModuleDescriptors(mds,
-            restartFromModuleNames, "restartFrom");
+        List<ModuleDescriptor> leafModuleDescriptors = convertModuleNamesToModuleDescriptors(mds,
+            leafModuleNames, "leaf");
+        List<ModuleDescriptor> rootModuleDescriptors = convertModuleNamesToModuleDescriptors(mds,
+            rootModuleNames, "root");
+        List<ModuleDescriptor> restartFromModuleDescriptors = convertModuleNamesToModuleDescriptors(
+            mds, restartFromModuleNames, "restartFrom");
 
         if (!rootModuleDescriptors.isEmpty()) {
             Message.info("Filtering modules based on roots " + rootModuleNames);
@@ -244,16 +243,14 @@ public class IvyBuildList extends IvyTask {
             mds = filterModulesFromLeaf(mds, leafModuleDescriptors);
         }
 
-        List sortedModules = ivy.sortModuleDescriptors(mds, SortOptions.DEFAULT);
+        List<ModuleDescriptor> sortedModules = ivy.sortModuleDescriptors(mds, SortOptions.DEFAULT);
 
         if (!OnMissingDescriptor.TAIL.equals(onMissingDescriptor)) {
-            for (ListIterator iter = noDescriptor.listIterator(); iter.hasNext();) {
-                File buildFile = (File) iter.next();
+            for (File buildFile : noDescriptor) {
                 addBuildFile(path, buildFile);
             }
         }
-        for (ListIterator iter = independent.listIterator(); iter.hasNext();) {
-            File buildFile = (File) iter.next();
+        for (File buildFile : independent) {
             addBuildFile(path, buildFile);
         }
         if (isReverse()) {
@@ -264,11 +261,9 @@ public class IvyBuildList extends IvyTask {
         // so they are not removed from build path.
         if (!restartFromModuleDescriptors.isEmpty()) {
             boolean foundRestartFrom = false;
-            List keptModules = new ArrayList();
-            ModuleDescriptor restartFromModuleDescriptor = (ModuleDescriptor) restartFromModuleDescriptors
-                    .get(0);
-            for (ListIterator iter = sortedModules.listIterator(); iter.hasNext();) {
-                ModuleDescriptor md = (ModuleDescriptor) iter.next();
+            List<ModuleDescriptor> keptModules = new ArrayList<ModuleDescriptor>();
+            ModuleDescriptor restartFromModuleDescriptor = restartFromModuleDescriptors.get(0);
+            for (ModuleDescriptor md : sortedModules) {
                 if (md.equals(restartFromModuleDescriptor)) {
                     foundRestartFrom = true;
                 }
@@ -279,18 +274,17 @@ public class IvyBuildList extends IvyTask {
             sortedModules = keptModules;
         }
         StringBuffer order = new StringBuffer();
-        for (ListIterator iter = sortedModules.listIterator(); iter.hasNext();) {
-            ModuleDescriptor md = (ModuleDescriptor) iter.next();
+        for (ListIterator<ModuleDescriptor> iter = sortedModules.listIterator(); iter.hasNext();) {
+            ModuleDescriptor md = iter.next();
             order.append(md.getModuleRevisionId().getModuleId());
             if (iter.hasNext()) {
                 order.append(", ");
             }
-            File buildFile = (File) buildFiles.get(md);
+            File buildFile = buildFiles.get(md);
             addBuildFile(path, buildFile);
         }
         if (OnMissingDescriptor.TAIL.equals(onMissingDescriptor)) {
-            for (ListIterator iter = noDescriptor.listIterator(); iter.hasNext();) {
-                File buildFile = (File) iter.next();
+            for (File buildFile : noDescriptor) {
                 addBuildFile(path, buildFile);
             }
         }
@@ -299,7 +293,7 @@ public class IvyBuildList extends IvyTask {
         getProject().setProperty("ivy.sorted.modules", order.toString());
     }
 
-    private void onMissingDescriptor(File buildFile, File ivyFile, List noDescriptor) {
+    private void onMissingDescriptor(File buildFile, File ivyFile, List<File> noDescriptor) {
         if (OnMissingDescriptor.SKIP.equals(onMissingDescriptor)) {
             Message.debug("skipping " + buildFile + ": descriptor " + ivyFile + " doesn't exist");
         } else if (OnMissingDescriptor.FAIL.equals(onMissingDescriptor)) {
@@ -323,12 +317,12 @@ public class IvyBuildList extends IvyTask {
         }
     }
 
-    private List convertModuleNamesToModuleDescriptors(Collection mds, Set moduleNames, String kind) {
-        List result = new ArrayList();
-        Set foundModuleNames = new HashSet();
+    private List<ModuleDescriptor> convertModuleNamesToModuleDescriptors(
+            Collection<ModuleDescriptor> mds, Set<String> moduleNames, String kind) {
+        List<ModuleDescriptor> result = new ArrayList<ModuleDescriptor>();
+        Set<String> foundModuleNames = new HashSet<String>();
 
-        for (Iterator it = mds.iterator(); it.hasNext();) {
-            ModuleDescriptor md = (ModuleDescriptor) it.next();
+        for (ModuleDescriptor md : mds) {
             String name = md.getModuleRevisionId().getModuleId().getName();
             if (moduleNames.contains(name)) {
                 foundModuleNames.add(name);
@@ -337,14 +331,14 @@ public class IvyBuildList extends IvyTask {
         }
 
         if (foundModuleNames.size() < moduleNames.size()) {
-            Set missingModules = new HashSet(moduleNames);
+            Set<String> missingModules = new HashSet<String>(moduleNames);
             missingModules.removeAll(foundModuleNames);
 
             StringBuffer missingNames = new StringBuffer();
             String sep = "";
-            for (Iterator it = missingModules.iterator(); it.hasNext();) {
+            for (String name : missingModules) {
                 missingNames.append(sep);
-                missingNames.append(it.next());
+                missingNames.append(name);
                 sep = ", ";
             }
 
@@ -365,20 +359,17 @@ public class IvyBuildList extends IvyTask {
      *            root module
      * @return filtered list of modules
      */
-    private Collection filterModulesFromRoot(Collection mds, List rootmds) {
-        // Make a map of ModuleId objects -> ModuleDescriptors
-        Map moduleIdMap = new HashMap();
-        for (Iterator iter = mds.iterator(); iter.hasNext();) {
-            ModuleDescriptor md = ((ModuleDescriptor) iter.next());
+    private Collection<ModuleDescriptor> filterModulesFromRoot(Collection<ModuleDescriptor> mds,
+            List<ModuleDescriptor> rootmds) {
+        Map<ModuleId, ModuleDescriptor> moduleIdMap = new HashMap<ModuleId, ModuleDescriptor>();
+        for (ModuleDescriptor md : mds) {
             moduleIdMap.put(md.getModuleRevisionId().getModuleId(), md);
         }
 
         // recursively process the nodes
-        Set toKeep = new LinkedHashSet();
+        Set<ModuleDescriptor> toKeep = new LinkedHashSet<ModuleDescriptor>();
 
-        Iterator it = rootmds.iterator();
-        while (it.hasNext()) {
-            ModuleDescriptor rootmd = (ModuleDescriptor) it.next();
+        for (ModuleDescriptor rootmd : rootmds) {
             processFilterNodeFromRoot(rootmd, toKeep, moduleIdMap);
             // With the excluderoot attribute set to true, take the rootmd out of the toKeep set.
             if (excludeRoot) {
@@ -391,8 +382,7 @@ public class IvyBuildList extends IvyTask {
         }
 
         // just for logging
-        for (Iterator iter = toKeep.iterator(); iter.hasNext();) {
-            ModuleDescriptor md = ((ModuleDescriptor) iter.next());
+        for (ModuleDescriptor md : toKeep) {
             Message.verbose("Kept module " + md.getModuleRevisionId().getModuleId().getName());
         }
 
@@ -411,13 +401,14 @@ public class IvyBuildList extends IvyTask {
      * @param moduleIdMap
      *            reference mapping of moduleId to ModuleDescriptor that are part of the BuildList
      */
-    private void processFilterNodeFromRoot(ModuleDescriptor node, Set toKeep, Map moduleIdMap) {
+    private void processFilterNodeFromRoot(ModuleDescriptor node, Set<ModuleDescriptor> toKeep,
+            Map<ModuleId, ModuleDescriptor> moduleIdMap) {
         // toKeep.add(node);
 
         DependencyDescriptor[] deps = node.getDependencies();
         for (int i = 0; i < deps.length; i++) {
             ModuleId id = deps[i].getDependencyId();
-            ModuleDescriptor md = (ModuleDescriptor) moduleIdMap.get(id);
+            ModuleDescriptor md = moduleIdMap.get(id);
             // we test if this module id has a module descriptor, and if it isn't already in the
             // toKeep Set, in which there's probably a circular dependency
             if (md != null && !toKeep.contains(md)) {
@@ -439,19 +430,16 @@ public class IvyBuildList extends IvyTask {
      *            leaf module
      * @return filtered list of modules
      */
-    private Collection filterModulesFromLeaf(Collection mds, List leafmds) {
-        // Make a map of ModuleId objects -> ModuleDescriptors
-        Map moduleIdMap = new HashMap();
-        for (Iterator iter = mds.iterator(); iter.hasNext();) {
-            ModuleDescriptor md = ((ModuleDescriptor) iter.next());
+    private Collection<ModuleDescriptor> filterModulesFromLeaf(Collection<ModuleDescriptor> mds,
+            List<ModuleDescriptor> leafmds) {
+        Map<ModuleId, ModuleDescriptor> moduleIdMap = new HashMap<ModuleId, ModuleDescriptor>();
+        for (ModuleDescriptor md : mds) {
             moduleIdMap.put(md.getModuleRevisionId().getModuleId(), md);
         }
 
         // recursively process the nodes
-        Set toKeep = new LinkedHashSet();
-        Iterator it = leafmds.iterator();
-        while (it.hasNext()) {
-            ModuleDescriptor leafmd = (ModuleDescriptor) it.next();
+        Set<ModuleDescriptor> toKeep = new LinkedHashSet<ModuleDescriptor>();
+        for (ModuleDescriptor leafmd : leafmds) {
             // With the excludeleaf attribute set to true, take the rootmd out of the toKeep set.
             if (excludeLeaf) {
                 Message.verbose("Excluded module "
@@ -463,8 +451,7 @@ public class IvyBuildList extends IvyTask {
         }
 
         // just for logging
-        for (Iterator iter = toKeep.iterator(); iter.hasNext();) {
-            ModuleDescriptor md = ((ModuleDescriptor) iter.next());
+        for (ModuleDescriptor md : toKeep) {
             Message.verbose("Kept module " + md.getModuleRevisionId().getModuleId().getName());
         }
 
@@ -482,9 +469,9 @@ public class IvyBuildList extends IvyTask {
      * @param moduleIdMap
      *            reference mapping of moduleId to ModuleDescriptor that are part of the BuildList
      */
-    private void processFilterNodeFromLeaf(ModuleDescriptor node, Set toKeep, Map moduleIdMap) {
-        for (Iterator iter = moduleIdMap.values().iterator(); iter.hasNext();) {
-            ModuleDescriptor md = (ModuleDescriptor) iter.next();
+    private void processFilterNodeFromLeaf(ModuleDescriptor node, Set<ModuleDescriptor> toKeep,
+            Map<ModuleId, ModuleDescriptor> moduleIdMap) {
+        for (ModuleDescriptor md : moduleIdMap.values()) {
             DependencyDescriptor[] deps = md.getDependencies();
             for (int i = 0; i < deps.length; i++) {
                 ModuleId id = deps[i].getDependencyId();

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/ant/IvyDependency.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/ant/IvyDependency.java b/src/java/org/apache/ivy/ant/IvyDependency.java
index dbc8f21..051a55a 100644
--- a/src/java/org/apache/ivy/ant/IvyDependency.java
+++ b/src/java/org/apache/ivy/ant/IvyDependency.java
@@ -18,7 +18,6 @@
 package org.apache.ivy.ant;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.ivy.core.module.descriptor.DefaultDependencyDescriptor;
@@ -32,13 +31,13 @@ import org.apache.tools.ant.BuildException;
 
 public class IvyDependency {
 
-    private List/* <IvyDependencyConf> */confs = new ArrayList();
+    private List<IvyDependencyConf> confs = new ArrayList<IvyDependencyConf>();
 
-    private List/* <IvyDependencyArtifact> */artifacts = new ArrayList();
+    private List<IvyDependencyArtifact> artifacts = new ArrayList<IvyDependencyArtifact>();
 
-    private List/* <IvyDependencyExclude> */excludes = new ArrayList();
+    private List<IvyDependencyExclude> excludes = new ArrayList<IvyDependencyExclude>();
 
-    private List/* <IvyDependencyIncludes> */includes = new ArrayList();
+    private List<IvyDependencyInclude> includes = new ArrayList<IvyDependencyInclude>();
 
     private String org;
 
@@ -161,28 +160,20 @@ public class IvyDependency {
             dd.addDependencyConfiguration(masterConf, "*");
         }
 
-        Iterator itConfs = confs.iterator();
-        while (itConfs.hasNext()) {
-            IvyDependencyConf c = (IvyDependencyConf) itConfs.next();
+        for (IvyDependencyConf c : confs) {
             c.addConf(dd, masterConf);
         }
 
-        Iterator itArtifacts = artifacts.iterator();
-        while (itArtifacts.hasNext()) {
-            IvyDependencyArtifact artifact = (IvyDependencyArtifact) itArtifacts.next();
+        for (IvyDependencyArtifact artifact : artifacts) {
             artifact.addArtifact(dd, masterConf);
         }
 
-        Iterator itExcludes = excludes.iterator();
-        while (itExcludes.hasNext()) {
-            IvyDependencyExclude exclude = (IvyDependencyExclude) itExcludes.next();
+        for (IvyDependencyExclude exclude : excludes) {
             DefaultExcludeRule rule = exclude.asRule(settings);
             dd.addExcludeRule(masterConf, rule);
         }
 
-        Iterator itIncludes = includes.iterator();
-        while (itIncludes.hasNext()) {
-            IvyDependencyInclude include = (IvyDependencyInclude) itIncludes.next();
+        for (IvyDependencyInclude include : includes) {
             DefaultIncludeRule rule = include.asRule(settings);
             dd.addIncludeRule(masterConf, rule);
         }

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/ant/IvyResolve.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/ant/IvyResolve.java b/src/java/org/apache/ivy/ant/IvyResolve.java
index 5dd7757..c700421 100644
--- a/src/java/org/apache/ivy/ant/IvyResolve.java
+++ b/src/java/org/apache/ivy/ant/IvyResolve.java
@@ -23,7 +23,6 @@ import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.ivy.Ivy;
@@ -91,11 +90,11 @@ public class IvyResolve extends IvyTask {
 
     private boolean checkIfChanged = true; // for backward compatibility
 
-    private List/* <IvyDependency> */dependencies = new ArrayList();
+    private List<IvyDependency> dependencies = new ArrayList<IvyDependency>();
 
-    private List/* <IvyExclude> */excludes = new ArrayList();
+    private List<IvyExclude> excludes = new ArrayList<IvyExclude>();
 
-    private List/* <IvyConflict> */conflicts = new ArrayList();
+    private List<IvyConflict> conflicts = new ArrayList<IvyConflict>();
 
     public boolean isUseOrigin() {
         return useOrigin;
@@ -229,11 +228,13 @@ public class IvyResolve extends IvyTask {
         return c;
     }
 
+    @Override
     protected void prepareTask() {
         super.prepareTask();
         Message.setShowProgress(showProgress);
     }
 
+    @Override
     public void doExecute() throws BuildException {
         Ivy ivy = getIvyInstance();
         IvySettings settings = ivy.getSettings();
@@ -267,24 +268,18 @@ public class IvyResolve extends IvyTask {
                     Ivy.getWorkingRevision());
                 DefaultModuleDescriptor md = DefaultModuleDescriptor.newBasicInstance(mrid, null);
 
-                Iterator itDeps = dependencies.iterator();
-                while (itDeps.hasNext()) {
-                    IvyDependency dep = (IvyDependency) itDeps.next();
+                for (IvyDependency dep : dependencies) {
                     DependencyDescriptor dd = dep.asDependencyDescriptor(md, "default", settings);
                     md.addDependency(dd);
                 }
 
-                Iterator itExcludes = excludes.iterator();
-                while (itExcludes.hasNext()) {
-                    IvyExclude exclude = (IvyExclude) itExcludes.next();
+                for (IvyExclude exclude : excludes) {
                     DefaultExcludeRule rule = exclude.asRule(settings);
                     rule.addConfiguration("default");
                     md.addExcludeRule(rule);
                 }
 
-                Iterator itConflicts = conflicts.iterator();
-                while (itConflicts.hasNext()) {
-                    IvyConflict conflict = (IvyConflict) itConflicts.next();
+                for (IvyConflict conflict : conflicts) {
                     conflict.addConflict(md, settings);
                 }
 
@@ -426,9 +421,9 @@ public class IvyResolve extends IvyTask {
         }
     }
 
-    protected Collection/* <String> */getAllowedLogOptions() {
-        return Arrays.asList(new String[] {LogOptions.LOG_DEFAULT, LogOptions.LOG_DOWNLOAD_ONLY,
-                LogOptions.LOG_QUIET});
+    protected Collection<String> getAllowedLogOptions() {
+        return Arrays.asList(LogOptions.LOG_DEFAULT, LogOptions.LOG_DOWNLOAD_ONLY,
+            LogOptions.LOG_QUIET);
     }
 
     private ResolveOptions getResolveOptions(Ivy ivy, String[] confs, IvySettings settings) {

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java b/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
index 55f498d..a950c0b 100644
--- a/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
+++ b/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
@@ -26,8 +26,8 @@ import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.text.ParseException;
 import java.util.Date;
-import java.util.Iterator;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.regex.Pattern;
 
 import org.apache.ivy.Ivy;
@@ -114,7 +114,7 @@ public class DefaultRepositoryCacheManager implements RepositoryCacheManager, Iv
 
     private Boolean useOrigin;
 
-    private ModuleRules/* <Long> */ttlRules = new ModuleRules();
+    private ModuleRules<Long> ttlRules = new ModuleRules<Long>();
 
     private Long defaultTTL = null;
 
@@ -239,16 +239,16 @@ public class DefaultRepositoryCacheManager implements RepositoryCacheManager, Iv
         this.changingPattern = changingPattern;
     }
 
-    public void addTTL(Map attributes, PatternMatcher matcher, long duration) {
+    public void addTTL(Map<String, String> attributes, PatternMatcher matcher, long duration) {
         ttlRules.defineRule(new MapMatcher(attributes, matcher), new Long(duration));
     }
 
-    public void addConfiguredTtl(Map/* <String,String> */attributes) {
-        String duration = (String) attributes.remove("duration");
+    public void addConfiguredTtl(Map<String, String> attributes) {
+        String duration = attributes.remove("duration");
         if (duration == null) {
             throw new IllegalArgumentException("'duration' attribute is mandatory for ttl");
         }
-        String matcher = (String) attributes.remove("matcher");
+        String matcher = attributes.remove("matcher");
         addTTL(attributes,
             matcher == null ? ExactPatternMatcher.INSTANCE : settings.getMatcher(matcher),
             parseDuration(duration));
@@ -531,10 +531,8 @@ public class DefaultRepositoryCacheManager implements RepositoryCacheManager, Iv
                     // try to find other cached artifact info with same location. This must be the
                     // origin. We must parse the key as we do not know for sure what the original
                     // artifact is named.
-                    Iterator it = cdf.entrySet().iterator();
                     String ownLocationKey = getLocationKey(artifact);
-                    while (it.hasNext()) {
-                        Map.Entry entry = (Map.Entry) it.next();
+                    for (Entry<Object, Object> entry : cdf.entrySet()) {
                         if (entry.getValue().equals(location)
                                 && !ownLocationKey.equals(entry.getKey())) {
                             // found a match, key is
@@ -891,10 +889,11 @@ public class DefaultRepositoryCacheManager implements RepositoryCacheManager, Iv
     }
 
     public long getTTL(ModuleRevisionId mrid) {
-        Long ttl = (Long) ttlRules.getRule(mrid);
+        Long ttl = ttlRules.getRule(mrid);
         return ttl == null ? getDefaultTTL() : ttl.longValue();
     }
 
+    @Override
     public String toString() {
         return name;
     }

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/module/descriptor/Configuration.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/module/descriptor/Configuration.java b/src/java/org/apache/ivy/core/module/descriptor/Configuration.java
index 30d111b..de43912 100644
--- a/src/java/org/apache/ivy/core/module/descriptor/Configuration.java
+++ b/src/java/org/apache/ivy/core/module/descriptor/Configuration.java
@@ -52,14 +52,15 @@ public class Configuration extends DefaultExtendableItem implements InheritableI
             this.name = name;
         }
 
+        @Override
         public String toString() {
             return name;
         }
     }
 
-    public static Collection/* <Configuration> */findConfigurationExtending(String conf,
+    public static Collection<Configuration> findConfigurationExtending(String conf,
             Configuration[] confs) {
-        Collection extendingConfs = new ArrayList();
+        Collection<Configuration> extendingConfs = new ArrayList<Configuration>();
         for (int i = 0; i < confs.length; i++) {
             if (confs[i] != null && Arrays.asList(confs[i].getExtends()).contains(conf)) {
                 extendingConfs.add(confs[i]);
@@ -120,9 +121,9 @@ public class Configuration extends DefaultExtendableItem implements InheritableI
         this(null, null, name, visibility, description, ext, transitive, deprecated, null);
     }
 
-    private Configuration(Map attributes, Map extraAttributes, String name, Visibility visibility,
-            String description, String[] ext, boolean transitive, String deprecated,
-            ModuleRevisionId sourceModule) {
+    private Configuration(Map<String, String> attributes, Map<String, String> extraAttributes,
+            String name, Visibility visibility, String description, String[] ext,
+            boolean transitive, String deprecated, ModuleRevisionId sourceModule) {
         super(attributes, extraAttributes);
 
         if (name == null) {
@@ -195,10 +196,12 @@ public class Configuration extends DefaultExtendableItem implements InheritableI
         return sourceModule;
     }
 
+    @Override
     public String toString() {
         return name;
     }
 
+    @Override
     public boolean equals(Object obj) {
         if (!(obj instanceof Configuration)) {
             return false;
@@ -206,6 +209,7 @@ public class Configuration extends DefaultExtendableItem implements InheritableI
         return ((Configuration) obj).getName().equals(getName());
     }
 
+    @Override
     public int hashCode() {
         return getName().hashCode();
     }
@@ -218,7 +222,7 @@ public class Configuration extends DefaultExtendableItem implements InheritableI
 
         Configuration[] configs = md.getConfigurations();
 
-        Set newExtends = new LinkedHashSet();
+        Set<String> newExtends = new LinkedHashSet<String>();
         for (int j = 0; j < extendsFrom.length; j++) {
             if ("*".equals(extendsFrom[j])) {
                 addOther(configs, null, newExtends);
@@ -231,10 +235,10 @@ public class Configuration extends DefaultExtendableItem implements InheritableI
             }
         }
 
-        this.extendsFrom = (String[]) newExtends.toArray(new String[newExtends.size()]);
+        this.extendsFrom = newExtends.toArray(new String[newExtends.size()]);
     }
 
-    private void addOther(Configuration[] allConfigs, Visibility visibility, Set configs) {
+    private void addOther(Configuration[] allConfigs, Visibility visibility, Set<String> configs) {
         for (int i = 0; i < allConfigs.length; i++) {
             String currentName = allConfigs[i].getName();
             if (!name.equals(currentName)

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/module/descriptor/DefaultModuleDescriptor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/module/descriptor/DefaultModuleDescriptor.java b/src/java/org/apache/ivy/core/module/descriptor/DefaultModuleDescriptor.java
index 2c544c5..39256d2 100644
--- a/src/java/org/apache/ivy/core/module/descriptor/DefaultModuleDescriptor.java
+++ b/src/java/org/apache/ivy/core/module/descriptor/DefaultModuleDescriptor.java
@@ -25,7 +25,6 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -210,13 +209,13 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
 
     private Date resolvedPublicationDate;
 
-    private List dependencies = new ArrayList(); // List (DependencyDescriptor)
+    private List<DependencyDescriptor> dependencies = new ArrayList<DependencyDescriptor>();
 
-    private Map configurations = new LinkedHashMap(); // Map(String conf -> Configuration)
+    private Map<String, Configuration> configurations = new LinkedHashMap<String, Configuration>();
 
-    private Map artifactsByConf = new HashMap(); // Map (String conf -> Collection(Artifact))
+    private Map<String, Collection<Artifact>> artifactsByConf = new HashMap<String, Collection<Artifact>>();
 
-    private Collection artifacts = new LinkedHashSet(); // Collection(Artifact)
+    private Collection<Artifact> artifacts = new LinkedHashSet<Artifact>();
 
     // all artifacts could also be found in the artifactsByConf map, but here we can
     // preserve the order
@@ -227,7 +226,7 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
 
     private ModuleRules dependencyDescriptorMediators = new ModuleRules();
 
-    private List licenses = new ArrayList(); // List(License)
+    private List<License> licenses = new ArrayList<License>();
 
     private String homePage;
 
@@ -247,13 +246,13 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
 
     private Resource resource;
 
-    private List excludeRules = new ArrayList(); // List(ExcludeRule)
+    private List<ExcludeRule> excludeRules = new ArrayList<ExcludeRule>();
 
     private Artifact metadataArtifact;
 
-    private List inheritedDescriptors = new ArrayList(); // List(ExtendsDescriptor)
+    private List<ExtendsDescriptor> inheritedDescriptors = new ArrayList<ExtendsDescriptor>();
 
-    private Map/* <String,String> */extraAttributesNamespaces = new LinkedHashMap();
+    private Map<String, String> extraAttributesNamespaces = new LinkedHashMap<String, String>();
 
     private List<ExtraInfoHolder> extraInfos = new ArrayList<ExtraInfoHolder>();
 
@@ -381,9 +380,9 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
                 addArtifact(members[i], artifact);
             }
         } else {
-            Collection artifacts = (Collection) artifactsByConf.get(conf);
+            Collection<Artifact> artifacts = artifactsByConf.get(conf);
             if (artifacts == null) {
-                artifacts = new ArrayList();
+                artifacts = new ArrayList<Artifact>();
                 artifactsByConf.put(conf, artifacts);
             }
             artifacts.add(artifact);
@@ -404,28 +403,25 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
     }
 
     public ExtendsDescriptor[] getInheritedDescriptors() {
-        return (ExtendsDescriptor[]) inheritedDescriptors
-                .toArray(new ExtendsDescriptor[inheritedDescriptors.size()]);
+        return inheritedDescriptors.toArray(new ExtendsDescriptor[inheritedDescriptors.size()]);
     }
 
     public Configuration[] getConfigurations() {
-        return (Configuration[]) configurations.values().toArray(
-            new Configuration[configurations.size()]);
+        return configurations.values().toArray(new Configuration[configurations.size()]);
     }
 
     public String[] getConfigurationsNames() {
-        return (String[]) configurations.keySet().toArray(new String[configurations.size()]);
+        return configurations.keySet().toArray(new String[configurations.size()]);
     }
 
     public String[] getPublicConfigurationsNames() {
-        List ret = new ArrayList();
-        for (Iterator iter = configurations.values().iterator(); iter.hasNext();) {
-            Configuration conf = (Configuration) iter.next();
+        List<String> ret = new ArrayList<String>();
+        for (Configuration conf : configurations.values()) {
             if (conf.getVisibility() == Configuration.Visibility.PUBLIC) {
                 ret.add(conf.getName());
             }
         }
-        return (String[]) ret.toArray(new String[ret.size()]);
+        return ret.toArray(new String[ret.size()]);
     }
 
     /**
@@ -433,7 +429,7 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
      * if not found.
      */
     public Configuration getConfiguration(String confName) {
-        Configuration configuration = (Configuration) configurations.get(confName);
+        Configuration configuration = configurations.get(confName);
         if (configuration == null && confName != null) {
             // let's first check if the configuration is a conf group
             Matcher m = Pattern.compile("\\*\\[([^=]+)\\=([^\\]]+)\\]").matcher(confName);
@@ -442,9 +438,8 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
                 String attValue = m.group(2);
 
                 // this is a conf group, let's search for its members
-                Map /* <String,Configuration> */members = new LinkedHashMap();
-                for (Iterator it = configurations.values().iterator(); it.hasNext();) {
-                    Configuration conf = (Configuration) it.next();
+                Map<String, Configuration> members = new LinkedHashMap<String, Configuration>();
+                for (Configuration conf : configurations.values()) {
                     if (attValue.equals(conf.getAttribute(attName))) {
                         members.put(conf.getName(), conf);
                     }
@@ -457,9 +452,9 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
             if (confs.length <= 1) {
                 return null;
             }
-            Map /* <String,Configuration> */intersectedConfs = new LinkedHashMap();
+            Map<String, Configuration> intersectedConfs = new LinkedHashMap<String, Configuration>();
             for (int i = 0; i < confs.length; i++) {
-                Configuration c = (Configuration) configurations.get(confs[i]);
+                Configuration c = configurations.get(confs[i]);
                 if (c == null) {
                     Message.verbose("missing configuration '" + confs[i] + "' from intersection "
                             + confName + " in " + this);
@@ -477,13 +472,13 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
         if (c == null) {
             return new Artifact[0];
         }
-        Collection artifacts = (Collection) artifactsByConf.get(conf);
+        Collection<Artifact> artifacts = artifactsByConf.get(conf);
         if (c instanceof ConfigurationIntersection) {
             ConfigurationIntersection intersection = (ConfigurationIntersection) c;
             String[] intersected = intersection.getIntersectedConfigurationNames();
-            Set/* <Artifact> */intersectedArtifacts = new LinkedHashSet();
+            Set<Artifact> intersectedArtifacts = new LinkedHashSet<Artifact>();
             for (int j = 0; j < intersected.length; j++) {
-                Collection arts = getArtifactsIncludingExtending(intersected[j]);
+                Collection<Artifact> arts = getArtifactsIncludingExtending(intersected[j]);
                 if (intersectedArtifacts.isEmpty()) {
                     intersectedArtifacts.addAll(arts);
                 } else {
@@ -493,39 +488,37 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
             if (artifacts != null) {
                 intersectedArtifacts.addAll(artifacts);
             }
-            return (Artifact[]) intersectedArtifacts.toArray(new Artifact[intersectedArtifacts
-                    .size()]);
+            return intersectedArtifacts.toArray(new Artifact[intersectedArtifacts.size()]);
         } else if (c instanceof ConfigurationGroup) {
             ConfigurationGroup group = (ConfigurationGroup) c;
             String[] members = group.getMembersConfigurationNames();
-            Set/* <Artifact> */groupArtifacts = new LinkedHashSet();
+            Set<Artifact> groupArtifacts = new LinkedHashSet<Artifact>();
             for (int i = 0; i < members.length; i++) {
                 groupArtifacts.addAll(getArtifactsIncludingExtending(members[i]));
             }
             if (artifacts != null) {
                 groupArtifacts.addAll(artifacts);
             }
-            return (Artifact[]) groupArtifacts.toArray(new Artifact[groupArtifacts.size()]);
+            return groupArtifacts.toArray(new Artifact[groupArtifacts.size()]);
         } else {
             if (artifacts == null) {
                 return new Artifact[0];
             } else {
-                return (Artifact[]) artifacts.toArray(new Artifact[artifacts.size()]);
+                return artifacts.toArray(new Artifact[artifacts.size()]);
             }
         }
     }
 
-    private Collection/* <Artifact> */getArtifactsIncludingExtending(String conf) {
-        Collection extendingConfs = Configuration.findConfigurationExtending(conf,
+    private Collection<Artifact> getArtifactsIncludingExtending(String conf) {
+        Collection<Configuration> extendingConfs = Configuration.findConfigurationExtending(conf,
             getConfigurations());
-        Set/* <Artifact> */artifacts = new LinkedHashSet();
-        Collection arts = (Collection) artifactsByConf.get(conf);
+        Set<Artifact> artifacts = new LinkedHashSet<Artifact>();
+        Collection<Artifact> arts = artifactsByConf.get(conf);
         if (arts != null) {
             artifacts.addAll(arts);
         }
-        for (Iterator it = extendingConfs.iterator(); it.hasNext();) {
-            Configuration extendingConf = (Configuration) it.next();
-            arts = (Collection) artifactsByConf.get(extendingConf.getName());
+        for (Configuration extendingConf : extendingConfs) {
+            arts = artifactsByConf.get(extendingConf.getName());
             if (arts != null) {
                 artifacts.addAll(arts);
             }
@@ -534,17 +527,15 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
     }
 
     public Artifact[] getAllArtifacts() {
-        return (Artifact[]) artifacts.toArray(new Artifact[artifacts.size()]);
+        return artifacts.toArray(new Artifact[artifacts.size()]);
     }
 
     public DependencyDescriptor[] getDependencies() {
-        return (DependencyDescriptor[]) dependencies.toArray(new DependencyDescriptor[dependencies
-                .size()]);
+        return dependencies.toArray(new DependencyDescriptor[dependencies.size()]);
     }
 
     public boolean dependsOn(VersionMatcher matcher, ModuleDescriptor md) {
-        for (Iterator iter = dependencies.iterator(); iter.hasNext();) {
-            DependencyDescriptor dd = (DependencyDescriptor) iter.next();
+        for (DependencyDescriptor dd : dependencies) {
             if (dd.getDependencyId().equals(md.getModuleRevisionId().getModuleId())) {
                 if (md.getResolvedModuleRevisionId().getRevision() == null) {
                     return true;
@@ -564,6 +555,7 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
         }
     }
 
+    @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;
@@ -571,6 +563,7 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
         return result;
     }
 
+    @Override
     public boolean equals(Object obj) {
         if (this == obj) {
             return true;
@@ -592,6 +585,7 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
         return true;
     }
 
+    @Override
     public String toString() {
         return "module: " + revId + " status=" + status + " publication=" + publicationDate
                 + " configurations=" + configurations + " artifacts=" + artifactsByConf
@@ -633,7 +627,7 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
         return dd;
     }
 
-    public ModuleRules/* <DependencyDescriptorMediator> */getAllDependencyDescriptorMediators() {
+    public ModuleRules getAllDependencyDescriptorMediators() {
         return (ModuleRules) dependencyDescriptorMediators.clone();
     }
 
@@ -642,7 +636,7 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
     }
 
     public License[] getLicenses() {
-        return (License[]) licenses.toArray(new License[licenses.size()]);
+        return licenses.toArray(new License[licenses.size()]);
     }
 
     public String getHomePage() {
@@ -674,8 +668,7 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
     }
 
     public boolean isNamespaceUseful() {
-        for (Iterator iter = dependencies.iterator(); iter.hasNext();) {
-            DependencyDescriptor dd = (DependencyDescriptor) iter.next();
+        for (DependencyDescriptor dd : dependencies) {
             if (dd.getAllExcludeRules().length > 0) {
                 return true;
             }
@@ -692,9 +685,8 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
      * configurations existence and cycles are checked
      */
     public void check() {
-        Stack confs = new Stack();
-        for (Iterator iter = configurations.values().iterator(); iter.hasNext();) {
-            Configuration conf = (Configuration) iter.next();
+        Stack<String> confs = new Stack<String>();
+        for (Configuration conf : configurations.values()) {
             String[] ext = conf.getExtends();
             for (int i = 0; i < ext.length; i++) {
                 confs.push(conf.getName());
@@ -704,7 +696,7 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
         }
     }
 
-    private void checkConf(Stack confs, String confName) {
+    private void checkConf(Stack<String> confs, String confName) {
         int index = confs.indexOf(confName);
         if (index != -1) {
             StringBuffer cycle = new StringBuffer();
@@ -756,7 +748,7 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
         return resolvedRevId.getAttribute(attName);
     }
 
-    public Map getAttributes() {
+    public Map<String, String> getAttributes() {
         return resolvedRevId.getAttributes();
     }
 
@@ -764,11 +756,11 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
         return resolvedRevId.getExtraAttribute(attName);
     }
 
-    public Map getExtraAttributes() {
+    public Map<String, String> getExtraAttributes() {
         return resolvedRevId.getExtraAttributes();
     }
 
-    public Map getQualifiedExtraAttributes() {
+    public Map<String, String> getQualifiedExtraAttributes() {
         return resolvedRevId.getQualifiedExtraAttributes();
     }
 
@@ -807,26 +799,25 @@ public class DefaultModuleDescriptor implements ModuleDescriptor {
     }
 
     public ExcludeRule[] getAllExcludeRules() {
-        return (ExcludeRule[]) excludeRules.toArray(new ExcludeRule[excludeRules.size()]);
+        return excludeRules.toArray(new ExcludeRule[excludeRules.size()]);
     }
 
     public ExcludeRule[] getExcludeRules(String[] moduleConfigurations) {
-        Set rules = new LinkedHashSet();
-        for (Iterator iter = excludeRules.iterator(); iter.hasNext();) {
-            ExcludeRule rule = (ExcludeRule) iter.next();
+        Set<ExcludeRule> rules = new LinkedHashSet<ExcludeRule>();
+        for (ExcludeRule rule : excludeRules) {
             String[] ruleConfs = rule.getConfigurations();
             if (containsAny(ruleConfs, moduleConfigurations)) {
                 rules.add(rule);
             }
         }
-        return (ExcludeRule[]) rules.toArray(new ExcludeRule[rules.size()]);
+        return rules.toArray(new ExcludeRule[rules.size()]);
     }
 
     private boolean containsAny(String[] arr1, String[] arr2) {
-        return new ArrayList(Arrays.asList(arr1)).removeAll(Arrays.asList(arr2));
+        return new ArrayList<String>(Arrays.asList(arr1)).removeAll(Arrays.asList(arr2));
     }
 
-    public Map getExtraAttributesNamespaces() {
+    public Map<String, String> getExtraAttributesNamespaces() {
         return extraAttributesNamespaces;
     }
 

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/module/id/MatcherLookup.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/module/id/MatcherLookup.java b/src/java/org/apache/ivy/core/module/id/MatcherLookup.java
index 76a44fc..e4650de 100644
--- a/src/java/org/apache/ivy/core/module/id/MatcherLookup.java
+++ b/src/java/org/apache/ivy/core/module/id/MatcherLookup.java
@@ -19,7 +19,6 @@ package org.apache.ivy.core.module.id;
 
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -56,13 +55,13 @@ import org.apache.ivy.plugins.matcher.PatternMatcher;
  */
 public class MatcherLookup {
 
-    //private static final String FORMAT = "{org:%s, module:%s}";
+    // private static final String FORMAT = "{org:%s, module:%s}";
 
     private static final String DEFAULT = "{org:" + "default" + ", module:" + "default" + "}";
 
-    private Map/* <String, List<MapMatcher>> */lookup = new HashMap();
+    private Map<String, List<MapMatcher>> lookup = new HashMap<String, List<MapMatcher>>();
 
-    private List/* <MapMatcher> */non_exact_matchers = new ArrayList();
+    private List<MapMatcher> non_exact_matchers = new ArrayList<MapMatcher>();
 
     /**
      * Add matcher.
@@ -79,10 +78,10 @@ public class MatcherLookup {
             non_exact_matchers.add(matcher);
             return;
         }
-        Object key = key(matcher.getAttributes());
-        List exact_matchers = (List) lookup.get(key);
+        String key = key(matcher.getAttributes());
+        List<MapMatcher> exact_matchers = lookup.get(key);
         if (exact_matchers == null) {
-            exact_matchers = new ArrayList();
+            exact_matchers = new ArrayList<MapMatcher>();
             lookup.put(key, exact_matchers);
         }
         exact_matchers.add(matcher);
@@ -96,23 +95,21 @@ public class MatcherLookup {
      * 
      * @return list A list of candidate matchers that matches specified attributes
      */
-    public List get(Map attrs) {
-        List matchers = new ArrayList();
+    public List<MapMatcher> get(Map<String, String> attrs) {
+        List<MapMatcher> matchers = new ArrayList<MapMatcher>();
         // Step 1: find matchers from non_exact_matchers list
         if (!non_exact_matchers.isEmpty()) {
-            for (Iterator iter = non_exact_matchers.iterator(); iter.hasNext();) {
-                MapMatcher matcher = (MapMatcher) iter.next();
+            for (MapMatcher matcher : non_exact_matchers) {
                 if (matcher.matches(attrs)) {
                     matchers.add(matcher);
                 }
             }
         }
         // Step 2: find matchers from exact_matchers list of key
-        Object key = key(attrs);
-        List exact_matchers = (List) lookup.get(key);
+        String key = key(attrs);
+        List<MapMatcher> exact_matchers = lookup.get(key);
         if (exact_matchers != null) {
-            for (Iterator iter = exact_matchers.iterator(); iter.hasNext();) {
-                MapMatcher matcher = (MapMatcher) iter.next();
+            for (MapMatcher matcher : exact_matchers) {
                 if (matcher.matches(attrs)) {
                     matchers.add(matcher);
                 }
@@ -120,10 +117,9 @@ public class MatcherLookup {
         }
         // Step 3: (iff key != DEFAULT) find matchers from exact_matchers of DEFAULT
         if (key != DEFAULT) {
-            List default_exact_matchers = (List) lookup.get(DEFAULT);
+            List<MapMatcher> default_exact_matchers = lookup.get(DEFAULT);
             if (default_exact_matchers != null) {
-                for (Iterator iter = default_exact_matchers.iterator(); iter.hasNext();) {
-                    MapMatcher matcher = (MapMatcher) iter.next();
+                for (MapMatcher matcher : default_exact_matchers) {
                     if (matcher.matches(attrs)) {
                         matchers.add(matcher);
                     }
@@ -140,9 +136,9 @@ public class MatcherLookup {
      *            A map of attributes
      * @return key object
      */
-    private Object key(Map attrs) {
-        Object org = attrs.get(IvyPatternHelper.ORGANISATION_KEY);
-        Object module = attrs.get(IvyPatternHelper.MODULE_KEY);
+    private String key(Map<String, String> attrs) {
+        String org = attrs.get(IvyPatternHelper.ORGANISATION_KEY);
+        String module = attrs.get(IvyPatternHelper.MODULE_KEY);
         if (org == null || PatternMatcher.ANY_EXPRESSION.equals(org) || module == null
                 || PatternMatcher.ANY_EXPRESSION.equals(module)) {
             return DEFAULT;

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/module/id/ModuleId.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/module/id/ModuleId.java b/src/java/org/apache/ivy/core/module/id/ModuleId.java
index 4492827..8d2a85d 100644
--- a/src/java/org/apache/ivy/core/module/id/ModuleId.java
+++ b/src/java/org/apache/ivy/core/module/id/ModuleId.java
@@ -31,10 +31,11 @@ import org.apache.ivy.core.IvyPatternHelper;
  * 
  * @see <a href="package-summary.html">org.apache.ivy.core.module.id</a>
  */
-public class ModuleId implements Comparable {
+public class ModuleId implements Comparable<ModuleId> {
+
     static final String ENCODE_SEPARATOR = ":#@#:";
 
-    private static final Map/* <ModuleId, WeakReference<ModuleId>> */CACHE = new WeakHashMap();
+    private static final Map<ModuleId, WeakReference<ModuleId>> CACHE = new WeakHashMap<ModuleId, WeakReference<ModuleId>>();
 
     /**
      * Returns a ModuleId for the given organization and module name.
@@ -65,13 +66,13 @@ public class ModuleId implements Comparable {
         ModuleId r = null;
 
         synchronized (CACHE) {
-            WeakReference ref = (WeakReference) CACHE.get(moduleId);
+            WeakReference<ModuleId> ref = CACHE.get(moduleId);
             if (ref != null) {
-                r = (ModuleId) ref.get();
+                r = ref.get();
             }
             if (r == null) {
                 r = moduleId;
-                CACHE.put(r, new WeakReference(r));
+                CACHE.put(r, new WeakReference<ModuleId>(r));
             }
         }
 
@@ -84,7 +85,7 @@ public class ModuleId implements Comparable {
 
     private int hash;
 
-    private Map/* <String, String> */attributes = new HashMap();
+    private Map<String, String> attributes = new HashMap<String, String>();
 
     /**
      * Constructor.
@@ -122,7 +123,7 @@ public class ModuleId implements Comparable {
         return organisation;
     }
 
-    /** {@inheritDoc} */
+    @Override
     public boolean equals(Object obj) {
         if (!(obj instanceof ModuleId)) {
             return false;
@@ -135,7 +136,7 @@ public class ModuleId implements Comparable {
         }
     }
 
-    /** {@inheritDoc} */
+    @Override
     public int hashCode() {
         if (hash == 0) {
             // CheckStyle:MagicNumber| OFF
@@ -147,14 +148,12 @@ public class ModuleId implements Comparable {
         return hash;
     }
 
-    /** {@inheritDoc} */
+    @Override
     public String toString() {
         return organisation + "#" + name;
     }
 
-    /** {@inheritDoc} */
-    public int compareTo(Object obj) {
-        ModuleId that = (ModuleId) obj;
+    public int compareTo(ModuleId that) {
         int result = organisation.compareTo(that.organisation);
         if (result == 0) {
             result = name.compareTo(that.name);
@@ -177,7 +176,7 @@ public class ModuleId implements Comparable {
      * 
      * @return A Map instance containing all the attributes and their values.
      */
-    public Map getAttributes() {
+    public Map<String, String> getAttributes() {
         return attributes;
     }
 

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java b/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java
index 6c36f5c..38de003 100644
--- a/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java
+++ b/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java
@@ -19,8 +19,8 @@ package org.apache.ivy.core.module.id;
 
 import java.lang.ref.WeakReference;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.WeakHashMap;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -36,6 +36,7 @@ import org.apache.ivy.util.extendable.UnmodifiableExtendableItem;
  * @see <a href="package-summary.html">org.apache.ivy.core.module.id</a>
  */
 public class ModuleRevisionId extends UnmodifiableExtendableItem {
+
     private static final String ENCODE_SEPARATOR = ModuleId.ENCODE_SEPARATOR;
 
     private static final String ENCODE_PREFIX = "+";
@@ -46,7 +47,7 @@ public class ModuleRevisionId extends UnmodifiableExtendableItem {
 
     private static final String REV_STRICT_CHARS_PATTERN = "[a-zA-Z0-9\\-/\\._+=,\\[\\]\\{\\}\\(\\):@]";
 
-    private static final Map/* <ModuleRevisionId, ModuleRevisionId> */CACHE = new WeakHashMap();
+    private static final Map<ModuleRevisionId, WeakReference<ModuleRevisionId>> CACHE = new WeakHashMap<ModuleRevisionId, WeakReference<ModuleRevisionId>>();
 
     /**
      * Pattern to use to matched mrid text representation.
@@ -97,7 +98,7 @@ public class ModuleRevisionId extends UnmodifiableExtendableItem {
     }
 
     public static ModuleRevisionId newInstance(String organisation, String name, String revision,
-            Map extraAttributes) {
+            Map<String, String> extraAttributes) {
         return intern(new ModuleRevisionId(ModuleId.newInstance(organisation, name), revision,
                 extraAttributes));
     }
@@ -109,13 +110,14 @@ public class ModuleRevisionId extends UnmodifiableExtendableItem {
     }
 
     public static ModuleRevisionId newInstance(String organisation, String name, String branch,
-            String revision, Map extraAttributes) {
+            String revision, Map<String, String> extraAttributes) {
         return intern(new ModuleRevisionId(ModuleId.newInstance(organisation, name), branch,
                 revision, extraAttributes));
     }
 
     public static ModuleRevisionId newInstance(String organisation, String name, String branch,
-            String revision, Map extraAttributes, boolean replaceNullBranchWithDefault) {
+            String revision, Map<String, String> extraAttributes,
+            boolean replaceNullBranchWithDefault) {
         return intern(new ModuleRevisionId(ModuleId.newInstance(organisation, name), branch,
                 revision, extraAttributes, replaceNullBranchWithDefault));
     }
@@ -149,13 +151,13 @@ public class ModuleRevisionId extends UnmodifiableExtendableItem {
         ModuleRevisionId r = null;
 
         synchronized (CACHE) {
-            WeakReference ref = (WeakReference) CACHE.get(moduleRevisionId);
+            WeakReference<ModuleRevisionId> ref = CACHE.get(moduleRevisionId);
             if (ref != null) {
-                r = (ModuleRevisionId) ref.get();
+                r = ref.get();
             }
             if (r == null) {
                 r = moduleRevisionId;
-                CACHE.put(r, new WeakReference(r));
+                CACHE.put(r, new WeakReference<ModuleRevisionId>(r));
             }
         }
 
@@ -180,16 +182,17 @@ public class ModuleRevisionId extends UnmodifiableExtendableItem {
         this(moduleId, branch, revision, null);
     }
 
-    private ModuleRevisionId(ModuleId moduleId, String revision, Map extraAttributes) {
+    private ModuleRevisionId(ModuleId moduleId, String revision, Map<String, String> extraAttributes) {
         this(moduleId, null, revision, extraAttributes);
     }
 
-    private ModuleRevisionId(ModuleId moduleId, String branch, String revision, Map extraAttributes) {
+    private ModuleRevisionId(ModuleId moduleId, String branch, String revision,
+            Map<String, String> extraAttributes) {
         this(moduleId, branch, revision, extraAttributes, true);
     }
 
     private ModuleRevisionId(ModuleId moduleId, String branch, String revision,
-            Map extraAttributes, boolean replaceNullBranchWithDefault) {
+            Map<String, String> extraAttributes, boolean replaceNullBranchWithDefault) {
         super(null, extraAttributes);
         this.moduleId = moduleId;
         IvyContext context = IvyContext.getContext();
@@ -221,6 +224,7 @@ public class ModuleRevisionId extends UnmodifiableExtendableItem {
         return revision;
     }
 
+    @Override
     public boolean equals(Object obj) {
         if (!(obj instanceof ModuleRevisionId)) {
             return false;
@@ -240,6 +244,7 @@ public class ModuleRevisionId extends UnmodifiableExtendableItem {
         }
     }
 
+    @Override
     public int hashCode() {
         if (hash == 0) {
             // CheckStyle:MagicNumber| OFF
@@ -253,6 +258,7 @@ public class ModuleRevisionId extends UnmodifiableExtendableItem {
         return hash;
     }
 
+    @Override
     public String toString() {
         return moduleId + (branch == null || branch.length() == 0 ? "" : "#" + branch) + ";"
                 + (revision == null ? "NONE" : revision);
@@ -260,13 +266,13 @@ public class ModuleRevisionId extends UnmodifiableExtendableItem {
 
     public String encodeToString() {
         StringBuffer buf = new StringBuffer();
-        Map attributes = new HashMap(getAttributes());
+        Map<String, String> attributes = new HashMap<String, String>(getAttributes());
         attributes.keySet().removeAll(getExtraAttributes().keySet());
         attributes.putAll(getQualifiedExtraAttributes());
 
-        for (Iterator iter = attributes.keySet().iterator(); iter.hasNext();) {
-            String attName = (String) iter.next();
-            String value = (String) attributes.get(attName);
+        for (Entry<String, String> att : attributes.entrySet()) {
+            String attName = att.getKey();
+            String value = att.getValue();
             value = value == null ? NULL_ENCODE : value;
             buf.append(ENCODE_PREFIX).append(attName).append(ENCODE_SEPARATOR)
                     .append(ENCODE_PREFIX).append(value).append(ENCODE_SEPARATOR);
@@ -280,7 +286,7 @@ public class ModuleRevisionId extends UnmodifiableExtendableItem {
             throw new IllegalArgumentException("badly encoded module revision id: '" + encoded
                     + "'");
         }
-        Map attributes = new HashMap();
+        Map<String, String> attributes = new HashMap<String, String>();
         for (int i = 0; i < parts.length; i += 2) {
             String attName = parts[i];
             if (!attName.startsWith(ENCODE_PREFIX)) {
@@ -301,10 +307,10 @@ public class ModuleRevisionId extends UnmodifiableExtendableItem {
             }
             attributes.put(attName, attValue);
         }
-        String org = (String) attributes.remove(IvyPatternHelper.ORGANISATION_KEY);
-        String mod = (String) attributes.remove(IvyPatternHelper.MODULE_KEY);
-        String rev = (String) attributes.remove(IvyPatternHelper.REVISION_KEY);
-        String branch = (String) attributes.remove(IvyPatternHelper.BRANCH_KEY);
+        String org = attributes.remove(IvyPatternHelper.ORGANISATION_KEY);
+        String mod = attributes.remove(IvyPatternHelper.MODULE_KEY);
+        String rev = attributes.remove(IvyPatternHelper.REVISION_KEY);
+        String branch = attributes.remove(IvyPatternHelper.BRANCH_KEY);
         if (org == null) {
             throw new IllegalArgumentException("badly encoded module revision id: '" + encoded
                     + "': no organisation");

http://git-wip-us.apache.org/repos/asf/ant-ivy/blob/e1276e0a/src/java/org/apache/ivy/core/module/id/ModuleRules.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/ivy/core/module/id/ModuleRules.java b/src/java/org/apache/ivy/core/module/id/ModuleRules.java
index f16981d..5c4948c 100644
--- a/src/java/org/apache/ivy/core/module/id/ModuleRules.java
+++ b/src/java/org/apache/ivy/core/module/id/ModuleRules.java
@@ -19,10 +19,10 @@ package org.apache.ivy.core.module.id;
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import org.apache.ivy.plugins.matcher.MapMatcher;
 import org.apache.ivy.util.Checks;
@@ -49,8 +49,9 @@ import org.apache.ivy.util.filter.NoFilter;
  * which resolver to use, which TTL in cache, ...)
  * </p>
  */
-public class ModuleRules {
-    private Map/* <MapMatcher,Object> */rules = new LinkedHashMap();
+public class ModuleRules<T> {
+
+    private Map<MapMatcher, T> rules = new LinkedHashMap<MapMatcher, T>();
 
     private MatcherLookup matcher_lookup = new MatcherLookup();
 
@@ -60,10 +61,10 @@ public class ModuleRules {
     public ModuleRules() {
     }
 
-    private ModuleRules(Map/* <MapMatcher,Object> */rules) {
-        this.rules = new LinkedHashMap(rules);
-        for (Iterator iter = rules.keySet().iterator(); iter.hasNext();) {
-            matcher_lookup.add((MapMatcher) iter.next());
+    private ModuleRules(Map<MapMatcher, T> rules) {
+        this.rules = new LinkedHashMap<MapMatcher, T>(rules);
+        for (MapMatcher matcher : rules.keySet()) {
+            matcher_lookup.add(matcher);
         }
     }
 
@@ -75,7 +76,7 @@ public class ModuleRules {
      * @param rule
      *            the rule to apply. Must not be <code>null</code>.
      */
-    public void defineRule(MapMatcher condition, Object rule) {
+    public void defineRule(MapMatcher condition, T rule) {
         Checks.checkNotNull(condition, "condition");
         Checks.checkNotNull(rule, "rule");
 
@@ -93,8 +94,8 @@ public class ModuleRules {
      *         applies.
      * @see #getRule(ModuleId, Filter)
      */
-    public Object getRule(ModuleId mid) {
-        return getRule(mid, NoFilter.INSTANCE);
+    public T getRule(ModuleId mid) {
+        return getRule(mid, NoFilter.<T> instance());
     }
 
     /**
@@ -105,8 +106,8 @@ public class ModuleRules {
      *            the {@link ModuleId} to search the rule for. Must not be <code>null</code>.
      * @return an array of rule objects matching the given {@link ModuleId}.
      */
-    public Object[] getRules(ModuleId mid) {
-        return getRules(mid.getAttributes(), NoFilter.INSTANCE);
+    public T[] getRules(ModuleId mid) {
+        return getRules(mid.getAttributes(), NoFilter.<T> instance());
     }
 
     /**
@@ -120,8 +121,8 @@ public class ModuleRules {
      *         no rule applies.
      * @see #getRule(ModuleRevisionId, Filter)
      */
-    public Object getRule(ModuleRevisionId mrid) {
-        return getRule(mrid, NoFilter.INSTANCE);
+    public T getRule(ModuleRevisionId mrid) {
+        return getRule(mrid, NoFilter.<T> instance());
     }
 
     /**
@@ -140,7 +141,7 @@ public class ModuleRules {
      *         applies.
      * @see #getRule(ModuleRevisionId, Filter)
      */
-    public Object getRule(ModuleId mid, Filter filter) {
+    public T getRule(ModuleId mid, Filter<T> filter) {
         Checks.checkNotNull(mid, "mid");
         return getRule(mid.getAttributes(), filter);
     }
@@ -161,18 +162,17 @@ public class ModuleRules {
      *         no rule applies.
      * @see #getRule(ModuleRevisionId)
      */
-    public Object getRule(ModuleRevisionId mrid, Filter filter) {
+    public T getRule(ModuleRevisionId mrid, Filter<T> filter) {
         Checks.checkNotNull(mrid, "mrid");
         Checks.checkNotNull(filter, "filter");
-        Map moduleAttributes = mrid.getAttributes();
+        Map<String, String> moduleAttributes = mrid.getAttributes();
         return getRule(moduleAttributes, filter);
     }
 
-    private Object getRule(Map moduleAttributes, Filter filter) {
-        List matchers = matcher_lookup.get(moduleAttributes);
-        for (Iterator iter = matchers.iterator(); iter.hasNext();) {
-            MapMatcher midm = (MapMatcher) iter.next();
-            Object rule = rules.get(midm);
+    private T getRule(Map<String, String> moduleAttributes, Filter<T> filter) {
+        List<MapMatcher> matchers = matcher_lookup.get(moduleAttributes);
+        for (MapMatcher midm : matchers) {
+            T rule = rules.get(midm);
             if (filter.accept(rule)) {
                 return rule;
             }
@@ -193,24 +193,23 @@ public class ModuleRules {
      *            {@link ModuleRevisionId}. Must not be <code>null</code>.
      * @return an array of rule objects matching the given {@link ModuleRevisionId}.
      */
-    public Object[] getRules(ModuleRevisionId mrid, Filter filter) {
+    public T[] getRules(ModuleRevisionId mrid, Filter<T> filter) {
         Checks.checkNotNull(mrid, "mrid");
         Checks.checkNotNull(filter, "filter");
-        Map moduleAttributes = mrid.getAttributes();
+        Map<String, String> moduleAttributes = mrid.getAttributes();
         return getRules(moduleAttributes, filter);
     }
 
-    private Object[] getRules(Map moduleAttributes, Filter filter) {
-        List matchers = matcher_lookup.get(moduleAttributes);
-        List matchingRules = new ArrayList();
-        for (Iterator iter = matchers.iterator(); iter.hasNext();) {
-            MapMatcher midm = (MapMatcher) iter.next();
-            Object rule = rules.get(midm);
+    private T[] getRules(Map<String, String> moduleAttributes, Filter<T> filter) {
+        List<MapMatcher> matchers = matcher_lookup.get(moduleAttributes);
+        List<T> matchingRules = new ArrayList<T>();
+        for (MapMatcher midm : matchers) {
+            T rule = rules.get(midm);
             if (filter.accept(rule)) {
                 matchingRules.add(rule);
             }
         }
-        return matchingRules.toArray();
+        return matchingRules.toArray((T[]) new Object[0]);
     }
 
     /**
@@ -223,9 +222,9 @@ public class ModuleRules {
         if (rules.isEmpty()) {
             Message.debug(prefix + "NONE");
         } else {
-            for (Iterator iter = rules.keySet().iterator(); iter.hasNext();) {
-                MapMatcher midm = (MapMatcher) iter.next();
-                Object rule = rules.get(midm);
+            for (Entry<MapMatcher, T> entry : rules.entrySet()) {
+                MapMatcher midm = entry.getKey();
+                T rule = entry.getValue();
                 Message.debug(prefix + midm + " -> " + rule);
             }
         }
@@ -240,11 +239,12 @@ public class ModuleRules {
      * 
      * @return an unmodifiable view of all the rules defined on this ModuleRules.
      */
-    public Map/* <MapMatcher,Object> */getAllRules() {
+    public Map<MapMatcher, T> getAllRules() {
         return Collections.unmodifiableMap(rules);
     }
 
+    @Override
     public Object clone() {
-        return new ModuleRules(rules);
+        return new ModuleRules<T>(rules);
     }
 }