List<ArtifactMetadata> targetArtifacts = metadataRepository.getArtifacts( targetRepo ); List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts( sourceRepo ); List<ArtifactMetadata> conflictsArtifacts = new ArrayList<>();
@Test public void testGetArtifactsDoesntReturnProjectVersionMetadataFacets() throws Exception { ProjectVersionMetadata versionMetadata = new ProjectVersionMetadata(); versionMetadata.setId( TEST_PROJECT_VERSION ); MetadataFacet facet = new TestMetadataFacet( TEST_FACET_ID, "baz" ); versionMetadata.addFacet( facet ); repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, versionMetadata ); ArtifactMetadata artifactMetadata = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifactMetadata ); repository.save(); Collection<ArtifactMetadata> artifacts = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ); assertEquals( Collections.singletonList( artifactMetadata ), new ArrayList<>( artifacts ) ); artifacts = repository.getArtifacts( TEST_REPO_ID ); assertEquals( Collections.singletonList( artifactMetadata ), new ArrayList<>( artifacts ) ); artifacts = repository.getArtifactsByChecksum( TEST_REPO_ID, TEST_SHA1 ); assertEquals( Collections.singletonList( artifactMetadata ), new ArrayList<>( artifacts ) ); artifacts = repository.getArtifactsByChecksum( TEST_REPO_ID, TEST_MD5 ); assertEquals( Collections.singletonList( artifactMetadata ), new ArrayList<>( artifacts ) ); artifacts = repository.getArtifactsByDateRange( TEST_REPO_ID, null, null ); assertEquals( Collections.singletonList( artifactMetadata ), new ArrayList<>( artifacts ) ); }
assertTrue( repository.getArtifacts( TEST_REPO_ID ).isEmpty() ); assertTrue( repository.getRootNamespaces( TEST_REPO_ID ).isEmpty() );
@Test public void testUpdateArtifactMetadataWithNoExistingFacets() throws Exception { ArtifactMetadata metadata = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata ); metadata = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ).iterator().next(); assertEquals( Collections.<String>emptyList(), new ArrayList<String>( metadata.getFacetIds() ) ); metadata = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata ); metadata = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ).iterator().next(); assertEquals( Collections.<String>emptyList(), new ArrayList<String>( metadata.getFacetIds() ) ); }
@Override public void merge( MetadataRepository metadataRepository, String sourceRepoId, String targetRepoId ) throws RepositoryMergerException { try { List<ArtifactMetadata> artifactsInSourceRepo = metadataRepository.getArtifacts( sourceRepoId ); for ( ArtifactMetadata artifactMetadata : artifactsInSourceRepo ) { artifactMetadata.setRepositoryId( targetRepoId ); createFolderStructure( sourceRepoId, targetRepoId, artifactMetadata ); } } catch ( MetadataRepositoryException e ) { throw new RepositoryMergerException( e.getMessage(), e ); } catch ( IOException e ) { throw new RepositoryMergerException( e.getMessage(), e ); } catch ( RepositoryException e ) { throw new RepositoryMergerException( e.getMessage(), e ); } }
@Override public List<Artifact> getArtifacts( String repositoryId ) throws ArchivaRestServiceException { RepositorySession repositorySession = repositorySessionFactory.createSession(); try { List<ArtifactMetadata> artifactMetadatas = repositorySession.getRepository().getArtifacts( repositoryId ); return buildArtifacts( artifactMetadatas, repositoryId ); } catch ( MetadataRepositoryException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } finally { repositorySession.close(); } }
@Override public List<Artifact> getArtifacts( String repositoryId ) throws ArchivaRestServiceException { RepositorySession repositorySession = repositorySessionFactory.createSession(); try { List<ArtifactMetadata> artifactMetadatas = repositorySession.getRepository().getArtifacts( repositoryId ); return buildArtifacts( artifactMetadatas, repositoryId ); } catch ( MetadataRepositoryException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } finally { repositorySession.close(); } }
@Override public void merge( MetadataRepository metadataRepository, String sourceRepoId, String targetRepoId, Filter<ArtifactMetadata> filter ) throws RepositoryMergerException { try { List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts( sourceRepoId ); for ( ArtifactMetadata metadata : sourceArtifacts ) { if ( filter.accept( metadata ) ) { createFolderStructure( sourceRepoId, targetRepoId, metadata ); } } } catch ( MetadataRepositoryException e ) { throw new RepositoryMergerException( e.getMessage(), e ); } catch ( IOException e ) { throw new RepositoryMergerException( e.getMessage(), e ); } catch ( RepositoryException e ) { throw new RepositoryMergerException( e.getMessage(), e ); } }
@Test public void testGetArtifacts() throws Exception { ArtifactMetadata artifact1 = createArtifact(); ArtifactMetadata artifact2 = createArtifact( "pom" ); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact1 ); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact2 ); Collection<ArtifactMetadata> artifacts = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ); ArrayList<ArtifactMetadata> actual = new ArrayList<>( artifacts ); Collections.sort( actual,( o1, o2 ) -> o1.getId().compareTo( o2.getId() ) ); assertEquals( Arrays.asList( artifact1, artifact2 ), actual ); }
@Test public void deleteArtifact() throws Exception { ArtifactMetadata artifact = createArtifact(); artifact.addFacet( new TestMetadataFacet( "value" ) ); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); Collection<ArtifactMetadata> artifacts = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ); assertEquals( Collections.singletonList( artifact ), new ArrayList<>( artifacts ) ); repository.removeArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact.getId() ); artifacts = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ); assertThat( artifacts ).isNotNull().isEmpty(); }
@Test public void testUpdateArtifactMetadataWithExistingFacets() throws Exception { ArtifactMetadata metadata = createArtifact(); MetadataFacet facet = new TestMetadataFacet( "baz" ); metadata.addFacet( facet ); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata ); metadata = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ).iterator().next(); assertEquals( Collections.singleton( TEST_FACET_ID ), metadata.getFacetIds() ); metadata = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata ); metadata = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ).iterator().next(); assertEquals( Collections.singleton( TEST_FACET_ID ), metadata.getFacetIds() ); TestMetadataFacet testFacet = (TestMetadataFacet) metadata.getFacet( TEST_FACET_ID ); assertEquals( "baz", testFacet.getValue() ); }
@Test public void testGetArtifactsByRepoId() throws Exception { ArtifactMetadata artifact = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); repository.save(); tryAssert(()-> { List<ArtifactMetadata> artifacts = repository.getArtifacts(TEST_REPO_ID); assertEquals(Collections.singletonList(artifact), artifacts); }); }
@Test public void testGetArtifactsByRepoIdMultipleCopies() throws Exception { ArtifactMetadata artifact = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); ArtifactMetadata secondArtifact = createArtifact(); secondArtifact.setRepositoryId( OTHER_REPO_ID ); repository.updateArtifact( OTHER_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, secondArtifact ); repository.save(); // test it restricts to the appropriate repository tryAssert(() -> assertEquals( Collections.singletonList( artifact ), repository.getArtifacts( TEST_REPO_ID ) )); tryAssert(() -> assertEquals( Collections.singletonList( secondArtifact ), repository.getArtifacts( OTHER_REPO_ID ) )); }
List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts( sourceRepositoryId );
targetRepositoryId ); MetadataRepository metadataRepository = repositorySession.getRepository(); List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts( sourceRepositoryId ); sourceArtifacts.removeAll( conflictSourceArtifacts );
@Test public void testDeleteArtifact() throws Exception { ArtifactMetadata artifact = createArtifact(); artifact.addFacet( new TestMetadataFacet( "value" ) ); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); assertThat( repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ) ).containsExactly( artifact ); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION_2_0, artifact ); Collection<String> versions = repository.getProjectVersions( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT ); log.info( "versions {}", versions ); assertThat( versions ).isNotNull().isNotEmpty().hasSize( 2 ).contains( "1.0", "2.0" ); repository.removeArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact.getId() ); versions = repository.getProjectVersions( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT ); log.info( "versions {}", versions ); assertThat( versions ).isNotNull().isNotEmpty().hasSize( 1 ).contains( "2.0" ); assertThat( repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ) ).isNotNull().isEmpty(); assertThat( repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION_2_0 ) ).isNotEmpty().hasSize( 1 ); }
for ( ArtifactMetadata artifact : metadataRepository.getArtifacts( repositoryId, ns, project, version ) )
repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ); artifacts = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
@Test public void testGetArtifactOnly() throws Exception { assertThat( new ArrayList<>( repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ) ) ).isNotNull().isEmpty(); assertThat( repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ) ).isNull(); assertThat( repository.getProject( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT ) ).isNull(); assertThat( repository.getRootNamespaces( TEST_REPO_ID ) ).isNotNull().isEmpty(); ArtifactMetadata metadata = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata ); Collection<ArtifactMetadata> artifacts = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ); //assertEquals( Collections.singletonList( metadata ), new ArrayList<ArtifactMetadata>( artifacts ) ); assertThat( artifacts ).containsExactly( metadata ); // test that namespace, project and project version is also constructed assertThat( repository.getRootNamespaces( TEST_REPO_ID ) ).isNotNull().isNotEmpty().contains( TEST_NAMESPACE ).hasSize( 1 ); ProjectMetadata projectMetadata = repository.getProject( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT ); assertEquals( TEST_PROJECT, projectMetadata.getId() ); assertEquals( TEST_NAMESPACE, projectMetadata.getNamespace() ); ProjectVersionMetadata projectVersionMetadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ); assertEquals( TEST_PROJECT_VERSION, projectVersionMetadata.getId() ); }
@Test public void deleteSnapshotVersion() throws Exception { ArtifactMetadata artifactOne = createArtifact(); artifactOne.setVersion( "2.0-20120618.214127-1" ); artifactOne.setProjectVersion( "2.0-SNAPSHOT" ); artifactOne.addFacet( new TestMetadataFacet( "value" ) ); artifactOne.setId( TEST_PROJECT + "-" + "2.0-20120618.214127-1" + "." + "jar" ); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, "2.0-SNAPSHOT", artifactOne ); ArtifactMetadata artifactTwo = createArtifact(); artifactTwo.setVersion( "2.0-20120618.214135-2" ); artifactTwo.setProjectVersion( "2.0-SNAPSHOT" ); artifactTwo.addFacet( new TestMetadataFacet( "value" ) ); artifactTwo.setId( TEST_PROJECT + "-" + "2.0-20120618.214135-2" + "." + "jar" ); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, "2.0-SNAPSHOT", artifactTwo ); Collection<ArtifactMetadata> artifactMetadatas = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, "2.0-SNAPSHOT" ); assertThat( artifactMetadatas ).isNotNull().isNotEmpty().hasSize( 2 ); log.info( "artifactMetadatas: {}", artifactMetadatas ); repository.removeArtifact( artifactOne, "2.0-SNAPSHOT" ); artifactMetadatas = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, "2.0-SNAPSHOT" ); assertThat( artifactMetadatas ).isNotNull().isNotEmpty().hasSize( 1 ); repository.removeArtifact( artifactTwo, "2.0-SNAPSHOT" ); artifactMetadatas = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, "2.0-SNAPSHOT" ); assertThat( artifactMetadatas ).isNotNull().isEmpty(); }