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

Chris A. Mattmann commented on OODT-433:
----------------------------------------

bq. 1) getProductByName has the getRefs set to false. Should this be set to 
true, or should the client execute a second xml-rpc call to retrieve the 
product references.

Yeah I think the semantics are that this is a "thin" call to getProductByName, 
which is fine: the references can be large (e.g., if it's a dir product), so I 
think that retrieveFiles is doing the right thing by calling false here (even 
if it generates another call)

bq. 2) Should refs be checked to see if its empty and throw an exception if it 
is empty? I.e.

I think instead, retrieveFiles should instead (after calling getProductByName), 
then get product.setProductReferences(getProductReferences)

bq. 3) Should the dt.retrieveProduct() be removed?

The 2nd call, right? That seems correct to me, to only have 1 call, if the 
Product isn't null.


                
> 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