@Override
    public DatabaseType getDatabaseType() {
        DatabaseType current = databaseType;
        if (current == null) {
            current = forceGetDatabaseType();
            if (current == null) {
                throw new IllegalStateException("faulty implementation of "  
                        + LazyJdbcPooledConnectionSource.class.getSimpleName() 
                        + "; forceGetDatabaseType must return a non-null value");
            }
        }
        return current;
    }
@ Override public DatabaseType getDatabaseType ( ) { DatabaseType current = databaseType ; if ( current == null ) { current = forceGetDatabaseType ( ) ; if ( current == null ) { throw new IllegalStateException ( "faulty implementation of " + LazyJdbcPooledConnectionSource . class . getSimpleName ( ) + "; forceGetDatabaseType must return a non-null value" ) ; } } return current ; }
Gets the database type. We override the superclass to allow this
method to succeed even if this instance has not been initialized.
To do so, we require implementation of {@link #forceGetDatabaseType() }
to return a non-null value <i>always</i>. This means that subclasses
must already know their database type.

<p>This method will not set the {@code databaseType} field, though.</p>
@return  the database type, possible forced