Author: hibou
Date: Sat Nov 10 14:19:21 2012
New Revision: 1407819

URL: http://svn.apache.org/viewvc?rev=1407819&view=rev
Log:
IVYDE-293:
- fix the map referencing the resolve request: there can be sevral resolve 
request per module descriptor

Modified:
    ant/ivy/ivyde/trunk/doc/release-notes.html
    
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/resolve/IvyResolveJob.java

Modified: ant/ivy/ivyde/trunk/doc/release-notes.html
URL: 
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/doc/release-notes.html?rev=1407819&r1=1407818&r2=1407819&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/doc/release-notes.html (original)
+++ ant/ivy/ivyde/trunk/doc/release-notes.html Sat Nov 10 14:19:21 2012
@@ -146,6 +146,7 @@ List of changes since <a href="/ivy/ivyd
     <li>FIX: Resolution failure when workspace has project &amp; artifact 
sub-element exists (IVYDE-296, IVYDE-319)</li>
     <li>FIX: IvyDE classpath containers become empty on eclipse/MyEclipse 
startup (IVYDE-317)</li>
     <li>FIX: IvyDE doesn't update .classpath anymore; sometimes some 
containers could not get initialized (IVYDE-299)</li>
+       <li>FIX: Only one resolve is done when several are sharing the same 
ivy.xml and the workspace resolver is enabled (IVYDE-293)</li>
 </ul>
     <!-- samples
 <ul>

Modified: 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/resolve/IvyResolveJob.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/resolve/IvyResolveJob.java?rev=1407819&r1=1407818&r2=1407819&view=diff
==============================================================================
--- 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/resolve/IvyResolveJob.java
 (original)
+++ 
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/resolve/IvyResolveJob.java
 Sat Nov 10 14:19:21 2012
@@ -107,7 +107,7 @@ public class IvyResolveJob extends Job {
 
         monitor.beginTask("Loading ivy descriptors", MONITOR_LENGTH);
 
-        Map/* <ModuleDescriptor, ResolveRequest> */inworkspaceModules = new 
LinkedHashMap();
+        Map/* <ModuleDescriptor, List<ResolveRequest>> */inworkspaceModules = 
new LinkedHashMap();
         List/* <ResolveRequest> */otherModules = new ArrayList();
         Map/* <ResolveRequest, Ivy> */ivys = new HashMap();
         Map/* <ResolveRequest, ModuleDescriptor> */mds = new HashMap();
@@ -174,7 +174,12 @@ public class IvyResolveJob extends Job {
                 cachedIvy.setErrorMarker(null);
                 mds.put(request, md);
                 if (request.isInWorkspace()) {
-                    inworkspaceModules.put(md, request);
+                    List requests = (List) inworkspaceModules.get(md);
+                    if (requests == null) {
+                        requests = new ArrayList();
+                        inworkspaceModules.put(md, requests);
+                    }
+                    requests.add(request);
                 } else {
                     otherModules.add(request);
                 }
@@ -194,7 +199,8 @@ public class IvyResolveJob extends Job {
             // we resolve them in the correct order
 
             // The version matcher used will be the one configured for the 
first project
-            ResolveRequest request = (ResolveRequest) 
inworkspaceModules.values().iterator().next();
+            ResolveRequest request = (ResolveRequest) ((List) 
inworkspaceModules.values()
+                    .iterator().next()).get(0);
             VersionMatcher versionMatcher = ((Ivy) 
ivys.get(request)).getSettings()
                     .getVersionMatcher();
 
@@ -207,14 +213,20 @@ public class IvyResolveJob extends Job {
 
             Iterator it = sortedModuleDescriptors.iterator();
             while (it.hasNext()) {
-                request = (ResolveRequest) inworkspaceModules.get(it.next());
-                Ivy ivy = (Ivy) ivys.get(request);
-                ModuleDescriptor md = (ModuleDescriptor) mds.get(request);
-                boolean canceled = launchResolveThread(request, monitor, step, 
errorsStatus, ivy,
-                    md);
-                if (canceled) {
-                    IvyDEMessage.warn("Resolve job canceled");
-                    return Status.CANCEL_STATUS;
+                ModuleDescriptor module = (ModuleDescriptor) it.next();
+                List requests = (List) inworkspaceModules.get(module);
+                IvyDEMessage.info(requests.size() + " container(s) of module " 
+ module
+                        + " to resolve in workspace");
+                for (int i = 0; i < requests.size(); i++) {
+                    request = (ResolveRequest) requests.get(i);
+                    Ivy ivy = (Ivy) ivys.get(request);
+                    ModuleDescriptor md = (ModuleDescriptor) mds.get(request);
+                    boolean canceled = launchResolveThread(request, monitor, 
step, errorsStatus,
+                        ivy, md);
+                    if (canceled) {
+                        IvyDEMessage.warn("Resolve job canceled");
+                        return Status.CANCEL_STATUS;
+                    }
                 }
             }
         }


Reply via email to