mirror of https://github.com/apache/archiva.git
Merged /archiva/trunk:r882055-882383
git-svn-id: https://svn.apache.org/repos/asf/archiva/branches/MRM-1025@882394 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
commit
69a38f7af5
|
@ -21,7 +21,6 @@ package org.apache.maven.archiva.database.browsing;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
|
@ -31,6 +30,7 @@ import org.apache.commons.lang.StringUtils;
|
|||
import org.apache.maven.archiva.common.utils.VersionUtil;
|
||||
import org.apache.maven.archiva.database.ArchivaDAO;
|
||||
import org.apache.maven.archiva.database.ArchivaDatabaseException;
|
||||
import org.apache.maven.archiva.database.Constraint;
|
||||
import org.apache.maven.archiva.database.ObjectNotFoundException;
|
||||
import org.apache.maven.archiva.database.constraints.ArtifactsRelatedConstraint;
|
||||
import org.apache.maven.archiva.database.constraints.ProjectsByArtifactUsageConstraint;
|
||||
|
@ -142,7 +142,6 @@ public class DefaultRepositoryBrowsing
|
|||
}
|
||||
|
||||
ArchivaArtifact pomArtifact = getArtifact( principal, observableRepositoryIds, groupId, artifactId, version );
|
||||
|
||||
ArchivaProjectModel model;
|
||||
|
||||
if ( !pomArtifact.getModel().isProcessed() )
|
||||
|
@ -153,6 +152,11 @@ public class DefaultRepositoryBrowsing
|
|||
|
||||
model = getProjectModel( groupId, artifactId, pomArtifact.getVersion() );
|
||||
|
||||
if ( model.getPackaging() == null || "".equals( model.getPackaging() ) )
|
||||
{
|
||||
model.setPackaging( pomArtifact.getType() );
|
||||
}
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
|
@ -215,42 +219,53 @@ public class DefaultRepositoryBrowsing
|
|||
throws ObjectNotFoundException, ArchivaDatabaseException
|
||||
{
|
||||
ArchivaArtifact pomArtifact = null;
|
||||
Constraint constraint = new ArtifactsRelatedConstraint( groupId, artifactId, version );
|
||||
|
||||
for ( final String repositoryId : observableRepositoryIds )
|
||||
try
|
||||
{
|
||||
try
|
||||
List<ArchivaArtifact> artifacts = dao.getArtifactDAO().queryArtifacts( constraint );
|
||||
|
||||
// it's possible that similar artifacts reside in different repos
|
||||
if ( !artifacts.isEmpty() )
|
||||
{
|
||||
pomArtifact =
|
||||
dao.getArtifactDAO().getArtifact( groupId, artifactId, version, null, "pom", repositoryId );
|
||||
break;
|
||||
}
|
||||
catch ( ArchivaDatabaseException e )
|
||||
{
|
||||
pomArtifact = handleGenericSnapshots( groupId, artifactId, version, repositoryId );
|
||||
for ( ArchivaArtifact artifact : artifacts )
|
||||
{
|
||||
if ( observableRepositoryIds.contains( artifact.getRepositoryId() ) )
|
||||
{
|
||||
pomArtifact = artifacts.get( 0 );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch ( ArchivaDatabaseException e )
|
||||
{
|
||||
log.warn( "ArchivaDatabaseException occurred while querying for artifact '" + groupId + ":" + artifactId +
|
||||
":" + version + "'." );
|
||||
}
|
||||
|
||||
if ( pomArtifact == null )
|
||||
{
|
||||
String type = getArtifactType( groupId, artifactId, version );
|
||||
for ( final String repositoryId : observableRepositoryIds )
|
||||
{
|
||||
pomArtifact = handleGenericSnapshots( groupId, artifactId, version, repositoryId );
|
||||
|
||||
// We dont want these to persist in the database
|
||||
pomArtifact =
|
||||
new ArchivaArtifact( groupId, artifactId, version, null, type, observableRepositoryIds.get( 0 ) );
|
||||
pomArtifact.getModel().setWhenProcessed( new Date() );
|
||||
if ( pomArtifact != null )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Allowed to see this?
|
||||
if ( observableRepositoryIds.contains( pomArtifact.getModel().getRepositoryId() ) )
|
||||
{
|
||||
return pomArtifact;
|
||||
}
|
||||
else
|
||||
// throw exception if pom artifact is still null!
|
||||
if ( pomArtifact == null )
|
||||
{
|
||||
throw new ObjectNotFoundException( "Unable to find artifact " + Keys.toKey( groupId, artifactId, version ) +
|
||||
" in observable repository [" + StringUtils.join( observableRepositoryIds.iterator(), ", " ) +
|
||||
"] for user " + principal );
|
||||
}
|
||||
|
||||
return pomArtifact;
|
||||
}
|
||||
|
||||
public List<ArchivaProjectModel> getUsedBy( final String principal, final List<String> observableRepositoryIds,
|
||||
|
@ -336,9 +351,17 @@ public class DefaultRepositoryBrowsing
|
|||
try
|
||||
{
|
||||
log.debug( "Retrieving artifact with version " + uniqueVersion );
|
||||
result =
|
||||
dao.getArtifactDAO().getArtifact( groupId, artifactId, uniqueVersion, null, "pom", repositoryId );
|
||||
break;
|
||||
Constraint constraint = new ArtifactsRelatedConstraint( groupId, artifactId, uniqueVersion );
|
||||
List<ArchivaArtifact> artifacts = dao.getArtifactDAO().queryArtifacts( constraint );
|
||||
|
||||
for ( ArchivaArtifact artifact : artifacts )
|
||||
{
|
||||
if ( artifact.getRepositoryId().equals( repositoryId ) )
|
||||
{
|
||||
result = artifact;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch ( ObjectNotFoundException e )
|
||||
{
|
||||
|
|
|
@ -20,8 +20,11 @@ package org.apache.maven.archiva.database.browsing;
|
|||
*/
|
||||
|
||||
import org.apache.maven.archiva.database.AbstractArchivaDatabaseTestCase;
|
||||
import org.apache.maven.archiva.database.ArchivaDAO;
|
||||
import org.apache.maven.archiva.database.ArchivaDatabaseException;
|
||||
import org.apache.maven.archiva.database.ArtifactDAO;
|
||||
import org.apache.maven.archiva.database.Constraint;
|
||||
import org.apache.maven.archiva.database.ObjectNotFoundException;
|
||||
import org.apache.maven.archiva.database.constraints.ArtifactsRelatedConstraint;
|
||||
import org.apache.maven.archiva.model.ArchivaArtifact;
|
||||
import org.apache.maven.archiva.model.ArchivaProjectModel;
|
||||
|
||||
|
@ -44,13 +47,13 @@ public class RepositoryBrowsingTest
|
|||
static
|
||||
{
|
||||
GUEST_REPO_IDS = new ArrayList<String>();
|
||||
GUEST_REPO_IDS.add( "central" );
|
||||
GUEST_REPO_IDS.add( "snapshots" );
|
||||
GUEST_REPO_IDS.add( "central" );
|
||||
}
|
||||
|
||||
private ArtifactDAO artifactDao;
|
||||
|
||||
public ArchivaArtifact createArtifact( String groupId, String artifactId, String version )
|
||||
private ArchivaArtifact createArtifact( String groupId, String artifactId, String version )
|
||||
{
|
||||
ArchivaArtifact artifact = artifactDao.createArtifact( groupId, artifactId, version, "", "jar", "central" );
|
||||
artifact.getModel().setLastModified( new Date() ); // mandatory field.
|
||||
|
@ -58,7 +61,7 @@ public class RepositoryBrowsingTest
|
|||
return artifact;
|
||||
}
|
||||
|
||||
public RepositoryBrowsing lookupBrowser()
|
||||
private RepositoryBrowsing lookupBrowser()
|
||||
throws Exception
|
||||
{
|
||||
RepositoryBrowsing browser = (RepositoryBrowsing) lookup( RepositoryBrowsing.class );
|
||||
|
@ -66,7 +69,7 @@ public class RepositoryBrowsingTest
|
|||
return browser;
|
||||
}
|
||||
|
||||
public void saveTestData()
|
||||
private void saveTestData()
|
||||
throws Exception
|
||||
{
|
||||
ArchivaArtifact artifact;
|
||||
|
@ -74,46 +77,74 @@ public class RepositoryBrowsingTest
|
|||
// Setup artifacts in fresh DB.
|
||||
artifact = createArtifact( "commons-lang", "commons-lang", "2.0" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "commons-lang", "commons-lang", "2.0" );
|
||||
|
||||
artifact = createArtifact( "commons-lang", "commons-lang", "2.1" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "commons-lang", "commons-lang", "2.1" );
|
||||
|
||||
artifact = createArtifact( "org.apache.maven.test", "test-one", "1.2" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "org.apache.maven.test", "test-one", "1.2" );
|
||||
|
||||
artifact = createArtifact( "org.apache.maven.test.foo", "test-two", "1.0" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "org.apache.maven.test.foo", "test-two", "1.0" );
|
||||
|
||||
artifact = createArtifact( "org.apache.maven.shared", "test-two", "2.0" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "org.apache.maven.shared", "test-two", "2.0" );
|
||||
|
||||
artifact = createArtifact( "org.apache.maven.shared", "test-two", "2.1-SNAPSHOT" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "org.apache.maven.shared", "test-two", "2.1-SNAPSHOT" );
|
||||
|
||||
artifact = createArtifact( "org.apache.maven.shared", "test-two", "2.1-20070522.143249-1" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "org.apache.maven.shared", "test-two", "2.1-20070522.143249-1" );
|
||||
|
||||
artifact = createArtifact( "org.apache.maven.shared", "test-two", "2.1-20070522.153141-2" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "org.apache.maven.shared", "test-two", "2.1-20070522.153141-2" );
|
||||
|
||||
artifact = createArtifact( "org.apache.maven.shared", "test-two", "2.1.1" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "org.apache.maven.shared", "test-two", "2.1.1" );
|
||||
|
||||
artifact = createArtifact( "org.apache.maven.shared", "test-two", "2.1-alpha-1" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "org.apache.maven.shared", "test-two", "2.1-alpha-1" );
|
||||
|
||||
artifact = createArtifact( "org.apache.maven.shared", "test-bar", "2.1" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "org.apache.maven.shared", "test-bar", "2.1" );
|
||||
|
||||
artifact = createArtifact( "org.codehaus.modello", "modellong", "3.0" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "org.codehaus.modello", "modellong", "3.0" );
|
||||
|
||||
artifact = createArtifact( "org.apache.archiva", "archiva-indexer", "1.0-20070522.143249-1" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "org.apache.archiva", "archiva-indexer", "1.0-20070522.143249-1" );
|
||||
|
||||
artifact = createArtifact( "org.apache.archiva", "archiva-indexer", "1.0-20070522.153141-2" );
|
||||
artifactDao.saveArtifact( artifact );
|
||||
assertArtifactWasSaved( "org.apache.archiva", "archiva-indexer", "1.0-20070522.153141-2" );
|
||||
}
|
||||
|
||||
private void assertArtifactWasSaved(String groupId, String artifactId, String version)
|
||||
throws ObjectNotFoundException, ArchivaDatabaseException
|
||||
{
|
||||
Constraint constraint = new ArtifactsRelatedConstraint( groupId, artifactId, version );
|
||||
List<ArchivaArtifact> artifacts = artifactDao.queryArtifacts( constraint );
|
||||
|
||||
assertFalse( "Artifact '" + groupId + ":" + artifactId + ":" + version + "' should have been found.",
|
||||
artifacts.isEmpty() );
|
||||
}
|
||||
|
||||
public void testBrowseIntoGroupWithSubgroups()
|
||||
throws Exception
|
||||
{
|
||||
saveTestData();
|
||||
|
||||
RepositoryBrowsing browser = lookupBrowser();
|
||||
BrowsingResults results = browser.selectGroupId( USER_GUEST, GUEST_REPO_IDS, "org.apache.maven.test" );
|
||||
assertNotNull( "Browsing Results should not be null.", results );
|
||||
|
@ -125,8 +156,6 @@ public class RepositoryBrowsingTest
|
|||
public void testSimpleBrowse()
|
||||
throws Exception
|
||||
{
|
||||
saveTestData();
|
||||
|
||||
RepositoryBrowsing browser = lookupBrowser();
|
||||
BrowsingResults results = browser.getRoot( USER_GUEST, GUEST_REPO_IDS );
|
||||
assertNotNull( "Browsing Results should not be null.", results );
|
||||
|
@ -139,21 +168,37 @@ public class RepositoryBrowsingTest
|
|||
public void testViewArtifact()
|
||||
throws Exception
|
||||
{
|
||||
saveTestData();
|
||||
|
||||
RepositoryBrowsing browser = lookupBrowser();
|
||||
ArchivaProjectModel artifact = browser.selectVersion( USER_GUEST, GUEST_REPO_IDS, "org.apache.commons", "commons-lang", "2.0" );
|
||||
ArchivaProjectModel artifact = browser.selectVersion( USER_GUEST, GUEST_REPO_IDS, "commons-lang", "commons-lang", "2.0" );
|
||||
assertNotNull( "Artifact should not be null.", artifact );
|
||||
assertEquals( "org.apache.commons", artifact.getGroupId() );
|
||||
assertEquals( "commons-lang", artifact.getGroupId() );
|
||||
assertEquals( "commons-lang", artifact.getArtifactId() );
|
||||
assertEquals( "2.0", artifact.getVersion() );
|
||||
assertEquals( "jar", artifact.getPackaging() );
|
||||
|
||||
// MRM-1278
|
||||
String repoId = browser.getRepositoryId( USER_GUEST, GUEST_REPO_IDS, "commons-lang", "commons-lang", "2.0" );
|
||||
assertEquals( "central", repoId );
|
||||
}
|
||||
|
||||
public void testViewArtifactWithMultipleTimestampedVersions()
|
||||
throws Exception
|
||||
{
|
||||
RepositoryBrowsing browser = lookupBrowser();
|
||||
ArchivaProjectModel artifact = browser.selectVersion( USER_GUEST, GUEST_REPO_IDS, "org.apache.archiva", "archiva-indexer", "1.0-SNAPSHOT" );
|
||||
assertNotNull( "Artifact should not be null.", artifact );
|
||||
assertEquals( "org.apache.archiva", artifact.getGroupId() );
|
||||
assertEquals( "archiva-indexer", artifact.getArtifactId() );
|
||||
assertEquals( "1.0-20070522.143249-1", artifact.getVersion() );
|
||||
assertEquals( "jar", artifact.getPackaging() );
|
||||
|
||||
String repoId = browser.getRepositoryId( USER_GUEST, GUEST_REPO_IDS, "org.apache.archiva", "archiva-indexer", "1.0-SNAPSHOT" );
|
||||
assertEquals( "central", repoId );
|
||||
}
|
||||
|
||||
public void testSelectArtifactId()
|
||||
throws Exception
|
||||
{
|
||||
saveTestData();
|
||||
|
||||
RepositoryBrowsing browser = lookupBrowser();
|
||||
BrowsingResults results =
|
||||
browser.selectArtifactId( USER_GUEST, GUEST_REPO_IDS, "org.apache.maven.shared", "test-two" );
|
||||
|
@ -168,8 +213,6 @@ public class RepositoryBrowsingTest
|
|||
public void testGetOtherSnapshotVersionsRequestedVersionIsGeneric()
|
||||
throws Exception
|
||||
{
|
||||
saveTestData();
|
||||
|
||||
RepositoryBrowsing browser = lookupBrowser();
|
||||
List<String> results =
|
||||
browser.getOtherSnapshotVersions( GUEST_REPO_IDS, "org.apache.maven.shared", "test-two", "2.1-SNAPSHOT" );
|
||||
|
@ -183,8 +226,6 @@ public class RepositoryBrowsingTest
|
|||
public void testGetOtherSnapshotVersionsRequestedVersionIsUnique()
|
||||
throws Exception
|
||||
{
|
||||
saveTestData();
|
||||
|
||||
RepositoryBrowsing browser = lookupBrowser();
|
||||
List<String> results =
|
||||
browser.getOtherSnapshotVersions( GUEST_REPO_IDS, "org.apache.maven.shared", "test-two", "2.1-20070522.143249-1" );
|
||||
|
@ -213,7 +254,7 @@ public class RepositoryBrowsingTest
|
|||
{
|
||||
super.setUp();
|
||||
|
||||
ArchivaDAO dao = (ArchivaDAO) lookup( ArchivaDAO.ROLE, "jdo" );
|
||||
artifactDao = dao.getArtifactDAO();
|
||||
saveTestData();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue