public class CassandraMetadataRepository extends Object implements MetadataRepository
| Modifier and Type | Class and Description | 
|---|---|
private static class  | 
CassandraMetadataRepository.ModelMapperHolder  | 
| Modifier and Type | Field and Description | 
|---|---|
private me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> | 
artifactMetadataTemplate  | 
private CassandraArchivaManager | 
cassandraArchivaManager  | 
private ArchivaConfiguration | 
configuration  | 
private me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> | 
dependencyTemplate  | 
private me.prettyprint.hector.api.Keyspace | 
keyspace  | 
private me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> | 
licenseTemplate  | 
private org.slf4j.Logger | 
logger  | 
private me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> | 
mailingListTemplate  | 
private Map<String,MetadataFacetFactory> | 
metadataFacetFactories  | 
private me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> | 
metadataFacetTemplate  | 
private me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> | 
projectTemplate  | 
private me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> | 
projectVersionMetadataTemplate  | 
private me.prettyprint.cassandra.serializers.StringSerializer | 
ss  | 
| Constructor and Description | 
|---|
CassandraMetadataRepository(Map<String,MetadataFacetFactory> metadataFacetFactories,
                           ArchivaConfiguration configuration,
                           CassandraArchivaManager cassandraArchivaManager)  | 
| Modifier and Type | Method and Description | 
|---|---|
void | 
addMetadataFacet(String repositoryId,
                MetadataFacet metadataFacet)  | 
boolean | 
canObtainAccess(Class<?> aClass)  | 
void | 
close()  | 
List<ArtifactMetadata> | 
getArtifacts(String repositoryId)  | 
Collection<ArtifactMetadata> | 
getArtifacts(String repoId,
            String namespace,
            String projectId,
            String projectVersion)  | 
Collection<ArtifactMetadata> | 
getArtifactsByChecksum(String repositoryId,
                      String checksum)  | 
List<ArtifactMetadata> | 
getArtifactsByDateRange(String repositoryId,
                       Date startTime,
                       Date endTime)
if startTime or endTime are  
null they are not used for search | 
List<ArtifactMetadata> | 
getArtifactsByMetadata(String key,
                      String value,
                      String repositoryId)
Get artifacts with an artifact metadata key that matches the passed value. 
 | 
List<ArtifactMetadata> | 
getArtifactsByProjectVersionMetadata(String key,
                                    String value,
                                    String repositoryId)
Project version and artifact level metadata are stored in the same place, no distinctions in Cassandra
 implementation, just calls  
getArtifactsByMetadata(String, String, String) | 
List<ArtifactMetadata> | 
getArtifactsByProperty(String key,
                      String value,
                      String repositoryId)
Get artifacts with a property key that matches the passed value. 
 | 
Collection<String> | 
getArtifactVersions(String repoId,
                   String namespace,
                   String projectId,
                   String projectVersion)  | 
protected List<Dependency> | 
getDependencies(String projectVersionMetadataKey)  | 
protected List<License> | 
getLicenses(String projectVersionMetadataKey)  | 
protected List<MailingList> | 
getMailingLists(String projectVersionMetadataKey)  | 
MetadataFacet | 
getMetadataFacet(String repositoryId,
                String facetId,
                String name)  | 
List<String> | 
getMetadataFacets(String repositoryId,
                 String facetId)  | 
protected org.modelmapper.ModelMapper | 
getModelMapper()  | 
protected Namespace | 
getNamespace(String repositoryId,
            String namespaceId)  | 
protected List<String> | 
getNamespaces(String repoId)  | 
Collection<String> | 
getNamespaces(String repoId,
             String namespaceId)  | 
Repository | 
getOrCreateRepository(String repositoryId)
if the repository doesn't exist it will be created 
 | 
ProjectMetadata | 
getProject(String repoId,
          String namespace,
          String id)
basically just checking it exists not complete data returned 
 | 
Collection<ProjectVersionReference> | 
getProjectReferences(String repoId,
                    String namespace,
                    String projectId,
                    String projectVersion)
Retrieve project references from the metadata repository. 
 | 
Collection<String> | 
getProjects(String repoId,
           String namespace)  | 
