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();
 


Reply via email to