You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by "Thomas Bennett (Commented) (JIRA)" <ji...@apache.org> on 2012/03/27 16:16:30 UTC
[jira] [Commented] (OODT-433) filemgr.getProductByName returns
empty product references which results in a bug in --retrieveFilesByName
and --retrieveFilesById
[ https://issues.apache.org/jira/browse/OODT-433?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13239487#comment-13239487 ]
Thomas Bennett commented on OODT-433:
-------------------------------------
This issue relates to three problems, but I have the following questions:
1) getProductByName has the references set to false. Should this be set to true, or should the client execute a second xml-rpc call to retrieve the product references.
2) Should refs be checked to see if its empty and throw an exception if it is empty? I.e.
if refs.isEmpty() {
throw EmptyListException('There are no product references.')
}
3) Should the dt.retrieveProduct() be removed?
> 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