Fwd: Re: [kaffe] java.sql.*

Ito Kazumitsu ito.kazumitsu@hitachi-cable.co.jp
Thu Apr 10 01:29:01 2003


In message "Fwd: Re: [kaffe] java.sql.*"
    on 03/04/09, Dalibor Topic <robilad@yahoo.com> writes:

> > If you want to go ahead, you can review the
> > exceptions
> > form kaffe's java.sql implementation and
> > classpath's.

This is the results of my review:

1. Exceptions only GNU Classpath's java.sql throws

   Omitted (too many to show here).  They are all
   SQLException. Most of them are supposed to be thrown by
   methods added since 1.2,  which kaffe does not implement.

2. Exceptions only kaffe's java.sql throws

Date:    public static java.sql.Date valueOf(java.lang.String) throws java.lang.IllegalArgumentException
DriverManager:    public static synchronized java.sql.Connection getConnection(java.lang.String) throws java.sql.SQLException
DriverManager:    public static synchronized java.sql.Connection getConnection(java.lang.String, java.lang.String, java.lang.String) throws java.sql.SQLException
DriverManager:    public static synchronized java.sql.Connection getConnection(java.lang.String, java.util.Properties) throws java.sql.SQLException
DriverManager:    public static synchronized void registerDriver(java.sql.Driver) throws java.sql.SQLException
Time:    public static java.sql.Time valueOf(java.lang.String) throws java.lang.IllegalArgumentException
Timestamp:    public static java.sql.Timestamp valueOf(java.lang.String) throws java.lang.IllegalArgumentException

  Kaffe's Date and Time throwing IllegalArgumentException is not
  conforming to Sun's API document.

  GNU classpath's Timestamp not throwing IllegalArgumentException
  is not conforming to Sun's API document.

  As for DriverManager, they are listed here because of the
  differrnce of getConnection methods.  Kaffe's declare synchronized
  but GNU classpath's does not.

3. Differnce of SQLException

  The following methods are quite different.

Kaffe's
public synchronized void setNextException(SQLException ex) {
        if (next == null) {
                next = ex;
        }
        else {
                next.setNextException(ex);
        }
}

GNU Classpath's
  public void setNextException(SQLException e)
  {
    if (e == null)
      return;

    SQLException list_entry = this;
    while (list_entry.getNextException() != null)
      list_entry = list_entry.getNextException();

    list_entry.next = e;
  }