org.apache.archiva.metadata.repository.storage.maven2
Class Maven2RepositoryStorage

java.lang.Object
  extended by org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryStorage
All Implemented Interfaces:
RepositoryStorage

@Service(value="repositoryStorage#maven2")
public class Maven2RepositoryStorage
extends Object
implements RepositoryStorage

Maven 2 repository format storage implementation. This class currently takes parameters to indicate the repository to deal with rather than being instantiated per-repository. FIXME: instantiate one per repository and allocate permanently from a factory (which can be obtained within the session).

The session is passed in as an argument to obtain any necessary resources, rather than the class being instantiated within the session in the context of a single managed repository's resolution needs.


Nested Class Summary
private static class Maven2RepositoryStorage.ArtifactDirectoryFilter
           
private static class Maven2RepositoryStorage.DirectoryFilter
           
private static class Maven2RepositoryStorage.PomFileFilter
           
private static class Maven2RepositoryStorage.PomFilenameFilter
           
 
Field Summary
private  org.springframework.context.ApplicationContext applicationContext
           
private  org.apache.maven.model.building.ModelBuilder builder
           
private static org.slf4j.Logger log
           
private  ManagedRepositoryAdmin managedRepositoryAdmin
           
private static org.apache.maven.model.io.xpp3.MavenXpp3Reader MAVEN_XPP_3_READER
           
private static String METADATA_FILENAME
           
private static String METADATA_FILENAME_START
           
private  NetworkProxyAdmin networkProxyAdmin
           
private  RepositoryPathTranslator pathTranslator
           
private  ProxyConnectorAdmin proxyConnectorAdmin
           
private  RemoteRepositoryAdmin remoteRepositoryAdmin
           
private  WagonFactory wagonFactory
           
 
Constructor Summary
Maven2RepositoryStorage()
           
 
Method Summary
 void applyServerSideRelocation(ManagedRepositoryContent managedRepository, ArtifactReference artifact)
          A relocation capable client will request the POM prior to the artifact, and will then read meta-data and do client side relocation.
private  CiManagement convertCiManagement(org.apache.maven.model.CiManagement ciManagement)
           
private  List<Dependency> convertDependencies(List<org.apache.maven.model.Dependency> dependencies)
           
private  IssueManagement convertIssueManagement(org.apache.maven.model.IssueManagement issueManagement)
           
private  List<License> convertLicenses(List<org.apache.maven.model.License> licenses)
           
private  List<MailingList> convertMailingLists(List<org.apache.maven.model.MailingList> mailingLists)
           
private  Organization convertOrganization(org.apache.maven.model.Organization organization)
           
private  Scm convertScm(org.apache.maven.model.Scm scm)
           
private  ArtifactMetadata getArtifactFromFile(String repoId, String namespace, String projectId, String projectVersion, File file)
           
private  File getRepositoryBasedir(String repoId)
           
private static Collection<String> getSortedFiles(File dir, Filter<String> filter)
           
 void initialize()
           
private  boolean isProject(File dir, Filter<String> filter)
           
private  boolean isProjectVersion(File dir)
           
 Collection<String> listNamespaces(String repoId, String namespace, Filter<String> filter)
           
 Collection<String> listProjects(String repoId, String namespace, Filter<String> filter)
           
 Collection<String> listProjectVersions(String repoId, String namespace, String projectId, Filter<String> filter)
           
 Collection<String> listRootNamespaces(String repoId, Filter<String> filter)
           
private static void populateArtifactMetadataFromFile(ArtifactMetadata metadata, File file)
           
 ArtifactMetadata readArtifactMetadataFromPath(String repoId, String path)
           
 Collection<ArtifactMetadata> readArtifactsMetadata(ReadMetadataRequest readMetadataRequest)
           
private  ArchivaRepositoryMetadata readMetadata(File directory)
           
 ProjectMetadata readProjectMetadata(String repoId, String namespace, String projectId)
           
 ProjectVersionMetadata readProjectVersionMetadata(ReadMetadataRequest readMetadataRequest)
           
 void setWagonFactory(WagonFactory wagonFactory)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

builder

private org.apache.maven.model.building.ModelBuilder builder

remoteRepositoryAdmin

@Inject
private RemoteRepositoryAdmin remoteRepositoryAdmin

managedRepositoryAdmin

@Inject
private ManagedRepositoryAdmin managedRepositoryAdmin

proxyConnectorAdmin

@Inject
private ProxyConnectorAdmin proxyConnectorAdmin

networkProxyAdmin

@Inject
private NetworkProxyAdmin networkProxyAdmin

pathTranslator

@Inject
@Named(value="repositoryPathTranslator#maven2")
private RepositoryPathTranslator pathTranslator

wagonFactory

@Inject
private WagonFactory wagonFactory

applicationContext

@Inject
private org.springframework.context.ApplicationContext applicationContext

log

private static final org.slf4j.Logger log

METADATA_FILENAME_START

private static final String METADATA_FILENAME_START
See Also:
Constant Field Values

METADATA_FILENAME

private static final String METADATA_FILENAME
See Also:
Constant Field Values

MAVEN_XPP_3_READER

private static final org.apache.maven.model.io.xpp3.MavenXpp3Reader MAVEN_XPP_3_READER
Constructor Detail

Maven2RepositoryStorage

public Maven2RepositoryStorage()
Method Detail

initialize

@PostConstruct
public void initialize()

readProjectMetadata

public ProjectMetadata readProjectMetadata(String repoId,
                                           String namespace,
                                           String projectId)
Specified by:
readProjectMetadata in interface RepositoryStorage

readProjectVersionMetadata

public ProjectVersionMetadata readProjectVersionMetadata(ReadMetadataRequest readMetadataRequest)
                                                  throws RepositoryStorageMetadataNotFoundException,
                                                         RepositoryStorageMetadataInvalidException,
                                                         RepositoryStorageRuntimeException
Specified by:
readProjectVersionMetadata in interface RepositoryStorage
Throws:
RepositoryStorageMetadataNotFoundException
RepositoryStorageMetadataInvalidException
RepositoryStorageRuntimeException

setWagonFactory

public void setWagonFactory(WagonFactory wagonFactory)

convertDependencies

private List<Dependency> convertDependencies(List<org.apache.maven.model.Dependency> dependencies)

convertScm

private Scm convertScm(org.apache.maven.model.Scm scm)

convertOrganization

private Organization convertOrganization(org.apache.maven.model.Organization organization)

convertLicenses

private List<License> convertLicenses(List<org.apache.maven.model.License> licenses)

convertMailingLists

private List<MailingList> convertMailingLists(List<org.apache.maven.model.MailingList> mailingLists)

convertIssueManagement

private IssueManagement convertIssueManagement(org.apache.maven.model.IssueManagement issueManagement)

convertCiManagement

private CiManagement convertCiManagement(org.apache.maven.model.CiManagement ciManagement)

listRootNamespaces

public Collection<String> listRootNamespaces(String repoId,
                                             Filter<String> filter)
                                      throws RepositoryStorageRuntimeException
Specified by:
listRootNamespaces in interface RepositoryStorage
Throws:
RepositoryStorageRuntimeException

getSortedFiles

private static Collection<String> getSortedFiles(File dir,
                                                 Filter<String> filter)

getRepositoryBasedir

private File getRepositoryBasedir(String repoId)
                           throws RepositoryStorageRuntimeException
Throws:
RepositoryStorageRuntimeException

listNamespaces

public Collection<String> listNamespaces(String repoId,
                                         String namespace,
                                         Filter<String> filter)
                                  throws RepositoryStorageRuntimeException
Specified by:
listNamespaces in interface RepositoryStorage
Throws:
RepositoryStorageRuntimeException

listProjects

public Collection<String> listProjects(String repoId,
                                       String namespace,
                                       Filter<String> filter)
                                throws RepositoryStorageRuntimeException
Specified by:
listProjects in interface RepositoryStorage
Throws:
RepositoryStorageRuntimeException

listProjectVersions

public Collection<String> listProjectVersions(String repoId,
                                              String namespace,
                                              String projectId,
                                              Filter<String> filter)
                                       throws RepositoryStorageRuntimeException
Specified by:
listProjectVersions in interface RepositoryStorage
Throws:
RepositoryStorageRuntimeException

readArtifactsMetadata

public Collection<ArtifactMetadata> readArtifactsMetadata(ReadMetadataRequest readMetadataRequest)
                                                   throws RepositoryStorageRuntimeException
Specified by:
readArtifactsMetadata in interface RepositoryStorage
Throws:
RepositoryStorageRuntimeException

readArtifactMetadataFromPath

public ArtifactMetadata readArtifactMetadataFromPath(String repoId,
                                                     String path)
                                              throws RepositoryStorageRuntimeException
Specified by:
readArtifactMetadataFromPath in interface RepositoryStorage
Throws:
RepositoryStorageRuntimeException

getArtifactFromFile

private ArtifactMetadata getArtifactFromFile(String repoId,
                                             String namespace,
                                             String projectId,
                                             String projectVersion,
                                             File file)

applyServerSideRelocation

public void applyServerSideRelocation(ManagedRepositoryContent managedRepository,
                                      ArtifactReference artifact)
                               throws ProxyDownloadException
A relocation capable client will request the POM prior to the artifact, and will then read meta-data and do client side relocation. A simplier client (like maven 1) will only request the artifact and not use the metadatas.

For such clients, archiva does server-side relocation by reading itself the <relocation> element in metadatas and serving the expected artifact.

Specified by:
applyServerSideRelocation in interface RepositoryStorage
Throws:
ProxyDownloadException

populateArtifactMetadataFromFile

private static void populateArtifactMetadataFromFile(ArtifactMetadata metadata,
                                                     File file)

isProject

private boolean isProject(File dir,
                          Filter<String> filter)

isProjectVersion

private boolean isProjectVersion(File dir)

readMetadata

private ArchivaRepositoryMetadata readMetadata(File directory)


Copyright © 2006-2013 The Apache Software Foundation. All Rights Reserved.