[jboss-svn-commits] JBL Code SVN: r21391 - in labs/jbossrules/trunk/drools-repository/src: test/java/org/drools/repository and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Aug 7 03:08:53 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-08-07 03:08:53 -0400 (Thu, 07 Aug 2008)
New Revision: 21391

Modified:
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetPageList.java
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositorySessionUtil.java
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
Log:
JBRULES-1718 paging was badly b0rked

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java	2008-08-07 00:34:51 UTC (rev 21390)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetItemIterator.java	2008-08-07 07:08:53 UTC (rev 21391)
@@ -56,4 +56,12 @@
     	return it.getSize();
     }
 
+    /**
+     * Get the position in the result set.
+     */
+    public long getPosition() {
+    	return it.getPosition();
+    }
+
+
 }

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetPageList.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetPageList.java	2008-08-07 00:34:51 UTC (rev 21390)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/AssetPageList.java	2008-08-07 07:08:53 UTC (rev 21391)
@@ -2,6 +2,8 @@
 
 import java.util.List;
 
+import javax.jcr.RangeIterator;
+
 /**
  * Used for holding a page of asset data.
  *
@@ -9,16 +11,14 @@
  */
 public class AssetPageList {
 
-	public final List assets;
-	public final long totalSize;
+	public final List<AssetItem> assets;
 	public final boolean hasNext;
+	public long currentPosition;
 
-	public AssetPageList(List categories, long totalSize, boolean hasNext) {
+	public AssetPageList(List<AssetItem> categories, RangeIterator it) {
 		this.assets = categories;
-		this.totalSize = totalSize;
-		this.hasNext = hasNext;
+		this.hasNext = it.hasNext();
+		this.currentPosition = it.getPosition();
 	}
 
-
-
 }

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositorySessionUtil.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositorySessionUtil.java	2008-08-07 00:34:51 UTC (rev 21390)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositorySessionUtil.java	2008-08-07 07:08:53 UTC (rev 21391)
@@ -44,9 +44,9 @@
         if ( repoInstance == null ) {
 
             File dir = new File( "repository" );
-            log.debug( "DELETING test repo: " + dir.getAbsolutePath() );
+            System.out.println( "DELETING test repo: " + dir.getAbsolutePath() );
             deleteDir( dir );
-            log.debug( "TEST repo was deleted." );
+            System.out.println( "TEST repo was deleted." );
 
             JCRRepositoryConfigurator config = new JackrabbitRepositoryConfigurator();
 

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java	2008-08-07 00:34:51 UTC (rev 21390)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java	2008-08-07 07:08:53 UTC (rev 21391)
@@ -768,13 +768,16 @@
 			int numRowsToReturn, Node n, RepositoryFilter filter)
 			throws RepositoryException {
 		int rows = 0;
-        List results = new ArrayList();
+        List<AssetItem> results = new ArrayList<AssetItem>();
 
+
 		PropertyIterator it = n.getReferences();
 		if (skip > 0) it.skip(skip);
 
 		while ( it.hasNext() && (numRowsToReturn == -1 || rows < numRowsToReturn)) {
+
 		    Property ruleLink = (Property) it.next();
+
 		    Node parentNode = ruleLink.getParent();
 		    if ( isNotSnapshot( parentNode ) && parentNode.getPrimaryNodeType().getName().equals( AssetItem.RULE_NODE_TYPE_NAME ) ) {
 		        if ( seekArchivedAsset || !parentNode.getProperty( AssetItem.CONTENT_PROPERTY_ARCHIVE_FLAG ).getBoolean() ) {
@@ -787,7 +790,7 @@
 		    }
 		}
 
-		return new AssetPageList(results, it.getSize(), it.hasNext());
+		return new AssetPageList(results, it);
 	}
 
     public AssetPageList findAssetsByCategory(String categoryTag, int skip, int numRowsToReturn) throws RulesRepositoryException {

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java	2008-08-07 00:34:51 UTC (rev 21390)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java	2008-08-07 07:08:53 UTC (rev 21391)
@@ -204,14 +204,14 @@
             a.checkin("");
 
             AssetPageList list = getRepo().findAssetsByCategory("testPagedTag", 0, -1);
-            assertEquals(5, list.totalSize);
+            assertTrue(list.currentPosition > 0);
             assertEquals(5, list.assets.size());
             assertEquals(false, list.hasNext);
 
 
 
             list = getRepo().findAssetsByCategory("testPagedTag", 0, 2);
-            assertEquals(5, list.totalSize);
+            assertTrue(list.currentPosition > 0);
             assertEquals(true, list.hasNext);
             assertEquals(2, list.assets.size());
 
@@ -219,7 +219,7 @@
             assertEquals("testPage2", ((AssetItem)list.assets.get(1)).getName());
 
             list = getRepo().findAssetsByCategory("testPagedTag", 2, 2);
-            assertEquals(5, list.totalSize);
+            assertTrue(list.currentPosition > 0);
             assertEquals(true, list.hasNext);
             assertEquals(2, list.assets.size());
 
@@ -227,7 +227,7 @@
             assertEquals("testPage4", ((AssetItem)list.assets.get(1)).getName());
 
             list = getRepo().findAssetsByCategory("testPagedTag", 2, 3);
-            assertEquals(5, list.totalSize);
+            assertTrue(list.currentPosition > 0);
             assertEquals(false, list.hasNext);
             assertEquals(3, list.assets.size());
 

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java	2008-08-07 00:34:51 UTC (rev 21390)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java	2008-08-07 07:08:53 UTC (rev 21391)
@@ -81,13 +81,11 @@
 
         cat = repo.loadCategory("testCatRename/testAnother");
         AssetPageList as = repo.findAssetsByCategory("testCatRename/testAnother", 0, -1);
-        assertEquals(1, as.totalSize);
         assertEquals("fooBar",((AssetItem) as.assets.get(0)).getName());
 
 
         repo.renameCategory("testCatRename/testAnother", "testYetAnother");
         as = repo.findAssetsByCategory("testCatRename/testYetAnother", 0, -1);
-        assertEquals(1, as.totalSize);
         assertEquals("fooBar",((AssetItem) as.assets.get(0)).getName());
 
 
@@ -514,10 +512,74 @@
         	}
             });
 
