Java源码示例:org.apache.ivy.plugins.repository.ArtifactResourceResolver
示例1
public EnhancedArtifactDownloadReport download(Artifact artifact, ArtifactResourceResolver resourceResolver, ResourceDownloader resourceDownloader, CacheDownloadOptions options) {
ResolvedResource resolvedResource = resourceResolver.resolve(artifact);
long start = System.currentTimeMillis();
EnhancedArtifactDownloadReport report = new EnhancedArtifactDownloadReport(artifact);
if (resolvedResource == null) {
report.setDownloadStatus(DownloadStatus.FAILED);
report.setDownloadDetails(ArtifactDownloadReport.MISSING_ARTIFACT);
report.setDownloadTimeMillis(System.currentTimeMillis() - start);
return report;
}
assert resolvedResource.getResource().isLocal();
File file = new File(resolvedResource.getResource().getName());
assert file.isFile();
ArtifactOrigin origin = new ArtifactOrigin(artifact, true, file.getAbsolutePath());
report.setDownloadStatus(DownloadStatus.NO);
report.setArtifactOrigin(origin);
report.setSize(file.length());
report.setLocalFile(file);
return report;
}
示例2
public EnhancedArtifactDownloadReport download(Artifact artifact, ArtifactResourceResolver resourceResolver, ResourceDownloader resourceDownloader, CacheDownloadOptions options) {
ResolvedResource resolvedResource = resourceResolver.resolve(artifact);
long start = System.currentTimeMillis();
EnhancedArtifactDownloadReport report = new EnhancedArtifactDownloadReport(artifact);
if (resolvedResource == null) {
report.setDownloadStatus(DownloadStatus.FAILED);
report.setDownloadDetails(ArtifactDownloadReport.MISSING_ARTIFACT);
report.setDownloadTimeMillis(System.currentTimeMillis() - start);
return report;
}
assert resolvedResource.getResource().isLocal();
File file = new File(resolvedResource.getResource().getName());
assert file.isFile();
ArtifactOrigin origin = new ArtifactOrigin(artifact, true, file.getAbsolutePath());
report.setDownloadStatus(DownloadStatus.NO);
report.setArtifactOrigin(origin);
report.setSize(file.length());
report.setLocalFile(file);
return report;
}
示例3
@Override
public ArtifactDownloadReport download(final ArtifactOrigin origin, DownloadOptions options) {
Checks.checkNotNull(origin, "origin");
return getRepositoryCacheManager().download(origin.getArtifact(),
new ArtifactResourceResolver() {
public ResolvedResource resolve(Artifact artifact) {
try {
Resource resource = getResource(origin.getLocation());
if (resource != null) {
String revision = origin.getArtifact().getModuleRevisionId().getRevision();
return new ResolvedResource(resource, revision);
}
} catch (IOException e) {
Message.debug(e);
}
return null;
}
}, downloader, getCacheDownloadOptions(options));
}
示例4
public ResolvedModuleRevision cacheModuleDescriptor(DependencyResolver resolver, final ResolvedResource resolvedResource, DependencyDescriptor dd, Artifact moduleArtifact, ResourceDownloader downloader, CacheMetadataOptions options) throws ParseException {
if (!moduleArtifact.isMetadata()) {
return null;
}
ArtifactResourceResolver artifactResourceResolver = new ArtifactResourceResolver() {
public ResolvedResource resolve(Artifact artifact) {
return resolvedResource;
}
};
ArtifactDownloadReport report = download(moduleArtifact, artifactResourceResolver, downloader, new CacheDownloadOptions().setListener(options.getListener()).setForce(true));
if (report.getDownloadStatus() == DownloadStatus.FAILED) {
LOGGER.warn("problem while downloading module descriptor: {}: {} ({} ms)", resolvedResource.getResource(), report.getDownloadDetails(), report.getDownloadTimeMillis());
return null;
}
ModuleDescriptor md = parseModuleDescriptor(resolver, moduleArtifact, options, report.getLocalFile(), resolvedResource.getResource());
LOGGER.debug("\t{}: parsed downloaded md file for {}; parsed={}" + getName(), moduleArtifact.getModuleRevisionId(), md.getModuleRevisionId());
MetadataArtifactDownloadReport madr = new MetadataArtifactDownloadReport(md.getMetadataArtifact());
madr.setSearched(true);
madr.setDownloadStatus(report.getDownloadStatus());
madr.setDownloadDetails(report.getDownloadDetails());
madr.setArtifactOrigin(report.getArtifactOrigin());
madr.setDownloadTimeMillis(report.getDownloadTimeMillis());
madr.setOriginalLocalFile(report.getLocalFile());
madr.setSize(report.getSize());
return new ResolvedModuleRevision(resolver, resolver, md, madr);
}
示例5
public ResolvedModuleRevision cacheModuleDescriptor(DependencyResolver resolver, final ResolvedResource resolvedResource, DependencyDescriptor dd, Artifact moduleArtifact, ResourceDownloader downloader, CacheMetadataOptions options) throws ParseException {
if (!moduleArtifact.isMetadata()) {
return null;
}
ArtifactResourceResolver artifactResourceResolver = new ArtifactResourceResolver() {
public ResolvedResource resolve(Artifact artifact) {
return resolvedResource;
}
};
ArtifactDownloadReport report = download(moduleArtifact, artifactResourceResolver, downloader, new CacheDownloadOptions().setListener(options.getListener()).setForce(true));
if (report.getDownloadStatus() == DownloadStatus.FAILED) {
LOGGER.warn("problem while downloading module descriptor: {}: {} ({} ms)", resolvedResource.getResource(), report.getDownloadDetails(), report.getDownloadTimeMillis());
return null;
}
ModuleDescriptor md = parseModuleDescriptor(resolver, moduleArtifact, options, report.getLocalFile(), resolvedResource.getResource());
LOGGER.debug("\t{}: parsed downloaded md file for {}; parsed={}" + getName(), moduleArtifact.getModuleRevisionId(), md.getModuleRevisionId());
MetadataArtifactDownloadReport madr = new MetadataArtifactDownloadReport(md.getMetadataArtifact());
madr.setSearched(true);
madr.setDownloadStatus(report.getDownloadStatus());
madr.setDownloadDetails(report.getDownloadDetails());
madr.setArtifactOrigin(report.getArtifactOrigin());
madr.setDownloadTimeMillis(report.getDownloadTimeMillis());
madr.setOriginalLocalFile(report.getLocalFile());
madr.setSize(report.getSize());
return new ResolvedModuleRevision(resolver, resolver, md, madr);
}
示例6
public ArtifactDownloadReport download(Artifact artifact, ArtifactResourceResolver resourceResolver, ResourceDownloader resourceDownloader, CacheDownloadOptions options) {
ArtifactDownloadReport report = new ArtifactDownloadReport(null);
report.setDownloadStatus(DownloadStatus.NO);
return report;
}
示例7
public EnhancedArtifactDownloadReport download(Artifact artifact, ArtifactResourceResolver resourceResolver,
ResourceDownloader resourceDownloader, CacheDownloadOptions options) {
EnhancedArtifactDownloadReport adr = new EnhancedArtifactDownloadReport(artifact);
DownloadListener listener = options.getListener();
if (listener != null) {
listener.needArtifact(this, artifact);
}
long start = System.currentTimeMillis();
try {
ResolvedResource artifactRef = resourceResolver.resolve(artifact);
if (artifactRef != null) {
final Resource resource = artifactRef.getResource();
ArtifactOrigin origin = new ArtifactOrigin(artifact, resource.isLocal(), resource.getName());
if (listener != null) {
listener.startArtifactDownload(this, artifactRef, artifact, origin);
}
ModuleRevisionId moduleRevisionId = artifact.getModuleRevisionId();
ModuleComponentIdentifier componentIdentifier = DefaultModuleComponentIdentifier.newId(moduleRevisionId.getOrganisation(), moduleRevisionId.getName(), moduleRevisionId.getRevision());
File artifactFile = downloadAndCacheArtifactFile(new DefaultModuleVersionArtifactMetaData(componentIdentifier, artifact), artifact, resourceDownloader, artifactRef.getResource());
adr.setDownloadTimeMillis(System.currentTimeMillis() - start);
adr.setSize(artifactFile.length());
adr.setDownloadStatus(DownloadStatus.SUCCESSFUL);
adr.setArtifactOrigin(origin);
adr.setLocalFile(artifactFile);
} else {
adr.setDownloadTimeMillis(System.currentTimeMillis() - start);
adr.setDownloadStatus(DownloadStatus.FAILED);
adr.setDownloadDetails(ArtifactDownloadReport.MISSING_ARTIFACT);
}
} catch (Throwable throwable) {
adr.setDownloadTimeMillis(System.currentTimeMillis() - start);
adr.failed(throwable);
}
if (listener != null) {
listener.endArtifactDownload(this, artifact, adr, adr.getLocalFile());
}
return adr;
}
示例8
public ArtifactDownloadReport download(Artifact artifact, ArtifactResourceResolver resourceResolver, ResourceDownloader resourceDownloader, CacheDownloadOptions options) {
ArtifactDownloadReport report = new ArtifactDownloadReport(null);
report.setDownloadStatus(DownloadStatus.NO);
return report;
}
示例9
public EnhancedArtifactDownloadReport download(Artifact artifact, ArtifactResourceResolver resourceResolver,
ResourceDownloader resourceDownloader, CacheDownloadOptions options) {
EnhancedArtifactDownloadReport adr = new EnhancedArtifactDownloadReport(artifact);
DownloadListener listener = options.getListener();
if (listener != null) {
listener.needArtifact(this, artifact);
}
long start = System.currentTimeMillis();
try {
ResolvedResource artifactRef = resourceResolver.resolve(artifact);
if (artifactRef != null) {
final Resource resource = artifactRef.getResource();
ArtifactOrigin origin = new ArtifactOrigin(artifact, resource.isLocal(), resource.getName());
if (listener != null) {
listener.startArtifactDownload(this, artifactRef, artifact, origin);
}
ModuleRevisionId moduleRevisionId = artifact.getModuleRevisionId();
ModuleComponentIdentifier componentIdentifier = DefaultModuleComponentIdentifier.newId(moduleRevisionId.getOrganisation(), moduleRevisionId.getName(), moduleRevisionId.getRevision());
File artifactFile = downloadAndCacheArtifactFile(new DefaultModuleVersionArtifactMetaData(componentIdentifier, artifact), artifact, resourceDownloader, artifactRef.getResource());
adr.setDownloadTimeMillis(System.currentTimeMillis() - start);
adr.setSize(artifactFile.length());
adr.setDownloadStatus(DownloadStatus.SUCCESSFUL);
adr.setArtifactOrigin(origin);
adr.setLocalFile(artifactFile);
} else {
adr.setDownloadTimeMillis(System.currentTimeMillis() - start);
adr.setDownloadStatus(DownloadStatus.FAILED);
adr.setDownloadDetails(ArtifactDownloadReport.MISSING_ARTIFACT);
}
} catch (Throwable throwable) {
adr.setDownloadTimeMillis(System.currentTimeMillis() - start);
adr.failed(throwable);
}
if (listener != null) {
listener.endArtifactDownload(this, artifact, adr, adr.getLocalFile());
}
return adr;
}
示例10
public ArtifactDownloadReport download(Artifact artifact,
ArtifactResourceResolver resourceResolver, ResourceDownloader resourceDownloader,
CacheDownloadOptions options) {
final ArtifactDownloadReport adr = new ArtifactDownloadReport(artifact);
boolean useOrigin = isUseOrigin();
// TODO: see if we could lock on the artifact to download only, instead of the module
// metadata artifact. We'd need to store artifact origin and is local in artifact specific
// file to do so, or lock the metadata artifact only to update artifact origin, which would
// mean acquiring nested locks, which can be a dangerous thing
ModuleRevisionId mrid = artifact.getModuleRevisionId();
if (!lockMetadataArtifact(mrid)) {
adr.setDownloadStatus(DownloadStatus.FAILED);
adr.setDownloadDetails("impossible to get lock for " + mrid);
return adr;
}
try {
DownloadListener listener = options.getListener();
if (listener != null) {
listener.needArtifact(this, artifact);
}
ArtifactOrigin origin = getSavedArtifactOrigin(artifact);
// if we can use origin file, we just ask ivy for the file in cache, and it will
// return the original one if possible. If we are not in useOrigin mode, we use the
// getArchivePath method which always return a path in the actual cache
File archiveFile = getArchiveFileInCache(artifact, origin, useOrigin);
if (archiveFile.exists() && !options.isForce()) {
adr.setDownloadStatus(DownloadStatus.NO);
adr.setSize(archiveFile.length());
adr.setArtifactOrigin(origin);
adr.setLocalFile(archiveFile);
} else {
long start = System.currentTimeMillis();
try {
ResolvedResource artifactRef = resourceResolver.resolve(artifact);
if (artifactRef != null) {
Resource artifactRes = artifactRef.getResource();
origin = new ArtifactOrigin(artifact, artifactRes.isLocal(),
artifactRes.getName());
if (useOrigin && artifactRes.isLocal()) {
if (artifactRes instanceof LocalizableResource) {
origin.setLocation(((LocalizableResource) artifactRes).getFile()
.getAbsolutePath());
}
saveArtifactOrigin(artifact, origin);
archiveFile = getArchiveFileInCache(artifact, origin);
adr.setDownloadStatus(DownloadStatus.NO);
adr.setSize(archiveFile.length());
adr.setArtifactOrigin(origin);
adr.setLocalFile(archiveFile);
} else {
// refresh archive file now that we better now its origin
archiveFile = getArchiveFileInCache(artifact, origin, useOrigin);
if (ResourceHelper.equals(artifactRes, archiveFile)) {
throw new IllegalStateException("invalid settings for '"
+ resourceResolver
+ "': pointing repository to ivy cache is forbidden !");
}
if (listener != null) {
listener.startArtifactDownload(this, artifactRef, artifact, origin);
}
resourceDownloader.download(artifact, artifactRes, archiveFile);
adr.setSize(archiveFile.length());
saveArtifactOrigin(artifact, origin);
adr.setDownloadTimeMillis(System.currentTimeMillis() - start);
adr.setDownloadStatus(DownloadStatus.SUCCESSFUL);
adr.setArtifactOrigin(origin);
adr.setLocalFile(archiveFile);
}
} else {
adr.setDownloadStatus(DownloadStatus.FAILED);
adr.setDownloadDetails(ArtifactDownloadReport.MISSING_ARTIFACT);
adr.setDownloadTimeMillis(System.currentTimeMillis() - start);
}
} catch (Exception ex) {
Message.debug(ex);
adr.setDownloadStatus(DownloadStatus.FAILED);
adr.setDownloadDetails(ex.getMessage());
adr.setDownloadTimeMillis(System.currentTimeMillis() - start);
}
}
if (adr.getDownloadStatus() != DownloadStatus.FAILED) {
unpackArtifact(artifact, adr, options);
}
if (listener != null) {
listener.endArtifactDownload(this, artifact, adr, archiveFile);
}
return adr;
} finally {
unlockMetadataArtifact(mrid);
}
}
示例11
/**
* Downloads an artifact to this cache.
*
* @param artifact the artifact to download
* @param resourceResolver a resource resolver to use if the artifact needs to be resolved to
* a Resource for downloading
* @param resourceDownloader a resource downloader to use if actual download of the resource is
* needed
* @param options a set of options to adjust the download
* @return a report indicating how the download was performed
*/
ArtifactDownloadReport download(Artifact artifact,
ArtifactResourceResolver resourceResolver,
ResourceDownloader resourceDownloader,
CacheDownloadOptions options);