Author: xavier
Date: Fri Apr  6 09:25:32 2007
New Revision: 526217

URL: http://svn.apache.org/viewvc?view=rev&rev=526217
Log:
Support javadoc and sources even in modules where they are not declared 
(IVYDE-46)
I've added support for that, but I still have to add an option to disable it, 
since it can cause slowness when artifacts are not available, IvyDE will check 
for them at each resolve

Modified:
    incubator/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/IvyPlugin.java
    
incubator/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java

Modified: 
incubator/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/IvyPlugin.java
URL: 
http://svn.apache.org/viewvc/incubator/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/IvyPlugin.java?view=diff&rev=526217&r1=526216&r2=526217
==============================================================================
--- incubator/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/IvyPlugin.java 
(original)
+++ incubator/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/IvyPlugin.java 
Fri Apr  6 09:25:32 2007
@@ -549,6 +549,14 @@
         return !"".equals(getRetrievePatternHerited(project));
     }
 
+    public static boolean shouldTestNonDeclaredSources(IJavaProject project) {
+        return true; // TODO: add settings for that
+    }
+
+    public static boolean shouldTestNonDeclaredJavadocs(IJavaProject project) {
+        return true; // TODO: add settings for that
+    }
+
     public IEclipsePreferences getProjectPreferences(final IJavaProject 
project) {
        IScopeContext projectScope = new ProjectScope(project.getProject());
        IEclipsePreferences projectNode = projectScope.getNode(ID);

Modified: 
incubator/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java
URL: 
http://svn.apache.org/viewvc/incubator/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java?view=diff&rev=526217&r1=526216&r2=526217
==============================================================================
--- 
incubator/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java
 (original)
+++ 
incubator/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java
 Fri Apr  6 09:25:32 2007
@@ -10,9 +10,11 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.ivy.Ivy;
 import org.apache.ivy.core.cache.CacheManager;
@@ -24,8 +26,11 @@
 import org.apache.ivy.core.event.resolve.EndResolveDependencyEvent;
 import org.apache.ivy.core.event.resolve.StartResolveDependencyEvent;
 import org.apache.ivy.core.module.descriptor.Artifact;
+import org.apache.ivy.core.module.descriptor.DefaultArtifact;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
 import org.apache.ivy.core.module.id.ModuleId;
+import org.apache.ivy.core.report.ArtifactDownloadReport;
+import org.apache.ivy.core.report.DownloadStatus;
 import org.apache.ivy.core.report.ResolveReport;
 import org.apache.ivy.core.resolve.ResolveOptions;
 import org.apache.ivy.core.retrieve.RetrieveOptions;
@@ -207,7 +212,7 @@
                                                                status[0] = 
Status.CANCEL_STATUS;
                                                                return;
                                                        }
-                                                       //eventually do a 
retrieve
+                                                       // call retrieve if 
required
                                                        
if(IvyPlugin.shouldDoRetrieve(_javaProject)) {
                                                                
_monitor.setTaskName("retrieving dependencies in 
"+IvyPlugin.getFullRetrievePatternHerited(_javaProject));
                                                                _ivy.retrieve(
@@ -336,22 +341,58 @@
                        return _cacheMgr.getArchiveFileInCache(a);
                 }
             }
-                       return null;
+            if (IvyPlugin.shouldTestNonDeclaredSources(_javaProject)) {
+               // source artifact not found in resolved artifacts, 
+               // try to see if a non declared one is available
+               Map extraAtt = new HashMap(artifact.getExtraAttributes());
+               extraAtt.put("classifier", "sources");
+               Artifact sourceArtifact = new DefaultArtifact(
+                               artifact.getModuleRevisionId(),
+                               artifact.getPublicationDate(),
+                               artifact.getName(),
+                               "source",
+                               "jar",
+                               extraAtt
+               );
+               _ivy.getResolveEngine().download(sourceArtifact, _cacheMgr, 
false);
+               File source = _cacheMgr.getArchiveFileInCache(sourceArtifact);
+               return source.exists()?source:null;
+            } else {
+               return null;
+            }
                }
 
                private File getJavadocArtifact(Artifact artifact, Collection 
all)
                {
-            for (Iterator iter = all.iterator(); iter.hasNext();) {
-                Artifact a = (Artifact)iter.next();
-                if (a.getName().equals(artifact.getName()) &&
-                               
a.getModuleRevisionId().equals(artifact.getModuleRevisionId()) &&
-                               a.getId().equals(artifact.getId()) &&
-                               IvyPlugin.isJavadoc(_javaProject, a))
-                {
-                       return _cacheMgr.getArchiveFileInCache(a);
-                }
+                       for (Iterator iter = all.iterator(); iter.hasNext();) {
+                               Artifact a = (Artifact)iter.next();
+                               if (a.getName().equals(artifact.getName()) &&
+                                               
a.getModuleRevisionId().equals(artifact.getModuleRevisionId()) &&
+                                               
a.getId().equals(artifact.getId()) &&
+                                               
IvyPlugin.isJavadoc(_javaProject, a))
+                               {
+                                       return 
_cacheMgr.getArchiveFileInCache(a);
+                               }
+                       }
+                       if 
(IvyPlugin.shouldTestNonDeclaredSources(_javaProject)) {
+                               // javadoc artifact not found in resolved 
artifacts, 
+                               // try to see if a non declared one is available
+                               Map extraAtt = new 
HashMap(artifact.getExtraAttributes());
+                               extraAtt.put("classifier", "javadocs");
+                               Artifact javadocArtifact = new DefaultArtifact(
+                                               artifact.getModuleRevisionId(),
+                                               artifact.getPublicationDate(),
+                                               artifact.getName(),
+                                               "javadoc",
+                                               "jar",
+                                               extraAtt
+                               );
+                               
_ivy.getResolveEngine().download(javadocArtifact, _cacheMgr, false);
+                               File javadoc = 
_cacheMgr.getArchiveFileInCache(javadocArtifact);
+                               return javadoc.exists()?javadoc:null;
+                       } else {
+               return null;
             }
-                       return null;
                }
     }
     


Reply via email to