ProjectVersionMetadata | 
getProjectVersion(String repoId,
                 String namespace,
                 String projectId,
                 String projectVersion)  | 
Collection<String> | 
getProjectVersions(String repoId,
                  String namespace,
                  String projectId)  | 
Collection<String> | 
getRepositories()  | 
protected Repository | 
getRepository(String repositoryId)  | 
Collection<String> | 
getRootNamespaces(String repoId)  | 
boolean | 
hasMetadataFacet(String repositoryId,
                String facetId)  | 
protected ArtifactMetadata | 
mapArtifactMetadataLongColumnSlice(me.prettyprint.hector.api.beans.ColumnSlice<String,Long> columnSlice)  | 
protected ArtifactMetadata | 
mapArtifactMetadataStringColumnSlice(me.prettyprint.hector.api.beans.ColumnSlice<String,String> columnSlice)  | 
private List<ArtifactMetadata> | 
mapArtifactMetadataToArtifact(me.prettyprint.hector.api.query.QueryResult<me.prettyprint.hector.api.beans.OrderedRows<String,String,String>> result,
                             List<ArtifactMetadata> artifactMetadatas)
Attach metadata to each of the  ArtifactMetadata objects 
 | 
protected ProjectVersionMetadataModel | 
mapProjectVersionMetadataModel(me.prettyprint.hector.api.beans.ColumnSlice<String,String> columnSlice)  | 
<T> T | 
obtainAccess(Class<T> aClass)  | 
protected void | 
recordDependencies(String projectVersionMetadataKey,
                  List<Dependency> dependencies,
                  String repositoryId)  | 
protected void | 
recordLicenses(String projectVersionMetadataKey,
              List<License> licenses)  | 
protected void | 
recordMailingList(String projectVersionMetadataKey,
                 List<MailingList> mailingLists)  | 
void | 
removeArtifact(ArtifactMetadata artifactMetadata,
              String baseVersion)
used for deleting timestamped version of SNAPSHOT artifacts 
 | 
void | 
removeArtifact(String repositoryId,
              String namespace,
              String project,
              String version,
              MetadataFacet metadataFacet)
FIXME need a unit test!!!
 Only remove  
MetadataFacet for the artifact | 
void | 
removeArtifact(String repositoryId,
              String namespace,
              String project,
              String version,
              String id)  | 
protected void | 
removeDependencies(String projectVersionMetadataKey)  | 
protected void | 
removeLicenses(String projectVersionMetadataKey)  | 
protected void | 
removeMailingList(String projectVersionMetadataKey)  | 
void | 
removeMetadataFacet(String repositoryId,
                   String facetId,
                   String name)  | 
void | 
removeMetadataFacets(String repositoryId,
                    String facetId)  | 
void | 
removeNamespace(String repositoryId,
               String namespaceId)  | 
void | 
removeProject(String repositoryId,
             String namespaceId,
             String projectId)
remove a project 
 | 
void | 
removeProjectVersion(String repoId,
                    String namespace,
                    String projectId,
                    String projectVersion)  | 
void | 
removeRepository(String repositoryId)
Delete a repository's metadata. 
 | 
void | 
revert()
implementations can throw RuntimeException 
 | 
void | 
save()
implementations can throw RuntimeException 
 | 
List<ArtifactMetadata> | 
searchArtifacts(String text,
               String repositoryId,
               boolean exact)
This implementation just calls getArtifactsByMetadata( null, text, repositoryId ). 
 | 
List<ArtifactMetadata> | 
searchArtifacts(String key,
               String text,
               String repositoryId,
               boolean exact)
The exact parameter is ignored as we can't do non exact searches in Cassandra 
 | 
void | 
updateArtifact(String repositoryId,
              String namespaceId,
              String projectId,
              String projectVersion,
              ArtifactMetadata artifactMeta)  | 
private void | 
updateFacets(FacetedMetadata facetedMetadata,
            ArtifactMetadataModel artifactMetadataModel)
iterate over available facets to remove/add from the artifactMetadata 
 | 
void | 
updateNamespace(String repositoryId,
               String namespaceId)
create the namespace in the repository. 
 | 
