*/
private void verifyArtifactoryResolutionEnforced(RepositoryEvent event) {
if (event.getArtifact() == null || !(event.getRepository() instanceof RemoteRepository)) {
return;
}
RemoteRepository repo = (RemoteRepository)event.getRepository();
// In case the Artifactory resolver is not yet set, we wait for it first:
if (!artifactoryRepositoriesEnforced) {
synchronized (artifactoryRepositoriesEnforced) {
if (!artifactoryRepositoriesEnforced) {
try {
artifactoryRepositoriesEnforced.wait();
} catch (InterruptedException e) {
logger.error("Failed while waiting for Artifactory repositories enforcement", e);
}
}
}
}
// Now that the resolver enforcement is done, we make sure that the Artifactory resolution repositories in the resolver are initialized:
artifactoryResolver.initResolutionRepositories(event.getSession());
// Take the Artifactory resolution repositories from the Artifactory resolver:
RemoteRepository artifactorySnapshotRepo = artifactoryResolver.getSnapshotRepository(event.getSession());
RemoteRepository artifactoryReleaseRepo = artifactoryResolver.getReleaseRepository(event.getSession());
// If the artifact about to be downloaded was not handled by the Artifactory resolution resolver, but by the default resolver (before
// it had been replaced), modify the repository URL:
try {
if (event.getArtifact().isSnapshot() && repo != artifactorySnapshotRepo) {
logger.debug("Replacing resolution repository URL: " + repo + " with: " + artifactorySnapshotRepo.getUrl());
Field url = RemoteRepository.class.getDeclaredField("url");
url.setAccessible(true);
url.set(repo, artifactorySnapshotRepo.getUrl());
setRepositoryPolicy(repo);
} else
if (!event.getArtifact().isSnapshot() && repo != artifactoryReleaseRepo) {
logger.debug("Replacing resolution repository URL: " + repo + " with: " + artifactoryReleaseRepo.getUrl());
Field url = RemoteRepository.class.getDeclaredField("url");
url.setAccessible(true);
url.set(repo, artifactoryReleaseRepo.getUrl());
setRepositoryPolicy(repo);
}
} catch (Exception e) {
logger.error("Failed while replacing resolution repository URL", e);
}