[seek-dev] RE: need a new upload() method in MetacatClient.java

Bing Zhu bzhu at sdsc.edu
Thu Sep 2 17:52:33 PDT 2004


Sid,

Thank you very much for the quick update. I will update my metacat files
against CVS.

And I have following questions.

1. Metacat URL in Ecogrid's put

    We have the following syntax for Ecogrid's put.
            put(object, objectId, type, sessionId)
    My understanding is that this is used to upload file or XML metadata
    with a given 'sessionID'. i.e. Someone logs into Metacta and gets a
    valid sessionID. Then using this valid session ID, he can upload
    data/metadata into metacat using our 'put' service.

    I played with Metacat code by creating separate java files based on
    Jing's code for
          (1) login and get a sessionID back
          (2) upload a file with a given session ID
          (3) logout

     Notice (2) is equivalent to Ecogrid's put. But (2) needs Metacat URL
which
     is not mentioned in our 'put' syntax and not in Ecogrid's design
document
     either. So I guess the 'objectID' will a combination of  URL and
metacat doc id.
     e.g.   if I want to upload a file with Metacat ID, test108.1.1, via
Ecogrid's put,
     The object ID in this call will be:
               http://indus.nceas.ucsb.edu/knb-oracle/metacat/test108.1.1

     BTW, after I called logout for a valid sessionID with the following
code
                 MetacatClient mc =
(MetacatClient)MetacatFactory.createMetacatConnection(metacatUrl);
                 mc.setSessionId(sessionId);
                 mc.logout();
     Somehow I still can upload files using the same 'sessionID'. i.e. The
'sessionId' does not expire imeediately
     after 'mc.logout()'.

2. Is there a quick way to view the Metacat docs I created?

Sincerely,
Bing





-----Original Message-----
From: Saurabh Garg [mailto:sgarg at nceas.ucsb.edu]
Sent: Thursday, September 02, 2004 2:56 PM
To: bzhu at sdsc.edu
Cc: Matt Jones; Jing Tao; Bertram Ludaescher; Arcot Rajasekar; Seek-Dev
Subject: Re: need a new upload() method in MetacatClient.java


Bing,

I have checked in a new method into metacat cvs. It is

    public String upload(String docid, String filename, InputStream
fileData, int fileSize)

instead of

    public String upload(String docid, byte[] bytes)

The reason is that we dont want to store the file in metacat client code. If
a user passes bytes array which is more than the memory size, it will crash
the metacat client. So instead of that, we take an InputStream object.

You will have to update both utilities and metacat cvs modules for this to
work. For sample code, look in
edu.ucsb.nceas.metacattest.client.MetacatClientTest (upload_stream()
function)

Any questions, let me know

-Sid



----- Original Message -----
From: "Bing Zhu" <bzhu at sdsc.edu>
To: "Sid" <sgarg at nceas.ucsb.edu>
Cc: "Matt Jones" <jones at nceas.ucsb.edu>; "Jing Tao" <tao at nceas.ucsb.edu>;
"Bertram Ludaescher" <ludaesch at sdsc.edu>; "Arcot Rajasekar"
<sekar at sdsc.edu>; "Seek-Dev" <seek-dev at ecoinformatics.org>
Sent: Tuesday, August 31, 2004 10:53 AM
Subject: need a new upload() method in MetacatClient.java


> Sid,
>
> In implemeting Ecogrid's 'put' for Metacat, it will be more
> efficient to have a new upload method for the Ecogrid's
> put service.
>    public String upload(String docid, byte[] bytes)
>
> Currently I can only find the existing one,
>    public String upload(String docid, File file),
> with which the Ecogrid's put service has to save the input byte array
> into a file and then call this method. I am going to implement
> it for now. Once the new method is available, I can just directly
> call the new one. Thanks.
>
> Bing
>




More information about the Seek-dev mailing list