NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
Hi Doug, > > If the argument to DataReference.setData(Data d) on the server > > is a FieldImpl, then you should be able to cast the return value > > of DataReference.getData() to FieldImpl. That is, moving data > > from the server to the client does not change its class to > > Remote*. > > > > What you said reaffirms what I thought, but it's not working in > practice. Here's some sample code that shows the problem. I get the > problem on both Linux and NT. My statement was wrong - sorry about that. Now that I look at the getData() method of RemoteDataReferenceImpl, it does convert a FieldImpl to a RemoteFieldImpl. The fix is simple. Replace: FieldImpl field = (FieldImpl) ref.getData(); by: FieldImpl field = (FieldImpl) ref.getData().local(); in your Client.java. Note that RemoteDataReferenceImpl.getData() includes: if (data instanceof FieldImpl) { boolean return_copy = false; if (return_copy) { return data; } else { return new RemoteFieldImpl((FieldImpl) data); } } else { return data; } The idea is that applications can extend RemoteDataReferenceImpl and override getData() to decide on some basis whether to return the FieldImpl (immediate download to the client), or a RemoteFieldImpl (a remote reference that the client can download piecemeal via getSample() calls, etc). I am glad to see VisAD's distributed objects getting used. Cheers, Bill ---------------------------------------------------------- Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI 53706 hibbard@xxxxxxxxxxxxxxxxx 608-263-4427 fax: 608-263-6738 http://www.ssec.wisc.edu/~billh/vis.html
visad
archives: