[MOBY-l] Re: a question

Paul Gordon gordonp at ucalgary.ca
Fri Feb 4 14:36:27 UTC 2005


Yes, I am smoking crack.  I didn't send you the final version, your 
latest is the correct version, what I should have sent (note that I even 
used j as the inner loop variable in the original, not i).  If you chain 
the requests, this would be a nice example to add to the CVS repository, 
minus all the debug statements...

Benjamin Good wrote:

> Hi Paul,
>
>  I've installed your updated class but am getting another class cast 
> error.  I'm absolutely sure I'm running the updated version, I can see 
> where you changed the Vector.toArray method.
>
> The casting error has moved to here in the example
>
> Vector response = (Vector) responses.next();
>
> It seems that this should be casting to a MobyDataInstance array no?  
> Changing this to an array made the example I'm running work.
>
> Below is the current working example.  I haven't tried it yet, but it 
> would be great to complete it by taking the response and using it for 
> querying for and executing another round of services.
>
> cheers
>
> -Ben
>
> import org.biomoby.client.CentralImpl;
> import org.biomoby.client.MobyRequest;
> import org.biomoby.shared.*;
>
> import java.util.Iterator;
> import java.util.Vector;
>
> /**
> * @author benjamgo
> *
> * TODO To change the template for this generated type comment go to
> * Window - Preferences - Java - Code Style - Code Templates
> */
> public class TestRequest {
>
>    public static void main(String[] args) {
>        try{
>            Central worker = new CentralImpl ();
>            worker.setDebug(true);
> //make template for finding services
>            MobyService templateService = new MobyService("dummy");
>            MobyDataType type = new MobyDataType("Object");
>                 MobyDataSimpleInstance input = new 
> MobyDataSimpleInstance ("");
>            input.setDataType (type);
>            input.addNamespace (new MobyNamespace ("NCBI_gi"));
>            input.setId("111076");
>            input.setXmlMode(MobyDataSimpleInstance.CENTRAL_XML_MODE);
>            templateService.addInput(input);
>            templateService.setName("MOBYSHoundGetGenBankff");
> //        Find services that match this template service
>            System.out.println("finding services matching template: 
> "+templateService);
>            MobyService[] validServices = 
> worker.findService(templateService);
>          //        Make sure we have a service to run for this input
>                if(validServices == null || validServices.length == 0){
>                    System.err.println("Could not find any valid 
> services");
>                }
>                else{
>                    System.out.println("found some services");
>                }
>                input.setXmlMode(MobyDataSimpleInstance.SERVICE_XML_MODE);
>                MobyDataSimpleInstance[] moby_in = new 
> MobyDataSimpleInstance[1];
>                moby_in[0] = input;
>
>                MobyRequest mr = new MobyRequest(worker);
>
>                mr.setDebugMode(false);
>                mr.setService(validServices[0]);
>                mr.setInput(moby_in);
>                java.util.Vector output = mr.invokeService();
>                String xresponse = mr.getResponseXML();
>                String c = "";
>                Iterator responses = output.iterator();
>                // The service invocation may have had many requests, 
> there is a response
>                // object for each request
>                while(responses.hasNext()){
>
>                    System.out.println("Casting...");
>                    //bmg Vector response = (Vector) responses.next();
>                    MobyDataInstance[] response = (MobyDataInstance[]) 
> responses.next();
>                    //bmg Iterator resultObjects = response.iterator();
>
>                    // The response for a request may have many objects
>                    System.out.println("The actual response 
> contained...");
>                    //bmg while(resultObjects.hasNext()){
>                    for(int i=0;i<response.length;i++){
>                        //bmg MobyDataInstance resultObject = 
> (MobyDataInstance) resultObjects.next();
>                        MobyDataInstance resultObject = response[i];
>                        // The response objects may either be simple 
> data, or data sets
>                        if(resultObject instanceof 
> MobyDataSimpleInstance){
>                            System.out.println("Plain simple instance 
> is "+resultObject.toXML());
>                        }
>
>                        else if(resultObject instanceof 
> MobyDataSetInstance){
>                            System.out.println("Found a collection:");
>                            MobyPrimaryDataSimple[] simples = 
> ((MobyDataSetInstance) resultObject).getElements();
>                            for(int j = 0; j < simples.length; j++){
>                                System.out.println("  Member instance 
> is \n"+simples[j].toXML());
>                            }
>                        }
>                    }
>                }
>            }catch(Exception e){
>                System.out.println("Problem "+e);
>            }
>    }
> }
>
> _______________________________________________
> moby-l mailing list
> moby-l at biomoby.org
> http://biomoby.org/mailman/listinfo/moby-l
>




More information about the moby-l mailing list