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;
}
}