diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2013-07-30 09:01:01 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2013-07-30 09:03:28 +0200 |
commit | 63897351fc4fd31305bef43b649be74e2b6006c4 (patch) | |
tree | a10efdac968b8afcd7846b6adfd596dbf44dbeb9 | |
parent | 24add548ac163651de5e3372798f0d4db347de77 (diff) |
rhbz#989246: Honor user's JavaDriverClass override in mysql driver
Change-Id: Ic7dbddb5b17af0bd23864fd19ab2bd815969d008
-rw-r--r-- | connectivity/source/drivers/mysql/YDriver.cxx | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/connectivity/source/drivers/mysql/YDriver.cxx b/connectivity/source/drivers/mysql/YDriver.cxx index dd8c36db3a15..c02a54e1a50a 100644 --- a/connectivity/source/drivers/mysql/YDriver.cxx +++ b/connectivity/source/drivers/mysql/YDriver.cxx @@ -49,6 +49,15 @@ namespace connectivity } } + namespace + { + OUString getJavaDriverClass( + css::uno::Sequence<css::beans::PropertyValue> const & info) + { + return comphelper::NamedValueCollection(info).getOrDefault( + "JavaDriverClass", OUString("com.mysql.jdbc.Driver")); + } + } //==================================================================== //= ODriverDelegator @@ -156,9 +165,14 @@ namespace connectivity const PropertyValue* pEnd = pSupported + info.getLength(); aProps.reserve(info.getLength() + 5); + bool jdc = false; for (;pSupported != pEnd; ++pSupported) { aProps.push_back( *pSupported ); + if (pSupported->Name == "JavaDriverClass") + { + jdc = true; + } } if ( _eType == D_ODBC ) @@ -176,11 +190,14 @@ namespace connectivity } else if ( _eType == D_JDBC ) { - aProps.push_back( PropertyValue( - OUString("JavaDriverClass") - ,0 - ,makeAny(OUString("com.mysql.jdbc.Driver")) - ,PropertyState_DIRECT_VALUE) ); + if (!jdc) + { + aProps.push_back( PropertyValue( + OUString("JavaDriverClass") + ,0 + ,makeAny(OUString("com.mysql.jdbc.Driver")) + ,PropertyState_DIRECT_VALUE) ); + } } else { @@ -229,10 +246,7 @@ namespace connectivity } else { - ::comphelper::NamedValueCollection aSettings( info ); - OUString sDriverClass("com.mysql.jdbc.Driver"); - sDriverClass = aSettings.getOrDefault( "JavaDriverClass", sDriverClass ); - + OUString sDriverClass(getJavaDriverClass(info)); TJDBCDrivers::iterator aFind = m_aJdbcDrivers.find(sDriverClass); if ( aFind == m_aJdbcDrivers.end() ) aFind = m_aJdbcDrivers.insert(TJDBCDrivers::value_type(sDriverClass,lcl_loadDriver(m_xContext,sCuttedUrl))).first; @@ -318,7 +332,7 @@ namespace connectivity } //-------------------------------------------------------------------- - Sequence< DriverPropertyInfo > SAL_CALL ODriverDelegator::getPropertyInfo( const OUString& url, const Sequence< PropertyValue >& /*info*/ ) throw (SQLException, RuntimeException) + Sequence< DriverPropertyInfo > SAL_CALL ODriverDelegator::getPropertyInfo( const OUString& url, const Sequence< PropertyValue >& info ) throw (SQLException, RuntimeException) { ::std::vector< DriverPropertyInfo > aDriverInfo; if ( !acceptsURL(url) ) @@ -350,7 +364,7 @@ namespace connectivity OUString("JavaDriverClass") ,OUString("The JDBC driver class name.") ,sal_True - ,OUString("com.mysql.jdbc.Driver") + ,getJavaDriverClass(info) ,Sequence< OUString >()) ); } |