diff options
author | Noel Grandin <noel@peralex.com> | 2016-06-08 11:29:19 +0200 |
---|---|---|
committer | Noel Grandin <noelgrandin@gmail.com> | 2016-06-09 09:45:50 +0000 |
commit | aaebe3c45d3ceac7aba19ad8fd5b1cb621e337b3 (patch) | |
tree | 132aaabeefe2f47ab38d7296dede066fdce03e6c /connectivity | |
parent | a7415828b86a02216ffed44a4fa5b785f17d657c (diff) |
remove some manual ref-counting in connectivity
Change-Id: I0d00b4566c13817b296f237e993f4ce63ef0c664
Reviewed-on: https://gerrit.libreoffice.org/26053
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Diffstat (limited to 'connectivity')
21 files changed, 118 insertions, 158 deletions
diff --git a/connectivity/source/cpool/ZDriverWrapper.cxx b/connectivity/source/cpool/ZDriverWrapper.cxx index eaf2762a7190..d9df6fcb3a9d 100644 --- a/connectivity/source/cpool/ZDriverWrapper.cxx +++ b/connectivity/source/cpool/ZDriverWrapper.cxx @@ -34,10 +34,7 @@ namespace connectivity :m_pConnectionPool(_pPool) { OSL_ENSURE(_rxAggregateDriver.is(), "ODriverWrapper::ODriverWrapper: invalid aggregate!"); - OSL_ENSURE(m_pConnectionPool, "ODriverWrapper::ODriverWrapper: invalid connection pool!"); - - if (m_pConnectionPool) - m_pConnectionPool->acquire(); + OSL_ENSURE(m_pConnectionPool.is(), "ODriverWrapper::ODriverWrapper: invalid connection pool!"); osl_atomic_increment( &m_refCount ); if (_rxAggregateDriver.is()) @@ -61,10 +58,6 @@ namespace connectivity { if (m_xDriverAggregate.is()) m_xDriverAggregate->setDelegator(nullptr); - - if (m_pConnectionPool) - m_pConnectionPool->release(); - m_pConnectionPool = nullptr; } @@ -78,7 +71,7 @@ namespace connectivity Reference< XConnection > SAL_CALL ODriverWrapper::connect( const OUString& url, const Sequence< PropertyValue >& info ) throw (SQLException, RuntimeException, std::exception) { Reference< XConnection > xConnection; - if (m_pConnectionPool) + if (m_pConnectionPool.is()) // route this through the pool xConnection = m_pConnectionPool->getConnectionWithInfo( url, info ); else if (m_xDriver.is()) diff --git a/connectivity/source/cpool/ZDriverWrapper.hxx b/connectivity/source/cpool/ZDriverWrapper.hxx index baac4ceac590..da0d39e212d5 100644 --- a/connectivity/source/cpool/ZDriverWrapper.hxx +++ b/connectivity/source/cpool/ZDriverWrapper.hxx @@ -23,6 +23,7 @@ #include <com/sun/star/sdbc/XDriver.hpp> #include <cppuhelper/implbase.hxx> #include <osl/mutex.hxx> +#include <rtl/ref.hxx> #include <com/sun/star/uno/XAggregation.hpp> @@ -41,7 +42,8 @@ namespace connectivity m_xDriverAggregate; css::uno::Reference< css::sdbc::XDriver > m_xDriver; - OConnectionPool* m_pConnectionPool; + rtl::Reference<OConnectionPool> + m_pConnectionPool; public: /** creates a new wrapper for a driver diff --git a/connectivity/source/cpool/ZPoolCollection.cxx b/connectivity/source/cpool/ZPoolCollection.cxx index f14575703e9c..4e4c1e306b40 100644 --- a/connectivity/source/cpool/ZPoolCollection.cxx +++ b/connectivity/source/cpool/ZPoolCollection.cxx @@ -284,11 +284,9 @@ void OPoolCollection::clearConnectionPools(bool _bDispose) while(aIter != m_aPools.end()) { aIter->second->clear(_bDispose); - aIter->second->release(); - OUString sKeyValue = aIter->first; ++aIter; - m_aPools.erase(sKeyValue); } + m_aPools.clear(); } OConnectionPool* OPoolCollection::getConnectionPool(const OUString& _sImplName, @@ -298,16 +296,15 @@ OConnectionPool* OPoolCollection::getConnectionPool(const OUString& _sImplName, OConnectionPool *pRet = nullptr; OConnectionPools::const_iterator aFind = m_aPools.find(_sImplName); if (aFind != m_aPools.end()) - pRet = aFind->second; + pRet = aFind->second.get(); else if (_xDriver.is() && _xDriverNode.is()) { Reference<XPropertySet> xProp(_xDriverNode,UNO_QUERY); if(xProp.is()) xProp->addPropertyChangeListener(getEnableNodeName(),this); OConnectionPool* pConnectionPool = new OConnectionPool(_xDriver,_xDriverNode,m_xProxyFactory); - pConnectionPool->acquire(); aFind = m_aPools.insert(OConnectionPools::value_type(_sImplName,pConnectionPool)).first; - pRet = aFind->second; + pRet = aFind->second.get(); } OSL_ENSURE(pRet, "Could not query DriverManager from ConnectionPool!"); @@ -456,10 +453,8 @@ void SAL_CALL OPoolCollection::propertyChange( const css::beans::PropertyChangeE for(;aIter != m_aPools.end();++aIter) { aIter->second->clear(false); - aIter->second->release(); } m_aPools.clear(); - m_aPools = OConnectionPools(); } } else if(evt.Source.is()) @@ -484,10 +479,9 @@ void SAL_CALL OPoolCollection::propertyChange( const css::beans::PropertyChangeE // 2nd clear the connectionpool OConnectionPools::iterator aFind = m_aPools.find(sThisDriverName); - if(aFind != m_aPools.end() && aFind->second) + if(aFind != m_aPools.end()) { aFind->second->clear(false); - aFind->second->release(); m_aPools.erase(aFind); } } diff --git a/connectivity/source/cpool/ZPoolCollection.hxx b/connectivity/source/cpool/ZPoolCollection.hxx index 865e6b037b4e..ff31c6c38435 100644 --- a/connectivity/source/cpool/ZPoolCollection.hxx +++ b/connectivity/source/cpool/ZPoolCollection.hxx @@ -39,6 +39,7 @@ #include <com/sun/star/reflection/XProxyFactory.hpp> #include <comphelper/stl_types.hxx> #include <osl/mutex.hxx> +#include <rtl/ref.hxx> namespace connectivity { @@ -59,7 +60,7 @@ namespace connectivity typedef ::comphelper::OInterfaceCompare< css::sdbc::XDriver > ODriverCompare; - typedef std::map<OUString, OConnectionPool*> OConnectionPools; + typedef std::map<OUString, rtl::Reference<OConnectionPool>> OConnectionPools; typedef std::map< css::uno::Reference< css::sdbc::XDriver >, diff --git a/connectivity/source/drivers/dbase/DResultSet.cxx b/connectivity/source/drivers/dbase/DResultSet.cxx index 71b638a5ff1d..a93fde690981 100644 --- a/connectivity/source/drivers/dbase/DResultSet.cxx +++ b/connectivity/source/drivers/dbase/DResultSet.cxx @@ -94,14 +94,14 @@ sal_Bool SAL_CALL ODbaseResultSet::moveToBookmark( const Any& bookmark ) throw( m_bRowDeleted = m_bRowInserted = m_bRowUpdated = false; - return m_pTable && Move(IResultSetHelper::BOOKMARK,comphelper::getINT32(bookmark),true); + return m_pTable.is() && Move(IResultSetHelper::BOOKMARK,comphelper::getINT32(bookmark),true); } sal_Bool SAL_CALL ODbaseResultSet::moveRelativeToBookmark( const Any& bookmark, sal_Int32 rows ) throw( SQLException, RuntimeException, std::exception) { ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OResultSet_BASE::rBHelper.bDisposed); - if(!m_pTable) + if(!m_pTable.is()) return false; diff --git a/connectivity/source/drivers/file/FPreparedStatement.cxx b/connectivity/source/drivers/file/FPreparedStatement.cxx index bf8e38b8f1a7..20bb0ee0ddef 100644 --- a/connectivity/source/drivers/file/FPreparedStatement.cxx +++ b/connectivity/source/drivers/file/FPreparedStatement.cxx @@ -134,8 +134,8 @@ Reference< XResultSetMetaData > SAL_CALL OPreparedStatement::getMetaData( ) thr if(!m_xMetaData.is()) - m_xMetaData = new OResultSetMetaData(m_aSQLIterator.getSelectColumns(),m_aSQLIterator.getTables().begin()->first,m_pTable); - return m_xMetaData; + m_xMetaData = new OResultSetMetaData(m_aSQLIterator.getSelectColumns(),m_aSQLIterator.getTables().begin()->first,m_pTable.get()); + return m_xMetaData.get(); } @@ -191,7 +191,7 @@ Reference< XConnection > SAL_CALL OPreparedStatement::getConnection( ) throw(SQ ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OStatement_BASE::rBHelper.bDisposed); - return Reference< XConnection >(m_pConnection); + return Reference< XConnection >(m_pConnection.get()); } diff --git a/connectivity/source/drivers/file/FResultSet.cxx b/connectivity/source/drivers/file/FResultSet.cxx index 0a5ffb0a0e2d..f50835c30fc3 100644 --- a/connectivity/source/drivers/file/FResultSet.cxx +++ b/connectivity/source/drivers/file/FResultSet.cxx @@ -80,7 +80,6 @@ OResultSet::OResultSet(OStatement_Base* pStmt,OSQLParseTreeIterator& _aSQLIte ,m_aSkipDeletedSet(this) ,m_pFileSet(nullptr) ,m_pSortIndex(nullptr) - ,m_pTable(nullptr) ,m_pParseTree(pStmt->getParseTree()) ,m_pSQLAnalyzer(nullptr) ,m_aSQLIterator(_aSQLIterator) @@ -147,14 +146,10 @@ void OResultSet::disposing() m_xParamColumns = nullptr; m_xColsIdx.clear(); - Reference<XComponent> xComp = m_pTable; + Reference<XComponent> xComp = m_pTable.get(); if ( xComp.is() ) xComp->removeEventListener(this); - if(m_pTable) - { - m_pTable->release(); - m_pTable = nullptr; - } + m_pTable.clear(); m_pFileSet = nullptr; DELETEZ(m_pSortIndex); @@ -301,7 +296,7 @@ Reference< XResultSetMetaData > SAL_CALL OResultSet::getMetaData( ) throw(SQLEx if(!m_xMetaData.is()) - m_xMetaData = new OResultSetMetaData(m_xColumns,m_aSQLIterator.getTables().begin()->first,m_pTable); + m_xMetaData = new OResultSetMetaData(m_xColumns,m_aSQLIterator.getTables().begin()->first,m_pTable.get()); return m_xMetaData; } @@ -414,7 +409,7 @@ sal_Bool SAL_CALL OResultSet::first( ) throw(SQLException, RuntimeException, st { ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OResultSet_BASE::rBHelper.bDisposed); - return m_pTable && m_aSkipDeletedSet.skipDeleted(IResultSetHelper::FIRST,1,true); + return m_pTable.is() && m_aSkipDeletedSet.skipDeleted(IResultSetHelper::FIRST,1,true); } @@ -423,28 +418,28 @@ sal_Bool SAL_CALL OResultSet::last( ) throw(SQLException, RuntimeException, std // here I know definitely that I stand on the last record ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OResultSet_BASE::rBHelper.bDisposed); - return m_pTable && m_aSkipDeletedSet.skipDeleted(IResultSetHelper::LAST,1,true); + return m_pTable.is() && m_aSkipDeletedSet.skipDeleted(IResultSetHelper::LAST,1,true); } sal_Bool SAL_CALL OResultSet::absolute( sal_Int32 row ) throw(SQLException, RuntimeException, std::exception) { ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OResultSet_BASE::rBHelper.bDisposed); - return m_pTable && m_aSkipDeletedSet.skipDeleted(IResultSetHelper::ABSOLUTE1,row,true); + return m_pTable.is() && m_aSkipDeletedSet.skipDeleted(IResultSetHelper::ABSOLUTE1,row,true); } sal_Bool SAL_CALL OResultSet::relative( sal_Int32 row ) throw(SQLException, RuntimeException, std::exception) { ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OResultSet_BASE::rBHelper.bDisposed); - return m_pTable && m_aSkipDeletedSet.skipDeleted(IResultSetHelper::RELATIVE1,row,true); + return m_pTable.is() && m_aSkipDeletedSet.skipDeleted(IResultSetHelper::RELATIVE1,row,true); } sal_Bool SAL_CALL OResultSet::previous( ) throw(SQLException, RuntimeException, std::exception) { ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OResultSet_BASE::rBHelper.bDisposed); - return m_pTable && m_aSkipDeletedSet.skipDeleted(IResultSetHelper::PRIOR,0,true); + return m_pTable.is() && m_aSkipDeletedSet.skipDeleted(IResultSetHelper::PRIOR,0,true); } Reference< XInterface > SAL_CALL OResultSet::getStatement( ) throw(SQLException, RuntimeException, std::exception) @@ -498,7 +493,7 @@ sal_Bool SAL_CALL OResultSet::next( ) throw(SQLException, RuntimeException, std ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OResultSet_BASE::rBHelper.bDisposed); - return m_pTable && m_aSkipDeletedSet.skipDeleted(IResultSetHelper::NEXT,1,true); + return m_pTable.is() && m_aSkipDeletedSet.skipDeleted(IResultSetHelper::NEXT,1,true); } @@ -530,7 +525,7 @@ void SAL_CALL OResultSet::insertRow( ) throw(SQLException, RuntimeException, st checkDisposed(OResultSet_BASE::rBHelper.bDisposed); - if(!m_bInserted || !m_pTable) + if(!m_bInserted || !m_pTable.is()) throwFunctionSequenceException(*this); // we know that we append new rows at the end @@ -553,7 +548,7 @@ void SAL_CALL OResultSet::updateRow( ) throw(SQLException, RuntimeException, st ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OResultSet_BASE::rBHelper.bDisposed); - if(!m_pTable || m_pTable->isReadOnly()) + if(!m_pTable.is() || m_pTable->isReadOnly()) lcl_throwError(STR_TABLE_READONLY,*this); m_bRowUpdated = m_pTable->UpdateRow(*m_aInsertRow, m_aRow,m_xColsIdx); @@ -567,8 +562,7 @@ void SAL_CALL OResultSet::deleteRow() throw(SQLException, RuntimeException, std: ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OResultSet_BASE::rBHelper.bDisposed); - - if(!m_pTable || m_pTable->isReadOnly()) + if(!m_pTable.is() || m_pTable->isReadOnly()) lcl_throwError(STR_TABLE_READONLY,*this); if (m_bShowDeleted) lcl_throwError(STR_DELETE_ROW,*this); @@ -613,7 +607,7 @@ void SAL_CALL OResultSet::moveToInsertRow( ) throw(SQLException, RuntimeExcepti ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OResultSet_BASE::rBHelper.bDisposed); - if(!m_pTable || m_pTable->isReadOnly()) + if(!m_pTable.is() || m_pTable->isReadOnly()) lcl_throwError(STR_TABLE_READONLY,*this); m_bInserted = true; @@ -777,7 +771,7 @@ bool OResultSet::ExecuteRow(IResultSetHelper::Movement eFirstCursorPosition, IResultSetHelper::Movement eCursorPosition = eFirstCursorPosition; sal_Int32 nOffset = nFirstOffset; - if (!m_pTable) + if (!m_pTable.is()) return false; const OSQLColumns & rTableCols = *(m_pTable->getTableColumns()); @@ -791,7 +785,7 @@ again: return false; } - if (!m_pTable || !m_pTable->seekRow(eCursorPosition, nOffset, m_nFilePos)) + if (!m_pTable.is() || !m_pTable->seekRow(eCursorPosition, nOffset, m_nFilePos)) { return false; } @@ -1180,7 +1174,7 @@ void OResultSet::sortRows() bool OResultSet::OpenImpl() { OSL_ENSURE(m_pSQLAnalyzer,"No analyzer set with setSqlAnalyzer!"); - if(!m_pTable) + if(!m_pTable.is()) { const OSQLTables& rTabs = m_aSQLIterator.getTables(); if (rTabs.empty() || !rTabs.begin()->second.is()) @@ -1570,8 +1564,7 @@ void OResultSet::doTableSpecials(const OSQLTable& _xTable) { Reference<css::lang::XUnoTunnel> xTunnel(_xTable, UNO_QUERY_THROW); m_pTable = reinterpret_cast< OFileTable* >(xTunnel->getSomething(OFileTable::getUnoTunnelImplementationId())); - assert(m_pTable); - m_pTable->acquire(); + assert(m_pTable.is()); } void OResultSet::clearInsertRow() @@ -1624,11 +1617,10 @@ bool OResultSet::isRowDeleted() const void SAL_CALL OResultSet::disposing( const EventObject& Source ) throw (RuntimeException, std::exception) { - Reference<XPropertySet> xProp = m_pTable; - if(m_pTable && Source.Source == xProp) + Reference<XPropertySet> xProp = m_pTable.get(); + if(m_pTable.is() && Source.Source == xProp) { - m_pTable->release(); - m_pTable = nullptr; + m_pTable.clear(); } } diff --git a/connectivity/source/drivers/file/FStatement.cxx b/connectivity/source/drivers/file/FStatement.cxx index 287c4fbf4e28..002f5fd6dfb7 100644 --- a/connectivity/source/drivers/file/FStatement.cxx +++ b/connectivity/source/drivers/file/FStatement.cxx @@ -60,7 +60,6 @@ OStatement_Base::OStatement_Base(OConnection* _pConnection ) ,m_pConnection(_pConnection) ,m_pParseTree(nullptr) ,m_pSQLAnalyzer(nullptr) - ,m_pTable(nullptr) ,m_nMaxFieldSize(0) ,m_nMaxRows(0) ,m_nQueryTimeOut(0) @@ -70,8 +69,6 @@ OStatement_Base::OStatement_Base(OConnection* _pConnection ) ,m_nResultSetConcurrency(ResultSetConcurrency::UPDATABLE) ,m_bEscapeProcessing(true) { - m_pConnection->acquire(); - sal_Int32 nAttrib = 0; registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_CURSORNAME), PROPERTY_ID_CURSORNAME, nAttrib,&m_aCursorName, ::cppu::UnoType<OUString>::get()); @@ -121,17 +118,9 @@ void OStatement_BASE2::disposing() m_aSQLIterator.dispose(); - if(m_pTable) - { - m_pTable->release(); - m_pTable = nullptr; - } + m_pTable.clear(); - if (m_pConnection) - { - m_pConnection->release(); - m_pConnection = nullptr; - } + m_pConnection.clear(); dispose_ChildImpl(); @@ -279,7 +268,7 @@ Reference< XResultSet > SAL_CALL OStatement::executeQuery( const OUString& sql ) Reference< XConnection > SAL_CALL OStatement::getConnection( ) throw(SQLException, RuntimeException, std::exception) { - return Reference< XConnection >(m_pConnection); + return Reference< XConnection >(m_pConnection.get()); } sal_Int32 SAL_CALL OStatement::executeUpdate( const OUString& sql ) throw(SQLException, RuntimeException, std::exception) @@ -321,7 +310,7 @@ Any SAL_CALL OStatement::queryInterface( const Type & rType ) throw(RuntimeExcep OSQLAnalyzer* OStatement_Base::createAnalyzer() { - return new OSQLAnalyzer(m_pConnection); + return new OSQLAnalyzer(m_pConnection.get()); } void OStatement_Base::anylizeSQL() @@ -424,14 +413,10 @@ void OStatement_Base::construct(const OUString& sql) throw(SQLException, Runtim Reference< css::lang::XUnoTunnel> xTunnel(rTabs.begin()->second,UNO_QUERY); if(xTunnel.is()) { - if(m_pTable) - m_pTable->release(); m_pTable = reinterpret_cast<OFileTable*>(xTunnel->getSomething(OFileTable::getUnoTunnelImplementationId())); - if(m_pTable) - m_pTable->acquire(); } - OSL_ENSURE(m_pTable,"No table!"); - if ( m_pTable ) + OSL_ENSURE(m_pTable.is(),"No table!"); + if ( m_pTable.is() ) m_xColNames = m_pTable->getColumns(); Reference<XIndexAccess> xNames(m_xColNames,UNO_QUERY); // set the binding of the resultrow diff --git a/connectivity/source/drivers/jdbc/JStatement.cxx b/connectivity/source/drivers/jdbc/JStatement.cxx index 004d61d086d6..533641ddf25f 100644 --- a/connectivity/source/drivers/jdbc/JStatement.cxx +++ b/connectivity/source/drivers/jdbc/JStatement.cxx @@ -68,7 +68,6 @@ java_sql_Statement_Base::java_sql_Statement_Base( JNIEnv * pEnv, java_sql_Connec ,m_nResultSetType(ResultSetType::FORWARD_ONLY) ,m_bEscapeProcessing(true) { - m_pConnection->acquire(); } @@ -88,9 +87,7 @@ void SAL_CALL OStatement_BASE2::disposing() } ::comphelper::disposeComponent(m_xGeneratedStatement); - if (m_pConnection) - m_pConnection->release(); - m_pConnection = nullptr; + m_pConnection.clear(); dispose_ChildImpl(); java_sql_Statement_Base::disposing(); @@ -120,7 +117,7 @@ void SAL_CALL OStatement_BASE2::release() throw() Any SAL_CALL java_sql_Statement_Base::queryInterface( const Type & rType ) throw(RuntimeException, std::exception) { - if ( m_pConnection && !m_pConnection->isAutoRetrievingEnabled() && rType == cppu::UnoType<XGeneratedResultSet>::get()) + if ( m_pConnection.is() && !m_pConnection->isAutoRetrievingEnabled() && rType == cppu::UnoType<XGeneratedResultSet>::get()) return Any(); Any aRet( java_sql_Statement_BASE::queryInterface(rType) ); return aRet.hasValue() ? aRet : OPropertySetHelper::queryInterface(rType); @@ -133,7 +130,7 @@ Sequence< Type > SAL_CALL java_sql_Statement_Base::getTypes( ) throw(RuntimeExc cppu::UnoType<css::beans::XPropertySet>::get()); Sequence< Type > aOldTypes = java_sql_Statement_BASE::getTypes(); - if ( m_pConnection && !m_pConnection->isAutoRetrievingEnabled() ) + if ( m_pConnection.is() && !m_pConnection->isAutoRetrievingEnabled() ) { ::std::remove(aOldTypes.getArray(),aOldTypes.getArray() + aOldTypes.getLength(), cppu::UnoType<XGeneratedResultSet>::get()); @@ -166,8 +163,8 @@ Reference< XResultSet > SAL_CALL java_sql_Statement_Base::getGeneratedValues( ) Reference< XResultSet > xRes; if ( !out ) { - OSL_ENSURE( m_pConnection && m_pConnection->isAutoRetrievingEnabled(),"Illegal call here. isAutoRetrievingEnabled is false!"); - if ( m_pConnection ) + OSL_ENSURE( m_pConnection.is() && m_pConnection->isAutoRetrievingEnabled(),"Illegal call here. isAutoRetrievingEnabled is false!"); + if ( m_pConnection.is() ) { OUString sStmt = m_pConnection->getTransformedGeneratedStatement(m_sSqlStatement); if ( !sStmt.isEmpty() ) @@ -238,7 +235,7 @@ sal_Bool SAL_CALL java_sql_Statement_Base::execute( const OUString& sql ) throw( jdbc::LocalRef< jstring > str( t.env(), convertwchar_tToJavaString( t.pEnv, sql ) ); { jdbc::ContextClassLoaderScope ccl( t.env(), - m_pConnection ? m_pConnection->getDriverClassLoader() : jdbc::GlobalRef< jobject >(), + m_pConnection.is() ? m_pConnection->getDriverClassLoader() : jdbc::GlobalRef< jobject >(), m_aLogger, *this ); @@ -273,7 +270,7 @@ Reference< XResultSet > SAL_CALL java_sql_Statement_Base::executeQuery( const OU jdbc::LocalRef< jstring > str( t.env(), convertwchar_tToJavaString( t.pEnv, sql ) ); { jdbc::ContextClassLoaderScope ccl( t.env(), - m_pConnection ? m_pConnection->getDriverClassLoader() : jdbc::GlobalRef< jobject >(), + m_pConnection.is() ? m_pConnection->getDriverClassLoader() : jdbc::GlobalRef< jobject >(), m_aLogger, *this ); @@ -290,7 +287,7 @@ Reference< XConnection > SAL_CALL java_sql_Statement_Base::getConnection( ) thr { ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed); - return Reference< XConnection >(m_pConnection); + return Reference< XConnection >(m_pConnection.get()); } diff --git a/connectivity/source/drivers/jdbc/PreparedStatement.cxx b/connectivity/source/drivers/jdbc/PreparedStatement.cxx index 98e13883ce45..1762c6229528 100644 --- a/connectivity/source/drivers/jdbc/PreparedStatement.cxx +++ b/connectivity/source/drivers/jdbc/PreparedStatement.cxx @@ -142,7 +142,7 @@ void SAL_CALL java_sql_PreparedStatement::setString( sal_Int32 parameterIndex, c css::uno::Reference< css::sdbc::XConnection > SAL_CALL java_sql_PreparedStatement::getConnection( ) throw(css::sdbc::SQLException, css::uno::RuntimeException, std::exception) { - return Reference< XConnection >(m_pConnection); + return Reference< XConnection >(m_pConnection.get()); } diff --git a/connectivity/source/drivers/mork/MPreparedStatement.cxx b/connectivity/source/drivers/mork/MPreparedStatement.cxx index e092f223501e..5376e0ea2402 100644 --- a/connectivity/source/drivers/mork/MPreparedStatement.cxx +++ b/connectivity/source/drivers/mork/MPreparedStatement.cxx @@ -179,7 +179,7 @@ Reference< XConnection > SAL_CALL OPreparedStatement::getConnection( ) throw(SQ ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OCommonStatement_IBASE::rBHelper.bDisposed); - return Reference< XConnection >(m_pConnection); + return Reference< XConnection >(m_pConnection.get()); } diff --git a/connectivity/source/drivers/mork/MStatement.cxx b/connectivity/source/drivers/mork/MStatement.cxx index 3a4279a01ffa..1a12d4bc6aea 100644 --- a/connectivity/source/drivers/mork/MStatement.cxx +++ b/connectivity/source/drivers/mork/MStatement.cxx @@ -69,7 +69,6 @@ OCommonStatement::OCommonStatement(OConnection* _pConnection ) { m_xDBMetaData = _pConnection->getMetaData(); m_pParseTree = nullptr; - m_pConnection->acquire(); } @@ -85,9 +84,7 @@ void OCommonStatement::disposing() clearWarnings(); clearCachedResultSet(); - if (m_pConnection) - m_pConnection->release(); - m_pConnection = nullptr; + m_pConnection.clear(); m_pSQLIterator->dispose(); delete m_pParseTree; @@ -276,7 +273,7 @@ Reference< XConnection > SAL_CALL OCommonStatement::getConnection( ) throw(SQLE checkDisposed(OCommonStatement_IBASE::rBHelper.bDisposed); // just return our connection here - return Reference< XConnection >(m_pConnection); + return Reference< XConnection >(m_pConnection.get()); } Any SAL_CALL OStatement::queryInterface( const Type & rType ) throw(RuntimeException, std::exception) diff --git a/connectivity/source/drivers/mork/MStatement.hxx b/connectivity/source/drivers/mork/MStatement.hxx index 0f23533f317e..4f5d375104b1 100644 --- a/connectivity/source/drivers/mork/MStatement.hxx +++ b/connectivity/source/drivers/mork/MStatement.hxx @@ -64,7 +64,7 @@ namespace connectivity // for this Statement OTable* m_pTable; - OConnection* m_pConnection; // The owning Connection object + rtl::Reference<OConnection> m_pConnection; // The owning Connection object OValueRow m_aRow; @@ -130,7 +130,7 @@ namespace connectivity public: // other methods - OConnection* getOwnConnection() const { return m_pConnection;} + OConnection* getOwnConnection() const { return m_pConnection.get(); } explicit OCommonStatement(OConnection* _pConnection ); using OCommonStatement_IBASE::operator css::uno::Reference< css::uno::XInterface >; diff --git a/connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx b/connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx index 8160b8a1cd1a..d10f6c99bfa4 100644 --- a/connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx +++ b/connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx @@ -63,12 +63,11 @@ ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet(OConnection* _pConnection ,m_bWasNull(true) ,m_bEOF(false) { - OSL_ENSURE(m_pConnection,"ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet: No parent set!"); + OSL_ENSURE(m_pConnection.is(),"ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet: No parent set!"); if( SQL_NULL_HANDLE == m_aStatementHandle ) throw RuntimeException(); osl_atomic_increment( &m_refCount ); - m_pConnection->acquire(); m_pRowStatusArray = new SQLUSMALLINT[1]; // the default value osl_atomic_decrement( &m_refCount ); // allocBuffer(); @@ -95,8 +94,8 @@ void ODatabaseMetaDataResultSet::disposing() m_pConnection->freeStatementHandle(m_aStatementHandle); m_aStatement = nullptr; -m_xMetaData.clear(); - m_pConnection->release(); + m_xMetaData.clear(); + m_pConnection.clear(); } Any SAL_CALL ODatabaseMetaDataResultSet::queryInterface( const Type & rType ) throw(RuntimeException, std::exception) @@ -175,7 +174,7 @@ template < typename T, SQLSMALLINT sqlTypeId > T ODatabaseMetaDataResultSet::get T nVal = 0; if(columnIndex <= m_nDriverColumnCount) { - getValue<T>(m_pConnection, m_aStatementHandle, columnIndex, sqlTypeId, m_bWasNull, **this, nVal); + getValue<T>(m_pConnection.get(), m_aStatementHandle, columnIndex, sqlTypeId, m_bWasNull, **this, nVal); if ( !m_aValueRange.empty() ) { @@ -220,7 +219,7 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::getBoolean( sal_Int32 columnIndex case DataType::BIT: { sal_Int8 nValue = 0; - OTools::getValue(m_pConnection,m_aStatementHandle,columnIndex,SQL_C_BIT,m_bWasNull,**this,&nValue,sizeof nValue); + OTools::getValue(m_pConnection.get(),m_aStatementHandle,columnIndex,SQL_C_BIT,m_bWasNull,**this,&nValue,sizeof nValue); bRet = nValue != 0; } break; @@ -255,11 +254,11 @@ Sequence< sal_Int8 > SAL_CALL ODatabaseMetaDataResultSet::getBytes( sal_Int32 co case DataType::VARCHAR: case DataType::LONGVARCHAR: { - OUString aRet = OTools::getStringValue(m_pConnection,m_aStatementHandle,columnIndex,SQL_C_BINARY,m_bWasNull,**this,m_nTextEncoding); + OUString aRet = OTools::getStringValue(m_pConnection.get(),m_aStatementHandle,columnIndex,SQL_C_BINARY,m_bWasNull,**this,m_nTextEncoding); return Sequence<sal_Int8>(reinterpret_cast<const sal_Int8*>(aRet.getStr()),sizeof(sal_Unicode)*aRet.getLength()); } } - return OTools::getBytesValue(m_pConnection,m_aStatementHandle,columnIndex,SQL_C_BINARY,m_bWasNull,**this); + return OTools::getBytesValue(m_pConnection.get(),m_aStatementHandle,columnIndex,SQL_C_BINARY,m_bWasNull,**this); } else m_bWasNull = true; @@ -280,7 +279,7 @@ css::util::Date SAL_CALL ODatabaseMetaDataResultSet::getDate( sal_Int32 columnIn aDate.day = 0; aDate.month = 0; aDate.year = 0; - OTools::getValue(m_pConnection,m_aStatementHandle,columnIndex,m_pConnection->useOldDateFormat() ? SQL_C_DATE : SQL_C_TYPE_DATE,m_bWasNull,**this,&aDate,sizeof aDate); + OTools::getValue(m_pConnection.get(),m_aStatementHandle,columnIndex,m_pConnection->useOldDateFormat() ? SQL_C_DATE : SQL_C_TYPE_DATE,m_bWasNull,**this,&aDate,sizeof aDate); return Date(aDate.day,aDate.month,aDate.year); } else @@ -299,7 +298,7 @@ double SAL_CALL ODatabaseMetaDataResultSet::getDouble( sal_Int32 columnIndex ) t columnIndex = mapColumn(columnIndex); double nValue(0.0); if(columnIndex <= m_nDriverColumnCount) - OTools::getValue(m_pConnection,m_aStatementHandle,columnIndex,SQL_C_DOUBLE,m_bWasNull,**this,&nValue,sizeof nValue); + OTools::getValue(m_pConnection.get(),m_aStatementHandle,columnIndex,SQL_C_DOUBLE,m_bWasNull,**this,&nValue,sizeof nValue); else m_bWasNull = true; return nValue; @@ -316,7 +315,7 @@ float SAL_CALL ODatabaseMetaDataResultSet::getFloat( sal_Int32 columnIndex ) thr columnIndex = mapColumn(columnIndex); float nVal(0); if(columnIndex <= m_nDriverColumnCount) - OTools::getValue(m_pConnection,m_aStatementHandle,columnIndex,SQL_C_FLOAT,m_bWasNull,**this,&nVal,sizeof nVal); + OTools::getValue(m_pConnection.get(),m_aStatementHandle,columnIndex,SQL_C_FLOAT,m_bWasNull,**this,&nVal,sizeof nVal); else m_bWasNull = true; return nVal; @@ -345,7 +344,9 @@ Reference< XResultSetMetaData > SAL_CALL ODatabaseMetaDataResultSet::getMetaData { checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed); ::osl::MutexGuard aGuard( m_aMutex ); - return m_xMetaData.is() ? m_xMetaData : (m_xMetaData = new OResultSetMetaData(m_pConnection,m_aStatementHandle)); + if (!m_xMetaData.is()) + m_xMetaData = new OResultSetMetaData(m_pConnection.get(),m_aStatementHandle); + return m_xMetaData; } Reference< XArray > SAL_CALL ODatabaseMetaDataResultSet::getArray( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException, std::exception) @@ -397,7 +398,7 @@ OUString SAL_CALL ODatabaseMetaDataResultSet::getString( sal_Int32 columnIndex ) columnIndex = mapColumn(columnIndex); OUString aVal; if(columnIndex <= m_nDriverColumnCount) - aVal = OTools::getStringValue(m_pConnection,m_aStatementHandle,columnIndex,impl_getColumnType_nothrow(columnIndex),m_bWasNull,**this,m_nTextEncoding); + aVal = OTools::getStringValue(m_pConnection.get(),m_aStatementHandle,columnIndex,impl_getColumnType_nothrow(columnIndex),m_bWasNull,**this,m_nTextEncoding); else m_bWasNull = true; @@ -415,7 +416,7 @@ css::util::Time SAL_CALL ODatabaseMetaDataResultSet::getTime( sal_Int32 columnIn columnIndex = mapColumn(columnIndex); TIME_STRUCT aTime={0,0,0}; if(columnIndex <= m_nDriverColumnCount) - OTools::getValue(m_pConnection,m_aStatementHandle,columnIndex,m_pConnection->useOldDateFormat() ? SQL_C_TIME : SQL_C_TYPE_TIME,m_bWasNull,**this,&aTime,sizeof aTime); + OTools::getValue(m_pConnection.get(),m_aStatementHandle,columnIndex,m_pConnection->useOldDateFormat() ? SQL_C_TIME : SQL_C_TYPE_TIME,m_bWasNull,**this,&aTime,sizeof aTime); else m_bWasNull = true; return Time(0, aTime.second,aTime.minute,aTime.hour, false); @@ -432,7 +433,7 @@ css::util::DateTime SAL_CALL ODatabaseMetaDataResultSet::getTimestamp( sal_Int32 columnIndex = mapColumn(columnIndex); TIMESTAMP_STRUCT aTime={0,0,0,0,0,0,0}; if(columnIndex <= m_nDriverColumnCount) - OTools::getValue(m_pConnection,m_aStatementHandle,columnIndex,m_pConnection->useOldDateFormat() ? SQL_C_TIMESTAMP : SQL_C_TYPE_TIMESTAMP, m_bWasNull, **this, &aTime, sizeof aTime); + OTools::getValue(m_pConnection.get(),m_aStatementHandle,columnIndex,m_pConnection->useOldDateFormat() ? SQL_C_TIMESTAMP : SQL_C_TYPE_TIMESTAMP, m_bWasNull, **this, &aTime, sizeof aTime); else m_bWasNull = true; return DateTime(aTime.fraction, aTime.second, aTime.minute, aTime.hour, @@ -515,7 +516,7 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::first( ) throw(SQLException, Runt m_bEOF = false; m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_FIRST,0); - OTools::ThrowException(m_pConnection,m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this); bool bRet = ( m_nCurrentFetchState == SQL_SUCCESS || m_nCurrentFetchState == SQL_SUCCESS_WITH_INFO ); if( bRet ) m_nRowPos = 1; @@ -530,7 +531,7 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::last( ) throw(SQLException, Runti m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_LAST,0); - OTools::ThrowException(m_pConnection,m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this); // here I know definitely that I stand on the last record bool bRet = ( m_nCurrentFetchState == SQL_SUCCESS || m_nCurrentFetchState == SQL_SUCCESS_WITH_INFO ); if( bRet ) @@ -547,7 +548,7 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::absolute( sal_Int32 row ) throw(SQ m_bEOF = false; m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_ABSOLUTE,row); - OTools::ThrowException(m_pConnection,m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this); bool bRet = m_nCurrentFetchState == SQL_SUCCESS || m_nCurrentFetchState == SQL_SUCCESS_WITH_INFO; if(bRet) m_nRowPos = row; @@ -563,7 +564,7 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::relative( sal_Int32 row ) throw(SQ m_bEOF = false; m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_RELATIVE,row); - OTools::ThrowException(m_pConnection,m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this); bool bRet = m_nCurrentFetchState == SQL_SUCCESS || m_nCurrentFetchState == SQL_SUCCESS_WITH_INFO; if(bRet) m_nRowPos += row; @@ -579,7 +580,7 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::previous( ) throw(SQLException, R m_bEOF = false; m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_PRIOR,0); - OTools::ThrowException(m_pConnection,m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this); bool bRet = m_nCurrentFetchState == SQL_SUCCESS || m_nCurrentFetchState == SQL_SUCCESS_WITH_INFO; if(bRet) --m_nRowPos; @@ -646,7 +647,7 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::next( ) throw(SQLException, Runti SQLRETURN nOldFetchStatus = m_nCurrentFetchState; // m_nCurrentFetchState = N3SQLFetchScroll(m_aStatementHandle,SQL_FETCH_NEXT,0); m_nCurrentFetchState = N3SQLFetch(m_aStatementHandle); - OTools::ThrowException(m_pConnection,m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),m_nCurrentFetchState,m_aStatementHandle,SQL_HANDLE_STMT,*this); bool bRet = m_nCurrentFetchState == SQL_SUCCESS || m_nCurrentFetchState == SQL_SUCCESS_WITH_INFO; if(bRet || ( m_nCurrentFetchState == SQL_NO_DATA && nOldFetchStatus != SQL_NO_DATA ) ) ++m_nRowPos; @@ -827,7 +828,7 @@ void ODatabaseMetaDataResultSet::openTypeInfo() throw(SQLException, RuntimeExcep m_aValueRange[2] = aMap; - OTools::ThrowException(m_pConnection,N3SQLGetTypeInfo(m_aStatementHandle, SQL_ALL_TYPES),m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),N3SQLGetTypeInfo(m_aStatementHandle, SQL_ALL_TYPES),m_aStatementHandle,SQL_HANDLE_STMT,*this); checkColumnCount(); } @@ -875,7 +876,7 @@ void ODatabaseMetaDataResultSet::openTables(const Any& catalog, const OUString& reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pCOL)), pCOL ? SQL_NTS : 0); - OTools::ThrowException(m_pConnection,nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); checkColumnCount(); } @@ -887,12 +888,12 @@ void ODatabaseMetaDataResultSet::openTablesTypes( ) throw(SQLException, RuntimeE nullptr,0, nullptr,0, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(SQL_ALL_TABLE_TYPES)),SQL_NTS); - OTools::ThrowException(m_pConnection,nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); m_aColMapping.clear(); m_aColMapping.push_back(-1); m_aColMapping.push_back(4); - m_xMetaData = new OResultSetMetaData(m_pConnection,m_aStatementHandle,m_aColMapping); + m_xMetaData = new OResultSetMetaData(m_pConnection.get(),m_aStatementHandle,m_aColMapping); checkColumnCount(); } @@ -904,12 +905,12 @@ void ODatabaseMetaDataResultSet::openCatalogs() throw(SQLException, RuntimeExcep reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>("")),SQL_NTS, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>("")),SQL_NTS); - OTools::ThrowException(m_pConnection,nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); m_aColMapping.clear(); m_aColMapping.push_back(-1); m_aColMapping.push_back(1); - m_xMetaData = new OResultSetMetaData(m_pConnection,m_aStatementHandle,m_aColMapping); + m_xMetaData = new OResultSetMetaData(m_pConnection.get(),m_aStatementHandle,m_aColMapping); checkColumnCount(); } @@ -920,12 +921,12 @@ void ODatabaseMetaDataResultSet::openSchemas() throw(SQLException, RuntimeExcept reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(SQL_ALL_SCHEMAS)),SQL_NTS, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>("")),SQL_NTS, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>("")),SQL_NTS); - OTools::ThrowException(m_pConnection,nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); m_aColMapping.clear(); m_aColMapping.push_back(-1); m_aColMapping.push_back(2); - m_xMetaData = new OResultSetMetaData(m_pConnection,m_aStatementHandle,m_aColMapping); + m_xMetaData = new OResultSetMetaData(m_pConnection.get(),m_aStatementHandle,m_aColMapping); checkColumnCount(); } @@ -959,7 +960,7 @@ void ODatabaseMetaDataResultSet::openColumnPrivileges( const Any& catalog, cons reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0 , reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pCOL)), SQL_NTS); - OTools::ThrowException(m_pConnection,nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); checkColumnCount(); } @@ -994,7 +995,7 @@ void ODatabaseMetaDataResultSet::openColumns( const Any& catalog, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pCOL)), SQL_NTS); - OTools::ThrowException(m_pConnection,nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); TInt2IntMap aMap; aMap[SQL_BIT] = DataType::BIT; aMap[SQL_TINYINT] = DataType::TINYINT; @@ -1062,7 +1063,7 @@ void ODatabaseMetaDataResultSet::openProcedureColumns( const Any& catalog, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pCOL)), SQL_NTS); - OTools::ThrowException(m_pConnection,nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); checkColumnCount(); } @@ -1093,7 +1094,7 @@ void ODatabaseMetaDataResultSet::openProcedures(const Any& catalog, const OUStri reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKQ)), (catalog.hasValue() && !aPKQ.isEmpty()) ? SQL_NTS : 0, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0 , reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS); - OTools::ThrowException(m_pConnection,nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); checkColumnCount(); } @@ -1138,7 +1139,7 @@ void ODatabaseMetaDataResultSet::openSpecialColumns(bool _bRowVer,const Any& cat reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS, (SQLSMALLINT)scope, nullable ? SQL_NULLABLE : SQL_NO_NULLS); - OTools::ThrowException(m_pConnection,nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); checkColumnCount(); } @@ -1181,7 +1182,7 @@ void ODatabaseMetaDataResultSet::openForeignKeys( const Any& catalog, const OUSt reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pFKO)), pFKO ? SQL_NTS : 0, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pFKN)), SQL_NTS ); - OTools::ThrowException(m_pConnection,nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); checkColumnCount(); } @@ -1223,7 +1224,7 @@ void ODatabaseMetaDataResultSet::openPrimaryKeys(const Any& catalog, const OUStr reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKQ)), (catalog.hasValue() && !aPKQ.isEmpty()) ? SQL_NTS : 0, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0 , reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS); - OTools::ThrowException(m_pConnection,nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); checkColumnCount(); } @@ -1252,7 +1253,7 @@ void ODatabaseMetaDataResultSet::openTablePrivileges(const Any& catalog, const O reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKQ)), (catalog.hasValue() && !aPKQ.isEmpty()) ? SQL_NTS : 0, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKO)), pPKO ? SQL_NTS : 0 , reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS); - OTools::ThrowException(m_pConnection,nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); checkColumnCount(); } @@ -1284,14 +1285,14 @@ void ODatabaseMetaDataResultSet::openIndexInfo( const Any& catalog, const OUStri reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(pPKN)), SQL_NTS, unique ? SQL_INDEX_UNIQUE : SQL_INDEX_ALL, approximate ? 1 : 0); - OTools::ThrowException(m_pConnection,nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nRetcode,m_aStatementHandle,SQL_HANDLE_STMT,*this); checkColumnCount(); } void ODatabaseMetaDataResultSet::checkColumnCount() { sal_Int16 nNumResultCols=0; - OTools::ThrowException(m_pConnection,N3SQLNumResultCols(m_aStatementHandle,&nNumResultCols),m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),N3SQLNumResultCols(m_aStatementHandle,&nNumResultCols),m_aStatementHandle,SQL_HANDLE_STMT,*this); m_nDriverColumnCount = nNumResultCols; } @@ -1300,7 +1301,7 @@ SWORD ODatabaseMetaDataResultSet::impl_getColumnType_nothrow(sal_Int32 columnInd { ::std::map<sal_Int32,SWORD>::iterator aFind = m_aODBCColumnTypes.find(columnIndex); if ( aFind == m_aODBCColumnTypes.end() ) - aFind = m_aODBCColumnTypes.insert(::std::map<sal_Int32,SWORD>::value_type(columnIndex,OResultSetMetaData::getColumnODBCType(m_pConnection,m_aStatementHandle,*this,columnIndex))).first; + aFind = m_aODBCColumnTypes.insert(::std::map<sal_Int32,SWORD>::value_type(columnIndex,OResultSetMetaData::getColumnODBCType(m_pConnection.get(),m_aStatementHandle,*this,columnIndex))).first; return aFind->second; } diff --git a/connectivity/source/drivers/odbc/OPreparedStatement.cxx b/connectivity/source/drivers/odbc/OPreparedStatement.cxx index 3ed72e2cbddc..6b33d555c7f2 100644 --- a/connectivity/source/drivers/odbc/OPreparedStatement.cxx +++ b/connectivity/source/drivers/odbc/OPreparedStatement.cxx @@ -171,7 +171,7 @@ sal_Bool SAL_CALL OPreparedStatement::execute( ) throw(SQLException, RuntimeExc { SQLRETURN nReturn = N3SQLExecute(m_aStatementHandle); - OTools::ThrowException(m_pConnection,nReturn,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nReturn,m_aStatementHandle,SQL_HANDLE_STMT,*this); bool needData = nReturn == SQL_NEED_DATA; // Now loop while more data is needed (i.e. a data-at- @@ -247,7 +247,7 @@ Reference< XConnection > SAL_CALL OPreparedStatement::getConnection( ) throw(SQ ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OStatement_BASE::rBHelper.bDisposed); - return Reference< XConnection >(m_pConnection); + return Reference< XConnection >(m_pConnection.get()); } @@ -409,7 +409,7 @@ void OPreparedStatement::setParameter(const sal_Int32 parameterIndex, const sal_ _nDataAllocLen, &rDataLen); - OTools::ThrowException(m_pConnection, nRetcode, m_aStatementHandle, SQL_HANDLE_STMT, *this); + OTools::ThrowException(m_pConnection.get(), nRetcode, m_aStatementHandle, SQL_HANDLE_STMT, *this); } void SAL_CALL OPreparedStatement::setByte( const sal_Int32 parameterIndex, const sal_Int8 x ) throw(SQLException, RuntimeException, std::exception) @@ -546,7 +546,7 @@ void SAL_CALL OPreparedStatement::setNull( sal_Int32 parameterIndex, const sal_I 0, lenBuf ); - OTools::ThrowException(m_pConnection,nReturn,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nReturn,m_aStatementHandle,SQL_HANDLE_STMT,*this); } @@ -917,7 +917,7 @@ void OPreparedStatement::prepareStatement() OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!"); OString aSql(OUStringToOString(m_sSqlStatement,getOwnConnection()->getTextEncoding())); SQLRETURN nReturn = N3SQLPrepare(m_aStatementHandle, reinterpret_cast<SDB_ODBC_CHAR *>(const_cast<char *>(aSql.getStr())), aSql.getLength()); - OTools::ThrowException(m_pConnection,nReturn,m_aStatementHandle,SQL_HANDLE_STMT,*this); + OTools::ThrowException(m_pConnection.get(),nReturn,m_aStatementHandle,SQL_HANDLE_STMT,*this); m_bPrepared = true; initBoundParam(); } diff --git a/connectivity/source/drivers/odbc/OStatement.cxx b/connectivity/source/drivers/odbc/OStatement.cxx index 9d8c7102fa54..1e8fbaa8432f 100644 --- a/connectivity/source/drivers/odbc/OStatement.cxx +++ b/connectivity/source/drivers/odbc/OStatement.cxx @@ -41,7 +41,7 @@ using namespace ::comphelper; #define THROW_SQL(x) \ - OTools::ThrowException(m_pConnection,x,m_aStatementHandle,SQL_HANDLE_STMT,*this) + OTools::ThrowException(m_pConnection.get(),x,m_aStatementHandle,SQL_HANDLE_STMT,*this) using namespace connectivity::odbc; @@ -63,7 +63,6 @@ OStatement_Base::OStatement_Base(OConnection* _pConnection ) ,m_pRowStatusArray(nullptr) { osl_atomic_increment( &m_refCount ); - m_pConnection->acquire(); m_aStatementHandle = m_pConnection->createStatementHandle(); //setMaxFieldSize(0); @@ -101,11 +100,10 @@ void SAL_CALL OStatement_Base::disposing() ::comphelper::disposeComponent(m_xGeneratedStatement); OSL_ENSURE(m_aStatementHandle,"OStatement_BASE2::disposing: StatementHandle is null!"); - if (m_pConnection) + if (m_pConnection.is()) { m_pConnection->freeStatementHandle(m_aStatementHandle); - m_pConnection->release(); - m_pConnection = nullptr; + m_pConnection.clear(); } OSL_ENSURE(!m_aStatementHandle,"Sohould ne null here!"); @@ -127,7 +125,7 @@ void SAL_CALL OStatement_BASE2::release() throw() Any SAL_CALL OStatement_Base::queryInterface( const Type & rType ) throw(RuntimeException, std::exception) { - if ( m_pConnection && !m_pConnection->isAutoRetrievingEnabled() && rType == cppu::UnoType<XGeneratedResultSet>::get()) + if ( m_pConnection.is() && !m_pConnection->isAutoRetrievingEnabled() && rType == cppu::UnoType<XGeneratedResultSet>::get()) return Any(); Any aRet = OStatement_BASE::queryInterface(rType); return aRet.hasValue() ? aRet : OPropertySetHelper::queryInterface(rType); @@ -139,7 +137,7 @@ Sequence< Type > SAL_CALL OStatement_Base::getTypes( ) throw(RuntimeException, cppu::UnoType<XFastPropertySet>::get(), cppu::UnoType<XPropertySet>::get()); Sequence< Type > aOldTypes = OStatement_BASE::getTypes(); - if ( m_pConnection && !m_pConnection->isAutoRetrievingEnabled() ) + if ( m_pConnection.is() && !m_pConnection->isAutoRetrievingEnabled() ) { ::std::remove(aOldTypes.getArray(),aOldTypes.getArray() + aOldTypes.getLength(), cppu::UnoType<XGeneratedResultSet>::get()); @@ -151,9 +149,9 @@ Sequence< Type > SAL_CALL OStatement_Base::getTypes( ) throw(RuntimeException, Reference< XResultSet > SAL_CALL OStatement_Base::getGeneratedValues( ) throw (SQLException, RuntimeException, std::exception) { - OSL_ENSURE( m_pConnection && m_pConnection->isAutoRetrievingEnabled(),"Illegal call here. isAutoRetrievingEnabled is false!"); + OSL_ENSURE( m_pConnection.is() && m_pConnection->isAutoRetrievingEnabled(),"Illegal call here. isAutoRetrievingEnabled is false!"); Reference< XResultSet > xRes; - if ( m_pConnection ) + if ( m_pConnection.is() ) { OUString sStmt = m_pConnection->getTransformedGeneratedStatement(m_sSqlStatement); if ( !sStmt.isEmpty() ) @@ -465,7 +463,7 @@ Reference< XConnection > SAL_CALL OStatement_Base::getConnection( ) throw(SQLEx ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OStatement_BASE::rBHelper.bDisposed); - return Reference< XConnection >(m_pConnection); + return Reference< XConnection >(m_pConnection.get()); } diff --git a/connectivity/source/inc/file/FResultSet.hxx b/connectivity/source/inc/file/FResultSet.hxx index dcd50d974ee2..ea2a6daf1528 100644 --- a/connectivity/source/inc/file/FResultSet.hxx +++ b/connectivity/source/inc/file/FResultSet.hxx @@ -90,7 +90,7 @@ namespace connectivity OSortIndex* m_pSortIndex; ::rtl::Reference<connectivity::OSQLColumns> m_xColumns; // this are the select columns ::rtl::Reference<connectivity::OSQLColumns> m_xParamColumns; - OFileTable* m_pTable; + rtl::Reference<OFileTable> m_pTable; connectivity::OSQLParseNode* m_pParseTree; OSQLAnalyzer* m_pSQLAnalyzer; diff --git a/connectivity/source/inc/file/FStatement.hxx b/connectivity/source/inc/file/FStatement.hxx index 5a380bdf028c..8e6c9fb9ffb1 100644 --- a/connectivity/source/inc/file/FStatement.hxx +++ b/connectivity/source/inc/file/FStatement.hxx @@ -76,11 +76,11 @@ namespace connectivity connectivity::OSQLParser m_aParser; connectivity::OSQLParseTreeIterator m_aSQLIterator; - OConnection* m_pConnection;// The owning Connection object + rtl::Reference<OConnection> m_pConnection;// The owning Connection object connectivity::OSQLParseNode* m_pParseTree; OSQLAnalyzer* m_pSQLAnalyzer; //the sql analyzer used by the resultset - OFileTable* m_pTable; // the current table + rtl::Reference<OFileTable> m_pTable; // the current table OValueRefRow m_aSelectRow; OValueRefRow m_aRow; OValueRefRow m_aEvaluateRow; // contains all values of a row @@ -133,7 +133,7 @@ namespace connectivity OStatement_Base(OConnection* _pConnection ); - OConnection* getOwnConnection() const { return m_pConnection;} + OConnection* getOwnConnection() const { return m_pConnection.get(); } using OStatement_BASE::operator css::uno::Reference< css::uno::XInterface >; diff --git a/connectivity/source/inc/java/sql/JStatement.hxx b/connectivity/source/inc/java/sql/JStatement.hxx index ba027eb12e7d..e8292e47f2ea 100644 --- a/connectivity/source/inc/java/sql/JStatement.hxx +++ b/connectivity/source/inc/java/sql/JStatement.hxx @@ -79,7 +79,7 @@ namespace connectivity protected: css::uno::Reference< css::sdbc::XStatement> m_xGeneratedStatement; - java_sql_Connection* m_pConnection; + rtl::Reference<java_sql_Connection> m_pConnection; java::sql::ConnectionLog m_aLogger; OUString m_sSqlStatement; // Properties diff --git a/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx b/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx index 84f5bdc4e3f1..574714430115 100644 --- a/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx +++ b/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx @@ -73,7 +73,7 @@ namespace connectivity css::uno::Reference< css::sdbc::XResultSetMetaData> m_xMetaData; SQLUSMALLINT* m_pRowStatusArray; - OConnection* m_pConnection; + rtl::Reference<OConnection> m_pConnection; rtl_TextEncoding m_nTextEncoding; sal_Int32 m_nRowPos; sal_Int32 m_nDriverColumnCount; // column count of the driver which can sometimes be less than the metadata count diff --git a/connectivity/source/inc/odbc/OStatement.hxx b/connectivity/source/inc/odbc/OStatement.hxx index 8b60b3b2d49e..3138a27b3f1e 100644 --- a/connectivity/source/inc/odbc/OStatement.hxx +++ b/connectivity/source/inc/odbc/OStatement.hxx @@ -71,7 +71,7 @@ namespace connectivity ::std::list< OUString> m_aBatchList; OUString m_sSqlStatement; - OConnection* m_pConnection;// The owning Connection object + rtl::Reference<OConnection> m_pConnection;// The owning Connection object SQLHANDLE m_aStatementHandle; SQLUSMALLINT* m_pRowStatusArray; @@ -188,7 +188,7 @@ namespace connectivity // other methods SQLHANDLE getConnectionHandle() { return m_pConnection->getConnection(); } - OConnection* getOwnConnection() const { return m_pConnection;} + OConnection* getOwnConnection() const { return m_pConnection.get();} /** getCursorProperties return the properties for a specific cursor type @param _nCursorType the CursorType @param bFirst when true the first property set is returned |