+
         assertEquals(1, apl.assets.size());
         assertEquals("testCat1", ((AssetItem)apl.assets.get(0)).getName());
+
+        pkg.addAsset( "testCat3", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
+        pkg.addAsset( "testCat4", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
+        pkg.addAsset( "testCat5", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
+        pkg.addAsset( "testCat6", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
+        pkg.addAsset( "testCat7", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
+        pkg.addAsset( "testCat8", "x", "/testFindAssetsByCategoryUsingFilterCat", "drl");
+
+        pkg.loadAsset("testCat1").archiveItem(true).checkin("");
+        pkg.loadAsset("testCat2").archiveItem(true).checkin("");
+        pkg.loadAsset("testCat3").archiveItem(true).checkin("");
+        pkg.loadAsset("testCat4").archiveItem(true).checkin("");
+
+//        apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", 0, 2 );
+//        assertEquals(2, apl.assets.size());
+//        assertTrue(apl.hasNext);
+//
+//        assertEquals(5, apl.currentPosition);
+//        //assertEquals("testCat5", apl.assets.get(0).getName());
+//
+//        apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", 7, 2 );
+//        assertEquals(2, apl.assets.size());
+//        assertFalse(apl.hasNext);
+//        //assertEquals("testCat7", apl.assets.get(0).getName());
+
+        repo.save();
+
+        apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", 0, -1 );
+
+        assertEquals(4, apl.assets.size());
+        List<String> names = new ArrayList<String>();
+
+        for (AssetItem as : apl.assets) {
+        	if (names.contains(as.getName()))  { fail("dupe returned."); }
+        	names.add(as.getName());
+		}
+
+        names = new ArrayList<String>();
+
+
+        boolean hasNext = true;
+        int skip = 0;
+        while (hasNext) {
+        	apl = repo.findAssetsByCategory( "/testFindAssetsByCategoryUsingFilterCat", skip, 2 );
+            for (AssetItem as : apl.assets) {
+            	if (names.contains(as.getName())) { fail("dupe returned"); }
+    			names.add(as.getName());
+    		}
+            //we add the num of results returned, and sub 2 to work out where to start next
+            skip = (int) (apl.currentPosition + apl.assets.size() - 2);
+        	hasNext = apl.hasNext;
+        }
+        assertEquals(4, names.size());
+        assertTrue(names.contains("testCat5"));
+        assertTrue(names.contains("testCat6"));
+        assertTrue(names.contains("testCat7"));
+        assertTrue(names.contains("testCat8"));
+
+
     }
 
+    public void testFunnyOrdering() throws Exception {
+
+    }
+
     /**
      * Here we are testing to make sure that category links don't pick up stuff in snapshots area.
      */




More information about the jboss-svn-commits mailing list