Author: brett
Date: Thu Dec 30 11:32:16 2010
New Revision: 1053855

URL: http://svn.apache.org/viewvc?rev=1053855&view=rev
Log:
test JSR-170 SQL-1 queries to avoid problem in Jackrabbit with SQL-2

Modified:
    
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoApp.java
    
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/QueryRepoApp.java

Modified: 
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoApp.java
URL: 
http://svn.apache.org/viewvc/archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoApp.java?rev=1053855&r1=1053854&r2=1053855&view=diff
==============================================================================
--- 
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoApp.java
 (original)
+++ 
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoApp.java
 Thu Dec 30 11:32:16 2010
@@ -66,7 +66,7 @@ public class PopulateRepoApp
             IOFileFilter dirFilter = new NotFileFilter( new 
WildcardFileFilter( ".index*" ) );
             IOFileFilter fileFilter = new NotFileFilter( new 
WildcardFileFilter(
                 new String[]{"*.asc", "*.md5", "*.sha1", 
"maven-metadata*.xml"} ) );
-            Collection<File> files = FileUtils.listFiles( new File( basedir, 
"org/apache/archiva" ), fileFilter, dirFilter );
+            Collection<File> files = FileUtils.listFiles( basedir, fileFilter, 
dirFilter );
 
             int index = basedir.getAbsolutePath().length() + 1;
 

Modified: 
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/QueryRepoApp.java
URL: 
http://svn.apache.org/viewvc/archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/QueryRepoApp.java?rev=1053855&r1=1053854&r2=1053855&view=diff
==============================================================================
--- 
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/QueryRepoApp.java
 (original)
+++ 
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/QueryRepoApp.java
 Thu Dec 30 11:32:16 2010
@@ -29,6 +29,7 @@ import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.query.Query;
+import javax.jcr.query.QueryManager;
 import javax.jcr.query.QueryResult;
 import javax.jcr.query.Row;
 
@@ -50,38 +51,87 @@ public class QueryRepoApp
         {
             Session session = jcrMetadataRepository.getJcrSession();
 
-            System.out.println( "querying" );
-            long time = System.currentTimeMillis();
+            QueryManager queryManager = 
session.getWorkspace().getQueryManager();
 
-            String q = "SELECT size FROM [archiva:artifact] AS artifact";
+            queryAllArtifactsInRepo( queryManager );
 
-            Query query = 
session.getWorkspace().getQueryManager().createQuery( q, Query.JCR_SQL2 );
+            queryAllProjectsInRepo( queryManager );
 
-            QueryResult queryResult = query.execute();
-            System.out.println( "query in " + ( System.currentTimeMillis() - 
time ) + "ms" );
-
-            time = System.currentTimeMillis();
-
-            long totalSize = 0, totalJars = 0, totalArtifacts = 0;
-            for ( Row row : JcrUtils.getRows( queryResult ) )
-            {
-                if ( row.getPath().startsWith( 
"/repositories/internal/content/" ) )
-                {
-                    totalSize += row.getValue( "size" ).getLong();
-                    if ( row.getNode().getName().endsWith( ".jar" ) )
-                    {
-                        totalJars++;
-                    }
-                    totalArtifacts++;
-                }
-            }
-            System.out.println(
-                totalArtifacts + " artifacts, " + totalSize + " bytes, " + 
totalJars + " jars (count in " +
-                    ( System.currentTimeMillis() - time ) + "ms)" );
+            queryAllGroupsInRepo( queryManager );
         }
         finally
         {
             jcrMetadataRepository.close();
         }
     }
+
+    private static void queryAllGroupsInRepo( QueryManager queryManager )
+        throws RepositoryException
+    {
+        System.out.println( "querying # groups in repo" );
+
+        long time = System.currentTimeMillis();
+//            query = queryManager.createQuery(
+//                "SELECT * FROM [archiva:namespace] WHERE 
ISDESCENDANTNODE([/repositories/internal/content]) AND namespace IS NOT NULL",
+//                Query.JCR_SQL2 );
+        Query query = queryManager.createQuery(
+            "SELECT * FROM archiva:namespace WHERE jcr:path LIKE 
'/repositories/internal/content/%' AND namespace IS NOT NULL ORDER BY 
jcr:score",
+            Query.SQL );
+        System.out.println(
+            "groups = " + query.execute().getRows().getSize() + " in " + ( 
System.currentTimeMillis() - time ) +
+                " ms" );
+    }
+
+    private static void queryAllProjectsInRepo( QueryManager queryManager )
+        throws RepositoryException
+    {
+        System.out.println( "querying # projects in repo" );
+
+        long time = System.currentTimeMillis();
+        Query query = queryManager.createQuery(
+            "SELECT * FROM archiva:project WHERE jcr:path LIKE 
'/repositories/internal/content/%' ORDER BY jcr:score",
+            Query.SQL );
+//            query = queryManager.createQuery(
+//                "SELECT * FROM [archiva:project] WHERE 
ISDESCENDANTNODE([/repositories/internal/content])",
+//                Query.JCR_SQL2 );
+        System.out.println(
+            "projects = " + query.execute().getRows().getSize() + " in " + ( 
System.currentTimeMillis() - time ) +
+                " ms" );
+    }
+
+    private static void queryAllArtifactsInRepo( QueryManager queryManager )
+        throws RepositoryException
+    {
+        System.out.println( "querying # artifacts in repo" );
+
+        long time = System.currentTimeMillis();
+
+        // fails on Jackrabbit 2.2.0
+//            String q = "SELECT size FROM [archiva:artifact] AS artifact 
WHERE ISDESCENDANTNODE([/repositories/internal/content])";
+//            Query query = 
session.getWorkspace().getQueryManager().createQuery( q, Query.JCR_SQL2 );
+
+//            String q = "SELECT size FROM archiva:artifact WHERE jcr:path 
LIKE '/repositories/internal/content/%'";
+//            Query query = 
session.getWorkspace().getQueryManager().createQuery( q, Query.SQL );
+//
+        String q = "SELECT size FROM [archiva:artifact]";
+        Query query = queryManager.createQuery( q, Query.JCR_SQL2 );
+
+        QueryResult queryResult = query.execute();
+        System.out.println( "query in " + ( System.currentTimeMillis() - time 
) + "ms" );
+
+        time = System.currentTimeMillis();
+
+        long totalSize = 0, totalJars = 0, totalArtifacts = 0;
+        for ( Row row : JcrUtils.getRows( queryResult ) )
+        {
+            totalSize += row.getValue( "size" ).getLong();
+            if ( row.getNode().getName().endsWith( ".jar" ) )
+            {
+                totalJars++;
+            }
+            totalArtifacts++;
+        }
+        System.out.println( totalArtifacts + " artifacts, " + totalSize + " 
bytes, " + totalJars + " jars (count in " +
+                                ( System.currentTimeMillis() - time ) + "ms)" 
);
+    }
 }


Reply via email to