[SAGA-RG] Java SAGA and NotImplementedExceptions in URL

Andre Merzky andre at merzky.net
Fri Sep 5 10:41:33 CDT 2008


Hi guys, 

Quoting [Thilo Kielmann] (Sep 05 2008):
> 
> I suggest to ask the experts: 
> 
> Andre, why does SAGA, "the language independent spec" :-) 
> prescribe this exception?

Well, rhetorical answer is: because it may be not
implemented! Doh! :-P


> The question is: who is right:
> - SAGA from GFD.90, and the still to be published Java binding ?
> - the C++ implementation (with its ad-hoc binding) ?

If in doubt (as here): the spec. 


> What would make sense?

Tough call, really.  

Several ways to argument here:

1: One could argue that all Look-and-Feel classes must be
   present in a SAGA implementation, so we don't need
   NotImplemented.  But, for example, why should a SAGA
   implementation provide a saga::buffer implementation, 
   if it does not provide the file or stream package?
   (see paragraph 6 on page 17, statement about partially
   compliant implementations).

   Well, sure, URL is basically used in all packages, but
   we cannot be sure of that for future extensions.  Thus,
   an implementation may actualy decide to not implement
   URL, so all \LF classes need NotImplemented.

2: If a class is not implemented, it may be enough to
   require the NotImplemented exception on the ctor only,
   and on method calls which are optional.  But we do
   not have a notion of optional methods, and such notion
   would further complicate the spec, and the notion of
   implementation compliance.  So, all methods need
   NotImplemented.

3: For OO languages, if a class is not implemented, a c'tor
   would simply not be available.  No need for a
   NotImplemented exception on c'tors then.  Also, for some
   classes (like URL), all methods are usually available if
   the class is available.  Thus, no need for NotImplemented
   on the methods either, in this case.  But that line of
   argument breaks for non-OO languages, where the ctor
   needs the exception, and the methods need it, too.

I guess you can only get rid of the exception if you go the
language binding route (3), and argue that in Java, if URL
is implemented, all URL methods will always be implemented,
and thus the exception is not needed.  Fine with me.  May
make sense for C++, too, btw.

Best, Andre.


PS: Sorry for  such a long winded answer to a trivial
    looking problem - its just a way to say that I was
    unsure what to say ;-)


> Putting the removal of this exception into the errata file sounds like a
> (lame) way of resolving this. Would this make sense at all???
> 
> 
> Thilo
> 
> On Fri, Sep 05, 2008 at 03:50:55PM +0200, Ceriel Jacobs wrote:
> > From: Ceriel Jacobs <ceriel at cs.vu.nl>
> > To: mathijs at cs.vu.nl
> > CC: Thilo Kielmann <kielmann at cs.vu.nl>
> > Subject: Re: Java SAGA and NotImplementedExceptions in URL
> > 
> > Mathijs den Burger wrote:
> > >Hi,
> > >
> > >While coding a file adaptor for the Java SAGA implementation, I keep
> > >getting annoyed by the fact that every setter and getter method in the
> > >URL class can throw a NotImplementedException. As a result, every method
> > >that retrieves something from a URL (a host, port, etc.) or uses such a
> > >method somewhere has to add a 'throws NotImplementedException' in its
> > >declaration. Catching these exceptions is of course possible, but it is
> > >a bit vague how to handle them ("OK, I cannot read a host name from a
> > >URL, hmm, now what?"). The simple alternative is to have many methods
> > >that throw a NotImplementedException, which bloats your code.
> > 
> > It is a bit cumbersome, I agree, but the SAGA document specifies the
> > methods like this. I don't know why this is so.
> > 
> > >The C++ implementations simply cheats by not throwing these exceptions
> > >from the URL class at all (an advantage of not having a proper language
> > >binding). Can't we do the same in the Java language binding? I cannot
> > >imagine a Java SAGA implementation that cannot do url.getHost() or
> > >url.getPort()...
> > 
> > I would be happy to change this. Thilo, what do you think?
> > 
> > Ceriel
-- 
Nothing is ever easy.


More information about the saga-rg mailing list