filemgr.getProductByName returns empty product references which results in a 
bug in --retrieveFilesByName and --retrieveFilesById
---------------------------------------------------------------------------------------------------------------------------------

                 Key: OODT-433
                 URL: https://issues.apache.org/jira/browse/OODT-433
             Project: OODT
          Issue Type: Bug
          Components: file manager
    Affects Versions: 0.4
            Reporter: Thomas Bennett
            Assignee: Thomas Bennett
            Priority: Minor
             Fix For: 0.4



--retrieveFilesByName and --retrieveFilesById have a bug.

Sequence of events:

Here's the command that I ran:

filemgr-client --url http://localhost:9101 --operation --retrieveFilesByName 
--productName 1332838758.h5 --destination /home/kat/ --transferer 
org.apache.oodt.cas.filemgr.datatransfer.LocalDataTransferFactory

So, the  --retrieveFilesByName calls an XML-RPC "filemgr.getProductByName" to 
get the product details. However on the File Manager side in 
org.apache.oodt.cas.filemgr.catalog.LuceneCatalog.java line 412 and 415:

return getProductByName(productName, false)  /*where the call signature is 
(defined on line 415 of the same file)*/

getProductByName(String productName, boolean getRefs)

getRefs is now passed (as false) as a parameter to the toCompleteProduct(..) 
method, which seems to indicate that the product references should not be 
returned.

This is then received by the filemgr client in the methodResponse with the 
references set as [] i.e. an empty list :)

On the client side in 
org.apache.oodt.cas.filemgr.datatransfer.LocalDataTransferer.java line 358 and 
359 of the copyFilesToDir() method:

      List<Reference> refs = product.getProductReferences();
      for (Iterator<Reference> i = refs.iterator(); i.hasNext();)

Since refs is empty the for loop loops zero times.

Then a bit further up the call chain in 
org.apache.oodt.cas.filemgr.cli.action.RetrieveFilesCliAction.java line 55 to 
60:

         if (product != null) {
            dt.retrieveProduct(product, destination);
         } else {
            throw new Exception("Product was not found");
         }
         dt.retrieveProduct(product, destination);

It appears that dt.retrieveProduct is called a second time outside the if / 
else statement.



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to