public void save() { repository.save(); dirty = false; }
@Test public void testGetArtifactsByDateRangeLowerAndUpperBound() throws Exception { ArtifactMetadata artifact = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); repository.save(); Date lower = new Date( artifact.getWhenGathered().getTime() - 10000 ); Date upper = new Date( artifact.getWhenGathered().getTime() + 10000 ); List<ArtifactMetadata> artifacts = repository.getArtifactsByDateRange( TEST_REPO_ID, lower, upper ); assertEquals( Collections.singletonList( artifact ), artifacts ); }
@Test public void testGetArtifactsByChecksumSingleResultMd5() throws Exception { ArtifactMetadata artifact = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); repository.save(); assertEquals( Collections.singletonList( artifact ), new ArrayList<>( repository.getArtifactsByChecksum( TEST_REPO_ID, TEST_MD5 ) ) ); }
@Test public void testGetArtifactsByDateRangeUpperBound() throws Exception { ArtifactMetadata artifact = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); repository.save(); Date upper = new Date( artifact.getWhenGathered().getTime() + 10000 ); List<ArtifactMetadata> artifacts = repository.getArtifactsByDateRange( TEST_REPO_ID, null, upper ); assertEquals( Collections.singletonList( artifact ), artifacts ); }
@Test public void testGetArtifactsByDateRangeLowerBound() throws Exception { ArtifactMetadata artifact = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); repository.save(); Date date = new Date( artifact.getWhenGathered().getTime() - 10000 ); List<ArtifactMetadata> artifacts = repository.getArtifactsByDateRange( TEST_REPO_ID, date, null ); assertEquals( Collections.singletonList( artifact ), artifacts ); }
@Test public void testGetArtifactsByChecksumSingleResultSha1() throws Exception { ArtifactMetadata artifact = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); repository.save(); assertEquals( Collections.singletonList( artifact ), new ArrayList<>( repository.getArtifactsByChecksum( TEST_REPO_ID, TEST_SHA1 ) ) ); }
@Test public void testGetArtifactsByDateRangeUpperBoundOutOfRange() throws Exception { ArtifactMetadata artifact = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); repository.save(); Date upper = new Date( artifact.getWhenGathered().getTime() - 10000 ); List<ArtifactMetadata> artifacts = repository.getArtifactsByDateRange( TEST_REPO_ID, null, upper ); assertThat( artifacts ).isNotNull().isEmpty(); }
@Test public void testGetArtifactsByDateRangeOpen() throws Exception { ArtifactMetadata artifact = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); repository.save(); List<ArtifactMetadata> artifacts = repository.getArtifactsByDateRange( TEST_REPO_ID, null, null ); assertEquals( Collections.singletonList( artifact ), artifacts ); }
@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 testGetArtifactsByChecksumDeepNamespace() throws Exception { ArtifactMetadata artifact = createArtifact(); String namespace = "multi.level.ns"; artifact.setNamespace( namespace ); repository.updateArtifact( TEST_REPO_ID, namespace, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); repository.save(); tryAssert(()->assertEquals( Collections.singletonList( artifact ), new ArrayList<>( repository.getArtifactsByChecksum( TEST_REPO_ID, TEST_SHA1 ) ) )); tryAssert(()->assertEquals( Collections.singletonList( artifact ), new ArrayList<>( repository.getArtifactsByChecksum( TEST_REPO_ID, TEST_MD5 ) ) ) ); }
@Test public void testGetArtifactsByChecksumMultipleCopies() 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 assertEquals( Collections.singletonList( artifact ), new ArrayList<>( repository.getArtifactsByChecksum( TEST_REPO_ID, TEST_SHA1 ) ) ); assertEquals( Collections.singletonList( secondArtifact ), new ArrayList<>( repository.getArtifactsByChecksum( OTHER_REPO_ID, TEST_SHA1 ) ) ); assertEquals( Collections.singletonList( artifact ), new ArrayList<>( repository.getArtifactsByChecksum( TEST_REPO_ID, TEST_MD5 ) ) ); assertEquals( Collections.singletonList( secondArtifact ), new ArrayList<>( repository.getArtifactsByChecksum( OTHER_REPO_ID, TEST_MD5 ) ) ); }
@Test public void testGetArtifactsByDateRangeSparseNamespace() throws Exception { String namespace = "org.apache.archiva"; ArtifactMetadata artifact = createArtifact(); artifact.setNamespace( namespace ); repository.updateArtifact( TEST_REPO_ID, namespace, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); repository.save(); List<ArtifactMetadata> artifacts = repository.getArtifactsByDateRange( TEST_REPO_ID, null, null ); tryAssert(()->assertEquals( Collections.singletonList( artifact ), artifacts )); }
@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 ) ); }
private void createArtifactWithData() throws MetadataRepositoryException, MetadataResolutionException { ArtifactMetadata artifact = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); ProjectVersionMetadata metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ); metadata.setOrganization( TEST_ORGANIZATION ); metadata.setUrl( TEST_URL ); repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata ); repository.save(); }
@Test public void testGetArtifactsByChecksumMultipleResult() throws Exception { ArtifactMetadata artifact1 = createArtifact(); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact1 ); String newProjectId = "another-project"; ArtifactMetadata artifact2 = createArtifact(); artifact2.setProject( newProjectId ); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, newProjectId, TEST_PROJECT_VERSION, artifact2 ); repository.save(); tryAssert(()-> { List<ArtifactMetadata> artifacts = new ArrayList<>(repository.getArtifactsByChecksum(TEST_REPO_ID, TEST_SHA1)); Collections.sort(artifacts, new ArtifactMetadataComparator()); assertEquals(Arrays.asList(artifact2, artifact1), artifacts); }); tryAssert(() -> { ArrayList<ArtifactMetadata> artifacts = new ArrayList<>(repository.getArtifactsByChecksum(TEST_REPO_ID, TEST_MD5)); Collections.sort(artifacts, new ArtifactMetadataComparator()); assertEquals(Arrays.asList(artifact2, artifact1), artifacts); }); }
@Test public void testGetArtifactsByDateRangeMultipleCopies() 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 assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByDateRange( TEST_REPO_ID, null, null ) ); assertEquals( Collections.singletonList( secondArtifact ), repository.getArtifactsByDateRange( OTHER_REPO_ID, null, null ) ); }
private void removeArtifact( MetadataRepository metadataRepository, ArtifactInfo artifactInfo, ArtifactMetadata artifactMetadata ) throws MetadataRepositoryException { if ( artifactInfo.hasClassifier( ) ) { // cleanup facet which contains classifier information MavenArtifactFacet mavenArtifactFacet = (MavenArtifactFacet) artifactMetadata.getFacet( MavenArtifactFacet.FACET_ID ); if ( StringUtils.equals( artifactInfo.classifier, mavenArtifactFacet.getClassifier( ) ) ) { artifactMetadata.removeFacet( MavenArtifactFacet.FACET_ID ); String groupId = artifactInfo.getNamespace( ), artifactId = artifactInfo.getName( ), version = artifactInfo.getProjectVersion( ); MavenArtifactFacet mavenArtifactFacetToCompare = new MavenArtifactFacet( ); mavenArtifactFacetToCompare.setClassifier( artifactInfo.getClassifier( ) ); metadataRepository.removeArtifact( repository.getId( ), groupId, artifactId, version, mavenArtifactFacetToCompare ); metadataRepository.save( ); } } else { metadataRepository.removeArtifact( artifactMetadata, artifactInfo.getProjectVersion( ) ); } }
@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 ) )); }
artifact2.setProject( "project2" ); repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, "project2", TEST_PROJECT_VERSION, artifact2 ); repository.save();
private void createArtifactWithFacet( int artifacts, MetadataFacet artifactFacet, MetadataFacet projectVersionMetadataFacet ) throws MetadataRepositoryException, MetadataResolutionException { for ( int i = 0; i < artifacts; i++ ) { ArtifactMetadata artifact = createArtifact(); if ( artifactFacet != null ) { artifact.addFacet( artifactFacet ); } repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); } if ( projectVersionMetadataFacet != null ) { ProjectVersionMetadata metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ); metadata.addFacet( projectVersionMetadataFacet ); metadata.setOrganization( TEST_ORGANIZATION ); metadata.setUrl( TEST_URL ); repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata ); } repository.save(); }