Author: brett
Date: Thu Dec 30 10:03:44 2010
New Revision: 1053840
URL: http://svn.apache.org/viewvc?rev=1053840&view=rev
Log:
[MRM-1443, MRM-1327] properly restrict per repository and improve performance
Modified:
archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java
archiva/trunk/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/JcrRepositoryStatisticsGatheringTest.java
Modified:
archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java?rev=1053840&r1=1053839&r2=1053840&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java
(original)
+++
archiva/trunk/archiva-modules/plugins/repository-statistics/src/main/java/org/apache/archiva/metadata/repository/stats/DefaultRepositoryStatisticsManager.java
Thu Dec 30 10:03:44 2010
@@ -162,7 +162,9 @@ public class DefaultRepositoryStatistics
try
{
QueryManager queryManager =
session.getWorkspace().getQueryManager();
- Query query = queryManager.createQuery( "SELECT size FROM
[archiva:artifact]", Query.JCR_SQL2 );
+ String whereClause = "WHERE ISDESCENDANTNODE([/repositories/" +
repositoryId + "/content])";
+ Query query = queryManager.createQuery( "SELECT size FROM
[archiva:artifact] " + whereClause,
+ Query.JCR_SQL2 );
QueryResult queryResult = query.execute();
@@ -171,7 +173,7 @@ public class DefaultRepositoryStatistics
for ( Row row : JcrUtils.getRows( queryResult ) )
{
Node n = row.getNode();
- if ( n.getPath().startsWith( "/repositories/" + repositoryId +
"/content/" ) )
+// if ( n.getPath().startsWith( "/repositories/" + repositoryId
+ "/content/" ) )
{
totalSize += row.getValue( "size" ).getLong();
@@ -199,11 +201,11 @@ public class DefaultRepositoryStatistics
repositoryStatistics.setTotalCountForType( entry.getKey(),
entry.getValue() );
}
- query = queryManager.createQuery( "SELECT * FROM
[archiva:project]", Query.JCR_SQL2 );
+ query = queryManager.createQuery( "SELECT * FROM [archiva:project]
" + whereClause, Query.JCR_SQL2 );
repositoryStatistics.setTotalProjectCount(
query.execute().getRows().getSize() );
- query = queryManager.createQuery( "SELECT * FROM
[archiva:namespace] WHERE namespace IS NOT NULL",
- Query.JCR_SQL2 );
+ query = queryManager.createQuery(
+ "SELECT * FROM [archiva:namespace] " + whereClause + " AND
namespace IS NOT NULL", Query.JCR_SQL2 );
repositoryStatistics.setTotalGroupCount(
query.execute().getRows().getSize() );
}
catch ( RepositoryException e )
Modified:
archiva/trunk/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/JcrRepositoryStatisticsGatheringTest.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/JcrRepositoryStatisticsGatheringTest.java?rev=1053840&r1=1053839&r2=1053840&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/JcrRepositoryStatisticsGatheringTest.java
(original)
+++
archiva/trunk/archiva-modules/plugins/repository-statistics/src/test/java/org/apache/archiva/metadata/repository/stats/JcrRepositoryStatisticsGatheringTest.java
Thu Dec 30 10:03:44 2010
@@ -26,6 +26,7 @@ import org.apache.jackrabbit.core.Transi
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
import java.io.File;
+import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.zip.GZIPInputStream;
@@ -115,15 +116,8 @@ public class JcrRepositoryStatisticsGath
cal.add( Calendar.HOUR, -1 );
Date startTime = cal.getTime();
- Node n = JcrUtils.getOrAddNode( session.getRootNode(), "repositories"
);
- n = JcrUtils.getOrAddNode( n, TEST_REPO );
- n = JcrUtils.getOrAddNode( n, "content" );
- n = JcrUtils.getOrAddNode( n, "org" );
- n = JcrUtils.getOrAddNode( n, "apache" );
-
- GZIPInputStream inputStream = new GZIPInputStream(
getClass().getResourceAsStream( "/artifacts.xml.gz" ) );
- session.importXML( n.getPath(), inputStream,
ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW );
- session.save();
+ loadContentIntoRepo( TEST_REPO );
+ loadContentIntoRepo( "another-repo" );
repositoryStatisticsManager.addStatisticsAfterScan(
metadataRepository, TEST_REPO, startTime, endTime,
TOTAL_FILE_COUNT,
NEW_FILE_COUNT );
@@ -147,4 +141,18 @@ public class JcrRepositoryStatisticsGath
verify( metadataRepository ).addMetadataFacet( TEST_REPO,
expectedStatistics );
}
+
+ private void loadContentIntoRepo( String repoId )
+ throws RepositoryException, IOException
+ {
+ Node n = JcrUtils.getOrAddNode( session.getRootNode(), "repositories"
);
+ n = JcrUtils.getOrAddNode( n, repoId );
+ n = JcrUtils.getOrAddNode( n, "content" );
+ n = JcrUtils.getOrAddNode( n, "org" );
+ n = JcrUtils.getOrAddNode( n, "apache" );
+
+ GZIPInputStream inputStream = new GZIPInputStream(
getClass().getResourceAsStream( "/artifacts.xml.gz" ) );
+ session.importXML( n.getPath(), inputStream,
ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW );
+ session.save();
+ }
}