use a new bean rather than a lot of params to ease futur enhancements

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1401289 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Olivier Lamy 2012-10-23 13:29:21 +00:00
parent 38788585d7
commit ef66c2d19f
8 changed files with 266 additions and 199 deletions

View File

@ -34,6 +34,7 @@
import org.apache.archiva.metadata.repository.MetadataRepositoryException;
import org.apache.archiva.metadata.repository.RepositorySession;
import org.apache.archiva.metadata.repository.RepositorySessionFactory;
import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest;
import org.apache.archiva.metadata.repository.storage.RepositoryStorage;
import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataInvalidException;
import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataNotFoundException;
@ -54,8 +55,6 @@
/**
* Take an artifact off of disk and put it into the metadata repository.
*
*
*/
@Service ("knownRepositoryContentConsumer#create-archiva-metadata")
@Scope ("prototype")
@ -170,13 +169,16 @@ public void processFile( String path )
ProjectVersionMetadata versionMetadata = null;
try
{
versionMetadata = repositoryStorage.readProjectVersionMetadata( repoId, artifact.getNamespace(),
artifact.getProject(), projectVersion );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( repoId ).namespace( artifact.getNamespace() ).projectId(
artifact.getProject() ).projectVersion( projectVersion );
versionMetadata = repositoryStorage.readProjectVersionMetadata( readMetadataRequest );
createVersionMetadata = true;
}
catch ( RepositoryStorageMetadataNotFoundException e )
{
log.warn( "Missing or invalid POM for artifact:{} (repository:{}); creating empty metadata" , path, repoId );
log.warn( "Missing or invalid POM for artifact:{} (repository:{}); creating empty metadata", path,
repoId );
versionMetadata = new ProjectVersionMetadata();
versionMetadata.setId( projectVersion );
@ -185,7 +187,8 @@ public void processFile( String path )
}
catch ( RepositoryStorageMetadataInvalidException e )
{
log.warn( "Error occurred resolving POM for artifact:{} (repository:{}); message: {}" , new Object[] { path, repoId, e.getMessage() } );
log.warn( "Error occurred resolving POM for artifact:{} (repository:{}); message: {}",
new Object[]{ path, repoId, e.getMessage() } );
}
// read the metadata and update it if it is newer or doesn't exist
@ -202,12 +205,16 @@ public void processFile( String path )
}
catch ( MetadataRepositoryException e )
{
log.warn( "Error occurred persisting metadata for artifact:{} (repository:{}); message: {}" + e.getMessage(), new Object[] { path, repoId, e.getMessage() }, e );
log.warn(
"Error occurred persisting metadata for artifact:{} (repository:{}); message: {}" + e.getMessage(),
new Object[]{ path, repoId, e.getMessage() }, e );
repositorySession.revert();
}
catch ( RepositoryStorageRuntimeException e )
{
log.warn( "Error occurred persisting metadata for artifact:{} (repository:{}); message: {}" + e.getMessage(), new Object[] { path, repoId, e.getMessage() }, e );
log.warn(
"Error occurred persisting metadata for artifact:{} (repository:{}); message: {}" + e.getMessage(),
new Object[]{ path, repoId, e.getMessage() }, e );
repositorySession.revert();
}
finally

View File

@ -24,6 +24,7 @@
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.model.ProjectVersionReference;
import org.apache.archiva.metadata.repository.filter.ExcludesFilter;
import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest;
import org.apache.archiva.metadata.repository.storage.RepositoryStorage;
import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataInvalidException;
import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataNotFoundException;
@ -98,7 +99,10 @@ public ProjectVersionMetadata resolveProjectVersion( RepositorySession session,
{
try
{
metadata = repositoryStorage.readProjectVersionMetadata( repoId, namespace, projectId, projectVersion );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( repoId ).namespace( namespace ).projectId(
projectId ).projectVersion( projectVersion );
metadata = repositoryStorage.readProjectVersionMetadata( readMetadataRequest );
log.debug( "Resolved project version metadata from storage: {}", metadata );
@ -309,9 +313,11 @@ public Collection<String> resolveProjectVersions( RepositorySession session, Str
{
try
{
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( repoId ).namespace( namespace ).projectId(
projectId ).projectVersion( projectVersion );
ProjectVersionMetadata versionMetadata =
repositoryStorage.readProjectVersionMetadata( repoId, namespace, projectId,
projectVersion );
repositoryStorage.readProjectVersionMetadata( readMetadataRequest );
for ( RepositoryListener listener : listeners )
{
listener.addArtifact( session, repoId, namespace, projectId, versionMetadata );
@ -365,8 +371,13 @@ public Collection<ArtifactMetadata> resolveArtifacts( RepositorySession session,
Collection<ArtifactMetadata> artifacts =
metadataRepository.getArtifacts( repoId, namespace, projectId, projectVersion );
ExcludesFilter<String> filter = new ExcludesFilter<String>( createArtifactIdList( artifacts ) );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( repoId ).namespace( namespace ).projectId( projectId ).projectVersion(
projectVersion ).filter( filter );
Collection<ArtifactMetadata> storageArtifacts =
repositoryStorage.readArtifactsMetadata( repoId, namespace, projectId, projectVersion, filter );
repositoryStorage.readArtifactsMetadata( readMetadataRequest );
if ( storageArtifacts != null && !storageArtifacts.isEmpty() )
{

View File

@ -31,8 +31,7 @@ public interface RepositoryStorage
{
ProjectMetadata readProjectMetadata( String repoId, String namespace, String projectId );
ProjectVersionMetadata readProjectVersionMetadata( String repoId, String namespace, String projectId,
String projectVersion )
ProjectVersionMetadata readProjectVersionMetadata( ReadMetadataRequest readMetadataRequest )
throws RepositoryStorageMetadataInvalidException, RepositoryStorageMetadataNotFoundException,
RepositoryStorageRuntimeException;
@ -48,8 +47,7 @@ Collection<String> listProjects( String repoId, String namespace, Filter<String>
Collection<String> listProjectVersions( String repoId, String namespace, String projectId, Filter<String> filter )
throws RepositoryStorageRuntimeException;
Collection<ArtifactMetadata> readArtifactsMetadata( String repoId, String namespace, String projectId,
String projectVersion, Filter<String> filter )
Collection<ArtifactMetadata> readArtifactsMetadata( ReadMetadataRequest readMetadataRequest )
throws RepositoryStorageRuntimeException;
// FIXME: reconsider this API, do we want to expose storage format in the form of a path?

View File

@ -36,6 +36,7 @@
import org.apache.archiva.metadata.model.ProjectMetadata;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.repository.filter.Filter;
import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest;
import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
import org.apache.archiva.metadata.repository.storage.RepositoryStorage;
import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataInvalidException;
@ -125,7 +126,7 @@ public class Maven2RepositoryStorage
@Inject
private WagonFactory wagonFactory;
private final static Logger log = LoggerFactory.getLogger( Maven2RepositoryStorage.class );
private static final Logger log = LoggerFactory.getLogger( Maven2RepositoryStorage.class );
private static final String METADATA_FILENAME_START = "maven-metadata";
@ -146,35 +147,39 @@ public ProjectMetadata readProjectMetadata( String repoId, String namespace, Str
return null;
}
public ProjectVersionMetadata readProjectVersionMetadata( String repoId, String namespace, String projectId,
String projectVersion )
public ProjectVersionMetadata readProjectVersionMetadata( ReadMetadataRequest readMetadataRequest )
throws RepositoryStorageMetadataNotFoundException, RepositoryStorageMetadataInvalidException,
RepositoryStorageRuntimeException
{
try
{
ManagedRepository managedRepository = managedRepositoryAdmin.getManagedRepository( repoId );
ManagedRepository managedRepository =
managedRepositoryAdmin.getManagedRepository( readMetadataRequest.getRepoId() );
String artifactVersion = projectVersion;
if ( VersionUtil.isSnapshot( projectVersion ) ) // skygo trying to improve speed by honoring managed configuration MRM-1658
String artifactVersion = readMetadataRequest.getProjectVersion();
if ( VersionUtil.isSnapshot(
readMetadataRequest.getProjectVersion() ) ) // skygo trying to improve speed by honoring managed configuration MRM-1658
{
if ( managedRepository.isReleases() && !managedRepository.isSnapshots() )
{
throw new RepositoryStorageRuntimeException("lookforsnaponreleaseonly", "managed repo is configured for release only");
throw new RepositoryStorageRuntimeException( "lookforsnaponreleaseonly",
"managed repo is configured for release only" );
}
}
else
{
if ( !managedRepository.isReleases() && managedRepository.isSnapshots() )
{
throw new RepositoryStorageRuntimeException("lookforsreleaseonsneponly", "managed repo is configured for snapshot only");
throw new RepositoryStorageRuntimeException( "lookforsreleaseonsneponly",
"managed repo is configured for snapshot only" );
}
}
File basedir = new File( managedRepository.getLocation() );
if ( VersionUtil.isSnapshot( projectVersion ) )
if ( VersionUtil.isSnapshot( readMetadataRequest.getProjectVersion() ) )
{
File metadataFile =
pathTranslator.toFile( basedir, namespace, projectId, projectVersion, METADATA_FILENAME );
File metadataFile = pathTranslator.toFile( basedir, readMetadataRequest.getNamespace(),
readMetadataRequest.getProjectId(),
readMetadataRequest.getProjectVersion(), METADATA_FILENAME );
try
{
ArchivaRepositoryMetadata metadata = MavenMetadataReader.read( metadataFile );
@ -197,8 +202,10 @@ public ProjectVersionMetadata readProjectVersionMetadata( String repoId, String
}
// TODO: won't work well with some other layouts, might need to convert artifact parts to ID by path translator
String id = projectId + "-" + artifactVersion + ".pom";
File file = pathTranslator.toFile( basedir, namespace, projectId, projectVersion, id );
String id = readMetadataRequest.getProjectId() + "-" + artifactVersion + ".pom";
File file =
pathTranslator.toFile( basedir, readMetadataRequest.getNamespace(), readMetadataRequest.getProjectId(),
readMetadataRequest.getProjectVersion(), id );
if ( !file.exists() )
{
@ -213,7 +220,7 @@ public ProjectVersionMetadata readProjectVersionMetadata( String repoId, String
Map<String, NetworkProxy> networkProxies = new HashMap<String, NetworkProxy>();
Map<String, List<ProxyConnector>> proxyConnectorsMap = proxyConnectorAdmin.getProxyConnectorAsMap();
List<ProxyConnector> proxyConnectors = proxyConnectorsMap.get( repoId );
List<ProxyConnector> proxyConnectors = proxyConnectorsMap.get( readMetadataRequest.getRepoId() );
if ( proxyConnectors != null )
{
for ( ProxyConnector proxyConnector : proxyConnectors )
@ -273,11 +280,11 @@ public ProjectVersionMetadata readProjectVersionMetadata( String repoId, String
"Using defaults for project version metadata.." );
ProjectVersionMetadata metadata = new ProjectVersionMetadata();
metadata.setId( projectVersion );
metadata.setId( readMetadataRequest.getProjectVersion() );
MavenProjectFacet facet = new MavenProjectFacet();
facet.setGroupId( namespace );
facet.setArtifactId( projectId );
facet.setGroupId( readMetadataRequest.getNamespace() );
facet.setArtifactId( readMetadataRequest.getProjectId() );
facet.setPackaging( "jar" );
metadata.addFacet( facet );
@ -286,13 +293,13 @@ public ProjectVersionMetadata readProjectVersionMetadata( String repoId, String
? problem.getMessage()
: problem.getException().getMessage() );
RepositoryProblemFacet repoProblemFacet = new RepositoryProblemFacet();
repoProblemFacet.setRepositoryId( repoId );
repoProblemFacet.setId( repoId );
repoProblemFacet.setRepositoryId( readMetadataRequest.getRepoId() );
repoProblemFacet.setId( readMetadataRequest.getRepoId() );
repoProblemFacet.setMessage( errMsg );
repoProblemFacet.setProblem( errMsg );
repoProblemFacet.setProject( projectId );
repoProblemFacet.setVersion( projectVersion );
repoProblemFacet.setNamespace( namespace );
repoProblemFacet.setProject( readMetadataRequest.getProjectId() );
repoProblemFacet.setVersion( readMetadataRequest.getProjectVersion() );
repoProblemFacet.setNamespace( readMetadataRequest.getNamespace() );
metadata.addFacet( repoProblemFacet );
@ -304,9 +311,9 @@ public ProjectVersionMetadata readProjectVersionMetadata( String repoId, String
}
// Check if the POM is in the correct location
boolean correctGroupId = namespace.equals( model.getGroupId() );
boolean correctArtifactId = projectId.equals( model.getArtifactId() );
boolean correctVersion = projectVersion.equals( model.getVersion() );
boolean correctGroupId = readMetadataRequest.getNamespace().equals( model.getGroupId() );
boolean correctArtifactId = readMetadataRequest.getProjectId().equals( model.getArtifactId() );
boolean correctVersion = readMetadataRequest.getProjectVersion().equals( model.getVersion() );
if ( !correctGroupId || !correctArtifactId || !correctVersion )
{
StringBuilder message = new StringBuilder( "Incorrect POM coordinates in '" + file + "':" );
@ -329,7 +336,7 @@ public ProjectVersionMetadata readProjectVersionMetadata( String repoId, String
ProjectVersionMetadata metadata = new ProjectVersionMetadata();
metadata.setCiManagement( convertCiManagement( model.getCiManagement() ) );
metadata.setDescription( model.getDescription() );
metadata.setId( projectVersion );
metadata.setId( readMetadataRequest.getProjectVersion() );
metadata.setIssueManagement( convertIssueManagement( model.getIssueManagement() ) );
metadata.setLicenses( convertLicenses( model.getLicenses() ) );
metadata.setMailingLists( convertMailingLists( model.getMailingLists() ) );
@ -561,21 +568,25 @@ public Collection<String> listProjectVersions( String repoId, String namespace,
return getSortedFiles( dir, filter );
}
public Collection<ArtifactMetadata> readArtifactsMetadata( String repoId, String namespace, String projectId,
String projectVersion, Filter<String> filter )
public Collection<ArtifactMetadata> readArtifactsMetadata( ReadMetadataRequest readMetadataRequest )
throws RepositoryStorageRuntimeException
{
File dir = pathTranslator.toFile( getRepositoryBasedir( repoId ), namespace, projectId, projectVersion );
File dir = pathTranslator.toFile( getRepositoryBasedir( readMetadataRequest.getRepoId() ),
readMetadataRequest.getNamespace(), readMetadataRequest.getProjectId(),
readMetadataRequest.getProjectVersion() );
// all files that are not metadata and not a checksum / signature are considered artifacts
File[] files = dir.listFiles( new ArtifactDirectoryFilter( filter ) );
File[] files = dir.listFiles( new ArtifactDirectoryFilter( readMetadataRequest.getFilter() ) );
List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>();
if ( files != null )
{
for ( File file : files )
{
ArtifactMetadata metadata = getArtifactFromFile( repoId, namespace, projectId, projectVersion, file );
ArtifactMetadata metadata =
getArtifactFromFile( readMetadataRequest.getRepoId(), readMetadataRequest.getNamespace(),
readMetadataRequest.getProjectId(), readMetadataRequest.getProjectVersion(),
file );
artifacts.add( metadata );
}
}

View File

@ -19,15 +19,7 @@
* under the License.
*/
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import junit.framework.TestCase;
import org.apache.archiva.admin.model.beans.RepositoryGroup;
import org.apache.archiva.common.utils.FileUtil;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.configuration.Configuration;
@ -42,7 +34,7 @@
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.repository.filter.AllFilter;
import org.apache.archiva.metadata.repository.filter.Filter;
import org.apache.archiva.metadata.repository.storage.RepositoryStorageRuntimeException;
import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest;
import org.apache.archiva.proxy.common.WagonFactory;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import org.apache.commons.io.FileUtils;
@ -50,9 +42,18 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.springframework.test.context.ContextConfiguration;
@RunWith ( ArchivaSpringJUnit4ClassRunner.class )
@ContextConfiguration ( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
@ -176,8 +177,10 @@ public void testGetProjectVersionMetadataWithParentSuccessful()
copyTestArtifactWithParent( "target/test-classes/com/example/test/test-artifact-module-a",
"target/test-repository/com/example/test/test-artifact-module-a" );
ProjectVersionMetadata metadata =
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "test-artifact-module-a", "1.0" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId(
"test-artifact-module-a" ).projectVersion( "1.0" );
ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest );
MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID );
assertEquals( "jar", facet.getPackaging() );
@ -226,8 +229,10 @@ public void testGetProjectVersionMetadataWithParentNoRemoteReposConfigured()
copyTestArtifactWithParent( "target/test-classes/com/example/test/test-artifact-module-a",
"target/test-repository/com/example/test/test-artifact-module-a" );
ProjectVersionMetadata metadata =
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "test-artifact-module-a", "1.0" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId(
"test-artifact-module-a" ).projectVersion( "1.0" );
ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest );
assertEquals( "1.0", metadata.getId() );
MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID );
@ -251,8 +256,11 @@ public void testGetProjectVersionMetadataWithParentNotInAnyRemoteRepo()
copyTestArtifactWithParent( "target/test-classes/com/example/test/test-artifact-module-a",
"target/test-repository/com/example/test/test-artifact-module-a" );
ProjectVersionMetadata metadata =
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "missing-parent", "1.1" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId(
"missing-parent" ).projectVersion( "1.1" );
ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest );
assertEquals( "1.1", metadata.getId() );
@ -278,9 +286,12 @@ public void testGetProjectVersionMetadataWithParentSnapshotVersion()
"target/test-repositorys/com/example/test/test-snapshot-artifact-module-a" );
copyTestArtifactWithParent( "target/test-classes/com/example/test/test-snapshot-artifact-root",
"target/test-repositorys/com/example/test/test-snapshot-artifact-root" );
ProjectVersionMetadata metadata =
storage.readProjectVersionMetadata( TEST_SNAP_REPO_ID, "com.example.test", "test-snapshot-artifact-module-a",
"1.1-SNAPSHOT" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().namespace( TEST_SNAP_REPO_ID ).namespace( "com.example.test" ).projectId(
"test-snapshot-artifact-module-a" ).projectVersion( "1.1-SNAPSHOT" );
ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest );
MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID );
assertEquals( "jar", facet.getPackaging() );
@ -319,9 +330,10 @@ public void testGetProjectVersionMetadataWithParentSnapshotVersionAndSnapNotAllo
copyTestArtifactWithParent( "target/test-classes/com/example/test/test-snapshot-artifact-module-a",
"target/test-repositorys/com/example/test/test-snapshot-artifact-module-a" );
ProjectVersionMetadata metadata =
storage.readProjectVersionMetadata( TEST_SNAP_REPO_ID, "com.example.test", "test-snapshot-artifact-module-a",
"1.1-SNAPSHOT" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( TEST_SNAP_REPO_ID ).namespace( "com.example.test" ).projectId(
"test-snapshot-artifact-module-a" ).projectVersion( "1.1-SNAPSHOT" );
ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest );
MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID );
assertEquals( "jar", facet.getPackaging() );
@ -361,9 +373,11 @@ public void testGetProjectVersionMetadataWithParentSnapshotVersionAndSnapNotAllo
copyTestArtifactWithParent( "target/test-classes/com/example/test/test-artifact-module-b",
"target/test-repository/com/example/test/test-artifact-module-b" );
ProjectVersionMetadata metadata =
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "test-artifact-module-b",
"1.0" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId(
"test-artifact-module-b" ).projectVersion( "1.0" );
ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest );
MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID );
assertEquals( "jar", facet.getPackaging() );

View File

@ -19,12 +19,11 @@
* under the License.
*/
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.repository.filter.AllFilter;
import org.apache.archiva.metadata.repository.filter.Filter;
import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest;
import org.apache.archiva.metadata.repository.storage.RepositoryStorageRuntimeException;
import org.apache.archiva.proxy.common.WagonFactory;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
@ -33,6 +32,9 @@
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import javax.inject.Inject;
import javax.inject.Named;
@RunWith ( ArchivaSpringJUnit4ClassRunner.class )
@ContextConfiguration ( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
@ -94,8 +96,11 @@ public void testModelWithJdkProfileActivation()
{
// skygo IMHO must fail because TEST_REPO_ID ( is snap ,no release) and we seek for a snapshot
ProjectVersionMetadata metadata =
storage.readProjectVersionMetadata( TEST_REPO_ID, "org.apache.maven", "maven-archiver", "2.4.1" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( TEST_REPO_ID ).namespace( "org.apache.maven" ).projectId(
"maven-archiver" ).projectVersion( "2.4.1" );
ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest );
}
@Test ( expected = RepositoryStorageRuntimeException.class )
@ -103,7 +108,10 @@ public void testModelWithJdkProfileActivation()
public void testGetProjectVersionMetadataForTimestampedSnapshotMissingMetadata()
throws Exception
{
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "missing-metadata", "1.0-SNAPSHOT" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId(
"missing-metadata" ).projectVersion( "1.0-SNAPSHOT" );
storage.readProjectVersionMetadata( readMetadataRequest );
}
@Test ( expected = RepositoryStorageRuntimeException.class )
@ -111,8 +119,10 @@ public void testGetProjectVersionMetadataForTimestampedSnapshotMissingMetadata()
public void testGetProjectVersionMetadataForTimestampedSnapshotMalformedMetadata()
throws Exception
{
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "malformed-metadata",
"1.0-SNAPSHOT" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( TEST_REPO_ID ).namespace( "com.example.test" ).projectVersion(
"malformed-metadata" ).projectVersion( "1.0-SNAPSHOT" );
storage.readProjectVersionMetadata( readMetadataRequest );
}
@Test ( expected = RepositoryStorageRuntimeException.class )

View File

@ -19,14 +19,11 @@
* under the License.
*/
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.repository.filter.AllFilter;
import org.apache.archiva.metadata.repository.filter.Filter;
import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataInvalidException;
import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataNotFoundException;
import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest;
import org.apache.archiva.metadata.repository.storage.RepositoryStorageRuntimeException;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import org.junit.Before;
@ -34,6 +31,9 @@
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import javax.inject.Inject;
import javax.inject.Named;
@RunWith ( ArchivaSpringJUnit4ClassRunner.class )
@ContextConfiguration ( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
@ -93,8 +93,11 @@ public void testModelWithJdkProfileActivation()
{
// skygo IMHO must fail because TEST_REPO_ID ( is snap ,no release) and we seek for a snapshot
ProjectVersionMetadata metadata =
storage.readProjectVersionMetadata( TEST_REPO_ID, "org.apache.maven", "maven-archiver", "2.4.1" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( TEST_REPO_ID ).namespace( "org.apache.maven" ).projectId(
"maven-archiver" ).projectVersion( "2.4.1" );
ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest );
}
@Test ( expected = RepositoryStorageRuntimeException.class )
@ -102,7 +105,10 @@ public void testModelWithJdkProfileActivation()
public void testGetProjectVersionMetadataForMislocatedPom()
throws Exception
{
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "mislocated-pom", "1.0" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId(
"mislocated-pom" ).projectVersion( "1.0" );
storage.readProjectVersionMetadata( readMetadataRequest );
}
@ -119,7 +125,10 @@ public void testGetProjectVersionMetadata()
public void testGetProjectVersionMetadataForInvalidPom()
throws Exception
{
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "invalid-pom", "1.0" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId(
"invalid-pom" ).projectVersion( "1.0" );
storage.readProjectVersionMetadata( readMetadataRequest );
}
@Test ( expected = RepositoryStorageRuntimeException.class )
@ -127,6 +136,9 @@ public void testGetProjectVersionMetadataForInvalidPom()
public void testGetProjectVersionMetadataForMissingPom()
throws Exception
{
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "missing-pom", "1.0" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( TEST_REPO_ID ).namespace( "com.example.test" ).projectId(
"missing-pom" ).projectVersion( "1.0" );
storage.readProjectVersionMetadata( readMetadataRequest );
}
}

View File

@ -19,6 +19,7 @@
* under the License.
*/
import junit.framework.TestCase;
import org.apache.archiva.common.utils.FileUtil;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.configuration.Configuration;
@ -33,9 +34,11 @@
import org.apache.archiva.metadata.repository.filter.AllFilter;
import org.apache.archiva.metadata.repository.filter.ExcludesFilter;
import org.apache.archiva.metadata.repository.filter.Filter;
import org.apache.archiva.metadata.repository.storage.ReadMetadataRequest;
import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataInvalidException;
import org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataNotFoundException;
import org.apache.archiva.proxy.common.WagonFactory;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import org.apache.commons.io.FileUtils;
import org.apache.maven.wagon.Wagon;
import org.junit.Before;
@ -53,8 +56,6 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import junit.framework.TestCase;
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@ -114,7 +115,6 @@ public void setUp()
testRepo.setSnapshots( true );
c.addManagedRepository( testRepo );
RemoteRepositoryConfiguration testRemoteRepo = new RemoteRepositoryConfiguration();
testRemoteRepo.setId( TEST_REMOTE_REPO_ID );
testRemoteRepo.setLayout( "default" );
@ -146,9 +146,10 @@ public void setUp()
public void testModelWithJdkProfileActivation()
throws Exception
{
ProjectVersionMetadata metadata =
storage.readProjectVersionMetadata( TEST_REPO_ID, "org.apache.maven", "maven-archiver", "2.4.1" );
ReadMetadataRequest readMetadataRequest =
new ReadMetadataRequest().repoId( TEST_REPO_ID ).namespace( "org.apache.maven" ).projectId(
"maven-archiver" ).projectVersion( "2.4.1" );
ProjectVersionMetadata metadata = storage.readProjectVersionMetadata( readMetadataRequest );
MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID );
}
@ -156,8 +157,8 @@ public void testModelWithJdkProfileActivation()
public void testGetProjectVersionMetadata()
throws Exception
{
ProjectVersionMetadata metadata =
storage.readProjectVersionMetadata( TEST_REPO_ID, "org.apache.archiva", "archiva-common", "1.2.1" );
ProjectVersionMetadata metadata = storage.readProjectVersionMetadata(
new ReadMetadataRequest( TEST_REPO_ID, "org.apache.archiva", "archiva-common", "1.2.1" ) );
MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID );
assertEquals( "jar", facet.getPackaging() );
assertEquals( "http://archiva.apache.org/ref/1.2.1/archiva-base/archiva-common", metadata.getUrl() );
@ -211,8 +212,8 @@ public void testGetProjectVersionMetadata()
public void testGetArtifactMetadata()
throws Exception
{
Collection<ArtifactMetadata> springArtifacts =
storage.readArtifactsMetadata( TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.2", ALL );
Collection<ArtifactMetadata> springArtifacts = storage.readArtifactsMetadata(
new ReadMetadataRequest( TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.2", ALL ) );
List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>( springArtifacts );
Collections.sort( artifacts, new Comparator<ArtifactMetadata>()
{
@ -253,8 +254,8 @@ public int compare( ArtifactMetadata o1, ArtifactMetadata o2 )
public void testGetArtifactMetadataSnapshots()
throws Exception
{
Collection<ArtifactMetadata> testArtifacts =
storage.readArtifactsMetadata( TEST_REPO_ID, "com.example.test", "test-artifact", "1.0-SNAPSHOT", ALL );
Collection<ArtifactMetadata> testArtifacts = storage.readArtifactsMetadata(
new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "test-artifact", "1.0-SNAPSHOT", ALL ) );
List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>( testArtifacts );
Collections.sort( artifacts, new Comparator<ArtifactMetadata>()
{
@ -336,8 +337,8 @@ private void assertDependency( Dependency dependency, String groupId, String art
public void testGetProjectVersionMetadataForTimestampedSnapshot()
throws Exception
{
ProjectVersionMetadata metadata =
storage.readProjectVersionMetadata( TEST_REPO_ID, "org.apache", "apache", "5-SNAPSHOT" );
ProjectVersionMetadata metadata = storage.readProjectVersionMetadata(
new ReadMetadataRequest( TEST_REPO_ID, "org.apache", "apache", "5-SNAPSHOT" ) );
MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( MavenProjectFacet.FACET_ID );
assertEquals( "pom", facet.getPackaging() );
assertEquals( "http://www.apache.org/", metadata.getUrl() );
@ -376,7 +377,8 @@ public void testGetProjectVersionMetadataForTimestampedSnapshotMissingMetadata()
{
try
{
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "missing-metadata", "1.0-SNAPSHOT" );
storage.readProjectVersionMetadata(
new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "missing-metadata", "1.0-SNAPSHOT" ) );
fail( "Should not be found" );
}
catch ( RepositoryStorageMetadataNotFoundException e )
@ -391,8 +393,8 @@ public void testGetProjectVersionMetadataForTimestampedSnapshotMalformedMetadata
{
try
{
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "malformed-metadata",
"1.0-SNAPSHOT" );
storage.readProjectVersionMetadata(
new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "malformed-metadata", "1.0-SNAPSHOT" ) );
fail( "Should not be found" );
}
catch ( RepositoryStorageMetadataNotFoundException e )
@ -407,8 +409,8 @@ public void testGetProjectVersionMetadataForTimestampedSnapshotIncompleteMetadat
{
try
{
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "incomplete-metadata",
"1.0-SNAPSHOT" );
storage.readProjectVersionMetadata(
new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "incomplete-metadata", "1.0-SNAPSHOT" ) );
fail( "Should not be found" );
}
catch ( RepositoryStorageMetadataNotFoundException e )
@ -423,7 +425,8 @@ public void testGetProjectVersionMetadataForInvalidPom()
{
try
{
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "invalid-pom", "1.0" );
storage.readProjectVersionMetadata(
new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "invalid-pom", "1.0" ) );
fail( "Should have received an exception due to invalid POM" );
}
catch ( RepositoryStorageMetadataInvalidException e )
@ -438,7 +441,8 @@ public void testGetProjectVersionMetadataForMislocatedPom()
{
try
{
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "mislocated-pom", "1.0" );
storage.readProjectVersionMetadata(
new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "mislocated-pom", "1.0" ) );
fail( "Should have received an exception due to mislocated POM" );
}
catch ( RepositoryStorageMetadataInvalidException e )
@ -453,7 +457,8 @@ public void testGetProjectVersionMetadataForMissingPom()
{
try
{
storage.readProjectVersionMetadata( TEST_REPO_ID, "com.example.test", "missing-pom", "1.0" );
storage.readProjectVersionMetadata(
new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "missing-pom", "1.0" ) );
fail( "Should not be found" );
}
catch ( RepositoryStorageMetadataNotFoundException e )
@ -551,8 +556,8 @@ public void testGetProjectVersions()
public void testGetArtifacts()
throws Exception
{
List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>(
storage.readArtifactsMetadata( TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.2", ALL ) );
List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>( storage.readArtifactsMetadata(
new ReadMetadataRequest( TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.2", ALL ) ) );
assertEquals( 3, artifacts.size() );
Collections.sort( artifacts, new Comparator<ArtifactMetadata>()
{
@ -574,8 +579,8 @@ public void testGetArtifactsFiltered()
{
ExcludesFilter<String> filter =
new ExcludesFilter<String>( Collections.singletonList( "plexus-spring-1.2.pom" ) );
List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>(
storage.readArtifactsMetadata( TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.2", filter ) );
List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>( storage.readArtifactsMetadata(
new ReadMetadataRequest( TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.2", filter ) ) );
assertEquals( 2, artifacts.size() );
Collections.sort( artifacts, new Comparator<ArtifactMetadata>()
{
@ -593,9 +598,8 @@ public int compare( ArtifactMetadata o1, ArtifactMetadata o2 )
public void testGetArtifactsTimestampedSnapshots()
throws Exception
{
List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>(
storage.readArtifactsMetadata( TEST_REPO_ID, "com.example.test", "missing-metadata", "1.0-SNAPSHOT",
ALL ) );
List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>( storage.readArtifactsMetadata(
new ReadMetadataRequest( TEST_REPO_ID, "com.example.test", "missing-metadata", "1.0-SNAPSHOT", ALL ) ) );
assertEquals( 1, artifacts.size() );
ArtifactMetadata artifact = artifacts.get( 0 );