connectivity/source/drivers/mysql/YDriver.cxx |   36 ++++++++++++++++++--------
 1 file changed, 25 insertions(+), 11 deletions(-)

New commits:
commit 63897351fc4fd31305bef43b649be74e2b6006c4
Author: Stephan Bergmann <sberg...@redhat.com>
Date:   Tue Jul 30 09:01:01 2013 +0200

    rhbz#989246: Honor user's JavaDriverClass override in mysql driver
    
    Change-Id: Ic7dbddb5b17af0bd23864fd19ab2bd815969d008

diff --git a/connectivity/source/drivers/mysql/YDriver.cxx 
b/connectivity/source/drivers/mysql/YDriver.cxx
index dd8c36d..c02a54e 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 >())
                     );
         }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to