mirror of https://github.com/apache/archiva.git
Changing method names and adding javadoc for metarepository
This commit is contained in:
parent
811c445f04
commit
8f42ce002c
|
@ -259,7 +259,7 @@ public abstract class AbstractRepositoryPurge
|
|||
}
|
||||
else
|
||||
{
|
||||
// metadataRepository.removeArtifact( artifactMetadata, baseVersion );
|
||||
// metadataRepository.removeTimestampedArtifact( artifactMetadata, baseVersion );
|
||||
metaRemovalList.put( info, artifactMetadata );
|
||||
}
|
||||
}
|
||||
|
@ -366,7 +366,7 @@ public abstract class AbstractRepositoryPurge
|
|||
version = artifactInfo.getProjectVersion( );
|
||||
MavenArtifactFacet mavenArtifactFacetToCompare = new MavenArtifactFacet( );
|
||||
mavenArtifactFacetToCompare.setClassifier( artifactInfo.getClassifier( ) );
|
||||
metadataRepository.removeArtifact(repositorySession , repository.getId( ), groupId,
|
||||
metadataRepository.removeFacetFromArtifact(repositorySession , repository.getId( ), groupId,
|
||||
artifactId, version, mavenArtifactFacetToCompare );
|
||||
try {
|
||||
repositorySession.save( );
|
||||
|
@ -377,7 +377,7 @@ public abstract class AbstractRepositoryPurge
|
|||
}
|
||||
else
|
||||
{
|
||||
metadataRepository.removeArtifact(repositorySession , artifactMetadata, artifactInfo.getProjectVersion( ) );
|
||||
metadataRepository.removeTimestampedArtifact(repositorySession , artifactMetadata, artifactInfo.getProjectVersion( ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -345,8 +345,8 @@ public class CleanupReleasedSnapshotsRepositoryPurgeTest
|
|||
verify(metadataRepository, never()).removeProjectVersion(eq(repositorySession) , eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
|
||||
verify(metadataRepository, never()).removeProjectVersion(eq(repositorySession) , eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq("2.0.3-SNAPSHOT") );
|
||||
verify(metadataRepository, never()).removeProjectVersion(eq(repositorySession) , eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq("2.0.4-SNAPSHOT") );
|
||||
verify(metadataRepository, never()).removeArtifact(eq(repositorySession) , any(ArtifactMetadata.class), any(String.class) );
|
||||
verify(metadataRepository, never()).removeArtifact(eq(repositorySession) , any(String.class), any(String.class), any(String.class), any(String.class), any( MetadataFacet.class) );
|
||||
verify(metadataRepository, never()).removeTimestampedArtifact(eq(repositorySession) , any(ArtifactMetadata.class), any(String.class) );
|
||||
verify(metadataRepository, never()).removeFacetFromArtifact(eq(repositorySession) , any(String.class), any(String.class), any(String.class), any(String.class), any( MetadataFacet.class) );
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ public class DaysOldRepositoryPurgeTest
|
|||
// Verify the metadataRepository invocations
|
||||
verify(metadataRepository, never()).removeProjectVersion(eq(repositorySession) , eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
|
||||
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
||||
verify(metadataRepository, times(2)).removeArtifact(eq(repositorySession) , metadataArg.capture(), eq(projectVersion) );
|
||||
verify(metadataRepository, times(2)).removeTimestampedArtifact(eq(repositorySession) , metadataArg.capture(), eq(projectVersion) );
|
||||
List<ArtifactMetadata> metaL = metadataArg.getAllValues();
|
||||
for (ArtifactMetadata meta : metaL) {
|
||||
assertTrue(meta.getId().startsWith(projectName));
|
||||
|
@ -229,7 +229,7 @@ public class DaysOldRepositoryPurgeTest
|
|||
// Verify the metadataRepository invocations
|
||||
verify(metadataRepository, never()).removeProjectVersion(eq(repositorySession) , eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
|
||||
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
||||
verify(metadataRepository, times(deletedVersions.size())).removeArtifact(eq(repositorySession) , metadataArg.capture(), eq(projectVersion) );
|
||||
verify(metadataRepository, times(deletedVersions.size())).removeTimestampedArtifact(eq(repositorySession) , metadataArg.capture(), eq(projectVersion) );
|
||||
List<ArtifactMetadata> metaL = metadataArg.getAllValues();
|
||||
for (ArtifactMetadata meta : metaL) {
|
||||
assertTrue(meta.getId().startsWith(projectName));
|
||||
|
@ -337,7 +337,7 @@ public class DaysOldRepositoryPurgeTest
|
|||
// Verify the metadataRepository invocations
|
||||
verify(metadataRepository, never()).removeProjectVersion(eq(repositorySession) , eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
|
||||
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
||||
verify(metadataRepository, times(deletedVersions.size())).removeArtifact( eq(repositorySession), metadataArg.capture(), eq(projectVersion) );
|
||||
verify(metadataRepository, times(deletedVersions.size())).removeTimestampedArtifact( eq(repositorySession), metadataArg.capture(), eq(projectVersion) );
|
||||
List<ArtifactMetadata> metaL = metadataArg.getAllValues();
|
||||
for (ArtifactMetadata meta : metaL) {
|
||||
assertTrue(meta.getId().startsWith(projectName));
|
||||
|
|
|
@ -27,7 +27,6 @@ import org.apache.archiva.consumers.KnownRepositoryContentConsumer;
|
|||
import org.apache.archiva.consumers.functors.ConsumerWantsFilePredicate;
|
||||
import org.apache.archiva.metadata.model.ArtifactMetadata;
|
||||
import org.apache.archiva.metadata.model.MetadataFacet;
|
||||
import org.apache.archiva.mock.MockRepositorySessionFactory;
|
||||
import org.apache.archiva.repository.RepositoryRegistry;
|
||||
import org.apache.archiva.repository.features.ArtifactCleanupFeature;
|
||||
import org.custommonkey.xmlunit.XMLAssert;
|
||||
|
@ -210,7 +209,7 @@ public class RepositoryPurgeConsumerTest
|
|||
// Verify the metadataRepository invocations
|
||||
verify(metadataRepository, never()).removeProjectVersion( eq(repositorySession), eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
|
||||
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
||||
verify(metadataRepository, times(2)).removeArtifact( eq(repositorySession), metadataArg.capture(), eq(projectVersion) );
|
||||
verify(metadataRepository, times(2)).removeTimestampedArtifact( eq(repositorySession), metadataArg.capture(), eq(projectVersion) );
|
||||
List<ArtifactMetadata> metaL = metadataArg.getAllValues();
|
||||
for (ArtifactMetadata meta : metaL) {
|
||||
assertTrue(meta.getId().startsWith(projectName));
|
||||
|
@ -323,7 +322,7 @@ public class RepositoryPurgeConsumerTest
|
|||
// Verify the metadataRepository invocations
|
||||
verify(metadataRepository, never()).removeProjectVersion( eq(repositorySession), eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
|
||||
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
||||
verify(metadataRepository, times(2)).removeArtifact( eq(repositorySession), metadataArg.capture(), eq(projectVersion) );
|
||||
verify(metadataRepository, times(2)).removeTimestampedArtifact( eq(repositorySession), metadataArg.capture(), eq(projectVersion) );
|
||||
List<ArtifactMetadata> metaL = metadataArg.getAllValues();
|
||||
assertTrue( metaL.size( ) > 0 );
|
||||
for (ArtifactMetadata meta : metaL) {
|
||||
|
@ -403,8 +402,8 @@ public class RepositoryPurgeConsumerTest
|
|||
|
||||
verify(metadataRepository, never()).removeProjectVersion( eq(repositorySession), eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
|
||||
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
||||
verify(metadataRepository, never()).removeArtifact( eq(repositorySession), any(), any() );
|
||||
verify(metadataRepository, never()).removeArtifact( eq(repositorySession), any(), any(), any(), any(), any(MetadataFacet.class) );
|
||||
verify(metadataRepository, never()).removeTimestampedArtifact( eq(repositorySession), any(), any() );
|
||||
verify(metadataRepository, never()).removeFacetFromArtifact( eq(repositorySession), any(), any(), any(), any(), any(MetadataFacet.class) );
|
||||
|
||||
// check if the snapshot wasn't removed
|
||||
|
||||
|
@ -473,7 +472,7 @@ public class RepositoryPurgeConsumerTest
|
|||
|
||||
verify(metadataRepository, times(1)).removeProjectVersion( eq(repositorySession), eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
|
||||
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
||||
verify(metadataRepository, never()).removeArtifact( eq(repositorySession), any(), any() );
|
||||
verify(metadataRepository, never()).removeTimestampedArtifact( eq(repositorySession), any(), any() );
|
||||
|
||||
// check if the snapshot was removed
|
||||
assertDeleted( projectRoot + "/2.3-SNAPSHOT" );
|
||||
|
|
|
@ -137,7 +137,7 @@ public class RetentionCountRepositoryPurgeTest
|
|||
// Verify the metadataRepository invocations
|
||||
verify(metadataRepository, never()).removeProjectVersion( eq(repositorySession), eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
|
||||
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
||||
verify(metadataRepository, times(deletedVersions.size())).removeArtifact( eq(repositorySession), metadataArg.capture(), eq(projectVersion) );
|
||||
verify(metadataRepository, times(deletedVersions.size())).removeTimestampedArtifact( eq(repositorySession), metadataArg.capture(), eq(projectVersion) );
|
||||
List<ArtifactMetadata> metaL = metadataArg.getAllValues();
|
||||
for (ArtifactMetadata meta : metaL) {
|
||||
assertTrue(meta.getId().startsWith(projectName));
|
||||
|
@ -223,7 +223,7 @@ public class RetentionCountRepositoryPurgeTest
|
|||
// Verify the metadataRepository invocations
|
||||
verify(metadataRepository, never()).removeProjectVersion( eq(repositorySession), eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
|
||||
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
||||
verify(metadataRepository, times(deletedVersions.size())).removeArtifact( eq(repositorySession), metadataArg.capture(), eq(projectVersion) );
|
||||
verify(metadataRepository, times(deletedVersions.size())).removeTimestampedArtifact( eq(repositorySession), metadataArg.capture(), eq(projectVersion) );
|
||||
List<ArtifactMetadata> metaL = metadataArg.getAllValues();
|
||||
for (ArtifactMetadata meta : metaL) {
|
||||
assertTrue(meta.getId().startsWith(projectName));
|
||||
|
@ -311,7 +311,7 @@ public class RetentionCountRepositoryPurgeTest
|
|||
// Verify the metadataRepository invocations
|
||||
verify(metadataRepository, never()).removeProjectVersion( eq(repositorySession), eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion) );
|
||||
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
||||
verify(metadataRepository, times(deletedVersions.size())).removeArtifact( eq(repositorySession), metadataArg.capture(), eq(projectVersion) );
|
||||
verify(metadataRepository, times(deletedVersions.size())).removeTimestampedArtifact( eq(repositorySession), metadataArg.capture(), eq(projectVersion) );
|
||||
List<ArtifactMetadata> metaL = metadataArg.getAllValues();
|
||||
for (ArtifactMetadata meta : metaL) {
|
||||
assertTrue(meta.getId().startsWith(projectName));
|
||||
|
|
|
@ -1019,7 +1019,7 @@ public class DefaultBrowseService
|
|||
}
|
||||
try
|
||||
{
|
||||
List<ArtifactMetadata> artifactMetadatas = repositorySession.getRepository().getArtifactsByProjectVersionMetadata(repositorySession , key, value, repositoryId );
|
||||
List<ArtifactMetadata> artifactMetadatas = repositorySession.getRepository().getArtifactsByProjectVersionFacet(repositorySession , key, value, repositoryId );
|
||||
return buildArtifacts( artifactMetadatas, repositoryId );
|
||||
}
|
||||
catch ( MetadataRepositoryException e )
|
||||
|
@ -1047,7 +1047,7 @@ public class DefaultBrowseService
|
|||
}
|
||||
try
|
||||
{
|
||||
List<ArtifactMetadata> artifactMetadatas = repositorySession.getRepository().getArtifactsByMetadata(repositorySession , key, value, repositoryId );
|
||||
List<ArtifactMetadata> artifactMetadatas = repositorySession.getRepository().getArtifactsByAttribute(repositorySession , key, value, repositoryId );
|
||||
return buildArtifacts( artifactMetadatas, repositoryId );
|
||||
}
|
||||
catch ( MetadataRepositoryException e )
|
||||
|
@ -1075,7 +1075,7 @@ public class DefaultBrowseService
|
|||
}
|
||||
try
|
||||
{
|
||||
List<ArtifactMetadata> artifactMetadatas = repositorySession.getRepository().getArtifactsByProperty(repositorySession , key, value, repositoryId );
|
||||
List<ArtifactMetadata> artifactMetadatas = repositorySession.getRepository().getArtifactsByProjectVersionAttribute(repositorySession , key, value, repositoryId );
|
||||
return buildArtifacts( artifactMetadatas, repositoryId );
|
||||
}
|
||||
catch ( MetadataRepositoryException e )
|
||||
|
|
|
@ -703,7 +703,7 @@ public class DefaultRepositoriesService
|
|||
|
||||
for ( ArtifactMetadata artifactMetadata : artifacts )
|
||||
{
|
||||
metadataRepository.removeArtifact(repositorySession , artifactMetadata, version );
|
||||
metadataRepository.removeTimestampedArtifact(repositorySession , artifactMetadata, version );
|
||||
}
|
||||
|
||||
metadataRepository.removeProjectVersion(repositorySession , repositoryId, namespace, projectId, version );
|
||||
|
@ -920,7 +920,7 @@ public class DefaultRepositoriesService
|
|||
artifact.getVersion();
|
||||
MavenArtifactFacet mavenArtifactFacetToCompare = new MavenArtifactFacet();
|
||||
mavenArtifactFacetToCompare.setClassifier( artifact.getClassifier() );
|
||||
metadataRepository.removeArtifact(repositorySession , repositoryId, groupId, artifactId,
|
||||
metadataRepository.removeFacetFromArtifact(repositorySession , repositoryId, groupId, artifactId,
|
||||
version, mavenArtifactFacetToCompare );
|
||||
repositorySession.save();
|
||||
}
|
||||
|
@ -930,7 +930,7 @@ public class DefaultRepositoriesService
|
|||
{
|
||||
if ( snapshotVersion )
|
||||
{
|
||||
metadataRepository.removeArtifact(repositorySession ,
|
||||
metadataRepository.removeTimestampedArtifact(repositorySession ,
|
||||
artifactMetadata, VersionUtil.getBaseVersion( artifact.getVersion() ) );
|
||||
}
|
||||
else
|
||||
|
|
|
@ -28,8 +28,6 @@ import org.apache.archiva.metadata.model.ProjectVersionMetadata;
|
|||
import org.apache.archiva.metadata.model.ProjectVersionReference;
|
||||
import org.apache.commons.collections4.ComparatorUtils;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.management.Query;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Stream;
|
||||
|
@ -127,21 +125,21 @@ public abstract class AbstractMetadataRepository
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByProjectVersionMetadata( RepositorySession session, String key, String value, String repositoryId )
|
||||
public List<ArtifactMetadata> getArtifactsByProjectVersionFacet( RepositorySession session, String key, String value, String repositoryId )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByMetadata( RepositorySession session, String key, String value, String repositoryId )
|
||||
public List<ArtifactMetadata> getArtifactsByAttribute( RepositorySession session, String key, String value, String repositoryId )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByProperty( RepositorySession session, String key, String value, String repositoryId )
|
||||
public List<ArtifactMetadata> getArtifactsByProjectVersionAttribute( RepositorySession session, String key, String value, String repositoryId )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
|
@ -155,15 +153,15 @@ public abstract class AbstractMetadataRepository
|
|||
}
|
||||
|
||||
@Override
|
||||
public void removeArtifact( RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion )
|
||||
public void removeTimestampedArtifact( RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeArtifact( RepositorySession session, String repositoryId, String namespace, String project, String version,
|
||||
MetadataFacet metadataFacet )
|
||||
public void removeFacetFromArtifact( RepositorySession session, String repositoryId, String namespace, String project, String version,
|
||||
MetadataFacet metadataFacet )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
|
@ -229,7 +227,7 @@ public abstract class AbstractMetadataRepository
|
|||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> getNamespaces( RepositorySession session, String repoId, String namespace )
|
||||
public Collection<String> getChildNamespaces( RepositorySession session, String repoId, String namespace )
|
||||
throws MetadataResolutionException
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
|
@ -317,19 +315,6 @@ public abstract class AbstractMetadataRepository
|
|||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canObtainAccess( Class<?> aClass )
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T obtainAccess( RepositorySession session, Class<T> aClass )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> searchArtifacts( RepositorySession session, String repositoryId, String text, boolean exact )
|
||||
throws MetadataRepositoryException
|
||||
|
|
|
@ -249,7 +249,7 @@ public class DefaultMetadataResolver
|
|||
Collection<String> namespaces = namespacesCache.get( cacheKey );
|
||||
if ( namespaces == null )
|
||||
{
|
||||
namespaces = metadataRepository.getNamespaces( session, repoId, namespace );
|
||||
namespaces = metadataRepository.getChildNamespaces( session, repoId, namespace );
|
||||
namespacesCache.put( cacheKey, namespaces );
|
||||
}
|
||||
Collection<String> exclusions = new ArrayList<>( namespaces );
|
||||
|
@ -302,7 +302,7 @@ public class DefaultMetadataResolver
|
|||
Collection<String> namespaces = namespacesCache.get( cacheKey );
|
||||
if ( namespaces == null )
|
||||
{
|
||||
namespaces = metadataRepository.getNamespaces( session, repoId, namespace );
|
||||
namespaces = metadataRepository.getChildNamespaces( session, repoId, namespace );
|
||||
namespacesCache.put( cacheKey, namespaces );
|
||||
}
|
||||
|
||||
|
|
|
@ -37,35 +37,35 @@ import java.util.stream.Stream;
|
|||
* A Metadata repository provides information about artifact metadata. It does not provide the artifact data itself.
|
||||
* It may be possible to use the same backend for metadata and storage, but this depends on the backends and they are
|
||||
* provided by different APIs.
|
||||
*
|
||||
* <p>
|
||||
* The motivation for this API is to provide fast access to the repository metadata and fulltext search. Also dependencies
|
||||
* are stored in this repository.
|
||||
*
|
||||
* <p>
|
||||
* The methods here do not update the artifacts itself. They are only updating the data in the metadata repository.
|
||||
* That means, if you want to update some artifact, you should make sure to update the artifact itself and the metadata
|
||||
* repository (either directly or by repository scanning).
|
||||
*
|
||||
* <p>
|
||||
* Currently we are providing JCR, File based and Cassandra as backend for the metadata.
|
||||
*
|
||||
* <p>
|
||||
* The metadata repository uses sessions for accessing the data. Please make sure to always close the sessions after using it.
|
||||
* Best idiom for using the sessions:
|
||||
* <code>
|
||||
* try(RepositorySession session = sessionFactory.createSession() {
|
||||
* // do your stuff
|
||||
* // do your stuff
|
||||
* }
|
||||
* </code>
|
||||
*
|
||||
* <p>
|
||||
* It is implementation dependent, if the sessions are really used by the backend. E.g. the file based implementation ignores
|
||||
* the sessions completely.
|
||||
*
|
||||
* <p>
|
||||
* Sessions should be closed immediately after usage. If it is expensive to open a session for a given backend. The backend
|
||||
* should provide a session pool if possible. There are methods for refreshing a session if needed.
|
||||
*
|
||||
* You should avoid stacking sessions, that means, do not create a new session in the same thread, when a session is opened already.
|
||||
*
|
||||
* <p>
|
||||
* You should avoid stacking sessions, which means, you should not create a new session in the same thread, when a session is opened already.
|
||||
* <p>
|
||||
* Some backend implementations (JCR) update the metadata in the background, that means update of the metadata is not reflected
|
||||
* immediately.
|
||||
*
|
||||
* <p>
|
||||
* The base metadata coordinates are:
|
||||
* <ul>
|
||||
* <li>Repository ID: The identifier of the repository, where the artifact resides</li>
|
||||
|
@ -74,10 +74,10 @@ import java.util.stream.Stream;
|
|||
* <li>Version: Each project may have different versions.</li>
|
||||
* <li>Artifact: Artifacts correspond to files / blob data. Each artifact has additional metadata, like name, version, modification time, ...</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p>
|
||||
* As the repository connects to some backend either locally or remote, the access to the repository may fail. The methods capsule the
|
||||
* backend errors into <code>{@link MetadataRepositoryException}</code>.
|
||||
*
|
||||
* <p>
|
||||
* Facets are the way to provide additional metadata that is not part of the base API. It depends on the repository type (e.g. Maven, NPM,
|
||||
* not the metadata backend) what facets are stored in addition to the standard metadata.
|
||||
* Facets have a specific facet ID that represents the schema for the data stored. For creating specific objects for a given
|
||||
|
@ -86,154 +86,150 @@ import java.util.stream.Stream;
|
|||
* a hierarchical path.
|
||||
* The data in each facet instance is stored in properties (key-value pairs). The properties are converted into / from the specific
|
||||
* facet object.
|
||||
*
|
||||
* <p>
|
||||
* Facets can be stored on repository, project, version and artifact level.
|
||||
*
|
||||
* <p>
|
||||
* For retrieving artifacts there are methods that return lists and streaming based methods. Some implementations (e.g. JCR) use
|
||||
* lazy loading for the retrieved objects. So the streaming methods may be faster and use less memory than the list based methods.
|
||||
* But for some backends there is no difference.
|
||||
*
|
||||
*/
|
||||
@SuppressWarnings( "NullableProblems" )
|
||||
@ParametersAreNonnullByDefault
|
||||
public interface MetadataRepository
|
||||
{
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Update metadata for a particular project in the metadata repository, or create it, if it does not already exist.
|
||||
*
|
||||
* @param session The session used for updating.
|
||||
* @param session The session used for updating.
|
||||
* @param repositoryId the repository the project is in
|
||||
* @param project the project metadata to create or update
|
||||
* @throws MetadataRepositoryException if the update fails
|
||||
*/
|
||||
void updateProject( RepositorySession session, String repositoryId, ProjectMetadata project )
|
||||
void updateProject( RepositorySession session, String repositoryId, ProjectMetadata project )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Update the metadata of a given artifact. If the artifact, namespace, version, project does not exist in the repository it will be created.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param namespace The namespace ('.' separated)
|
||||
* @param projectId The project id
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param namespace The namespace ('.' separated)
|
||||
* @param projectId The project id
|
||||
* @param projectVersion The project version
|
||||
* @param artifactMeta Information about the artifact itself.
|
||||
* @param artifactMeta Information about the artifact itself.
|
||||
* @throws MetadataRepositoryException if something goes wrong during update.
|
||||
*/
|
||||
void updateArtifact( RepositorySession session, String repositoryId,
|
||||
String namespace, String projectId, String projectVersion,
|
||||
ArtifactMetadata artifactMeta )
|
||||
void updateArtifact( RepositorySession session, String repositoryId,
|
||||
String namespace, String projectId, String projectVersion,
|
||||
ArtifactMetadata artifactMeta )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Updates the metadata for a specific version of a given project. If the namespace, project, version does not exist,
|
||||
* it will be created.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param namespace The namespace ('.' separated)
|
||||
* @param projectId The project id
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param namespace The namespace ('.' separated)
|
||||
* @param projectId The project id
|
||||
* @param versionMetadata The metadata for the version
|
||||
* @throws MetadataRepositoryException if something goes wrong during update
|
||||
*/
|
||||
void updateProjectVersion( RepositorySession session, String repositoryId,
|
||||
String namespace, String projectId,
|
||||
ProjectVersionMetadata versionMetadata )
|
||||
void updateProjectVersion( RepositorySession session, String repositoryId,
|
||||
String namespace, String projectId,
|
||||
ProjectVersionMetadata versionMetadata )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Create the namespace in the repository, if it does not exist.
|
||||
* Namespaces do not have specific metadata attached.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param namespace The namespace ('.' separated)
|
||||
* @param namespace The namespace ('.' separated)
|
||||
* @throws MetadataRepositoryException if something goes wrong during update
|
||||
*/
|
||||
void updateNamespace( RepositorySession session, String repositoryId, String namespace )
|
||||
void updateNamespace( RepositorySession session, String repositoryId, String namespace )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Return the facet names stored for the given facet id on the repository level.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param facetId The facet id
|
||||
* @param facetId The facet id
|
||||
* @return The list of facet names, or an empty list, if there are no facets stored on this repository for the given facet id.
|
||||
* @throws MetadataRepositoryException if something goes wrong
|
||||
*/
|
||||
List<String> getMetadataFacets( RepositorySession session, String repositoryId, String facetId )
|
||||
List<String> getMetadataFacets( RepositorySession session, String repositoryId, String facetId )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* The same as
|
||||
* @see #getMetadataFacetStream(RepositorySession, String, Class, QueryParameter queryParameter)
|
||||
* The same as {@link #getMetadataFacetStream(RepositorySession, String, Class, QueryParameter)}
|
||||
* but uses default query parameters.
|
||||
*
|
||||
* <p>
|
||||
* There is no limitation of the number of result objects returned, but implementations may have a hard upper bound for
|
||||
* the number of results.
|
||||
*
|
||||
* @param session
|
||||
* @param repositoryId
|
||||
* @param facetClazz
|
||||
* @param <T>
|
||||
* @return
|
||||
* @throws MetadataRepositoryException
|
||||
* @param session The repository session.
|
||||
* @param repositoryId The repository id.
|
||||
* @param facetClazz The facet class
|
||||
* @param <T> The facet type
|
||||
* @return A stream of facet objects, or a empty stream if no facet was found.
|
||||
* @throws MetadataRepositoryException if the facet retrieval fails.
|
||||
* @since 3.0
|
||||
*/
|
||||
<T extends MetadataFacet> Stream<T> getMetadataFacetStream( RepositorySession session,
|
||||
String repositoryId, Class<T> facetClazz)
|
||||
<T extends MetadataFacet> Stream<T> getMetadataFacetStream( RepositorySession session,
|
||||
String repositoryId, Class<T> facetClazz )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Returns a stream of MetadataFacet elements that match the given facet class.
|
||||
* Implementations should order the resulting stream by facet name.
|
||||
*
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param facetClazz The class of the facet
|
||||
* @param <T> The facet type
|
||||
* @return
|
||||
* @throws MetadataRepositoryException
|
||||
* @param facetClazz The class of the facet
|
||||
* @param <T> The facet type
|
||||
* @return A stream of facet objects, or a empty stream if no facet was found.
|
||||
* @throws MetadataRepositoryException if the facet retrieval fails
|
||||
* @since 3.0
|
||||
*/
|
||||
<T extends MetadataFacet> Stream<T> getMetadataFacetStream( RepositorySession session,
|
||||
String repositoryId, Class<T> facetClazz,
|
||||
QueryParameter queryParameter)
|
||||
String repositoryId, Class<T> facetClazz,
|
||||
QueryParameter queryParameter )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Returns true, if there is facet data stored for the given facet id on the repository on repository level. The facet data itself
|
||||
* may be empty. It's just checking if there is an object stored for the given facet id.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param facetId The facet id
|
||||
* @param facetId The facet id
|
||||
* @return true if there is data stored this facetId on repository level.
|
||||
* @throws MetadataRepositoryException if something goes wrong
|
||||
* @since 1.4-M4
|
||||
*/
|
||||
boolean hasMetadataFacet( RepositorySession session, String repositoryId, String facetId )
|
||||
boolean hasMetadataFacet( RepositorySession session, String repositoryId, String facetId )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Returns the facet data stored on the repository level. The facet instance is identified by the facet id and the
|
||||
* facet name. The returned object is a instance created by using <code>{@link org.apache.archiva.metadata.model.MetadataFacetFactory}</code>.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param facetId The facet id
|
||||
* @param name The attribute name
|
||||
* @param facetId The facet id
|
||||
* @param name The attribute name
|
||||
* @return The facet values
|
||||
* @throws MetadataRepositoryException if something goes wrong.
|
||||
*/
|
||||
MetadataFacet getMetadataFacet( RepositorySession session, String repositoryId, String facetId,
|
||||
String name )
|
||||
MetadataFacet getMetadataFacet( RepositorySession session, String repositoryId, String facetId,
|
||||
String name )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
|
@ -241,231 +237,248 @@ public interface MetadataRepository
|
|||
* If the given name does not point to a instance that can be represented by this class, <code>null</code> will be returned.
|
||||
* If the facet is not found the method returns <code>null</code>.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param session The repository session
|
||||
* @param repositoryId The id of the repository
|
||||
* @param clazz The facet object class
|
||||
* @param name The name of the facet (name or path)
|
||||
* @param <T> The type of the facet object
|
||||
* @param clazz The facet object class
|
||||
* @param name The name of the facet (name or path)
|
||||
* @param <T> The type of the facet object
|
||||
* @return The facet instance, if it exists.
|
||||
* @throws MetadataRepositoryException if the data cannot be retrieved from the backend
|
||||
* @since 3.0
|
||||
*/
|
||||
<T extends MetadataFacet> T getMetadataFacet( RepositorySession session, String repositoryId,
|
||||
Class<T> clazz, String name)
|
||||
throws MetadataRepositoryException;
|
||||
<T extends MetadataFacet> T getMetadataFacet( RepositorySession session, String repositoryId,
|
||||
Class<T> clazz, String name )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Adds a facet to the repository level.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param repositoryId The id of the repository
|
||||
* @param session The repository session
|
||||
* @param repositoryId The id of the repository
|
||||
* @param metadataFacet The facet to add
|
||||
* @throws MetadataRepositoryException if the facet cannot be stored.
|
||||
*/
|
||||
void addMetadataFacet( RepositorySession session, String repositoryId,
|
||||
MetadataFacet metadataFacet )
|
||||
void addMetadataFacet( RepositorySession session, String repositoryId,
|
||||
MetadataFacet metadataFacet )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Removes all facets with the given facetId from the repository level.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param session The repository session
|
||||
* @param repositoryId The id of the repository
|
||||
* @param facetId The facet id
|
||||
* @param facetId The facet id
|
||||
* @throws MetadataRepositoryException if the removal fails
|
||||
*/
|
||||
void removeMetadataFacets( RepositorySession session, String repositoryId, String facetId )
|
||||
void removeMetadataFacets( RepositorySession session, String repositoryId, String facetId )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Removes the given facet from the repository level, if it exists.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param session The repository session
|
||||
* @param repositoryId The id of the repository
|
||||
* @param facetId The facet id
|
||||
* @param name The facet name or path
|
||||
* @param facetId The facet id
|
||||
* @param name The facet name or path
|
||||
*/
|
||||
void removeMetadataFacet( RepositorySession session, String repositoryId, String facetId, String name )
|
||||
void removeMetadataFacet( RepositorySession session, String repositoryId, String facetId, String name )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
|
||||
/**
|
||||
* Is the same as {@link #getArtifactsByDateRange(RepositorySession, String, ZonedDateTime, ZonedDateTime, QueryParameter)}, but
|
||||
* uses default query parameters.
|
||||
*
|
||||
*/
|
||||
List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session, String repositoryId,
|
||||
List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session, String repositoryId,
|
||||
@Nullable ZonedDateTime startTime, @Nullable ZonedDateTime endTime )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
*
|
||||
* Searches for artifacts where the 'whenGathered' attribute value is between the given start and end time.
|
||||
* If start or end time or both are <code>null</code>, the time range for the search is unbounded for this parameter.
|
||||
*
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param startTime The start time/date as zoned date, can be <code>null</code>
|
||||
* @param endTime The end time/date as zoned date, can be <code>null</code>
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param startTime The start time/date as zoned date, can be <code>null</code>
|
||||
* @param endTime The end time/date as zoned date, can be <code>null</code>
|
||||
* @param queryParameter Additional parameters for the query that affect ordering and returned results
|
||||
* @return The list of metadata objects for the found instances.
|
||||
* @throws MetadataRepositoryException if the query fails.
|
||||
* @since 3.0
|
||||
*/
|
||||
List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session, String repositoryId,
|
||||
@Nullable ZonedDateTime startTime, @Nullable ZonedDateTime endTime,
|
||||
List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session, String repositoryId,
|
||||
@Nullable ZonedDateTime startTime, @Nullable ZonedDateTime endTime,
|
||||
QueryParameter queryParameter )
|
||||
throws MetadataRepositoryException;
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
|
||||
/**
|
||||
* Returns all the artifacts who's 'whenGathered' attribute value is inside the given time range (inclusive) as stream of objects.
|
||||
*
|
||||
* <p>
|
||||
* Implementations should return a stream of sorted objects. The objects should be sorted by the 'whenGathered' date in ascending order.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param startTime The start time, can be <code>null</code>
|
||||
* @param endTime The end time, can be <code>null</code>
|
||||
* @return A stream of artifact metadata objects.
|
||||
* @throws MetadataRepositoryException
|
||||
* @param startTime The start time, can be <code>null</code>
|
||||
* @param endTime The end time, can be <code>null</code>
|
||||
* @return A stream of artifact metadata objects, or a empty stream if no artifact was found.
|
||||
* @throws MetadataRepositoryException if the artifact retrieval fails.
|
||||
* @since 3.0
|
||||
*/
|
||||
Stream<ArtifactMetadata> getArtifactByDateRangeStream( RepositorySession session, String repositoryId,
|
||||
Stream<ArtifactMetadata> getArtifactByDateRangeStream( RepositorySession session, String repositoryId,
|
||||
@Nullable ZonedDateTime startTime, @Nullable ZonedDateTime endTime )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Returns all the artifacts who's 'whenGathered' attribute value is inside the given time range (inclusive) as stream of objects.
|
||||
*
|
||||
* <p>
|
||||
* If no sort attributes are given by the queryParameter, the result is sorted by the 'whenGathered' date.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param startTime The start time, can be <code>null</code>
|
||||
* @param endTime The end time, can be <code>null</code>
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param startTime The start time, can be <code>null</code>
|
||||
* @param endTime The end time, can be <code>null</code>
|
||||
* @param queryParameter Additional parameters for the query that affect ordering and number of returned results.
|
||||
* @return A stream of artifact metadata objects.
|
||||
* @throws MetadataRepositoryException
|
||||
* @throws MetadataRepositoryException if the artifact retrieval fails.
|
||||
* @since 3.0
|
||||
*/
|
||||
Stream<ArtifactMetadata> getArtifactByDateRangeStream( RepositorySession session, String repositoryId,
|
||||
Stream<ArtifactMetadata> getArtifactByDateRangeStream( RepositorySession session, String repositoryId,
|
||||
@Nullable ZonedDateTime startTime, @Nullable ZonedDateTime endTime,
|
||||
QueryParameter queryParameter)
|
||||
QueryParameter queryParameter )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
|
||||
/**
|
||||
* Returns the artifacts that match the given checksum. All checksum types are searched.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param checksum The checksum as string of numbers
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param checksum The checksum as string of numbers
|
||||
* @return The list of artifacts that match the given checksum.
|
||||
* @throws MetadataRepositoryException
|
||||
* @throws MetadataRepositoryException if the artifact retrieval fails
|
||||
*/
|
||||
List<ArtifactMetadata> getArtifactsByChecksum( RepositorySession session, String repositoryId, String checksum )
|
||||
List<ArtifactMetadata> getArtifactsByChecksum( RepositorySession session, String repositoryId, String checksum )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Get artifacts with a project version metadata key that matches the passed value.
|
||||
*
|
||||
*
|
||||
* @param session
|
||||
* @param key
|
||||
* @param value
|
||||
* @param repositoryId can be null, meaning search in all repositories
|
||||
* @return a list of artifacts
|
||||
* @throws MetadataRepositoryException
|
||||
* @param session The repository session
|
||||
* @param key The attribute key to search
|
||||
* @param value The attribute value used for search
|
||||
* @param repositoryId can be <code>null</code>, meaning search in all repositories
|
||||
* @return a list of artifacts. A empty list, if no artifact was found.
|
||||
* @throws MetadataRepositoryException if the artifact retrieval fails.
|
||||
*/
|
||||
List<ArtifactMetadata> getArtifactsByProjectVersionMetadata( RepositorySession session, String key, String value,
|
||||
@Nullable String repositoryId )
|
||||
List<ArtifactMetadata> getArtifactsByProjectVersionFacet( RepositorySession session, String key, String value,
|
||||
@Nullable String repositoryId )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Get artifacts with an artifact metadata key that matches the passed value.
|
||||
*
|
||||
* <code>key</code> ist the string representation of one of the metadata attributes. Only artifacts are returned where
|
||||
* the attribute value matches exactly the given search value.
|
||||
*
|
||||
* @param session
|
||||
* @param key
|
||||
* @param value
|
||||
* @param repositoryId can be null, meaning search in all repositories
|
||||
* @return a list of artifacts
|
||||
* @throws MetadataRepositoryException
|
||||
* @param session The repository session.
|
||||
* @param key The string representation of the artifact metadata attribute.
|
||||
* @param value The search value.
|
||||
* @param repositoryId can be <code>null</code>, meaning search in all repositories
|
||||
* @return a list of artifact objects for each artifact that matches the search string
|
||||
* @throws MetadataRepositoryException if the artifact retrieval fails.
|
||||
*/
|
||||
List<ArtifactMetadata> getArtifactsByMetadata( RepositorySession session, String key, String value, String repositoryId )
|
||||
List<ArtifactMetadata> getArtifactsByAttribute( RepositorySession session, String key, String value, @Nullable String repositoryId )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Get artifacts with a property key that matches the passed value.
|
||||
* Get artifacts with a attribute on project version level that matches the passed value.
|
||||
* Possible keys are 'scm.url', 'org.name', 'url', 'mailingList.0.name', 'license.0.name',...
|
||||
*
|
||||
*
|
||||
* @param session
|
||||
* @param key
|
||||
* @param value
|
||||
* @param repositoryId can be null, meaning search in all repositories
|
||||
* @return a list of artifacts
|
||||
* @throws MetadataRepositoryException
|
||||
* @param session the repository session.
|
||||
* @param key The name of the attribute (may be nested like scm.url, mailinglist.0.name)
|
||||
* @param value The value to search for
|
||||
* @param repositoryId can be <code>null</code>, which means to search in all repositories
|
||||
* @return a list of artifacts or a empty list, if no artifact was found
|
||||
* @throws MetadataRepositoryException if the artifact retrieval fails
|
||||
*/
|
||||
List<ArtifactMetadata> getArtifactsByProperty( RepositorySession session, String key, String value, String repositoryId )
|
||||
List<ArtifactMetadata> getArtifactsByProjectVersionAttribute( RepositorySession session, String key, String value, @Nullable String repositoryId )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Removes the data for the artifact with the given coordinates from the metadata repository. This will not remove the artifact itself
|
||||
* from the storage. It will only remove the metadata.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param namespace The namespace of the project
|
||||
* @param project The project name
|
||||
* @param version The project version
|
||||
* @param id The artifact id
|
||||
* @throws MetadataRepositoryException if the artifact retrieval fails, or if the artifact cannot be found.
|
||||
*/
|
||||
void removeArtifact( RepositorySession session, String repositoryId, String namespace, String project, String version, String id )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* used for deleting timestamped version of SNAPSHOT artifacts
|
||||
* Remove timestamped version of artifact. This removes a snapshot artifact by giving the artifact metadata
|
||||
* and the base version of the project.
|
||||
*
|
||||
*
|
||||
* @param session
|
||||
* @param session The repository session
|
||||
* @param artifactMetadata the artifactMetadata with the timestamped version (2.0-20120618.214135-2)
|
||||
* @param baseVersion the base version of the snapshot (2.0-SNAPSHOT)
|
||||
* @throws MetadataRepositoryException
|
||||
* @throws MetadataRepositoryException if the removal fails.
|
||||
* @since 1.4-M3
|
||||
*/
|
||||
void removeArtifact( RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion )
|
||||
void removeTimestampedArtifact( RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* FIXME need a unit test!!!
|
||||
* Only remove {@link MetadataFacet} for the artifact
|
||||
* Removes the {@link MetadataFacet} of the given artifact.
|
||||
*
|
||||
*
|
||||
* @param session
|
||||
* @param repositoryId
|
||||
* @param namespace
|
||||
* @param project
|
||||
* @param version
|
||||
* @param metadataFacet
|
||||
* @throws MetadataRepositoryException
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id.
|
||||
* @param namespace The namespace
|
||||
* @param project The project name
|
||||
* @param version The project version
|
||||
* @param metadataFacet The facet data
|
||||
* @throws MetadataRepositoryException if the removal failed
|
||||
* @since 1.4-M3
|
||||
*/
|
||||
void removeArtifact( RepositorySession session, String repositoryId, String namespace, String project, String version,
|
||||
MetadataFacet metadataFacet )
|
||||
void removeFacetFromArtifact( RepositorySession session, String repositoryId, String namespace, String project, String version,
|
||||
MetadataFacet metadataFacet )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Delete a repository's metadata. This includes all associated metadata facets.
|
||||
* Deletes all metadata of the given repository. This includes artifact metadata and all associated metadata facets.
|
||||
*
|
||||
* @param session
|
||||
* @param session The repository session
|
||||
* @param repositoryId the repository to delete
|
||||
* @throws MetadataRepositoryException if the removal failed
|
||||
*/
|
||||
void removeRepository( RepositorySession session, String repositoryId )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Removes the given namespace and its contents from the metadata repository.
|
||||
*
|
||||
* @param session
|
||||
* @param repositoryId
|
||||
* @param namespace (groupId for maven )
|
||||
* @throws MetadataRepositoryException
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @param namespace The namespace '.' separated ( it's the groupId for maven )
|
||||
* @throws MetadataRepositoryException if the removal failed
|
||||
* @since 1.4-M3
|
||||
*/
|
||||
void removeNamespace( RepositorySession session, String repositoryId, String namespace )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Returns the metadata for all artifacts of the given repository.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @return a list of artifact metadata objects. A empty list if no artifacts where found.
|
||||
* @throws MetadataRepositoryException if the retrieval failed.
|
||||
*/
|
||||
List<ArtifactMetadata> getArtifacts( RepositorySession session, String repositoryId )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
|
@ -477,12 +490,12 @@ public interface MetadataRepository
|
|||
* If there are no <code>sortFields</code> defined in the query parameter, the order of elements in the stream is undefined and depends
|
||||
* on the implementation.
|
||||
*
|
||||
* @param session
|
||||
* @param repositoryId
|
||||
* @param session The repository session.
|
||||
* @param repositoryId The repository id.
|
||||
* @return A stream of artifact metadata objects for each artifact found in the repository.
|
||||
* @since 3.0
|
||||
*/
|
||||
Stream<ArtifactMetadata> getArtifactStream( RepositorySession session, String repositoryId, QueryParameter queryParameter )
|
||||
Stream<ArtifactMetadata> getArtifactStream( RepositorySession session, String repositoryId, QueryParameter queryParameter )
|
||||
throws MetadataResolutionException;
|
||||
|
||||
/**
|
||||
|
@ -490,68 +503,92 @@ public interface MetadataRepository
|
|||
* The order of the artifacts returned in the stream depends on the implementation.
|
||||
* The number of elements in the stream is unlimited, but there may be some implementations that have to put a hard
|
||||
* limit on the elements returned.
|
||||
* For further information see {@link #getArtifactStream(RepositorySession, String, QueryParameter)}
|
||||
* For further information see {@link #getArtifactStream(RepositorySession, String, QueryParameter)}
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository id
|
||||
* @return A (unlimited) stream of artifact metadata elements that are found in this repository
|
||||
* @since 3.0
|
||||
* @see #getArtifactStream(RepositorySession, String, QueryParameter)
|
||||
* @since 3.0
|
||||
*/
|
||||
Stream<ArtifactMetadata> getArtifactStream( RepositorySession session, String repositoryId)
|
||||
Stream<ArtifactMetadata> getArtifactStream( RepositorySession session, String repositoryId )
|
||||
throws MetadataResolutionException;
|
||||
|
||||
/**
|
||||
* Returns a stream of artifacts found for the given artifact coordinates and using the <code>queryParameter</code>
|
||||
*
|
||||
* @param session The repository session. May not be <code>null</code>.
|
||||
* @param repoId The repository id. May not be <code>null</code>.
|
||||
* @param namespace The namespace. May not be <code>null</code>.
|
||||
* @param projectId The project id. May not be <code>null</code>.
|
||||
* @param session The repository session. May not be <code>null</code>.
|
||||
* @param repoId The repository id. May not be <code>null</code>.
|
||||
* @param namespace The namespace. May not be <code>null</code>.
|
||||
* @param projectId The project id. May not be <code>null</code>.
|
||||
* @param projectVersion The project version. May not be <code>null</code>.
|
||||
* @return A stream of artifact metadata object. Order and number of elements returned, depends on the <code>queryParameter</code>.
|
||||
* @since 3.0
|
||||
* @throws MetadataResolutionException if there are no elements for the given artifact coordinates.
|
||||
* @since 3.0
|
||||
*/
|
||||
Stream<ArtifactMetadata> getArtifactStream( RepositorySession session, String repoId,
|
||||
String namespace, String projectId,
|
||||
String projectVersion, QueryParameter queryParameter )
|
||||
Stream<ArtifactMetadata> getArtifactStream( RepositorySession session, String repoId,
|
||||
String namespace, String projectId,
|
||||
String projectVersion, QueryParameter queryParameter )
|
||||
throws MetadataResolutionException;
|
||||
|
||||
/**
|
||||
* Returns a stream of artifacts found for the given artifact coordinates. The order of elements returned, depends on the
|
||||
* implementation.
|
||||
*
|
||||
* @param session The repository session. May not be <code>null</code>.
|
||||
* @param repoId The repository id. May not be <code>null</code>.
|
||||
* @param namespace The namespace. May not be <code>null</code>.
|
||||
* @param projectId The project id. May not be <code>null</code>.
|
||||
* @param session The repository session. May not be <code>null</code>.
|
||||
* @param repoId The repository id. May not be <code>null</code>.
|
||||
* @param namespace The namespace. May not be <code>null</code>.
|
||||
* @param projectId The project id. May not be <code>null</code>.
|
||||
* @param projectVersion The project version. May not be <code>null</code>.
|
||||
* @return A stream of artifact metadata object. Order and number of elements returned, depends on the <code>queryParameter</code>.
|
||||
* @since 3.0
|
||||
* @throws MetadataResolutionException if there are no elements for the given artifact coordinates.
|
||||
* @since 3.0
|
||||
*/
|
||||
Stream<ArtifactMetadata> getArtifactStream( RepositorySession session, String repoId,
|
||||
String namespace, String projectId,
|
||||
String projectVersion)
|
||||
Stream<ArtifactMetadata> getArtifactStream( RepositorySession session, String repoId,
|
||||
String namespace, String projectId,
|
||||
String projectVersion )
|
||||
throws MetadataResolutionException;
|
||||
|
||||
/**
|
||||
* basically just checking it exists not complete data returned
|
||||
* Returns the metadata for the given project. If there are no custom properties stored on the project, it will
|
||||
* just return a <code>ProjectMetadata</code> object with the data provided by parameters.
|
||||
*
|
||||
*
|
||||
* @param session
|
||||
* @param repoId
|
||||
* @param namespace
|
||||
* @param projectId
|
||||
* @return
|
||||
* @throws MetadataResolutionException
|
||||
* @param session The session id
|
||||
* @param repoId The repository id
|
||||
* @param namespace The namespace '.'-separated.
|
||||
* @param projectId The project name
|
||||
* @return The project metadata or <code>null</code> if not found.
|
||||
* @throws MetadataResolutionException if the metadata retrieval failed
|
||||
*/
|
||||
ProjectMetadata getProject( RepositorySession session, String repoId, String namespace, String projectId )
|
||||
throws MetadataResolutionException;
|
||||
|
||||
/**
|
||||
* Returns the metadata for the project version.
|
||||
*
|
||||
* @param session The repository session.
|
||||
* @param repoId The repository id.
|
||||
* @param namespace The namespace '.'-separated
|
||||
* @param projectId The project name
|
||||
* @param projectVersion The project version
|
||||
* @return The version metadata object, or <code>null</code>, if not found.
|
||||
* @throws MetadataResolutionException if the retrieval of the metadata failed.
|
||||
*/
|
||||
ProjectVersionMetadata getProjectVersion( RepositorySession session, String repoId, String namespace, String projectId, String projectVersion )
|
||||
throws MetadataResolutionException;
|
||||
|
||||
/**
|
||||
* Returns all artifact version strings for a given project version. This is for snapshot versions and returns the timestamped
|
||||
* versions, if available.
|
||||
*
|
||||
* @param session The repository session.
|
||||
* @param repoId The repository id.
|
||||
* @param namespace The namespace '.'-separated
|
||||
* @param projectId The project name.
|
||||
* @param projectVersion The project version.
|
||||
* @return A list of version strings, or a empty list if no versions are found, or this is not a snapshot version.
|
||||
* @throws MetadataResolutionException if the retrieval of the metadata failed.
|
||||
*/
|
||||
Collection<String> getArtifactVersions( RepositorySession session, String repoId, String namespace, String projectId, String projectVersion )
|
||||
throws MetadataResolutionException;
|
||||
|
||||
|
@ -560,131 +597,145 @@ public interface MetadataRepository
|
|||
* a project version as a reference may be present (due to reverse-lookup of dependencies) before the actual
|
||||
* project is, and we want to avoid adding a stub model to the content repository.
|
||||
*
|
||||
*
|
||||
* @param session
|
||||
* @param repoId the repository ID to look within
|
||||
* @param namespace the namespace of the project to get references to
|
||||
* @param projectId the identifier of the project to get references to
|
||||
* @param projectVersion the version of the project to get references to
|
||||
* @param session The repository session.
|
||||
* @param repoId The repository ID to look within
|
||||
* @param namespace The namespace of the project to get references to
|
||||
* @param projectId The identifier of the project to get references to
|
||||
* @param projectVersion The version of the project to get references to
|
||||
* @return a list of project references
|
||||
* @throws MetadataResolutionException if the version could not be found.
|
||||
*/
|
||||
Collection<ProjectVersionReference> getProjectReferences( RepositorySession session, String repoId, String namespace, String projectId,
|
||||
String projectVersion )
|
||||
throws MetadataResolutionException;
|
||||
|
||||
/**
|
||||
* Returns the names of the root namespaces stored for this repository.
|
||||
*
|
||||
* @param session The repository session.
|
||||
* @param repoId The repository id.
|
||||
* @return A list of namespace names, or empty list, if no namespace is stored for this repository.
|
||||
* @throws MetadataResolutionException If the retrieval failed.
|
||||
*/
|
||||
Collection<String> getRootNamespaces( RepositorySession session, String repoId )
|
||||
throws MetadataResolutionException;
|
||||
|
||||
/**
|
||||
* Returns the list of namespace names that are children of the given namespace. It does not descend recursively.
|
||||
*
|
||||
* @param session
|
||||
* @param repoId
|
||||
* @param namespace
|
||||
* @return {@link Collection} of child namespaces of the namespace argument
|
||||
* @throws MetadataResolutionException
|
||||
* @param session The repository session.
|
||||
* @param repoId The repository id.
|
||||
* @param namespace The parent namespace '.'-separated.
|
||||
* @return {@link Collection} of child namespace names, or a empty list, if there are no children for the given parent namespace.
|
||||
* @throws MetadataResolutionException if the retrieval failed.
|
||||
*/
|
||||
Collection<String> getNamespaces( RepositorySession session, String repoId, String namespace )
|
||||
Collection<String> getChildNamespaces( RepositorySession session, String repoId, String namespace )
|
||||
throws MetadataResolutionException;
|
||||
|
||||
/**
|
||||
* Return the project names that of all projects stored under the given namespace.
|
||||
*
|
||||
* @param session
|
||||
* @param repoId
|
||||
* @param namespace
|
||||
* @return
|
||||
* @throws MetadataResolutionException
|
||||
* @param session The repository session.
|
||||
* @param repoId The repository id.
|
||||
* @param namespace The namespace '.'-separated.
|
||||
* @return The list of project names or empty list if no project exists at the given namespace.
|
||||
* @throws MetadataResolutionException if the retrieval failed.
|
||||
*/
|
||||
Collection<String> getProjects( RepositorySession session, String repoId, String namespace )
|
||||
throws MetadataResolutionException;
|
||||
|
||||
/**
|
||||
* Returns the names of all versions stored under the given project.
|
||||
*
|
||||
* @param session
|
||||
* @param repoId
|
||||
* @param namespace
|
||||
* @param projectId
|
||||
* @return
|
||||
* @throws MetadataResolutionException
|
||||
* @param session The repository session.
|
||||
* @param repoId The repository id.
|
||||
* @param namespace The namespace '.'-separated.
|
||||
* @param projectId The project name.
|
||||
* @return The list of versions or a empty list, if not version was found.
|
||||
* @throws MetadataResolutionException if the retrieval failed.
|
||||
*/
|
||||
Collection<String> getProjectVersions( RepositorySession session, String repoId, String namespace, String projectId )
|
||||
throws MetadataResolutionException;
|
||||
|
||||
/**
|
||||
* Removes a project version and all its artifact and facet metadata under it.
|
||||
*
|
||||
* @param session
|
||||
* @param repoId
|
||||
* @param namespace
|
||||
* @param projectId
|
||||
* @param projectVersion
|
||||
* @throws MetadataRepositoryException
|
||||
* @param session The repository session.
|
||||
* @param repoId The repository id.
|
||||
* @param namespace The namespace '.'-separated.
|
||||
* @param projectId The project name
|
||||
* @param projectVersion The project version.
|
||||
* @throws MetadataRepositoryException if the removal failed.
|
||||
* @since 1.4-M4
|
||||
*/
|
||||
void removeProjectVersion( RepositorySession session, String repoId, String namespace, String projectId, String projectVersion )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Returns the metadata of all artifacts stored for the given project version.
|
||||
*
|
||||
* @param session
|
||||
* @param repoId
|
||||
* @param namespace
|
||||
* @param projectId
|
||||
* @param projectVersion
|
||||
* @return
|
||||
* @throws MetadataResolutionException
|
||||
* @param session The repository session.
|
||||
* @param repoId The repository id.
|
||||
* @param namespace The namespace '.'-separated.
|
||||
* @param projectId The project name.
|
||||
* @param projectVersion The project version.
|
||||
* @return The list of artifact metadata objects, or a empty list, if no artifact exists for this version.
|
||||
* @throws MetadataResolutionException if the retrieval failed.
|
||||
*/
|
||||
Collection<ArtifactMetadata> getArtifacts( RepositorySession session, String repoId, String namespace, String projectId,
|
||||
String projectVersion )
|
||||
throws MetadataResolutionException;
|
||||
|
||||
/**
|
||||
* remove a project
|
||||
* Removes the project metadata and metadata for all stored versions, artifacts and facets of this project.
|
||||
*
|
||||
*
|
||||
* @param session
|
||||
* @param repositoryId
|
||||
* @param namespace
|
||||
* @param projectId
|
||||
* @throws MetadataRepositoryException
|
||||
* @param session The repository session.
|
||||
* @param repositoryId The repository id.
|
||||
* @param namespace The namespace '.'-separated.
|
||||
* @param projectId The project name.
|
||||
* @throws MetadataRepositoryException if the removal failed.
|
||||
* @since 1.4-M4
|
||||
*/
|
||||
void removeProject( RepositorySession session, String repositoryId, String namespace, String projectId )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
|
||||
void close()
|
||||
/**
|
||||
* Closes the repository.
|
||||
* Repositories are normally opened during startup and closed on shutdown. The closing of a repository stops all
|
||||
* invalidates all connections to it.
|
||||
* Sessions that are open are invalidated too. The repository will throw exceptions if it is used after closing.
|
||||
*
|
||||
* @throws MetadataRepositoryException if the something went wrong or if the repository was closed already.
|
||||
*/
|
||||
void close( )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
|
||||
boolean canObtainAccess( Class<?> aClass );
|
||||
|
||||
<T> T obtainAccess( RepositorySession session, Class<T> aClass )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Full text artifacts search.
|
||||
*
|
||||
* Full text artifacts search. Searches for the given string in all metadata and returns artifacts where the
|
||||
* text was found.
|
||||
*
|
||||
* @param session
|
||||
* @param repositoryId can be null to search in all repositories
|
||||
* @param text
|
||||
* @param exact running an exact search, the value must exactly match the text.
|
||||
* @return a list of artifacts
|
||||
* @throws MetadataRepositoryException
|
||||
* @param session The repository session.
|
||||
* @param repositoryId can be <code>null</code> to search in all repositories
|
||||
* @param text The search text
|
||||
* @param exact if true, the value must exactly match the text.
|
||||
* @return a list of artifacts or empty list if no results where found.
|
||||
* @throws MetadataRepositoryException if the retrieval failed.
|
||||
*/
|
||||
List<ArtifactMetadata> searchArtifacts( RepositorySession session, String repositoryId, String text, boolean exact )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Full text artifacts search inside the specified key.
|
||||
*
|
||||
* Full text artifacts search inside the specified key. Searches for the given text in all attributes with the given
|
||||
* name.
|
||||
*
|
||||
* @param session
|
||||
* @param repositoryId can be null to search in all repositories
|
||||
* @param key search only inside this key
|
||||
* @param text
|
||||
* @param exact running an exact search, the value must exactly match the text.
|
||||
* @return a list of artifacts
|
||||
* @throws MetadataRepositoryException
|
||||
* @param session The repository session.
|
||||
* @param repositoryId can be <code>null</code> to search in all repositories
|
||||
* @param key search only inside this attribute.
|
||||
* @param text The search string.
|
||||
* @param exact if true, the value must exactly match the text.
|
||||
* @return a list of artifacts or empty list if no results were found.
|
||||
* @throws MetadataRepositoryException if the retrieval failed.
|
||||
*/
|
||||
List<ArtifactMetadata> searchArtifacts( RepositorySession session, String repositoryId, String key, String text, boolean exact )
|
||||
throws MetadataRepositoryException;
|
||||
|
|
|
@ -177,7 +177,7 @@ public abstract class AbstractMetadataRepositoryTest
|
|||
}
|
||||
} );
|
||||
|
||||
// for the getArtifactsByProjectVersionMetadata tests
|
||||
// for the getArtifactsByProjectVersionFacet tests
|
||||
factories.add( new GenericMetadataFacetFactory( ) );
|
||||
|
||||
return factories;
|
||||
|
@ -1540,13 +1540,13 @@ public abstract class AbstractMetadataRepositoryTest
|
|||
|
||||
assertThat( namespaces ).isNotNull( ).isNotEmpty( ).hasSize( 1 ).contains( "org" );
|
||||
|
||||
namespaces = getRepository( ).getNamespaces( session, TEST_REPO_ID, "org" );
|
||||
namespaces = getRepository( ).getChildNamespaces( session, TEST_REPO_ID, "org" );
|
||||
assertThat( namespaces ).isNotNull( ).isNotEmpty( ).hasSize( 1 ).contains( "apache" );
|
||||
|
||||
namespaces = getRepository( ).getNamespaces( session, TEST_REPO_ID, "org.apache" );
|
||||
namespaces = getRepository( ).getChildNamespaces( session, TEST_REPO_ID, "org.apache" );
|
||||
assertThat( namespaces ).isNotNull( ).isNotEmpty( ).hasSize( 1 ).contains( "maven" );
|
||||
|
||||
namespaces = getRepository( ).getNamespaces( session, TEST_REPO_ID, "org.apache.maven" );
|
||||
namespaces = getRepository( ).getChildNamespaces( session, TEST_REPO_ID, "org.apache.maven" );
|
||||
assertThat( namespaces ).isNotNull( ).isNotEmpty( ).hasSize( 1 ).contains( "shared" );
|
||||
|
||||
} );
|
||||
|
@ -1566,7 +1566,7 @@ public abstract class AbstractMetadataRepositoryTest
|
|||
metadata.setId( TEST_PROJECT_VERSION );
|
||||
getRepository( ).updateProjectVersion( session, TEST_REPO_ID, namespace, TEST_PROJECT, metadata );
|
||||
|
||||
Collection<String> namespaces = getRepository( ).getNamespaces( session, TEST_REPO_ID, namespace );
|
||||
Collection<String> namespaces = getRepository( ).getChildNamespaces( session, TEST_REPO_ID, namespace );
|
||||
|
||||
assertThat( namespaces ).isNotNull( ).isEmpty( );
|
||||
|
||||
|
@ -1754,7 +1754,7 @@ public abstract class AbstractMetadataRepositoryTest
|
|||
|
||||
tryAssert( ( ) -> {
|
||||
Collection<ArtifactMetadata> artifactsByMetadata =
|
||||
getRepository( ).getArtifactsByProjectVersionMetadata( session, TEST_METADATA_KEY, TEST_METADATA_VALUE, TEST_REPO_ID );
|
||||
getRepository( ).getArtifactsByProjectVersionFacet( session, TEST_METADATA_KEY, TEST_METADATA_VALUE, TEST_REPO_ID );
|
||||
|
||||
assertThat( artifactsByMetadata ).hasSize( 1 );
|
||||
ArtifactMetadata artifactMetadata = artifactsByMetadata.iterator( ).next( );
|
||||
|
@ -1775,7 +1775,7 @@ public abstract class AbstractMetadataRepositoryTest
|
|||
tryAssert( ( ) -> {
|
||||
|
||||
Collection<ArtifactMetadata> artifactsByMetadata =
|
||||
getRepository( ).getArtifactsByProjectVersionMetadata( session, TEST_METADATA_KEY, TEST_METADATA_VALUE, null );
|
||||
getRepository( ).getArtifactsByProjectVersionFacet( session, TEST_METADATA_KEY, TEST_METADATA_VALUE, null );
|
||||
assertThat( artifactsByMetadata ).hasSize( 1 );
|
||||
assertThat( artifactsByMetadata.iterator( ).next( ).getRepositoryId( ) ).isNotNull( ).isNotEmpty( );
|
||||
} );
|
||||
|
@ -1792,7 +1792,7 @@ public abstract class AbstractMetadataRepositoryTest
|
|||
tryAssert( ( ) -> {
|
||||
|
||||
Collection<ArtifactMetadata> artifactsByMetadata =
|
||||
getRepository( ).getArtifactsByProjectVersionMetadata( session, TEST_METADATA_KEY, TEST_METADATA_VALUE, null );
|
||||
getRepository( ).getArtifactsByProjectVersionFacet( session, TEST_METADATA_KEY, TEST_METADATA_VALUE, null );
|
||||
assertThat( artifactsByMetadata ).hasSize( 1 );
|
||||
} );
|
||||
}
|
||||
|
@ -1807,7 +1807,7 @@ public abstract class AbstractMetadataRepositoryTest
|
|||
createArtifactWithMavenArtifactFacet( session );
|
||||
tryAssert( ( ) -> {
|
||||
Collection<ArtifactMetadata> artifactsByMetadata =
|
||||
getRepository( ).getArtifactsByMetadata( session, "foo", TEST_METADATA_VALUE, null );
|
||||
getRepository( ).getArtifactsByAttribute( session, "foo", TEST_METADATA_VALUE, null );
|
||||
assertThat( artifactsByMetadata ).hasSize( 1 );
|
||||
ArtifactMetadata artifactMetadata = artifactsByMetadata.iterator( ).next( );
|
||||
assertThat( artifactMetadata.getId( ) ).isEqualTo( TEST_PROJECT + "-" + TEST_PROJECT_VERSION + ".jar" );
|
||||
|
@ -1828,10 +1828,10 @@ public abstract class AbstractMetadataRepositoryTest
|
|||
{
|
||||
createArtifactWithData( session );
|
||||
// only works on JCR implementation
|
||||
// Collection<ArtifactMetadata> artifactsByProperty = getRepository().getArtifactsByProperty( "org.name", TEST_ORGANIZATION.getName(), TEST_REPO_ID );
|
||||
// Collection<ArtifactMetadata> artifactsByProperty = getRepository().getArtifactsByProjectVersionAttribute( "org.name", TEST_ORGANIZATION.getName(), TEST_REPO_ID );
|
||||
tryAssert( ( ) -> {
|
||||
|
||||
Collection<ArtifactMetadata> artifactsByProperty = getRepository( ).getArtifactsByProperty( session, "url", TEST_URL, TEST_REPO_ID );
|
||||
Collection<ArtifactMetadata> artifactsByProperty = getRepository( ).getArtifactsByProjectVersionAttribute( session, "url", TEST_URL, TEST_REPO_ID );
|
||||
assertThat( artifactsByProperty ).hasSize( 1 );
|
||||
ArtifactMetadata artifactMetadata = artifactsByProperty.iterator( ).next( );
|
||||
assertThat( artifactMetadata.getId( ) ).isEqualTo( TEST_PROJECT + "-" + TEST_PROJECT_VERSION + ".jar" );
|
||||
|
@ -2046,13 +2046,13 @@ public abstract class AbstractMetadataRepositoryTest
|
|||
|
||||
log.info( "artifactMetadatas: {}", artifactMetadatas );
|
||||
|
||||
getRepository( ).removeArtifact( session, artifactOne, "2.0-SNAPSHOT" );
|
||||
getRepository( ).removeTimestampedArtifact( session, artifactOne, "2.0-SNAPSHOT" );
|
||||
|
||||
artifactMetadatas = getRepository( ).getArtifacts( session, TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, "2.0-SNAPSHOT" );
|
||||
|
||||
assertThat( artifactMetadatas ).isNotNull( ).isNotEmpty( ).hasSize( 1 );
|
||||
|
||||
getRepository( ).removeArtifact( session, artifactTwo, "2.0-SNAPSHOT" );
|
||||
getRepository( ).removeTimestampedArtifact( session, artifactTwo, "2.0-SNAPSHOT" );
|
||||
|
||||
artifactMetadatas = getRepository( ).getArtifacts( session, TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, "2.0-SNAPSHOT" );
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ public class RepositoryWalkingStatisticsProvider implements RepositoryStatistics
|
|||
String ns )
|
||||
throws MetadataResolutionException
|
||||
{
|
||||
for ( String namespace : metadataRepository.getNamespaces( repositorySession , repositoryId, ns ) )
|
||||
for ( String namespace : metadataRepository.getChildNamespaces( repositorySession , repositoryId, ns ) )
|
||||
{
|
||||
walkRepository( repositorySession, metadataRepository, stats, repositoryId, ns + "." + namespace );
|
||||
}
|
||||
|
|
|
@ -482,7 +482,7 @@ public class CassandraMetadataRepository
|
|||
|
||||
// FIXME this one need peformance improvement maybe a cache?
|
||||
@Override
|
||||
public Collection<String> getNamespaces( RepositorySession session, final String repoId, final String namespaceId )
|
||||
public Collection<String> getChildNamespaces( RepositorySession session, final String repoId, final String namespaceId )
|
||||
throws MetadataResolutionException
|
||||
{
|
||||
|
||||
|
@ -2032,17 +2032,17 @@ public class CassandraMetadataRepository
|
|||
|
||||
/**
|
||||
* Project version and artifact level metadata are stored in the same place, no distinctions in Cassandra
|
||||
* implementation, just calls {@link MetadataRepository#getArtifactsByMetadata(RepositorySession, String, String, String)}
|
||||
* implementation, just calls {@link MetadataRepository#getArtifactsByAttribute(RepositorySession, String, String, String)}
|
||||
*/
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByProjectVersionMetadata( RepositorySession session, String key, String value, String repositoryId )
|
||||
public List<ArtifactMetadata> getArtifactsByProjectVersionFacet( RepositorySession session, String key, String value, String repositoryId )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
return getArtifactsByMetadata( session, key, value, repositoryId );
|
||||
return this.getArtifactsByAttribute( session, key, value, repositoryId );
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByMetadata( RepositorySession session, String key, String value, String repositoryId )
|
||||
public List<ArtifactMetadata> getArtifactsByAttribute( RepositorySession session, String key, String value, String repositoryId )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
RangeSlicesQuery<String, String, String> query =
|
||||
|
@ -2101,7 +2101,7 @@ public class CassandraMetadataRepository
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByProperty( RepositorySession session, String key, String value, String repositoryId )
|
||||
public List<ArtifactMetadata> getArtifactsByProjectVersionAttribute( RepositorySession session, String key, String value, String repositoryId )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
QueryResult<OrderedRows<String, String, String>> result =
|
||||
|
@ -2146,7 +2146,7 @@ public class CassandraMetadataRepository
|
|||
final String version, final String id )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
logger.debug( "removeArtifact repositoryId: '{}', namespace: '{}', project: '{}', version: '{}', id: '{}'",
|
||||
logger.debug( "removeTimestampedArtifact repositoryId: '{}', namespace: '{}', project: '{}', version: '{}', id: '{}'",
|
||||
repositoryId, namespace, project, version, id );
|
||||
String key =
|
||||
new ArtifactMetadataModel.KeyBuilder().withRepositoryId( repositoryId ).withNamespace( namespace ).withId(
|
||||
|
@ -2166,10 +2166,10 @@ public class CassandraMetadataRepository
|
|||
}
|
||||
|
||||
@Override
|
||||
public void removeArtifact( RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion )
|
||||
public void removeTimestampedArtifact( RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
logger.debug( "removeArtifact repositoryId: '{}', namespace: '{}', project: '{}', version: '{}', id: '{}'",
|
||||
logger.debug( "removeTimestampedArtifact repositoryId: '{}', namespace: '{}', project: '{}', version: '{}', id: '{}'",
|
||||
artifactMetadata.getRepositoryId(), artifactMetadata.getNamespace(),
|
||||
artifactMetadata.getProject(), baseVersion, artifactMetadata.getId() );
|
||||
String key =
|
||||
|
@ -2182,8 +2182,8 @@ public class CassandraMetadataRepository
|
|||
}
|
||||
|
||||
@Override
|
||||
public void removeArtifact( RepositorySession session, final String repositoryId, final String namespace, final String project,
|
||||
final String version, final MetadataFacet metadataFacet )
|
||||
public void removeFacetFromArtifact( RepositorySession session, final String repositoryId, final String namespace, final String project,
|
||||
final String version, final MetadataFacet metadataFacet )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
|
||||
|
@ -2447,21 +2447,6 @@ public class CassandraMetadataRepository
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean canObtainAccess( Class<?> aClass )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T obtainAccess( RepositorySession session, Class<T> aClass )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
throw new IllegalArgumentException(
|
||||
"Access using " + aClass + " is not supported on the cassandra metadata storage" );
|
||||
}
|
||||
|
||||
|
||||
private static class ModelMapperHolder
|
||||
{
|
||||
private static ModelMapper MODEL_MAPPER = new ModelMapper();
|
||||
|
@ -2473,7 +2458,7 @@ public class CassandraMetadataRepository
|
|||
}
|
||||
|
||||
/**
|
||||
* This implementation just calls getArtifactsByMetadata( null, text, repositoryId ). We can't search artifacts by
|
||||
* This implementation just calls getArtifactsByAttribute( null, text, repositoryId ). We can't search artifacts by
|
||||
* any property.
|
||||
*/
|
||||
@Override
|
||||
|
@ -2481,7 +2466,7 @@ public class CassandraMetadataRepository
|
|||
final String text, final boolean exact )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
return getArtifactsByMetadata( session, null, text, repositoryId );
|
||||
return this.getArtifactsByAttribute( session, null, text, repositoryId );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2494,8 +2479,8 @@ public class CassandraMetadataRepository
|
|||
{
|
||||
// TODO optimize
|
||||
List<ArtifactMetadata> artifacts = new LinkedList<ArtifactMetadata>();
|
||||
artifacts.addAll( getArtifactsByMetadata( session, key, text, repositoryId ) );
|
||||
artifacts.addAll( getArtifactsByProperty( session, key, text, repositoryId ) );
|
||||
artifacts.addAll( this.getArtifactsByAttribute( session, key, text, repositoryId ) );
|
||||
artifacts.addAll( this.getArtifactsByProjectVersionAttribute( session, key, text, repositoryId ) );
|
||||
return artifacts;
|
||||
}
|
||||
|
||||
|
|
|
@ -476,7 +476,7 @@ public class FileMetadataRepository
|
|||
ZonedDateTime endTime)
|
||||
throws MetadataRepositoryException {
|
||||
try {
|
||||
for (String namespace : getNamespaces(session, repoId, ns)) {
|
||||
for (String namespace : this.getChildNamespaces(session, repoId, ns)) {
|
||||
getArtifactsByDateRange(session, artifacts, repoId, ns + "." + namespace, startTime, endTime);
|
||||
}
|
||||
|
||||
|
@ -580,17 +580,6 @@ public class FileMetadataRepository
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean canObtainAccess(Class<?> aClass) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T obtainAccess(RepositorySession session, Class<T> aClass) {
|
||||
throw new IllegalArgumentException(
|
||||
"Access using " + aClass + " is not supported on the file metadata storage");
|
||||
}
|
||||
|
||||
private void updateArtifactFacets(ArtifactMetadata artifact, Properties properties) {
|
||||
String propertyPrefix = "artifact:facet:" + artifact.getId() + ":";
|
||||
for (MetadataFacet facet : artifact.getFacetList()) {
|
||||
|
@ -634,7 +623,7 @@ public class FileMetadataRepository
|
|||
}
|
||||
|
||||
@Override
|
||||
public void removeArtifact(RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion)
|
||||
public void removeTimestampedArtifact( RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion)
|
||||
throws MetadataRepositoryException {
|
||||
|
||||
try {
|
||||
|
@ -712,8 +701,8 @@ public class FileMetadataRepository
|
|||
* @throws MetadataRepositoryException
|
||||
*/
|
||||
@Override
|
||||
public void removeArtifact(RepositorySession session, String repositoryId, String namespace, String project, String projectVersion,
|
||||
MetadataFacet metadataFacet)
|
||||
public void removeFacetFromArtifact( RepositorySession session, String repositoryId, String namespace, String project, String projectVersion,
|
||||
MetadataFacet metadataFacet)
|
||||
throws MetadataRepositoryException {
|
||||
throw new UnsupportedOperationException("not implemented");
|
||||
}
|
||||
|
@ -731,21 +720,21 @@ public class FileMetadataRepository
|
|||
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByProjectVersionMetadata(RepositorySession session, String key, String value, String repositoryId)
|
||||
public List<ArtifactMetadata> getArtifactsByProjectVersionFacet( RepositorySession session, String key, String value, String repositoryId)
|
||||
throws MetadataRepositoryException {
|
||||
throw new UnsupportedOperationException("not yet implemented in File backend");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByMetadata(RepositorySession session, String key, String value, String repositoryId)
|
||||
public List<ArtifactMetadata> getArtifactsByAttribute( RepositorySession session, String key, String value, String repositoryId)
|
||||
throws MetadataRepositoryException {
|
||||
throw new UnsupportedOperationException("not yet implemented in File backend");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByProperty(RepositorySession session, String key, String value, String repositoryId)
|
||||
public List<ArtifactMetadata> getArtifactsByProjectVersionAttribute( RepositorySession session, String key, String value, String repositoryId)
|
||||
throws MetadataRepositoryException {
|
||||
throw new UnsupportedOperationException("getArtifactsByProperty not yet implemented in File backend");
|
||||
throw new UnsupportedOperationException("getArtifactsByProjectVersionAttribute not yet implemented in File backend");
|
||||
}
|
||||
|
||||
private Path getMetadataDirectory(String repoId, String facetId)
|
||||
|
@ -1057,7 +1046,7 @@ public class FileMetadataRepository
|
|||
@Override
|
||||
public Collection<String> getRootNamespaces(RepositorySession session, String repoId)
|
||||
throws MetadataResolutionException {
|
||||
return getNamespaces(session, repoId, null);
|
||||
return this.getChildNamespaces(session, repoId, null);
|
||||
}
|
||||
|
||||
private Stream<String> getAllNamespacesStream(RepositorySession session, String repoId) {
|
||||
|
@ -1087,7 +1076,7 @@ public class FileMetadataRepository
|
|||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> getNamespaces(RepositorySession session, String repoId, String baseNamespace)
|
||||
public Collection<String> getChildNamespaces( RepositorySession session, String repoId, String baseNamespace)
|
||||
throws MetadataResolutionException {
|
||||
try {
|
||||
List<String> allNamespaces;
|
||||
|
@ -1305,7 +1294,7 @@ public class FileMetadataRepository
|
|||
|
||||
private void getArtifacts(RepositorySession session, List<ArtifactMetadata> artifacts, String repoId, String ns)
|
||||
throws MetadataResolutionException {
|
||||
for (String namespace : getNamespaces(session, repoId, ns)) {
|
||||
for (String namespace : this.getChildNamespaces(session, repoId, ns)) {
|
||||
getArtifacts(session, artifacts, repoId, ns + "." + namespace);
|
||||
}
|
||||
|
||||
|
|
|
@ -963,7 +963,7 @@ public class JcrMetadataRepository
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByProjectVersionMetadata( RepositorySession session, String key, String value, String repositoryId )
|
||||
public List<ArtifactMetadata> getArtifactsByProjectVersionFacet( RepositorySession session, String key, String value, String repositoryId )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
final Session jcrSession = getSession( session );
|
||||
|
@ -973,7 +973,7 @@ public class JcrMetadataRepository
|
|||
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByMetadata( RepositorySession session, String key, String value, String repositoryId )
|
||||
public List<ArtifactMetadata> getArtifactsByAttribute( RepositorySession session, String key, String value, String repositoryId )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
final Session jcrSession = getSession( session );
|
||||
|
@ -983,7 +983,7 @@ public class JcrMetadataRepository
|
|||
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByProperty( RepositorySession session, String key, String value, String repositoryId )
|
||||
public List<ArtifactMetadata> getArtifactsByProjectVersionAttribute( RepositorySession session, String key, String value, String repositoryId )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
final Session jcrSession = getSession( session );
|
||||
|
@ -1367,11 +1367,11 @@ public class JcrMetadataRepository
|
|||
public Collection<String> getRootNamespaces( RepositorySession session, String repositoryId )
|
||||
throws MetadataResolutionException
|
||||
{
|
||||
return getNamespaces(session , repositoryId, null );
|
||||
return this.getChildNamespaces(session , repositoryId, null );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> getNamespaces( RepositorySession session, String repositoryId, String baseNamespace )
|
||||
public Collection<String> getChildNamespaces( RepositorySession session, String repositoryId, String baseNamespace )
|
||||
throws MetadataResolutionException
|
||||
{
|
||||
String path = baseNamespace != null
|
||||
|
@ -1417,7 +1417,7 @@ public class JcrMetadataRepository
|
|||
}
|
||||
|
||||
@Override
|
||||
public void removeArtifact( RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion )
|
||||
public void removeTimestampedArtifact( RepositorySession session, ArtifactMetadata artifactMetadata, String baseVersion )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
final Session jcrSession = getSession( session );
|
||||
|
@ -1525,8 +1525,8 @@ public class JcrMetadataRepository
|
|||
}
|
||||
|
||||
@Override
|
||||
public void removeArtifact( RepositorySession session, String repositoryId, String namespace, String project, String projectVersion,
|
||||
MetadataFacet metadataFacet )
|
||||
public void removeFacetFromArtifact( RepositorySession session, String repositoryId, String namespace, String project, String projectVersion,
|
||||
MetadataFacet metadataFacet )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
final Session jcrSession = getSession( session );
|
||||
|
@ -1603,25 +1603,6 @@ public class JcrMetadataRepository
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean canObtainAccess( Class<?> aClass )
|
||||
{
|
||||
return aClass == Session.class;
|
||||
}
|
||||
|
||||
@SuppressWarnings( "unchecked" )
|
||||
@Override
|
||||
public <T> T obtainAccess( RepositorySession session, Class<T> aClass )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
if ( aClass == Session.class )
|
||||
{
|
||||
return (T) getSession( session );
|
||||
}
|
||||
throw new IllegalArgumentException(
|
||||
"Access using " + aClass + " is not supported on the JCR metadata storage" );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close()
|
||||
throws MetadataRepositoryException
|
||||
|
|
|
@ -628,9 +628,9 @@ public class RepositoryStatisticsManagerTest
|
|||
|
||||
expect( metadataRepository.getProjects(session , TEST_REPO_ID, "com" ) ).andReturn( Arrays.<String>asList() );
|
||||
|
||||
expect( metadataRepository.getNamespaces(session , TEST_REPO_ID, "com" ) ).andReturn( Arrays.asList( "example" ) );
|
||||
expect( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "com" ) ).andReturn( Arrays.asList( "example" ) );
|
||||
|
||||
expect( metadataRepository.getNamespaces(session , TEST_REPO_ID, "com.example" ) ).andReturn(
|
||||
expect( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "com.example" ) ).andReturn(
|
||||
Arrays.<String>asList() );
|
||||
|
||||
expect( metadataRepository.getProjects(session , TEST_REPO_ID, "com.example" ) ).andReturn(
|
||||
|
@ -650,14 +650,14 @@ public class RepositoryStatisticsManagerTest
|
|||
createArtifact( "com.example", "example-project", "1.1", "pom" ) ) );
|
||||
|
||||
|
||||
expect( metadataRepository.getNamespaces(session , TEST_REPO_ID, "org" ) ).andReturn( Arrays.asList( "apache", "codehaus" ) );
|
||||
expect( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "org" ) ).andReturn( Arrays.asList( "apache", "codehaus" ) );
|
||||
|
||||
expect( metadataRepository.getNamespaces(session , TEST_REPO_ID, "org.apache" ) ).andReturn( Arrays.asList( "archiva", "maven" ) );
|
||||
expect( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "org.apache" ) ).andReturn( Arrays.asList( "archiva", "maven" ) );
|
||||
|
||||
|
||||
expect( metadataRepository.getProjects(session , TEST_REPO_ID, "org.apache" ) ).andReturn( Arrays.<String>asList() );
|
||||
|
||||
expect( metadataRepository.getNamespaces(session , TEST_REPO_ID, "org.apache.archiva" ) ).andReturn( Arrays.<String>asList() );
|
||||
expect( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "org.apache.archiva" ) ).andReturn( Arrays.<String>asList() );
|
||||
|
||||
expect( metadataRepository.getProjects(session , TEST_REPO_ID, "org.apache.archiva" ) ).andReturn( Arrays.asList( "metadata-repository-api", "metadata-model" ) );
|
||||
|
||||
|
@ -685,7 +685,7 @@ public class RepositoryStatisticsManagerTest
|
|||
.andReturn( Arrays.asList( createArtifact( "org.apache.archiva", "metadata-model", "1.3", "jar" ),
|
||||
createArtifact( "org.apache.archiva", "metadata-model", "1.3", "pom" ) ) );
|
||||
|
||||
expect( metadataRepository.getNamespaces(session , TEST_REPO_ID, "org.apache.maven" ) ).andReturn( Arrays.<String>asList() );
|
||||
expect( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "org.apache.maven" ) ).andReturn( Arrays.<String>asList() );
|
||||
|
||||
expect( metadataRepository.getProjects(session , TEST_REPO_ID, "org.apache.maven" ) )
|
||||
.andReturn( Arrays.asList( "maven-model" ) );
|
||||
|
@ -697,14 +697,14 @@ public class RepositoryStatisticsManagerTest
|
|||
.andReturn( Arrays.asList( createArtifact( "org.apache.archiva", "maven-model", "2.2.1", "jar" ),
|
||||
createArtifact( "org.apache.archiva", "maven-model", "2.2.1", "pom" ) ) );
|
||||
|
||||
expect( metadataRepository.getNamespaces(session , TEST_REPO_ID, "org.codehaus" ) ).andReturn( Arrays.asList( "plexus" ) );
|
||||
expect( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "org.codehaus" ) ).andReturn( Arrays.asList( "plexus" ) );
|
||||
|
||||
expect( metadataRepository.getProjects(session , TEST_REPO_ID, "org" ) ).andReturn( Arrays.<String>asList( ) );
|
||||
|
||||
expect( metadataRepository.getProjects(session , TEST_REPO_ID, "org.codehaus" ) )
|
||||
.andReturn( Arrays.<String>asList( ) );
|
||||
|
||||
expect( metadataRepository.getNamespaces(session , TEST_REPO_ID, "org.codehaus.plexus" ) )
|
||||
expect( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "org.codehaus.plexus" ) )
|
||||
.andReturn( Arrays.<String>asList( ) );
|
||||
|
||||
expect( metadataRepository.getProjects(session , TEST_REPO_ID, "org.codehaus.plexus" ) )
|
||||
|
|
Loading…
Reference in New Issue