You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by ri...@apache.org on 2012/03/19 06:08:26 UTC

svn commit: r1302272 - in /oodt/trunk: CHANGES.txt filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java filemgr/src/test/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java

Author: rickdn
Date: Mon Mar 19 05:08:26 2012
New Revision: 1302272

URL: http://svn.apache.org/viewvc?rev=1302272&view=rev
Log:
OODT-413 #resolve fixed  getReducedMetadata handles undefined elements

Modified:
    oodt/trunk/CHANGES.txt
    oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java
    oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java

Modified: oodt/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/oodt/trunk/CHANGES.txt?rev=1302272&r1=1302271&r2=1302272&view=diff
==============================================================================
--- oodt/trunk/CHANGES.txt (original)
+++ oodt/trunk/CHANGES.txt Mon Mar 19 05:08:26 2012
@@ -4,6 +4,8 @@ Apache OODT Change Log
 Release 0.4: Current Development
 --------------------------------------------
 
+* OODT-413 filemgr query throws NPE when some products have undefined metadata values (rickdn)
+
 * OODT-420 CAS-PGE should fail when product ingests fail (bfoster)
 
 * OODT-419 Make PgeConfigBuilder configuration via PgeTaskMetKeys (bfoster)

Modified: oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java
URL: http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java?rev=1302272&r1=1302271&r2=1302272&view=diff
==============================================================================
--- oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java (original)
+++ oodt/trunk/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java Mon Mar 19 05:08:26 2012
@@ -618,10 +618,9 @@ public class LuceneCatalog implements Ca
     public Metadata getReducedMetadata(Product product, List<String> elements) throws CatalogException {
         Metadata fullMetadata = getMetadata(product);
         Metadata reducedMetadata = new Metadata();
-        for (int i = 0; i < elements.size(); i++) {
-            String element = elements.get(i);
-            reducedMetadata.addMetadata(element, fullMetadata
-                    .getAllMetadata(element));
+        for (String element : elements) {
+            if (fullMetadata.containsKey(element))
+                reducedMetadata.replaceMetadata(element, fullMetadata.getAllMetadata(element));
         }
         return reducedMetadata;
     }

Modified: oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java
URL: http://svn.apache.org/viewvc/oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java?rev=1302272&r1=1302271&r2=1302272&view=diff
==============================================================================
--- oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java (original)
+++ oodt/trunk/filemgr/src/test/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java Mon Mar 19 05:08:26 2012
@@ -203,6 +203,20 @@ public class TestLuceneCatalog extends T
        assertTrue(rndTripMet.getAllMetadata(CoreMetKeys.FILE_LOCATION).contains("/loc/2"));
     }
 
+    public void testGetReducedMetadataNull() throws CatalogException {
+	      Product p = getTestProduct();
+	      myCat.addProduct(p);
+	      myCat.addProductReferences(p);
+	      myCat.addMetadata(new Metadata(), p);
+
+	      // should not throw NPE here
+	      Metadata rndTripMet = myCat.getReducedMetadata(p, Lists.newArrayList(CoreMetKeys.FILENAME));
+
+	      assertNotNull(rndTripMet);
+	      // should return null if met key has no value
+	      assertNull(rndTripMet.getAllMetadata(CoreMetKeys.FILENAME));
+    }
+
     public void testRemoveProduct() {
         Product productToRemove = getTestProduct();