- clear up some NPEs in product paging - add some methods to FM utils in PCS core
Project: http://git-wip-us.apache.org/repos/asf/oodt/repo Commit: http://git-wip-us.apache.org/repos/asf/oodt/commit/6338e497 Tree: http://git-wip-us.apache.org/repos/asf/oodt/tree/6338e497 Diff: http://git-wip-us.apache.org/repos/asf/oodt/diff/6338e497 Branch: refs/heads/development Commit: 6338e4979d4c8b58dad3f8ca1ab7adfbd6f8d8dd Parents: 6d5e10d Author: Chris Mattmann <[email protected]> Authored: Wed Jul 26 13:38:27 2017 -0700 Committer: Chris Mattmann <[email protected]> Committed: Wed Jul 26 13:38:27 2017 -0700 ---------------------------------------------------------------------- .../oodt/cas/filemgr/catalog/LuceneCatalog.java | 10 +++--- .../oodt/cas/filemgr/structs/ProductPage.java | 2 ++ .../cas/filemgr/catalog/TestLuceneCatalog.java | 10 ++++-- .../apache/oodt/pcs/util/FileManagerUtils.java | 37 ++++++++++++++++++++ 4 files changed, 53 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oodt/blob/6338e497/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java ---------------------------------------------------------------------- diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java index 4c9ed96..ae218d8 100644 --- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java +++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java @@ -897,7 +897,8 @@ public class LuceneCatalog implements Catalog { */ public ProductPage getNextPage(ProductType type, ProductPage currentPage) { if(type==null){ - return null; + LOG.warning("getNextPage: Provided type was null: Returning blank page."); + return ProductPage.blankPage(); } if (currentPage == null) { return getFirstPage(type); @@ -921,11 +922,11 @@ public class LuceneCatalog implements Catalog { "CatalogException getting next page for product type: [" + type.getProductTypeId() + "] from catalog: Message: " + e.getMessage()); - return null; + return ProductPage.blankPage(); } // There are no products and thus no next page if (products == null || (products.size() == 0)) { - return null; + return ProductPage.blankPage(); } nextPage.setPageProducts(products); @@ -940,7 +941,8 @@ public class LuceneCatalog implements Catalog { */ public ProductPage getPrevPage(ProductType type, ProductPage currentPage) { if(type==null){ - return null; + LOG.warning("getPrevPage: Provided type was null: Returning blank page."); + return ProductPage.blankPage(); } if (currentPage == null) { http://git-wip-us.apache.org/repos/asf/oodt/blob/6338e497/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ProductPage.java ---------------------------------------------------------------------- diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ProductPage.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ProductPage.java index e70c19e..2ed9312 100644 --- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ProductPage.java +++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/structs/ProductPage.java @@ -17,6 +17,7 @@ package org.apache.oodt.cas.filemgr.structs; +import java.util.Collections; //JDK imports import java.util.List; import java.util.Vector; @@ -176,6 +177,7 @@ public class ProductPage { blank.setPageNum(0); blank.setTotalPages(0); blank.setPageSize(0); + blank.setPageProducts(Collections.EMPTY_LIST); return blank; } http://git-wip-us.apache.org/repos/asf/oodt/blob/6338e497/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java ---------------------------------------------------------------------- diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java index 166a991..890c20c 100644 --- a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java +++ b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java @@ -502,7 +502,10 @@ public class TestLuceneCatalog extends TestCase { ProductPage page = myCat.getNextPage(null, myCat.getFirstPage(type)); - assertNull(page); + assertNotNull(page); + assertEquals(0, page.getPageNum()); + assertEquals(0, page.getTotalPages()); + assertEquals(0, page.getPageSize()); } public void testGetNextPageNullCurrentPage(){ @@ -775,7 +778,10 @@ public class TestLuceneCatalog extends TestCase { .size()); ProductPage page2 = myCat.getNextPage(type, myCat.getFirstPage(type)); ProductPage page = myCat.getPrevPage(null, page2); - assertNull(page); + assertNotNull(page); + assertEquals(0, page.getPageNum()); + assertEquals(0, page.getPageSize()); + assertEquals(0, page.getTotalPages()); } http://git-wip-us.apache.org/repos/asf/oodt/blob/6338e497/pcs/core/src/main/java/org/apache/oodt/pcs/util/FileManagerUtils.java ---------------------------------------------------------------------- diff --git a/pcs/core/src/main/java/org/apache/oodt/pcs/util/FileManagerUtils.java b/pcs/core/src/main/java/org/apache/oodt/pcs/util/FileManagerUtils.java index abfed56..aecefb7 100644 --- a/pcs/core/src/main/java/org/apache/oodt/pcs/util/FileManagerUtils.java +++ b/pcs/core/src/main/java/org/apache/oodt/pcs/util/FileManagerUtils.java @@ -22,6 +22,7 @@ import org.apache.oodt.pcs.metadata.PCSConfigMetadata; import org.apache.oodt.pcs.query.FilenameQuery; import org.apache.oodt.cas.filemgr.structs.Element; import org.apache.oodt.cas.filemgr.structs.Product; +import org.apache.oodt.cas.filemgr.structs.ProductPage; import org.apache.oodt.cas.filemgr.structs.ProductType; import org.apache.oodt.cas.filemgr.structs.Query; import org.apache.oodt.cas.filemgr.structs.Reference; @@ -322,6 +323,42 @@ public class FileManagerUtils implements PCSConfigMetadata { return p; } + + + /** + * Gets the number of products for the given type. + * @param type The given type. + * @return The number of products. + */ + public int safeGetNumProducts(ProductType type){ + int numProducts = -1; + try{ + numProducts = this.fmgrClient.getNumProducts(type); + } + catch(Exception e){ + e.printStackTrace(); + LOG.warning("Exception getting num products by type: ["+type.getName()+"]: " + + "Message: "+e.getLocalizedMessage()); + } + + return numProducts; + } + + + /** + * Get a first page of Products using the pagination API. + * @param type Gets the first page of products for this type. + * @return The first page of products for this type. + */ + public ProductPage safeFirstPage(ProductType type) { + ProductPage page = null; + try { + page = this.fmgrClient.getFirstPage(type); + } catch (Exception e) { + LOG.info("No products found for: " + type.getName()); + } + return page; + } public String getFilePath(Product prod) { if (prod.getProductReferences() == null) {
