Author: xavier Date: Wed Jan 2 10:01:52 2008 New Revision: 608164 URL: http://svn.apache.org/viewvc?rev=608164&view=rev Log: upgrade to latest cache management changes in Ivy
Modified: ant/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java Modified: ant/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java?rev=608164&r1=608163&r2=608164&view=diff ============================================================================== --- ant/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java (original) +++ ant/ivy/ivyde/trunk/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java Wed Jan 2 10:01:52 2008 @@ -16,7 +16,9 @@ import java.util.Map; import org.apache.ivy.Ivy; -import org.apache.ivy.core.cache.CacheManager; +import org.apache.ivy.core.cache.DefaultRepositoryCacheManager; +import org.apache.ivy.core.cache.DefaultResolutionCacheManager; +import org.apache.ivy.core.cache.RepositoryCacheManager; import org.apache.ivy.core.event.IvyEvent; import org.apache.ivy.core.event.IvyListener; import org.apache.ivy.core.event.download.EndArtifactDownloadEvent; @@ -27,6 +29,7 @@ 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.report.ArtifactDownloadReport; import org.apache.ivy.core.report.ResolveReport; import org.apache.ivy.core.resolve.ResolveOptions; import org.apache.ivy.core.retrieve.RetrieveOptions; @@ -68,7 +71,6 @@ private IProgressMonitor _monitor; private IProgressMonitor _dlmonitor; private Ivy _ivy; - private CacheManager _cacheMgr; private boolean _usePreviousResolveIfExist; private int _workPerArtifact = 100; private boolean _notify; @@ -76,7 +78,6 @@ public IvyResolveJob(Ivy ivy, boolean usePreviousResolveIfExist, boolean notify) { super("Resolve "+_javaProject.getProject().getName()+"/"+_ivyXmlPath+" dependencies"); _ivy = ivy; - _cacheMgr = CacheManager.getInstance(_ivy.getSettings()); _usePreviousResolveIfExist = usePreviousResolveIfExist; _notify = notify; } @@ -160,7 +161,7 @@ } String[] confs; - Collection all; + Collection/*<ArtifactDownloadReport>*/ all; List problemMessages; ModuleDescriptor md; @@ -184,7 +185,8 @@ // we check if all required configurations have been // resolved for (int i = 0; i < confs.length; i++) { - File report = _cacheMgr.getConfigurationResolveReportInCache(ResolveOptions + File report = _ivy.getResolutionCacheManager() + .getConfigurationResolveReportInCache(ResolveOptions .getDefaultResolveId(md), confs[i]); boolean resolved = false; if (report.exists()) { @@ -192,7 +194,7 @@ try { XmlReportParser parser = new XmlReportParser(); parser.parse(report); - all.addAll(Arrays.asList(parser.getArtifacts())); + all.addAll(Arrays.asList(parser.getArtifactReports())); resolved = true; } catch (ParseException e) { Message.info("\n\nIVYDE: Error while parsing the report " @@ -207,7 +209,7 @@ + md.getModuleRevisionId().getModuleId() + " doesn't contain enough data: resolving again\n"); ResolveReport r = _ivy.resolve(ivyURL, new ResolveOptions().setConfs(_confs)); - all.addAll(r.getArtifacts()); + all.addAll(Arrays.asList(r.getAllArtifactsReports())); confs = r.getConfigurations(); problemMessages.addAll(r.getAllProblemMessages()); maybeRetrieve(md, confs); @@ -219,7 +221,7 @@ Message.info("\n\nIVYDE: calling resolve on " + ivyURL + "\n"); ResolveReport report = _ivy.resolve(ivyURL, new ResolveOptions().setConfs(_confs)); problemMessages = report.getAllProblemMessages(); - all = report.getArtifacts(); + all = new LinkedHashSet(Arrays.asList(report.getAllArtifactsReports())); confs = report.getConfigurations(); md = report.getModuleDescriptor(); @@ -309,9 +311,10 @@ IClasspathEntry[] classpathEntries; Collection paths = new LinkedHashSet(); for (Iterator iter = all.iterator(); iter.hasNext();) { - Artifact artifact = (Artifact)iter.next(); - if (IvyPlugin.accept(_javaProject, artifact)) { - Path classpathArtifact = new Path(_cacheMgr.getArchiveFileInCache(artifact).getAbsolutePath()); + ArtifactDownloadReport artifact = (ArtifactDownloadReport)iter.next(); + if (artifact.getLocalFile() != null && + IvyPlugin.accept(_javaProject, artifact.getArtifact())) { + Path classpathArtifact = new Path(artifact.getLocalFile().getAbsolutePath()); Path sourcesArtifact = getSourcesArtifactPath(artifact, all); Path javadocArtifact = getJavadocArtifactPath(artifact, all); paths.add(JavaCore.newLibraryEntry(classpathArtifact, @@ -327,38 +330,45 @@ return classpathEntries; } - private Path getSourcesArtifactPath(Artifact artifact, Collection all) { + private Path getSourcesArtifactPath( + ArtifactDownloadReport adr, Collection all) { + Artifact artifact = adr.getArtifact(); _monitor.subTask("searching sources for "+artifact); for (Iterator iter = all.iterator(); iter.hasNext();) { - Artifact a = (Artifact)iter.next(); - if (a.getName().equals(artifact.getName()) && - a.getId().getRevision().equals(artifact.getId().getRevision()) && - IvyPlugin.isSources(_javaProject, a)) - { - return new Path(_cacheMgr.getArchiveFileInCache(a).getAbsolutePath()); + ArtifactDownloadReport otherAdr = (ArtifactDownloadReport)iter.next(); + Artifact a = otherAdr.getArtifact(); + if (otherAdr.getLocalFile() != null + && a.getName().equals(artifact.getName()) + && a.getId().getRevision() + .equals(artifact.getId().getRevision()) + && IvyPlugin.isSources(_javaProject, a)) { + return new Path(otherAdr.getLocalFile().getAbsolutePath()); } } if (IvyPlugin.shouldTestNonDeclaredSources(_javaProject)) { - return getMetaArtifactPath(artifact, "source", "sources"); + return getMetaArtifactPath(adr, "source", "sources"); } else { return null; } } - private Path getJavadocArtifactPath(Artifact artifact, Collection all) { + private Path getJavadocArtifactPath( + ArtifactDownloadReport adr, Collection all) { + Artifact artifact = adr.getArtifact(); _monitor.subTask("searching javadoc for "+artifact); 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 new Path(_cacheMgr.getArchiveFileInCache(a).getAbsolutePath()); + ArtifactDownloadReport otherAdr = (ArtifactDownloadReport)iter.next(); + Artifact a = otherAdr.getArtifact(); + if (otherAdr.getLocalFile() != null + && a.getName().equals(artifact.getName()) + && a.getModuleRevisionId().equals(artifact.getModuleRevisionId()) + && a.getId().equals(artifact.getId()) + && IvyPlugin.isJavadoc(_javaProject, a)) { + return new Path(otherAdr.getLocalFile().getAbsolutePath()); } } if (IvyPlugin.shouldTestNonDeclaredSources(_javaProject)) { - return getMetaArtifactPath(artifact, "javadoc", "javadoc"); + return getMetaArtifactPath(adr, "javadoc", "javadoc"); } else { return null; } @@ -368,7 +378,10 @@ * meta artifact (source or javadoc) not found in resolved artifacts, * try to see if a non declared one is available */ - private Path getMetaArtifactPath(Artifact artifact, String metaType, String metaClassifier) { + private Path getMetaArtifactPath( + ArtifactDownloadReport adr, + String metaType, String metaClassifier) { + Artifact artifact = adr.getArtifact(); Map extraAtt = new HashMap(artifact.getExtraAttributes()); extraAtt.put("classifier", metaClassifier); Artifact metaArtifact = new DefaultArtifact( @@ -379,30 +392,41 @@ "jar", extraAtt ); - // we search archive file in cache with origin == null, to be sure we don't use - // a badly saved artifact origin - // we could go back to _cacheMgr.getArchiveFileInCache(metaArtifact) - // when IVY-430 is resolved - File metaArtifactFile = _cacheMgr.getArchiveFileInCache(metaArtifact, null); - File attempt = new File(metaArtifactFile.getAbsolutePath()+".notfound"); - if (metaArtifactFile.exists()) { - return new Path(metaArtifactFile.getAbsolutePath()); - } else if (attempt.exists()) { - return null; - } else { - Message.info("checking "+metaType+" for "+artifact); - _ivy.getResolveEngine().download(metaArtifact, _cacheMgr, false); + RepositoryCacheManager cache = _ivy.getSettings() + .getResolver(artifact.getModuleRevisionId().getModuleId()) + .getRepositoryCacheManager(); + if (cache instanceof DefaultRepositoryCacheManager) { + File metaArtifactFile = ((DefaultRepositoryCacheManager)cache).getArchiveFileInCache(metaArtifact); + File attempt = new File(metaArtifactFile.getAbsolutePath()+".notfound"); if (metaArtifactFile.exists()) { return new Path(metaArtifactFile.getAbsolutePath()); + } else if (attempt.exists()) { + return null; } 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); + Message.info("checking "+metaType+" for "+artifact); + _ivy.getResolveEngine().download(metaArtifact, false); + if (metaArtifactFile.exists()) { + return new Path(metaArtifactFile.getAbsolutePath()); + } else { + // meta 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; } + } + } else { + Message.info("checking "+metaType+" for "+artifact); + ArtifactDownloadReport metaAdr = _ivy.getResolveEngine().download(metaArtifact, false); + if (metaAdr.getLocalFile() != null && metaAdr.getLocalFile().exists()) { + return new Path(metaAdr.getLocalFile().getAbsolutePath()); + } else { + Message.info(metaType+" not found for "+artifact); + Message.verbose("Attempt not stored in cache because a non Default cache implementation is used."); return null; } } @@ -692,7 +716,7 @@ URL ivyURL = _ivyXmlFile.toURL(); ModuleDescriptor md = ModuleDescriptorParserRegistry.getInstance().parseDescriptor(ivy.getSettings(), ivyURL, false); String resolveId = ResolveOptions.getDefaultResolveId(md); - return CacheManager.getInstance(ivy.getSettings()) + return ivy.getResolutionCacheManager() .getConfigurationResolveReportInCache( resolveId, md.getConfigurationsNames()[0]).toURL();