You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-commits@incubator.apache.org by xa...@apache.org on 2007/04/23 15:31:18 UTC

svn commit: r531502 - /incubator/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java

Author: xavier
Date: Mon Apr 23 08:31:18 2007
New Revision: 531502

URL: http://svn.apache.org/viewvc?view=rev&rev=531502
Log:
IMPROVE: Support javadoc and sources even in modules where they are not declared (IVYDE-46)
=> Cache results to improve performance

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

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=531502&r1=531501&r2=531502
==============================================================================
--- 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 Mon Apr 23 08:31:18 2007
@@ -29,13 +29,10 @@
 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;
 import org.apache.ivy.plugins.parser.ModuleDescriptorParserRegistry;
-import org.apache.ivy.plugins.report.XmlReportOutputter;
 import org.apache.ivy.plugins.report.XmlReportParser;
 import org.apache.ivy.plugins.repository.TransferEvent;
 import org.apache.ivy.plugins.repository.TransferListener;
@@ -342,21 +339,7 @@
                 }
             }
             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;
+            	return getMetaArtifact(artifact, "source");
             } else {
             	return null;
             }
@@ -375,24 +358,48 @@
 				}
 			}
 			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;
+            	return getMetaArtifact(artifact, "javadoc");
 			} else {
             	return null;
             }
+		}
+
+		private File getMetaArtifact(Artifact artifact, String metaType) {
+			// meta artifact (source or javadoc) not found in resolved artifacts, 
+			// try to see if a non declared one is available
+			Map extraAtt = new HashMap(artifact.getExtraAttributes());
+			extraAtt.put("classifier", metaType+"s");
+			Artifact metaArtifact = new DefaultArtifact(
+					artifact.getModuleRevisionId(),
+					artifact.getPublicationDate(),
+					artifact.getName(),
+					metaType,
+					"jar",
+					extraAtt
+			);
+			File metaArtifactFile = _cacheMgr.getArchiveFileInCache(metaArtifact);
+			File attempt = new File(metaArtifactFile.getAbsolutePath()+".notfound");
+			if (metaArtifactFile.exists()) {
+				return metaArtifactFile;
+			} else if (attempt.exists()) {
+				return null;
+			} else {
+				Message.info("checking "+metaType+" for "+artifact);
+				_ivy.getResolveEngine().download(metaArtifact, _cacheMgr, false);
+				if (metaArtifactFile.exists()) {
+					return metaArtifactFile;
+				} else {
+					// source artifact not found, we store this information to avoid other attempts later
+					Message.info(metaType+" not found for "+artifact);
+					try {
+						attempt.getParentFile().mkdirs();
+						attempt.createNewFile();
+					} catch (IOException e) {
+			    		Message.error("impossible to create attempt file "+attempt+": "+e);
+					}
+					return null;
+				}
+			}
 		}
     }