[ 
https://issues.apache.org/jira/browse/OODT-433?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13240730#comment-13240730
 ] 

Brian Foster commented on OODT-433:
-----------------------------------

1) ya i agree with chris... getProductBy(Name | Id) should only return the 
product info... no references
2) again agree with chris... this is a bug... RetrieveFilesCliAction should 
have asked the filemgr for the references after retrieving the Product
3) the second retrieveProduct should have been removed... which i had gotten 
fluent with EasyMock when i was doing all the cas-cli stuff... an test around 
RetrieveFilesCliAction with an EasyMock of the filemgr client would have caught 
the second unexpected call to retrieveProduct.

So i see 2 changes in this issue:
1) Add fmClient.getProductReferences(product) to RetrieveFilesCliAction:
{code}
if (product != null) {
   product.setProductReferences(fmClient.getProductReferences(product));
   dt.retrieveProduct(product, destination);
} else {
   throw new Exception("Product was not found");
}
{code}
2) Removed the extra dt.retrieveProduct() (the one outside the check null if 
statment)
                
> 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
>              Labels: patch
>             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