private Namespace | 
updateOrAddNamespace(String repositoryId,
                    String namespaceId)  | 
void | 
updateProject(String repositoryId,
             ProjectMetadata projectMetadata)
Update metadata for a particular project in the metadata repository, or create it if it does not already exist. 
 | 
void | 
updateProjectVersion(String repositoryId,
                    String namespaceId,
                    String projectId,
                    ProjectVersionMetadata versionMetadata)  | 
private org.slf4j.Logger logger
private ArchivaConfiguration configuration
private final Map<String,MetadataFacetFactory> metadataFacetFactories
private final CassandraArchivaManager cassandraArchivaManager
private final me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> projectVersionMetadataTemplate
private final me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> projectTemplate
private final me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> artifactMetadataTemplate
private final me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> metadataFacetTemplate
private final me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> mailingListTemplate
private final me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> licenseTemplate
private final me.prettyprint.cassandra.service.template.ColumnFamilyTemplate<String,String> dependencyTemplate
private final me.prettyprint.hector.api.Keyspace keyspace
private final me.prettyprint.cassandra.serializers.StringSerializer ss
public CassandraMetadataRepository(Map<String,MetadataFacetFactory> metadataFacetFactories, ArchivaConfiguration configuration, CassandraArchivaManager cassandraArchivaManager)
public Repository getOrCreateRepository(String repositoryId) throws MetadataRepositoryException
repositoryId - MetadataRepositoryExceptionprotected Repository getRepository(String repositoryId) throws MetadataRepositoryException
MetadataRepositoryExceptionpublic void updateNamespace(String repositoryId, String namespaceId) throws MetadataRepositoryException
MetadataRepositoryupdateNamespace in interface MetadataRepositoryMetadataRepositoryExceptionprivate Namespace updateOrAddNamespace(String repositoryId, String namespaceId) throws MetadataRepositoryException
MetadataRepositoryExceptionprotected Namespace getNamespace(String repositoryId, String namespaceId)
public void removeNamespace(String repositoryId, String namespaceId) throws MetadataRepositoryException
removeNamespace in interface MetadataRepositorynamespaceId - (groupId for maven )MetadataRepositoryExceptionpublic void removeRepository(String repositoryId) throws MetadataRepositoryException
MetadataRepositoryremoveRepository in interface MetadataRepositoryrepositoryId - the repository to deleteMetadataRepositoryExceptionpublic Collection<String> getRepositories() throws MetadataRepositoryException
getRepositories in interface MetadataRepositoryMetadataRepositoryExceptionpublic Collection<String> getRootNamespaces(String repoId) throws MetadataResolutionException
getRootNamespaces in interface MetadataRepositoryMetadataResolutionExceptionpublic Collection<String> getNamespaces(String repoId, String namespaceId) throws MetadataResolutionException
getNamespaces in interface MetadataRepositoryCollection of child namespaces of the namespace argumentMetadataResolutionExceptionprotected List<String> getNamespaces(String repoId) throws MetadataResolutionException
MetadataResolutionExceptionpublic void updateProject(String repositoryId, ProjectMetadata projectMetadata) throws MetadataRepositoryException
MetadataRepositoryupdateProject in interface MetadataRepositoryrepositoryId - the repository the project is inprojectMetadata - the project metadata to create or updateMetadataRepositoryExceptionpublic Collection<String> getProjects(String repoId, String namespace) throws MetadataResolutionException
getProjects in interface MetadataRepositoryMetadataResolutionExceptionpublic void removeProject(String repositoryId, String namespaceId, String projectId) throws MetadataRepositoryException
MetadataRepositoryremoveProject in interface MetadataRepositoryMetadataRepositoryExceptionpublic Collection<String> getProjectVersions(String repoId, String namespace, String projectId) throws MetadataResolutionException
getProjectVersions in interface MetadataRepositoryMetadataResolutionExceptionpublic ProjectMetadata getProject(String repoId, String namespace, String id) throws MetadataResolutionException
MetadataRepositorygetProject in interface MetadataRepositoryMetadataResolutionExceptionprotected ProjectVersionMetadataModel mapProjectVersionMetadataModel(me.prettyprint.hector.api.beans.ColumnSlice<String,String> columnSlice)
public void updateProjectVersion(String repositoryId, String namespaceId, String projectId, ProjectVersionMetadata versionMetadata) throws MetadataRepositoryException
updateProjectVersion in interface MetadataRepositoryMetadataRepositoryExceptionpublic ProjectVersionMetadata getProjectVersion(String repoId, String namespace, String projectId, String projectVersion) throws MetadataResolutionException
getProjectVersion in interface MetadataRepositoryMetadataResolutionExceptionprotected void recordMailingList(String projectVersionMetadataKey, List<MailingList> mailingLists)
protected void removeMailingList(String projectVersionMetadataKey)
protected List<MailingList> getMailingLists(String projectVersionMetadataKey)
protected void recordLicenses(String projectVersionMetadataKey, List<License> licenses)
protected void removeLicenses(String projectVersionMetadataKey)
protected List<License> getLicenses(String projectVersionMetadataKey)
protected void recordDependencies(String projectVersionMetadataKey, List<Dependency> dependencies, String repositoryId)
protected void removeDependencies(String projectVersionMetadataKey)
protected List<Dependency> getDependencies(String projectVersionMetadataKey)
public void updateArtifact(String repositoryId, String namespaceId, String projectId, String projectVersion, ArtifactMetadata artifactMeta) throws MetadataRepositoryException
updateArtifact in interface MetadataRepositoryMetadataRepositoryExceptionpublic Collection<String> getArtifactVersions(String repoId, String namespace, String projectId, String projectVersion) throws MetadataResolutionException
getArtifactVersions in interface MetadataRepositoryMetadataResolutionExceptionprivate void updateFacets(FacetedMetadata facetedMetadata, ArtifactMetadataModel artifactMetadataModel)
facetedMetadata - artifactMetadataModel - only use for the keypublic List<String> getMetadataFacets(String repositoryId, String facetId) throws MetadataRepositoryException
getMetadataFacets in interface MetadataRepositoryMetadataRepositoryExceptionpublic boolean hasMetadataFacet(String repositoryId, String facetId) throws MetadataRepositoryException
hasMetadataFacet in interface MetadataRepositoryMetadataRepositoryExceptionpublic MetadataFacet getMetadataFacet(String repositoryId, String facetId, String name) throws MetadataRepositoryException
getMetadataFacet in interface MetadataRepositoryMetadataRepositoryExceptionpublic void addMetadataFacet(String repositoryId, MetadataFacet metadataFacet) throws MetadataRepositoryException
addMetadataFacet in interface MetadataRepositoryMetadataRepositoryExceptionpublic void removeMetadataFacets(String repositoryId, String facetId) throws MetadataRepositoryException
removeMetadataFacets in interface MetadataRepositoryMetadataRepositoryExceptionpublic void removeMetadataFacet(String repositoryId, String facetId, String name) throws MetadataRepositoryException
removeMetadataFacet in interface MetadataRepositoryMetadataRepositoryExceptionpublic List<ArtifactMetadata> getArtifactsByDateRange(String repositoryId, Date startTime, Date endTime) throws MetadataRepositoryException
MetadataRepositorynull they are not used for searchgetArtifactsByDateRange in interface MetadataRepositorystartTime - can be nullendTime - can be nullMetadataRepositoryExceptionprotected ArtifactMetadata mapArtifactMetadataLongColumnSlice(me.prettyprint.hector.api.beans.ColumnSlice<String,Long> columnSlice)
protected ArtifactMetadata mapArtifactMetadataStringColumnSlice(me.prettyprint.hector.api.beans.ColumnSlice<String,String> columnSlice)
public Collection<ArtifactMetadata> getArtifactsByChecksum(String repositoryId, String checksum) throws MetadataRepositoryException
getArtifactsByChecksum in interface MetadataRepositoryMetadataRepositoryExceptionpublic List<ArtifactMetadata> getArtifactsByProjectVersionMetadata(String key, String value, String repositoryId) throws MetadataRepositoryException
getArtifactsByMetadata(String, String, String)getArtifactsByProjectVersionMetadata in interface MetadataRepositoryrepositoryId - can be null, meaning search in all repositoriesMetadataRepositoryExceptionpublic List<ArtifactMetadata> getArtifactsByMetadata(String key, String value, String repositoryId) throws MetadataRepositoryException
MetadataRepositorygetArtifactsByMetadata in interface MetadataRepositoryrepositoryId - can be null, meaning search in all repositoriesMetadataRepositoryExceptionpublic List<ArtifactMetadata> getArtifactsByProperty(String key, String value, String repositoryId) throws MetadataRepositoryException
MetadataRepositorygetArtifactsByProperty in interface MetadataRepositoryrepositoryId - can be null, meaning search in all repositoriesMetadataRepositoryExceptionpublic void removeArtifact(String repositoryId, String namespace, String project, String version, String id) throws MetadataRepositoryException
removeArtifact in interface MetadataRepositoryMetadataRepositoryExceptionpublic void removeArtifact(ArtifactMetadata artifactMetadata, String baseVersion) throws MetadataRepositoryException
MetadataRepositoryremoveArtifact in interface MetadataRepositoryartifactMetadata - the artifactMetadata with the timestamped version (2.0-20120618.214135-2)baseVersion - the base version of the snapshot (2.0-SNAPSHOT)MetadataRepositoryExceptionpublic void removeArtifact(String repositoryId, String namespace, String project, String version, MetadataFacet metadataFacet) throws MetadataRepositoryException
MetadataRepositoryMetadataFacet for the artifactremoveArtifact in interface MetadataRepositoryMetadataRepositoryExceptionpublic List<ArtifactMetadata> getArtifacts(String repositoryId) throws MetadataRepositoryException
getArtifacts in interface MetadataRepositoryMetadataRepositoryExceptionpublic Collection<ProjectVersionReference> getProjectReferences(String repoId, String namespace, String projectId, String projectVersion) throws MetadataResolutionException
MetadataRepositorygetProjectReferences in interface MetadataRepositoryrepoId - the repository ID to look withinnamespace - the namespace of the project to get references toprojectId - the identifier of the project to get references toprojectVersion - the version of the project to get references toMetadataResolutionExceptionpublic void removeProjectVersion(String repoId, String namespace, String projectId, String projectVersion) throws MetadataRepositoryException
removeProjectVersion in interface MetadataRepositoryMetadataRepositoryExceptionpublic Collection<ArtifactMetadata> getArtifacts(String repoId, String namespace, String projectId, String projectVersion) throws MetadataResolutionException
getArtifacts in interface MetadataRepositoryMetadataResolutionExceptionprivate List<ArtifactMetadata> mapArtifactMetadataToArtifact(me.prettyprint.hector.api.query.QueryResult<me.prettyprint.hector.api.beans.OrderedRows<String,String,String>> result, List<ArtifactMetadata> artifactMetadatas)
public void save()
MetadataRepositorysave in interface MetadataRepositorypublic void close() throws MetadataRepositoryException
close in interface MetadataRepositoryMetadataRepositoryExceptionpublic void revert()
MetadataRepositoryrevert in interface MetadataRepositorypublic boolean canObtainAccess(Class<?> aClass)
canObtainAccess in interface MetadataRepositorypublic <T> T obtainAccess(Class<T> aClass) throws MetadataRepositoryException
obtainAccess in interface MetadataRepositoryMetadataRepositoryExceptionprotected org.modelmapper.ModelMapper getModelMapper()
public List<ArtifactMetadata> searchArtifacts(String text, String repositoryId, boolean exact) throws MetadataRepositoryException
searchArtifacts in interface MetadataRepositoryrepositoryId - can be null to search in all repositoriesexact - running an exact search, the value must exactly match the text.MetadataRepositoryExceptionpublic List<ArtifactMetadata> searchArtifacts(String key, String text, String repositoryId, boolean exact) throws MetadataRepositoryException
searchArtifacts in interface MetadataRepositorykey - search only inside this keyrepositoryId - can be null to search in all repositoriesexact - running an exact search, the value must exactly match the text.MetadataRepositoryExceptionCopyright © 2006–2022 The Apache Software Foundation. All rights reserved.