
Quoting [Steve Fisher] (Dec 18 2008):
I would like to be consistent - however the url here is not a string but a SAGA URL object - so it cannot have a default value of "".
Basically, it means that the URL would be created by giving an empty string to the URL's constructor.
Thus
object (saga::url u = "");
is a short form for
object (saga::url u = saga::url (""));
Whatever syntax is appropriate for an optional session parameter is also good for an optional url parameter.
Well, we describe the session parameter default explicitely in section 3.5.2 in the Core spec, but we do not describe it for other parameter types anywhere, in particular not for URL.
This discoverer class should have has the same constructor as the job_service. Where the spec says:
Exactly!
CONSTRUCTOR (in session s, in url rm = "", out job_service obj);
However the Java interface has got 3 "constructors" in the job factory with arguments:
(session, url) (session) ()
I want the Java API to be like this but, for convenience, with the addition of:
(url)
Sure, but that is a language binding issue. And again, that probably should follow the language binding for the job_service, although I do not know how that is rendered in Java at the moment.
I am happy to express this in the spec with a single constructor with 2 optional arguments - so our *only* concern is the precise notation. I don't want to rely upon people having read section 3.5.2 of the main spec to appreciate that session parameters are always optional and I don't like a notation which implies using a url from the default constructor being used to represent a default url.
I added an explicit reference to section 3.5.2 and 2.2.2 of the core spec, where the handling of session, and of other default parameters, is descibed in some detailed. 2.2.2 says that default parameters are to expressed in the language bindings in a way native to the languge, and should give you enough freedom for Java. With that, is the notation precise enough for you? Best, Andre. ------------------------------------------ - CONSTRUCTOR Purpose: create a new discoverer object Format: CONSTRUCTOR (in session session, ! in url url = "", out discoverer dis); Inputs: session: session handle url: URL to guide the implementation Outputs: dis: new discoverer object Throws: NotImplemented IncorrectURL + DoesNotExist + AuthorizationFailed + AuthenticationFailed + TimeOut NoSuccess Notes: - the url specified as in input parameter is to assist the implementation to locate the underlying information system such that it can be queried. + - if the url is syntactically valid, but no + backend service can be contacted at that URL, + a 'DoesNotExist' exception is thrown. + - the semantics for the other exceptions is as + outlined in the SAGA Core API specification. + - note that the session parameter is optional, + as described in the SAGA Core API + specification, section 3.5.2. Also Section + 2.2.2 of the same document applies to + url and its default value. ------------------------------------------ -- Nothing is ever easy.