Return-Path: Delivered-To: apmail-archiva-commits-archive@www.apache.org Received: (qmail 39232 invoked from network); 30 Dec 2010 01:41:32 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 30 Dec 2010 01:41:32 -0000 Received: (qmail 26488 invoked by uid 500); 30 Dec 2010 01:41:32 -0000 Delivered-To: apmail-archiva-commits-archive@archiva.apache.org Received: (qmail 26456 invoked by uid 500); 30 Dec 2010 01:41:32 -0000 Mailing-List: contact commits-help@archiva.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@archiva.apache.org Delivered-To: mailing list commits@archiva.apache.org Received: (qmail 26449 invoked by uid 99); 30 Dec 2010 01:41:32 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 30 Dec 2010 01:41:32 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 30 Dec 2010 01:41:29 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 496D123889DA; Thu, 30 Dec 2010 01:41:08 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1053783 - in /archiva/trunk/archiva-modules: metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/ plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/ Date: Thu, 30 Dec 2010 01:41:08 -0000 To: commits@archiva.apache.org From: brett@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20101230014108.496D123889DA@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: brett Date: Thu Dec 30 01:41:07 2010 New Revision: 1053783 URL: http://svn.apache.org/viewvc?rev=1053783&view=rev Log: [MRM-1327] make sure getArtifactsByDateRange and getArtifactsByChecksum query is restricted to the right repository Modified: archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java Modified: archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java?rev=1053783&r1=1053782&r2=1053783&view=diff ============================================================================== --- archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java (original) +++ archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java Thu Dec 30 01:41:07 2010 @@ -457,7 +457,10 @@ public abstract class AbstractMetadataRe artifacts = repository.getArtifacts( TEST_REPO_ID ); assertEquals( Collections.singletonList( artifactMetadata ), new ArrayList( artifacts ) ); - artifacts = repository.getArtifactsByChecksum( TEST_REPO_ID, artifactMetadata.getSha1() ); + artifacts = repository.getArtifactsByChecksum( TEST_REPO_ID, TEST_SHA1 ); + assertEquals( Collections.singletonList( artifactMetadata ), new ArrayList( artifacts ) ); + + artifacts = repository.getArtifactsByChecksum( TEST_REPO_ID, TEST_MD5 ); assertEquals( Collections.singletonList( artifactMetadata ), new ArrayList( artifacts ) ); artifacts = repository.getArtifactsByDateRange( TEST_REPO_ID, null, null ); @@ -827,6 +830,44 @@ public abstract class AbstractMetadataRe assertEquals( Collections.singletonList( secondArtifact ), repository.getArtifacts( OTHER_REPO_ID ) ); } + public void testGetArtifactsByDateRangeMultipleCopies() + throws Exception + { + ArtifactMetadata artifact = createArtifact(); + repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); + + ArtifactMetadata secondArtifact = createArtifact(); + secondArtifact.setRepositoryId( OTHER_REPO_ID ); + repository.updateArtifact( OTHER_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, secondArtifact ); + + // test it restricts to the appropriate repository + assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByDateRange( TEST_REPO_ID, null, + null ) ); + assertEquals( Collections.singletonList( secondArtifact ), repository.getArtifactsByDateRange( OTHER_REPO_ID, + null, null ) ); + } + + public void testGetArtifactsByChecksumMultipleCopies() + throws Exception + { + ArtifactMetadata artifact = createArtifact(); + repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); + + ArtifactMetadata secondArtifact = createArtifact(); + secondArtifact.setRepositoryId( OTHER_REPO_ID ); + repository.updateArtifact( OTHER_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, secondArtifact ); + + // test it restricts to the appropriate repository + assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByChecksum( TEST_REPO_ID, + TEST_SHA1 ) ); + assertEquals( Collections.singletonList( secondArtifact ), repository.getArtifactsByChecksum( OTHER_REPO_ID, + TEST_SHA1 ) ); + assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByChecksum( TEST_REPO_ID, + TEST_MD5 ) ); + assertEquals( Collections.singletonList( secondArtifact ), repository.getArtifactsByChecksum( OTHER_REPO_ID, + TEST_MD5 ) ); + } + public void testGetNamespacesWithSparseDepth() throws Exception { @@ -868,6 +909,8 @@ public abstract class AbstractMetadataRe assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByChecksum( TEST_REPO_ID, TEST_SHA1 ) ); + assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByChecksum( TEST_REPO_ID, + TEST_MD5 ) ); } public void testGetArtifactsByChecksumMultipleResult() @@ -885,6 +928,10 @@ public abstract class AbstractMetadataRe TEST_REPO_ID, TEST_SHA1 ) ); Collections.sort( artifacts, new ArtifactMetadataComparator() ); assertEquals( Arrays.asList( artifact2, artifact1 ), artifacts ); + + artifacts = new ArrayList( repository.getArtifactsByChecksum( TEST_REPO_ID, TEST_MD5 ) ); + Collections.sort( artifacts, new ArtifactMetadataComparator() ); + assertEquals( Arrays.asList( artifact2, artifact1 ), artifacts ); } public void testGetArtifactsByChecksumNoResult() @@ -894,7 +941,7 @@ public abstract class AbstractMetadataRe repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); assertEquals( Collections.emptyList(), repository.getArtifactsByChecksum( TEST_REPO_ID, - "not a checksum" ) ); + "not checksum" ) ); } public void testDeleteArtifact() Modified: archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java?rev=1053783&r1=1053782&r2=1053783&view=diff ============================================================================== --- archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java (original) +++ archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java Thu Dec 30 01:41:07 2010 @@ -79,8 +79,6 @@ public class JcrMetadataRepository static final String FACET_NODE_TYPE = "archiva:facet"; - private static final String QUERY_ARTIFACTS = "SELECT * FROM [" + ARTIFACT_NODE_TYPE + "] AS artifact"; - private final Map metadataFacetFactories; private static final Logger log = LoggerFactory.getLogger( JcrMetadataRepository.class ); @@ -489,17 +487,15 @@ public class JcrMetadataRepository { List artifacts; - String q = QUERY_ARTIFACTS; + String q = getArtifactQuery( repoId ); - String clause = " WHERE"; if ( startTime != null ) { - q += clause + " [whenGathered] >= $start"; - clause = " AND"; + q += " AND [whenGathered] >= $start"; } if ( endTime != null ) { - q += clause + " [whenGathered] <= $end"; + q += " AND [whenGathered] <= $end"; } try @@ -566,7 +562,7 @@ public class JcrMetadataRepository { List artifacts; - String q = QUERY_ARTIFACTS + " WHERE [sha1] = $checksum OR [md5] = $checksum"; + String q = getArtifactQuery( repositoryId ) + " AND ([sha1] = $checksum OR [md5] = $checksum)"; try { @@ -630,8 +626,7 @@ public class JcrMetadataRepository { List artifacts; - String q = QUERY_ARTIFACTS + " WHERE ISDESCENDANTNODE(artifact,'/" + getRepositoryContentPath( repositoryId ) + - "')"; + String q = getArtifactQuery( repositoryId ); try { @@ -654,6 +649,12 @@ public class JcrMetadataRepository return artifacts; } + private static String getArtifactQuery( String repositoryId ) + { + return "SELECT * FROM [" + ARTIFACT_NODE_TYPE + "] AS artifact WHERE ISDESCENDANTNODE(artifact,'/" + + getRepositoryContentPath( repositoryId ) + "')"; + } + public ProjectMetadata getProject( String repositoryId, String namespace, String projectId ) throws MetadataResolutionException {