[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