Subject Change proposal
Author Blas Rodriguez Somoza

After my recent work with the driver, I found that there is another package distribution that makes the driver more modular
and so more easy to understand and modify.

The proposal is to split the jdbc package into two packages to isolate jdbc connection and transaction
related classes (modified jdbc package) from the basic jdbc stuff (new basicjdbc package).

To isolate the two packages, the classes which are needed by the basic jdbc but have some methods related with transactions, as
do Connection, Statement and preparedStatement are subclassed by jdbc from an abstract class in basicjdbc. The Abstract classes
contains the implementation of the methods not related with transactions, while the subclasses implement those methods that must be
transaction aware.

- jdbc. This package include all the classes actually in jdbc and related with connections. The package include
FBConnection (extends basicjdbc.FBAbstractConnection)
FBStatement (extends basicjdbc.FBAbstractStatement)
FBPreparedStatement (extends basicjdbc.FBAbstractPreparedStatement)

- basicjdbc .This package includes all the jdbc methods not related with connections or transactions, and abstract classes for
Connection, Statement and PreparedStatement needed by other classes in the package.

Statement and PreparedStatement are subclassed because the execute methods must be transaction aware and the ConnectionManager
needs to have a transaction->statement map. With a small change FBPreparedStatement can be excluded from subclassing if it uses
execute methods located in FBAbstractStatement.

With the proposed package structure,
- The basicjdbc package does not use jca or jdbc, nor it uses javax.resources so it is very simple to work on it.
- The jca package only uses the new jdbc but not basicjdbc.
- The new jdbc package extends basicjdbc but don't uses it.
- The new jdbc package which includes the most complex part of the old jdbc package reduces it size (from 43 classes to 9).
- Making the Driver modular makes easier to provide other connection manager alternatives if it is necessary in the future.

Because I'm not sure if the proposal supposes too much work, I try to implement it and excluding the changes to the tests
classes I have now a working copy.

The change does not imply code changes beyond the ones directly needed to split the packages and create subclasses.

Blas Rodriguez Somoza