Search in sources :

Example 1 with RepositoryView

use of org.commonjava.maven.galley.maven.model.view.RepositoryView in project galley by Commonjava.

the class MavenModelProcessorTest method resolveRepositoriesExpressionFromPropertyInProfile.

@Test
public void resolveRepositoriesExpressionFromPropertyInProfile() throws Exception {
    final URI src = new URI("http://nowhere.com/path/to/repo");
    final ProjectVersionRef childRef = new SimpleProjectVersionRef("org.test", "test-pom", "1.0");
    final LinkedHashMap<ProjectVersionRef, String> lineage = new LinkedHashMap<ProjectVersionRef, String>();
    lineage.put(childRef, "test-pom-1.0.pom.xml");
    final Location location = new SimpleLocation("test", src.toString(), false, true, true, false, true, false);
    final String base = PROJ_BASE + "resolve-expression-in-a-profile/";
    for (final Entry<ProjectVersionRef, String> entry : lineage.entrySet()) {
        final ProjectVersionRef ref = entry.getKey();
        final String filename = entry.getValue();
        final String path = ArtifactPathUtils.formatArtifactPath(ref.asPomArtifact(), fixture.getTypeMapper());
        fixture.getTransport().registerDownload(new ConcreteResource(location, path), new TestDownload(base + filename));
    }
    final Transfer transfer = fixture.getArtifactManager().retrieve(location, childRef.asPomArtifact());
    final MavenPomView pomView = fixture.getPomReader().read(childRef, transfer, Collections.singletonList(location));
    final List<RepositoryView> rvs = pomView.getAllRepositories();
    assertThat(rvs, notNullValue());
    assertThat(rvs.size(), equalTo(3));
    assertThat(rvs.get(0).getName(), equalTo("repo.one"));
    assertThat(rvs.get(0).getUrl(), equalTo("http://repo.one.repository"));
    assertThat(rvs.get(1).getName(), equalTo("test.oracle.repo"));
    assertThat(rvs.get(1).getUrl(), equalTo("http://test.oracle.repository"));
    assertThat(rvs.get(2).getName(), equalTo("test.second.oracle.repo"));
    assertThat(rvs.get(2).getUrl(), equalTo("http://another.test.two.oracle.repository"));
}
Also used : TestDownload(org.commonjava.maven.galley.testing.core.transport.job.TestDownload) JoinString(org.commonjava.maven.atlas.ident.util.JoinString) SimpleProjectVersionRef(org.commonjava.maven.atlas.ident.ref.SimpleProjectVersionRef) RepositoryView(org.commonjava.maven.galley.maven.model.view.RepositoryView) URI(java.net.URI) LinkedHashMap(java.util.LinkedHashMap) ProjectVersionRef(org.commonjava.maven.atlas.ident.ref.ProjectVersionRef) SimpleProjectVersionRef(org.commonjava.maven.atlas.ident.ref.SimpleProjectVersionRef) ConcreteResource(org.commonjava.maven.galley.model.ConcreteResource) Transfer(org.commonjava.maven.galley.model.Transfer) SimpleLocation(org.commonjava.maven.galley.model.SimpleLocation) MavenPomView(org.commonjava.maven.galley.maven.model.view.MavenPomView) SimpleLocation(org.commonjava.maven.galley.model.SimpleLocation) Location(org.commonjava.maven.galley.model.Location) Test(org.junit.Test)

Example 2 with RepositoryView

use of org.commonjava.maven.galley.maven.model.view.RepositoryView in project indy by Commonjava.

the class ImpliedRepositoryDetector method addImpliedRepositories.

