[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [dtp-dev] bug#149611 - Database Version is not flexible ...
|
Hey Anthos,
Could you create a bugzilla entry for this. One of the things we will be
focusing on for the next release of connectivity is its public API.
Thanks for the feedback,
Rob
> I like to comment on the current impl of JDBCConnection class.
>
> The JDBCConnection class's constructor is as below
>
> public JDBCConnection(IConnectionProfile profile, Class
> factoryClass) {
> super(profile, factoryClass);
> open();
> }
>
> If I have a subclass as below
> class OracleJDBCConnection extends JDBCConnection{
> String providerName = null;
> public OracleJDBCConnection(){
> super();
> providerName = "Oracle Database";
> }
>
> @Override
> public String getProviderName(){
> return providerName;
> }
> }
>
> The super() flows into open() in superclass which calls
> getProviderName() along the line; but the subclass havenot populated
> providerName value yet, which results a NPE. This results the label
> provider to fail in the contentNavigator context.
>
> The call stack copied from Eclipse is as below
> OracleJDBCConnection.getProviderName() line: 50
> OracleJDBCConnection(VersionProviderConnection).
> updateServerVersion(Properties)
> line: 174
> OracleJDBCConnection(VersionProviderConnection).updateVersionCache()
> line: 86
> OracleJDBCConnection(DriverConnectionBase).internalCreateConnection()
> line: 112
> OracleJDBCConnection(DriverConnectionBase).open() line: 53
> OracleJDBCConnection(JDBCConnection).<init>(IConnectionProfile, Class)
> line: 48
> OracleJDBCConnection.<init>(IConnectionProfile, Class) line: 20
> OracleJDBCConnectionFactory.createConnection(IConnectionProfile) line:
> 15
> ConnectionFactoryProvider.createConnection(IConnectionProfile, String,
> String) line: 85
> ConnectionFactoryProvider.createConnection(IConnectionProfile) line: 69
> ConnectionProfile.createConnection(String) line: 304
> ConnectionInfoImpl.<init>(IConnectionProfile, Class) line: 622
>
SQMConnectionFactory(ConnectionFactory).createConnection(IConnectionProfile)
> line: 36
> SQMConnectionFactory.createConnection(IConnectionProfile) line: 45
> ConnectionFactoryAdapterProvider.createConnection(IConnectionProfile)
> line: 79
> CreateConnectionJob.run(IProgressMonitor) line: 55
> Worker.run() line: 58
>
> So my suggestion is to move out the open() from JDBCConnection(..).
>
> Regards
> Anthos
>