Peter Firmstone wrote:
I'm looking for the simplest thing that will work, then we can look at
additions/extensions. Why tackle complicated downloading/classloading
if we
can just solve the problem with a simple API extension that gives enough
flexibility for the common case?
The simplified MarshalledServiceItem should be capable of that, the
registrar implementation proxy simply doesn't unmarshall until requested.
Cheers,
Peter.
Hence the method:
ResultStream lookup(ServiceTemplate tmpl, Class[]
unmarshalledEntries, int
maxBatchSize) throws IOException;
But once we have the service we want, we'll need to download the jar
files.
Yep,no chance of avoiding that....
Currently StreamServiceRegistrar has four methods, these are very
similar to existing methods in ServiceRegistrar, the difference is they
return a ResultStream instead of array's, maxBatchSize is an indication
to the registrar proxy, how many records to cache locally:
ResultStream lookup(ServiceTemplate tmpl, Class[] unmarshalledEntries,
int maxBatchSize) throws IOException;
ResultStream getEntryClasses(ServiceTemplate tmpl, int maxBatchSize)
throws IOException;
ResultStream getFieldValues(ServiceTemplate tmpl, int setIndex, String
field, int maxBatchSize) throws NoSuchFieldException, IOException;
ResultStream getServiceTypes(ServiceTemplate tmpl, String prefix, int
maxBatchSize) throws IOException;
Apart from lookup, the additional methods may be useful for querying,
the reasoning is registrars on the internet could potentially have very
large result sets. However as Dennis has suggested, the simplest thing
that will work is to only have the lookup method, which provides to the
registrar proxy, the classes of the Entry's the client is interested in.
What do you think?
Cheers,
Peter.