private void addImpliedRepositories(final ImplicationsJob job) {
    job.implied = new ArrayList<>();
    logger.debug("Retrieving repository/pluginRepository declarations from:\n  {}", new JoinString("\n  ", job.pomView.getDocRefStack()));
    final List<List<RepositoryView>> repoLists = Arrays.asList(job.pomView.getNonProfileRepositories(), job.pomView.getAllPluginRepositories());
    final ImpliedRepositoryCreator creator = createRepoCreator();
    if (creator == null) {
        logger.error("Cannot proceed without a valid ImpliedRepositoryCreator instance. Aborting detection.");
        return;
    }
    for (final List<RepositoryView> repos : repoLists) {
        if (repos == null || repos.isEmpty()) {
            continue;
        }
        for (final RepositoryView repo : repos) {
            final ProjectVersionRef gav = job.pathInfo.getProjectId();
            try {
                if (config.isBlacklisted(repo.getUrl())) {
                    logger.debug("Discarding blacklisted repository: {}", repo);
                    continue;
                } else if (!config.isIncludeSnapshotRepos() && !repo.isReleasesEnabled()) {
                    logger.debug("Discarding snapshot repository: {}", repo);
                    continue;
                }
            } catch (final MalformedURLException e) {
                logger.error(String.format("Cannot add implied remote repo: %s from: %s (transfer: %s). Failed to check if repository is blacklisted.", repo.getUrl(), gav, job.transfer), e);
            }
            logger.debug("Detected POM-declared repository: {}", repo);
            List<RemoteRepository> rrs = null;
            try {
                rrs = storeManager.query().getRemoteRepositoryByUrl(MAVEN_PKG_KEY, repo.getUrl());
            } catch (IndyDataException e) {
                logger.error(String.format("Cannot lookup remote repositories by URL: %s. Reason: %s", e.getMessage()), e);
            }
            final RemoteRepository ref = creator.createFrom(gav, repo, LoggerFactory.getLogger(creator.getClass()));
            if (ref == null) {
                logger.warn("ImpliedRepositoryCreator didn't create anything for repo: {}, specified in: {}. Skipping.", repo.getId(), gav);
                continue;
            }
            if (rrs != null && !rrs.isEmpty()) {
                rrs = rrs.stream().filter(rr -> rr.isAllowReleases() == ref.isAllowReleases()).filter(rr -> rr.isAllowSnapshots() == ref.isAllowSnapshots()).filter(rr -> (isEmpty(rr.getPathMaskPatterns()) && isEmpty(ref.getPathMaskPatterns())) || rr.getPathMaskPatterns().equals(ref.getPathMaskPatterns())).collect(Collectors.toList());
            }
            if (rrs == null || rrs.isEmpty()) {
                logger.debug("Creating new RemoteRepository for: {}", repo);
                final RemoteRepository rr = ref.copyOf();
                rr.setMetadata(METADATA_ORIGIN, IMPLIED_REPO_ORIGIN);
                try {
                    rr.setMetadata(IMPLIED_BY_STORES, mapper.writeValueAsString(new ImpliedRepoMetadataManager.ImpliedRemotesWrapper(Collections.singletonList(job.store.getKey()))));
                } catch (JsonProcessingException e) {
                    logger.error("Failed to set {}", IMPLIED_BY_STORES);
                    continue;
                }
                if (!remoteValidator.isValid(rr)) {
                    logger.warn("Implied repository to: {} is invalid! Repository created was: {}", repo.getUrl(), rr);
                    continue;
                }
                final String changelog = String.format("Adding remote repository: %s (url: %s, name: %s), which is implied by the POM: %s (at: %s/%s)", repo.getId(), repo.getUrl(), repo.getName(), gav, job.transfer.getLocation().getUri(), job.transfer.getPath());
                final ChangeSummary summary = new ChangeSummary(ChangeSummary.SYSTEM_USER, changelog);
                try {
                    final boolean result = storeManager.storeArtifactStore(rr, summary, true, false, new EventMetadata().set(StoreDataManager.EVENT_ORIGIN, IMPLIED_REPOS_DETECTION).set(IMPLIED_BY_POM_TRANSFER, job.transfer));
                    logger.debug("Stored new RemoteRepository: {}. (successful? {})", rr, result);
                    job.implied.add(rr);
                } catch (final IndyDataException e) {
                    logger.error(String.format("Cannot add implied remote repo: %s from: %s (transfer: %s). Failed to store new remote repository.", repo.getUrl(), gav, job.transfer), e);
                }
            } else {
                logger.debug("Found existing RemoteRepositories: {}", rrs);
                for (final RemoteRepository rr : rrs) {
                    rr.setMetadata(METADATA_ORIGIN, IMPLIED_REPO_ORIGIN);
                    try {
                        metadataManager.updateImpliedBy(rr, job.store);
                    } catch (ImpliedReposException e) {
                        logger.error("Failed to set {}", IMPLIED_BY_STORES);
                        continue;
                    }
                    final String changelog = String.format("Updating the existing remote repository: %s (url: %s, name: %s), which is implied by the POM: %s (at: %s/%s)", repo.getId(), repo.getUrl(), repo.getName(), gav, job.transfer.getLocation().getUri(), job.transfer.getPath());
                    final ChangeSummary summary = new ChangeSummary(ChangeSummary.SYSTEM_USER, changelog);
                    try {
                        final boolean result = storeManager.storeArtifactStore(rr, summary, false, false, null);
                        logger.debug("Updated the RemoteRepository: {}. (successful? {})", rr, result);
                        job.implied.add(rr);
                    } catch (final IndyDataException e) {
                        logger.error(String.format("Cannot add implied remote repo: %s from: %s (transfer: %s). Failed to update the remote repository.", repo.getUrl(), gav, job.transfer), e);
                    }
                }
            }
        }
    }
}
Also used : Arrays(java.util.Arrays) KeyedLocation(org.commonjava.indy.model.galley.KeyedLocation) ChangeSummary(org.commonjava.indy.audit.ChangeSummary) LoggerFactory(org.slf4j.LoggerFactory) RemoteRepository(org.commonjava.indy.model.core.RemoteRepository) StringUtils(org.apache.commons.lang3.StringUtils) WeftManaged(org.commonjava.cdi.util.weft.WeftManaged) FileStorageEvent(org.commonjava.maven.galley.event.FileStorageEvent) MavenPomReader(org.commonjava.maven.galley.maven.parse.MavenPomReader) Observes(javax.enterprise.event.Observes) ArtifactStoreValidator(org.commonjava.indy.data.ArtifactStoreValidator) CoreEventManagerConstants(org.commonjava.indy.change.event.CoreEventManagerConstants) ImpliedReposException(org.commonjava.indy.implrepo.ImpliedReposException) StoreKey(org.commonjava.indy.model.core.StoreKey) MAVEN_PKG_KEY(org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY) ArtifactPathInfo(org.commonjava.atlas.maven.ident.util.ArtifactPathInfo) IndyGroovyException(org.commonjava.indy.subsys.template.IndyGroovyException) IndyObjectMapper(org.commonjava.indy.model.core.io.IndyObjectMapper) Collection(java.util.Collection) IMPLIED_REPO_ORIGIN(org.commonjava.indy.implrepo.data.ImpliedReposStoreDataManagerDecorator.IMPLIED_REPO_ORIGIN) METADATA_ORIGIN(org.commonjava.indy.model.core.ArtifactStore.METADATA_ORIGIN) Set(java.util.Set) Collectors(java.util.stream.Collectors) List(java.util.List) EventMetadata(org.commonjava.maven.galley.event.EventMetadata) IndyDataException(org.commonjava.indy.data.IndyDataException) MavenPomView(org.commonjava.maven.galley.maven.model.view.MavenPomView) ProjectVersionRef(org.commonjava.atlas.maven.ident.ref.ProjectVersionRef) IMPLIED_BY_STORES(org.commonjava.indy.implrepo.data.ImpliedRepoMetadataManager.IMPLIED_BY_STORES) JoinString(org.commonjava.atlas.maven.ident.util.JoinString) Group(org.commonjava.indy.model.core.Group) GalleyMavenException(org.commonjava.maven.galley.maven.GalleyMavenException) ArrayList(java.util.ArrayList) Inject(javax.inject.Inject) Transfer(org.commonjava.maven.galley.model.Transfer) RepositoryView(org.commonjava.maven.galley.maven.model.view.RepositoryView) ImpliedRepoConfig(org.commonjava.indy.implrepo.conf.ImpliedRepoConfig) ExecutorConfig(org.commonjava.cdi.util.weft.ExecutorConfig) IMPLIED_STORES(org.commonjava.indy.implrepo.data.ImpliedRepoMetadataManager.IMPLIED_STORES) Location(org.commonjava.maven.galley.model.Location) ExecutorService(java.util.concurrent.ExecutorService) Logger(org.slf4j.Logger) ArtifactStore(org.commonjava.indy.model.core.ArtifactStore) MalformedURLException(java.net.MalformedURLException) Executor(java.util.concurrent.Executor) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) ScriptEngine(org.commonjava.indy.subsys.template.ScriptEngine) ImpliedRepoMetadataManager(org.commonjava.indy.implrepo.data.ImpliedRepoMetadataManager) Collections(java.util.Collections) StoreDataManager(org.commonjava.indy.data.StoreDataManager) MalformedURLException(java.net.MalformedURLException) RemoteRepository(org.commonjava.indy.model.core.RemoteRepository) JoinString(org.commonjava.atlas.maven.ident.util.JoinString) RepositoryView(org.commonjava.maven.galley.maven.model.view.RepositoryView) EventMetadata(org.commonjava.maven.galley.event.EventMetadata) IndyDataException(org.commonjava.indy.data.IndyDataException) JoinString(org.commonjava.atlas.maven.ident.util.JoinString) ProjectVersionRef(org.commonjava.atlas.maven.ident.ref.ProjectVersionRef) List(java.util.List) ArrayList(java.util.ArrayList) ChangeSummary(org.commonjava.indy.audit.ChangeSummary) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) ImpliedReposException(org.commonjava.indy.implrepo.ImpliedReposException)

Aggregations

JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 MalformedURLException (java.net.MalformedURLException)1 URI (java.net.URI)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 LinkedHashMap (java.util.LinkedHashMap)1 List (java.util.List)1 Set (java.util.Set)1 Executor (java.util.concurrent.Executor)1 ExecutorService (java.util.concurrent.ExecutorService)1 Collectors (java.util.stream.Collectors)1 Observes (javax.enterprise.event.Observes)1 Inject (javax.inject.Inject)1 StringUtils (org.apache.commons.lang3.StringUtils)1 ProjectVersionRef (org.commonjava.atlas.maven.ident.ref.ProjectVersionRef)1 ArtifactPathInfo (org.commonjava.atlas.maven.ident.util.ArtifactPathInfo)1 JoinString (org.commonjava.atlas.maven.ident.util.JoinString)1 ExecutorConfig (org.commonjava.cdi.util.weft.ExecutorConfig)1