db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anurag Shekhar <Anurag.Shek...@Sun.COM>
Subject Re: [jira] Updated: (DERBY-1146) Verify that JDBC4 signatures satisfied
Date Tue, 28 Mar 2006 14:22:49 GMT

Adding the implements java.sql.XXX should take care of detecting missing 
methods in 4.0 classes. Delegating calls may be a safer way doing
things but it has practical problem take the case of EmbedConnection. 
This class is being used in 102 different places in engine code.
I haven't seen all the uses but my assumption is that these classes will 
be using internal methods of EmbedConnection (other wise they would have 
been using java.sql.Connection). If EmbedConnection40 is not compatible 
with EmbedConnection we will need a new interface which have all the 
common non standard methods. And this problem will be even worse if in 
every version of Connection there are some additional internal methods 
used by other classes of the same version. We may end up having a 
hierarchy of interface for each version.

Moving to delegation model may help catching the missing methods but I 
don't think making a design decision in anticipation of programing 
mistakes is  a good idea.


Andreas Korneliussen wrote On 03/28/06 17:54,:

> Anurag Shekhar wrote:
>>> Also, I think this also indicates that we should consider using 
>>> delegation instead of inheritance for code reuse.
>>> Andreas
>> I didn't get it, how does it indicates that ?
>> anurag
> Because now we are fooling the compiler to think that EmbedXXX40 
> classes implement java.sql.XXX interface since it inherits from a 
> class which has declared that it implements it. The problem is that 
> the base class is compiled against an old runtime library, and we lose 
> the compile time checks for the new methods.
> This way of doing things was not introduced as part of JDBC4, it also 
> applies to JDBC3 vs JDBC2.  So basically a developer may accidentally 
> change the signature of a JDBC3 method, and the compiler will not 
> complain. You will only detect the error in runtime, i.e through tests.
> Andreas

View raw message