connectivity/source/cpool/ZPooledConnection.cxx | 2 connectivity/source/cpool/ZPooledConnection.hxx | 5 - connectivity/source/drivers/evoab2/NPreparedStatement.hxx | 2 connectivity/source/drivers/file/FPreparedStatement.cxx | 7 + connectivity/source/drivers/firebird/PreparedStatement.hxx | 4 connectivity/source/drivers/firebird/ResultSet.hxx | 3 connectivity/source/drivers/firebird/StatementCommonBase.cxx | 6 - connectivity/source/drivers/firebird/StatementCommonBase.hxx | 3 connectivity/source/drivers/jdbc/ResultSet.cxx | 4 connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.hxx | 2 connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.hxx | 4 connectivity/source/drivers/mysqlc/mysqlc_resultset.hxx | 3 connectivity/source/drivers/mysqlc/mysqlc_statement.cxx | 3 connectivity/source/drivers/mysqlc/mysqlc_statement.hxx | 3 connectivity/source/drivers/odbc/OPreparedStatement.cxx | 7 + connectivity/source/drivers/postgresql/pq_connection.cxx | 1 connectivity/source/drivers/postgresql/pq_connection.hxx | 4 connectivity/source/drivers/postgresql/pq_xkey.hxx | 3 connectivity/source/drivers/postgresql/pq_xtable.hxx | 2 connectivity/source/inc/FDatabaseMetaDataResultSet.hxx | 4 connectivity/source/inc/TDatabaseMetaDataBase.hxx | 5 - connectivity/source/inc/file/FPreparedStatement.hxx | 5 - connectivity/source/inc/file/FResultSet.hxx | 7 + connectivity/source/inc/java/sql/ResultSet.hxx | 2 connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx | 4 connectivity/source/inc/odbc/OPreparedStatement.hxx | 5 - connectivity/source/inc/odbc/OResultSet.hxx | 6 - svx/source/inc/cell.hxx | 4 svx/source/table/accessibletableshape.cxx | 46 ++++------ 29 files changed, 90 insertions(+), 66 deletions(-)
New commits: commit d0d84eba568aaa9aef6ad812f19410946a274640 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Sep 12 10:18:26 2024 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Thu Sep 12 14:11:00 2024 +0200 use more concrete UNO classes in connectivity Change-Id: I5c70278add0aa0b0c4a7680c6615b75b688f2180 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173247 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Tested-by: Jenkins diff --git a/connectivity/source/cpool/ZPooledConnection.cxx b/connectivity/source/cpool/ZPooledConnection.cxx index 42e8d6c02db7..6cabc1ce2e29 100644 --- a/connectivity/source/cpool/ZPooledConnection.cxx +++ b/connectivity/source/cpool/ZPooledConnection.cxx @@ -65,7 +65,7 @@ Reference< XConnection > OPooledConnection::getConnection() if (m_xComponent.is()) m_xComponent->addEventListener(this); } - return Reference< XConnection >(m_xComponent,UNO_QUERY); + return m_xComponent; } diff --git a/connectivity/source/cpool/ZPooledConnection.hxx b/connectivity/source/cpool/ZPooledConnection.hxx index 79450ea081d3..0f5506f4f3b1 100644 --- a/connectivity/source/cpool/ZPooledConnection.hxx +++ b/connectivity/source/cpool/ZPooledConnection.hxx @@ -22,10 +22,11 @@ #include <com/sun/star/sdbc/XPooledConnection.hpp> #include <com/sun/star/lang/XEventListener.hpp> #include <com/sun/star/reflection/XProxyFactory.hpp> - +#include <rtl/ref.hxx> namespace connectivity { + class OConnectionWeakWrapper; // OPooledConnection - // allows to pool a real connection @@ -37,7 +38,7 @@ namespace connectivity ,public OPooledConnection_Base { css::uno::Reference< css::sdbc::XConnection > m_xRealConnection; // the connection from driver - css::uno::Reference< css::lang::XComponent > m_xComponent; // the connection which wraps the real connection + rtl::Reference< OConnectionWeakWrapper > m_xComponent; // the connection which wraps the real connection css::uno::Reference< css::reflection::XProxyFactory > m_xProxyFactory; public: // OComponentHelper diff --git a/connectivity/source/drivers/evoab2/NPreparedStatement.hxx b/connectivity/source/drivers/evoab2/NPreparedStatement.hxx index cd42d42d505b..076216e0cf42 100644 --- a/connectivity/source/drivers/evoab2/NPreparedStatement.hxx +++ b/connectivity/source/drivers/evoab2/NPreparedStatement.hxx @@ -47,7 +47,7 @@ namespace connectivity::evoab // the EBookQuery we're working with QueryData m_aQueryData; // our meta data - css::uno::Reference< css::sdbc::XResultSetMetaData > m_xMetaData; + rtl::Reference<OEvoabResultSetMetaData> m_xMetaData; virtual ~OEvoabPreparedStatement() override; diff --git a/connectivity/source/drivers/file/FPreparedStatement.cxx b/connectivity/source/drivers/file/FPreparedStatement.cxx index 33ca5a3b47d7..5139eba871cd 100644 --- a/connectivity/source/drivers/file/FPreparedStatement.cxx +++ b/connectivity/source/drivers/file/FPreparedStatement.cxx @@ -127,6 +127,11 @@ css::uno::Sequence< css::uno::Type > SAL_CALL OPreparedStatement::getTypes( ) Reference< XResultSetMetaData > SAL_CALL OPreparedStatement::getMetaData( ) +{ + return getMetaDataImpl(); +} + +const rtl::Reference< OResultSetMetaData > & OPreparedStatement::getMetaDataImpl( ) { ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OStatement_BASE::rBHelper.bDisposed); @@ -377,7 +382,7 @@ void OPreparedStatement::initResultSet(OResultSet *pResultSet) m_pConnection->throwGenericSQLException(STR_INVALID_PARA_COUNT,*this); pResultSet->OpenImpl(); - pResultSet->setMetaData(getMetaData()); + pResultSet->setMetaData(getMetaDataImpl()); } void SAL_CALL OPreparedStatement::acquire() noexcept diff --git a/connectivity/source/drivers/firebird/PreparedStatement.hxx b/connectivity/source/drivers/firebird/PreparedStatement.hxx index 42e540664dda..96f687c38123 100644 --- a/connectivity/source/drivers/firebird/PreparedStatement.hxx +++ b/connectivity/source/drivers/firebird/PreparedStatement.hxx @@ -33,7 +33,7 @@ namespace connectivity::firebird { - + class OResultSetMetaData; class OBoundParam; typedef ::cppu::ImplHelper5< css::sdbc::XPreparedStatement, css::sdbc::XParameters, @@ -46,7 +46,7 @@ namespace connectivity::firebird { protected: OUString m_sSqlStatement; - css::uno::Reference< css::sdbc::XResultSetMetaData > m_xMetaData; + rtl::Reference<OResultSetMetaData> m_xMetaData; XSQLDA* m_pOutSqlda; XSQLDA* m_pInSqlda; diff --git a/connectivity/source/drivers/firebird/ResultSet.hxx b/connectivity/source/drivers/firebird/ResultSet.hxx index c80f5b8453d4..046be37c567a 100644 --- a/connectivity/source/drivers/firebird/ResultSet.hxx +++ b/connectivity/source/drivers/firebird/ResultSet.hxx @@ -39,6 +39,7 @@ namespace connectivity::firebird { + class OResultSetMetaData; /* ** OResultSet */ @@ -73,7 +74,7 @@ namespace connectivity::firebird ::osl::Mutex& m_rMutex; const css::uno::Reference< css::uno::XInterface >& m_xStatement; - css::uno::Reference< css::sdbc::XResultSetMetaData> m_xMetaData; + rtl::Reference<OResultSetMetaData> m_xMetaData; XSQLDA* m_pSqlda; isc_stmt_handle m_statementHandle; diff --git a/connectivity/source/drivers/firebird/StatementCommonBase.cxx b/connectivity/source/drivers/firebird/StatementCommonBase.cxx index 096c0ce436bd..12ce9a8fd7ba 100644 --- a/connectivity/source/drivers/firebird/StatementCommonBase.cxx +++ b/connectivity/source/drivers/firebird/StatementCommonBase.cxx @@ -19,6 +19,7 @@ #include "StatementCommonBase.hxx" #include "Util.hxx" +#include "ResultSet.hxx" #include <sal/log.hxx> #include <comphelper/sequence.hxx> @@ -62,9 +63,8 @@ OStatementCommonBase::~OStatementCommonBase() void OStatementCommonBase::disposeResultSet() { - uno::Reference< XComponent > xComp(m_xResultSet, UNO_QUERY); - if (xComp.is()) - xComp->dispose(); + if (m_xResultSet.is()) + m_xResultSet->dispose(); m_xResultSet.clear(); } diff --git a/connectivity/source/drivers/firebird/StatementCommonBase.hxx b/connectivity/source/drivers/firebird/StatementCommonBase.hxx index fa9cd790272e..92eac1ec521d 100644 --- a/connectivity/source/drivers/firebird/StatementCommonBase.hxx +++ b/connectivity/source/drivers/firebird/StatementCommonBase.hxx @@ -38,6 +38,7 @@ namespace connectivity::firebird { + class OResultSet; typedef ::cppu::WeakComponentImplHelper< css::sdbc::XWarningsSupplier, css::util::XCancellable, @@ -52,7 +53,7 @@ namespace connectivity::firebird protected: ::osl::Mutex m_aMutex; - css::uno::Reference< css::sdbc::XResultSet> m_xResultSet; // The last ResultSet created + rtl::Reference<OResultSet> m_xResultSet; // The last ResultSet created // for this Statement ::rtl::Reference<Connection> m_pConnection; diff --git a/connectivity/source/drivers/jdbc/ResultSet.cxx b/connectivity/source/drivers/jdbc/ResultSet.cxx index 0473ed598d2e..e88fb9600138 100644 --- a/connectivity/source/drivers/jdbc/ResultSet.cxx +++ b/connectivity/source/drivers/jdbc/ResultSet.cxx @@ -74,7 +74,7 @@ java_sql_ResultSet::java_sql_ResultSet( JNIEnv * pEnv, jobject myObj, const java SDBThreadAttach::addRef(); osl_atomic_increment(&m_refCount); if ( pStmt ) - m_xStatement = *pStmt; + m_xStatement = pStmt; osl_atomic_decrement(&m_refCount); } @@ -452,7 +452,7 @@ sal_Bool SAL_CALL java_sql_ResultSet::previous( ) Reference< XInterface > SAL_CALL java_sql_ResultSet::getStatement( ) { - return m_xStatement; + return cppu::getXWeak(m_xStatement.get()); } diff --git a/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.hxx b/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.hxx index 40912c5534a7..4374fc7ad091 100644 --- a/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.hxx +++ b/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.hxx @@ -57,7 +57,7 @@ class OPreparedResultSet final : public cppu::BaseMutex, { OConnection& m_rConnection; css::uno::WeakReferenceHelper m_aStatement; - css::uno::Reference<css::sdbc::XResultSetMetaData> m_xMetaData; + rtl::Reference<OResultSetMetaData> m_xMetaData; // non-owning pointers MYSQL_RES* m_pResult; diff --git a/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.hxx b/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.hxx index e1743d91dbc4..d61f616372b0 100644 --- a/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.hxx +++ b/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.hxx @@ -41,6 +41,8 @@ using my_bool = bool; using my_bool = char; #endif +class OResultSetMetaData; + struct BindMetaData { my_bool is_null = false; @@ -55,7 +57,7 @@ typedef ::cppu::ImplHelper4<css::sdbc::XPreparedStatement, css::sdbc::XParameter class OPreparedStatement final : public OCommonStatement, public OPreparedStatement_BASE { unsigned int m_paramCount = 0; // number of placeholders - Reference<XResultSetMetaData> m_xMetaData; + rtl::Reference<OResultSetMetaData> m_xMetaData; MYSQL_STMT* m_pStmt; std::vector<MYSQL_BIND> m_binds; std::vector<BindMetaData> m_bindMetas; diff --git a/connectivity/source/drivers/mysqlc/mysqlc_resultset.hxx b/connectivity/source/drivers/mysqlc/mysqlc_resultset.hxx index 3e43853d364e..bb2dc18fc9e2 100644 --- a/connectivity/source/drivers/mysqlc/mysqlc_resultset.hxx +++ b/connectivity/source/drivers/mysqlc/mysqlc_resultset.hxx @@ -41,6 +41,7 @@ namespace connectivity::mysqlc { using ::com::sun::star::uno::Any; +class OResultSetMetaData; /* ** OResultSet @@ -62,7 +63,7 @@ class OResultSet final : public cppu::BaseMutex, std::vector<OUString> m_aFields; MYSQL* m_pMysql = nullptr; css::uno::WeakReferenceHelper m_aStatement; - css::uno::Reference<css::sdbc::XResultSetMetaData> m_xMetaData; + rtl::Reference<OResultSetMetaData> m_xMetaData; MYSQL_RES* m_pResult; rtl_TextEncoding m_encoding; bool m_bWasNull = false; // did the last getXXX result null? diff --git a/connectivity/source/drivers/mysqlc/mysqlc_statement.cxx b/connectivity/source/drivers/mysqlc/mysqlc_statement.cxx index 49a16cd5c6c5..2d8deaebdec1 100644 --- a/connectivity/source/drivers/mysqlc/mysqlc_statement.cxx +++ b/connectivity/source/drivers/mysqlc/mysqlc_statement.cxx @@ -51,8 +51,7 @@ void OCommonStatement::closeResultSet() { if (m_xResultSet.is()) { - css::uno::Reference<css::sdbc::XCloseable> xClose(m_xResultSet, UNO_QUERY_THROW); - xClose->close(); + m_xResultSet->close(); m_xResultSet.clear(); } } diff --git a/connectivity/source/drivers/mysqlc/mysqlc_statement.hxx b/connectivity/source/drivers/mysqlc/mysqlc_statement.hxx index c710b0b46a6d..7e260fe8b144 100644 --- a/connectivity/source/drivers/mysqlc/mysqlc_statement.hxx +++ b/connectivity/source/drivers/mysqlc/mysqlc_statement.hxx @@ -39,6 +39,7 @@ namespace connectivity::mysqlc using ::com::sun::star::sdbc::SQLWarning; using ::com::sun::star::uno::Any; using ::com::sun::star::uno::Type; +class OResultSet; typedef ::cppu::WeakComponentImplHelper3<css::sdbc::XWarningsSupplier, css::util::XCancellable, css::sdbc::XCloseable> @@ -59,7 +60,7 @@ private: protected: rtl::Reference<OConnection> m_xConnection; // The owning Connection object - css::uno::Reference<css::sdbc::XResultSet> m_xResultSet; + rtl::Reference<OResultSet> m_xResultSet; // number of rows affected by an UPDATE, DELETE or INSERT statement. sal_Int32 m_nAffectedRows = 0; diff --git a/connectivity/source/drivers/odbc/OPreparedStatement.cxx b/connectivity/source/drivers/odbc/OPreparedStatement.cxx index 8e20c4d83e03..b382b34e9eb5 100644 --- a/connectivity/source/drivers/odbc/OPreparedStatement.cxx +++ b/connectivity/source/drivers/odbc/OPreparedStatement.cxx @@ -82,6 +82,11 @@ css::uno::Sequence< css::uno::Type > SAL_CALL OPreparedStatement::getTypes( ) Reference< XResultSetMetaData > SAL_CALL OPreparedStatement::getMetaData( ) +{ + return getMetaDataImpl(); +} + +const rtl::Reference< OResultSetMetaData > & OPreparedStatement::getMetaDataImpl() { ::osl::MutexGuard aGuard( m_aMutex ); checkDisposed(OStatement_BASE::rBHelper.bDisposed); @@ -907,7 +912,7 @@ void OPreparedStatement::checkParameterIndex(sal_Int32 _parameterIndex) rtl::Reference<OResultSet> OPreparedStatement::createResultSet() { rtl::Reference<OResultSet> pReturn = new OResultSet(m_aStatementHandle,this); - pReturn->setMetaData(getMetaData()); + pReturn->setMetaData(getMetaDataImpl()); return pReturn; } diff --git a/connectivity/source/drivers/postgresql/pq_connection.cxx b/connectivity/source/drivers/postgresql/pq_connection.cxx index 50c1b54fd698..17f4128c8297 100644 --- a/connectivity/source/drivers/postgresql/pq_connection.cxx +++ b/connectivity/source/drivers/postgresql/pq_connection.cxx @@ -148,7 +148,6 @@ void Connection::close() vectorDispose.push_back( Reference< XComponent > ( m_settings.users, UNO_QUERY ) ); vectorDispose.push_back( Reference< XComponent > ( m_settings.tables , UNO_QUERY ) ); - vectorDispose.push_back( Reference< XComponent > ( m_meta, UNO_QUERY ) ); m_meta.clear(); m_settings.tables.clear(); m_settings.users.clear(); diff --git a/connectivity/source/drivers/postgresql/pq_connection.hxx b/connectivity/source/drivers/postgresql/pq_connection.hxx index 2bba070a7273..2b86ce5882fd 100644 --- a/connectivity/source/drivers/postgresql/pq_connection.hxx +++ b/connectivity/source/drivers/postgresql/pq_connection.hxx @@ -66,6 +66,8 @@ namespace pq_sdbc_driver { struct ConnectionSettings; +class DatabaseMetaData; + struct ConnectionSettings { ConnectionSettings() : @@ -123,7 +125,7 @@ class Connection : public ConnectionBase css::uno::Reference< css::container::XNameAccess > m_typeMap; ConnectionSettings m_settings; ::rtl::Reference< comphelper::RefCountedMutex > m_xMutex; - css::uno::Reference< css::sdbc::XDatabaseMetaData > m_meta; + rtl::Reference< DatabaseMetaData > m_meta; WeakHashMap m_myStatements; private: diff --git a/connectivity/source/drivers/postgresql/pq_xkey.hxx b/connectivity/source/drivers/postgresql/pq_xkey.hxx index 68f05fd27d4e..d162fde24270 100644 --- a/connectivity/source/drivers/postgresql/pq_xkey.hxx +++ b/connectivity/source/drivers/postgresql/pq_xkey.hxx @@ -48,6 +48,7 @@ namespace pq_sdbc_driver { +class KeyColumnDescriptors; class Key : public ReflectionBase, public css::sdbcx::XColumnsSupplier @@ -87,7 +88,7 @@ public: // XDataDescriptorFactory class KeyDescriptor : public ReflectionBase, public css::sdbcx::XColumnsSupplier { - css::uno::Reference< css::container::XNameAccess > m_keyColumns; + rtl::Reference<KeyColumnDescriptors> m_keyColumns; public: KeyDescriptor( const ::rtl::Reference< comphelper::RefCountedMutex > & refMutex, diff --git a/connectivity/source/drivers/postgresql/pq_xtable.hxx b/connectivity/source/drivers/postgresql/pq_xtable.hxx index 7c8ca73f566b..d1239fff696e 100644 --- a/connectivity/source/drivers/postgresql/pq_xtable.hxx +++ b/connectivity/source/drivers/postgresql/pq_xtable.hxx @@ -117,7 +117,7 @@ class TableDescriptor public css::sdbcx::XIndexesSupplier, public css::sdbcx::XKeysSupplier { - css::uno::Reference< css::container::XNameAccess > m_columns; + rtl::Reference<ColumnDescriptors> m_columns; css::uno::Reference< css::container::XIndexAccess > m_keys; css::uno::Reference< css::container::XNameAccess > m_indexes; diff --git a/connectivity/source/inc/FDatabaseMetaDataResultSet.hxx b/connectivity/source/inc/FDatabaseMetaDataResultSet.hxx index f0a3fef76d00..28c504ee416b 100644 --- a/connectivity/source/inc/FDatabaseMetaDataResultSet.hxx +++ b/connectivity/source/inc/FDatabaseMetaDataResultSet.hxx @@ -40,6 +40,8 @@ namespace connectivity { + class ODatabaseMetaDataResultSetMetaData; + typedef ::comphelper::WeakComponentImplHelper< css::sdbc::XResultSet, css::sdbc::XRow, css::sdbc::XResultSetMetaDataSupplier, @@ -106,7 +108,7 @@ namespace connectivity private: ORowSetValue m_aEmptyValue; css::uno::WeakReferenceHelper m_aStatement; - css::uno::Reference< css::sdbc::XResultSetMetaData> m_xMetaData; + rtl::Reference< ODatabaseMetaDataResultSetMetaData> m_xMetaData; sal_Int32 m_nColPos; sal_Int32 m_nFetchSize; diff --git a/connectivity/source/inc/TDatabaseMetaDataBase.hxx b/connectivity/source/inc/TDatabaseMetaDataBase.hxx index 4d8c7715ca2d..de5d25ac3233 100644 --- a/connectivity/source/inc/TDatabaseMetaDataBase.hxx +++ b/connectivity/source/inc/TDatabaseMetaDataBase.hxx @@ -27,8 +27,11 @@ #include <functional> #include <connectivity/dbtoolsdllapi.hxx> +namespace comphelper { class OEventListenerHelper; } + namespace connectivity { + class OOO_DLLPUBLIC_DBTOOLS ODatabaseMetaDataBase : public cppu::BaseMutex, public ::cppu::WeakImplHelper< css::sdbc::XDatabaseMetaData2, @@ -65,7 +68,7 @@ namespace connectivity } protected: css::uno::Reference< css::sdbc::XConnection > m_xConnection; - css::uno::Reference< css::lang::XEventListener> m_xListenerHelper; // forward the calls from the connection to me + rtl::Reference< comphelper::OEventListenerHelper> m_xListenerHelper; // forward the calls from the connection to me virtual ~ODatabaseMetaDataBase() override; diff --git a/connectivity/source/inc/file/FPreparedStatement.hxx b/connectivity/source/inc/file/FPreparedStatement.hxx index f83d74a6d065..7adbf40d2b7f 100644 --- a/connectivity/source/inc/file/FPreparedStatement.hxx +++ b/connectivity/source/inc/file/FPreparedStatement.hxx @@ -29,6 +29,7 @@ namespace connectivity::file { + class OResultSetMetaData; class OOO_DLLPUBLIC_FILE SAL_NO_VTABLE OPreparedStatement : public OStatement_BASE2, public css::sdbc::XPreparedStatement, @@ -42,7 +43,7 @@ namespace connectivity::file // Data attributes OValueRefRow m_aParameterRow; - css::uno::Reference< css::sdbc::XResultSetMetaData> m_xMetaData; + rtl::Reference<OResultSetMetaData> m_xMetaData; ::rtl::Reference<connectivity::OSQLColumns> m_xParamColumns; // the parameter columns @@ -113,6 +114,8 @@ namespace connectivity::file virtual void SAL_CALL close( ) override; // XResultSetMetaDataSupplier virtual css::uno::Reference< css::sdbc::XResultSetMetaData > SAL_CALL getMetaData( ) override; + + const rtl::Reference<OResultSetMetaData> & getMetaDataImpl(); }; } diff --git a/connectivity/source/inc/file/FResultSet.hxx b/connectivity/source/inc/file/FResultSet.hxx index 0870593e6388..b4c1786fd2d5 100644 --- a/connectivity/source/inc/file/FResultSet.hxx +++ b/connectivity/source/inc/file/FResultSet.hxx @@ -41,9 +41,12 @@ #include <TSkipDeletedSet.hxx> #include <com/sun/star/lang/XEventListener.hpp> #include <o3tl/safeint.hxx> +#include "FResultSetMetaData.hxx" namespace connectivity::file { + class OResultSetMetaData; + typedef ::cppu::WeakComponentImplHelper< css::sdbc::XResultSet, css::sdbc::XRow, css::sdbc::XResultSetMetaDataSupplier, @@ -96,7 +99,7 @@ namespace connectivity::file sal_Int32 m_nResultSetConcurrency; css::uno::Reference< css::uno::XInterface> m_xStatement; - css::uno::Reference< css::sdbc::XResultSetMetaData> m_xMetaData; + rtl::Reference< OResultSetMetaData> m_xMetaData; css::uno::Reference< css::container::XNameAccess> m_xColNames; // table columns css::uno::Reference< css::container::XIndexAccess> m_xColsIdx; // table columns @@ -267,7 +270,7 @@ namespace connectivity::file void setOrderByColumns(std::vector<sal_Int32>&& _aColumnOrderBy) { m_aOrderbyColumnNumber = std::move(_aColumnOrderBy); } void setOrderByAscending(std::vector<TAscendingOrder>&& _aOrderbyAsc) { m_aOrderbyAscending = std::move(_aOrderbyAsc); } - void setMetaData(const css::uno::Reference< css::sdbc::XResultSetMetaData>& _xMetaData) { m_xMetaData = _xMetaData;} + void setMetaData(const rtl::Reference< OResultSetMetaData>& _xMetaData) { m_xMetaData = _xMetaData;} static void setBoundedColumns(const OValueRefRow& _rRow, const OValueRefRow& _rSelectRow, diff --git a/connectivity/source/inc/java/sql/ResultSet.hxx b/connectivity/source/inc/java/sql/ResultSet.hxx index 183c6fa3a362..2b4190ba956e 100644 --- a/connectivity/source/inc/java/sql/ResultSet.hxx +++ b/connectivity/source/inc/java/sql/ResultSet.hxx @@ -59,7 +59,7 @@ namespace connectivity public ::cppu::OPropertySetHelper, public ::comphelper::OPropertyArrayUsageHelper<java_sql_ResultSet> { - css::uno::Reference< css::uno::XInterface> m_xStatement; + rtl::Reference<java_sql_Statement_Base> m_xStatement; java::sql::ConnectionLog m_aLogger; java_sql_Connection* m_pConnection; diff --git a/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx b/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx index b0dc5cec35db..4b151b2517ed 100644 --- a/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx +++ b/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx @@ -42,6 +42,7 @@ namespace connectivity::odbc { + class OResultSetMetaData; /* ** java_sql_ResultSet */ @@ -68,8 +69,7 @@ namespace connectivity::odbc SQLHANDLE m_aStatementHandle; // ... until freed css::uno::WeakReferenceHelper m_aStatement; - css::uno::Reference< css::sdbc::XResultSetMetaData> - m_xMetaData; + rtl::Reference<OResultSetMetaData> m_xMetaData; std::unique_ptr<SQLUSMALLINT[]> m_pRowStatusArray; rtl::Reference<OConnection> m_pConnection; rtl_TextEncoding m_nTextEncoding; diff --git a/connectivity/source/inc/odbc/OPreparedStatement.hxx b/connectivity/source/inc/odbc/OPreparedStatement.hxx index aa5e895bfc79..348c355453e6 100644 --- a/connectivity/source/inc/odbc/OPreparedStatement.hxx +++ b/connectivity/source/inc/odbc/OPreparedStatement.hxx @@ -30,7 +30,7 @@ namespace connectivity::odbc { - + class OResultSetMetaData; class OBoundParam; typedef ::cppu::ImplHelper5< css::sdbc::XPreparedStatement, css::sdbc::XParameters, @@ -51,7 +51,7 @@ namespace connectivity::odbc std::unique_ptr<OBoundParam[]> boundParams; // Array of bound parameter objects. Each parameter marker will have a // corresponding object to hold bind information, and resulting data. - css::uno::Reference< css::sdbc::XResultSetMetaData > m_xMetaData; + rtl::Reference<OResultSetMetaData> m_xMetaData; bool m_bPrepared; void FreeParams(); @@ -137,6 +137,7 @@ namespace connectivity::odbc virtual void SAL_CALL close( ) override; // XResultSetMetaDataSupplier virtual css::uno::Reference< css::sdbc::XResultSetMetaData > SAL_CALL getMetaData( ) override; + const rtl::Reference< OResultSetMetaData > & getMetaDataImpl(); public: using OStatement_Base::executeQuery; diff --git a/connectivity/source/inc/odbc/OResultSet.hxx b/connectivity/source/inc/odbc/OResultSet.hxx index 5c8328082904..c7638a18d8b9 100644 --- a/connectivity/source/inc/odbc/OResultSet.hxx +++ b/connectivity/source/inc/odbc/OResultSet.hxx @@ -40,9 +40,11 @@ #include <connectivity/FValue.hxx> #include <TSkipDeletedSet.hxx> #include <memory> +#include "OResultSetMetaData.hxx" namespace connectivity::odbc { + class OResultSetMetaData; /* ** java_sql_ResultSet @@ -132,7 +134,7 @@ namespace connectivity::odbc OStatement_Base* m_pStatement; std::unique_ptr<OSkipDeletedSet> m_pSkipDeletedSet; css::uno::Reference< css::uno::XInterface> m_xStatement; - css::uno::Reference< css::sdbc::XResultSetMetaData> m_xMetaData; + rtl::Reference< OResultSetMetaData> m_xMetaData; std::unique_ptr<SQLUSMALLINT[]> m_pRowStatusArray; rtl_TextEncoding m_nTextEncoding; sal_Int32 m_nRowPos; @@ -235,7 +237,7 @@ namespace connectivity::odbc return css::uno::Reference< css::uno::XInterface >(*static_cast<OResultSet_BASE*>(this)); } - void setMetaData(const css::uno::Reference< css::sdbc::XResultSetMetaData>& _xMetaData) { m_xMetaData = _xMetaData;} + void setMetaData(const rtl::Reference<OResultSetMetaData>& _xMetaData) { m_xMetaData = _xMetaData;} // ::cppu::OComponentHelper virtual void SAL_CALL disposing() override; commit 9714b19590f651cbd48ae763b5a9558dd1e9e972 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Sep 12 09:44:09 2024 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Thu Sep 12 14:10:48 2024 +0200 no need to dynamic_cast so much in AccessibleTableShapeImpl when we know the underlying object is a sdr::table::TableModel unfortunately this reveals that the underlying object does not, in fact, implement XSelectionSupplier Change-Id: I29336a7cf945dcec1a8d7aecc78f793e95bae259 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173245 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/svx/source/inc/cell.hxx b/svx/source/inc/cell.hxx index b70c683ddde1..d59e18b6985e 100644 --- a/svx/source/inc/cell.hxx +++ b/svx/source/inc/cell.hxx @@ -112,8 +112,8 @@ public: SVX_DLLPRIVATE virtual css::awt::Size SAL_CALL calcAdjustedSize( const css::awt::Size& aNewSize ) override; // XMergeableCell - SVX_DLLPRIVATE virtual ::sal_Int32 SAL_CALL getRowSpan() override; - SVX_DLLPRIVATE virtual ::sal_Int32 SAL_CALL getColumnSpan() override; + virtual ::sal_Int32 SAL_CALL getRowSpan() override; + virtual ::sal_Int32 SAL_CALL getColumnSpan() override; virtual sal_Bool SAL_CALL isMerged() override; // XCell diff --git a/svx/source/table/accessibletableshape.cxx b/svx/source/table/accessibletableshape.cxx index 1c47ddc0758b..f0079da0e5ca 100644 --- a/svx/source/table/accessibletableshape.cxx +++ b/svx/source/table/accessibletableshape.cxx @@ -53,14 +53,14 @@ using namespace ::com::sun::star::table; namespace accessibility { -typedef std::unordered_map< Reference< XCell >, rtl::Reference< AccessibleCell > > AccessibleCellMap; +typedef std::unordered_map< rtl::Reference< Cell >, rtl::Reference< AccessibleCell > > AccessibleCellMap; class AccessibleTableShapeImpl : public cppu::WeakImplHelper< XModifyListener > { public: explicit AccessibleTableShapeImpl( AccessibleShapeTreeInfo& rShapeTreeInfo ); - void init( const rtl::Reference< AccessibleTableShape>& xAccessible, const Reference< XTable >& xTable ); + void init( const rtl::Reference< AccessibleTableShape>& xAccessible, const rtl::Reference< TableModel >& xTable ); void dispose(); /// @throws IndexOutOfBoundsException @@ -76,12 +76,12 @@ public: virtual void SAL_CALL disposing( const EventObject& Source ) override; AccessibleShapeTreeInfo& mrShapeTreeInfo; - Reference< XTable > mxTable; + rtl::Reference< TableModel > mxTable; AccessibleCellMap maChildMap; rtl::Reference< AccessibleTableShape> mxAccessible; sal_Int32 mRowCount, mColCount; //get the cached AccessibleCell from XCell - rtl::Reference< AccessibleCell > getAccessibleCell (const Reference< XCell >& xCell); + rtl::Reference< AccessibleCell > getAccessibleCell (const rtl::Reference< Cell >& xCell); /// @throws IndexOutOfBoundsException /// @throws RuntimeException rtl::Reference< AccessibleCell > getAccessibleCell (sal_Int32 nRow, sal_Int32 nColumn); @@ -96,7 +96,7 @@ AccessibleTableShapeImpl::AccessibleTableShapeImpl( AccessibleShapeTreeInfo& rSh } -void AccessibleTableShapeImpl::init( const rtl::Reference<AccessibleTableShape>& xAccessible, const Reference< XTable >& xTable ) +void AccessibleTableShapeImpl::init( const rtl::Reference<AccessibleTableShape>& xAccessible, const rtl::Reference< TableModel >& xTable ) { mxAccessible = xAccessible; mxTable = xTable; @@ -105,11 +105,6 @@ void AccessibleTableShapeImpl::init( const rtl::Reference<AccessibleTableShape>& { Reference< XModifyListener > xListener( this ); mxTable->addModifyListener( xListener ); - //register the listener with table model - Reference< css::view::XSelectionSupplier > xSelSupplier(xTable, UNO_QUERY); - Reference< css::view::XSelectionChangeListener > xSelListener( xAccessible ); - if (xSelSupplier.is()) - xSelSupplier->addSelectionChangeListener(xSelListener); mRowCount = mxTable->getRowCount(); mColCount = mxTable->getColumnCount(); } @@ -135,7 +130,7 @@ void AccessibleTableShapeImpl::dispose() //get the cached AccessibleCell from XCell -rtl::Reference< AccessibleCell > AccessibleTableShapeImpl::getAccessibleCell (const Reference< XCell >& xCell) +rtl::Reference< AccessibleCell > AccessibleTableShapeImpl::getAccessibleCell (const rtl::Reference< Cell >& xCell) { AccessibleCellMap::iterator iter( maChildMap.find( xCell ) ); @@ -149,15 +144,14 @@ rtl::Reference< AccessibleCell > AccessibleTableShapeImpl::getAccessibleCell (co rtl::Reference< AccessibleCell > AccessibleTableShapeImpl::getAccessibleCell (sal_Int32 nRow, sal_Int32 nColumn) { - Reference< XCell > xCell( mxTable->getCellByPosition( nColumn, nRow ) ); + rtl::Reference< Cell > xCell( mxTable->getCell( nColumn, nRow ) ); rtl::Reference< AccessibleCell > xChild = getAccessibleCell( xCell ); if( !xChild.is() && mxTable.is() ) { sal_Int32 nChildIndex = mxTable->getColumnCount() * nRow + nColumn; - CellRef xCellRef( dynamic_cast< Cell* >( xCell.get() ) ); - rtl::Reference< AccessibleCell > xAccessibleCell( new AccessibleCell( mxAccessible, xCellRef, nChildIndex, mrShapeTreeInfo ) ); + rtl::Reference< AccessibleCell > xAccessibleCell( new AccessibleCell( mxAccessible, xCell, nChildIndex, mrShapeTreeInfo ) ); xAccessibleCell->Init(); maChildMap[xCell] = xAccessibleCell; @@ -173,7 +167,7 @@ Reference< XAccessible > AccessibleTableShapeImpl::getAccessibleChild(sal_Int64 sal_Int32 nColumn = 0, nRow = 0; getColumnAndRow( nChildIndex, nColumn, nRow ); - Reference< XCell > xCell( mxTable->getCellByPosition( nColumn, nRow ) ); + rtl::Reference< Cell > xCell( mxTable->getCell( nColumn, nRow ) ); AccessibleCellMap::iterator iter( maChildMap.find( xCell ) ); if( iter != maChildMap.end() ) @@ -183,9 +177,7 @@ Reference< XAccessible > AccessibleTableShapeImpl::getAccessibleChild(sal_Int64 } else { - CellRef xCellRef( dynamic_cast< Cell* >( xCell.get() ) ); - - rtl::Reference< AccessibleCell > xAccessibleCell( new AccessibleCell( mxAccessible, xCellRef, nChildIndex, mrShapeTreeInfo ) ); + rtl::Reference< AccessibleCell > xAccessibleCell( new AccessibleCell( mxAccessible, xCell, nChildIndex, mrShapeTreeInfo ) ); xAccessibleCell->Init(); maChildMap[xCell] = xAccessibleCell; @@ -243,7 +235,7 @@ void SAL_CALL AccessibleTableShapeImpl::modified( const EventObject& /*aEvent*/ { for( sal_Int32 nCol = 0; nCol < nColCount; ++nCol ) { - Reference< XCell > xCell( mxTable->getCellByPosition( nCol, nRow ) ); + rtl::Reference< Cell > xCell( mxTable->getCell( nCol, nRow ) ); AccessibleCellMap::iterator iter( aTempChildMap.find( xCell ) ); if( iter != aTempChildMap.end() ) @@ -257,7 +249,7 @@ void SAL_CALL AccessibleTableShapeImpl::modified( const EventObject& /*aEvent*/ xAccessibleCell->SetAccessibleName(xAccessibleCell->getAccessibleName(), AccessibleContextBase::ManuallySet); } // For merged cell, add invisible & disabled state. - Reference< XMergeableCell > xMergedCell( mxTable->getCellByPosition( nCol, nRow ), UNO_QUERY ); + rtl::Reference< Cell > xMergedCell( mxTable->getCell( nCol, nRow ) ); if (xMergedCell.is() && xMergedCell->isMerged()) { xAccessibleCell->ResetState(AccessibleStateType::VISIBLE); @@ -281,9 +273,7 @@ void SAL_CALL AccessibleTableShapeImpl::modified( const EventObject& /*aEvent*/ } else { - CellRef xCellRef( dynamic_cast< Cell* >( xCell.get() ) ); - - rtl::Reference< AccessibleCell > xAccessibleCell( new AccessibleCell( mxAccessible, xCellRef, nChildIndex, mrShapeTreeInfo ) ); + rtl::Reference< AccessibleCell > xAccessibleCell( new AccessibleCell( mxAccessible, xCell, nChildIndex, mrShapeTreeInfo ) ); xAccessibleCell->Init(); maChildMap[xCell] = xAccessibleCell; @@ -335,7 +325,9 @@ void AccessibleTableShape::Init() Reference< XPropertySet > xSet( mxShape, UNO_QUERY_THROW ); Reference< XTable > xTable( xSet->getPropertyValue(u"Model"_ustr), UNO_QUERY_THROW ); - mxImpl->init( this, xTable ); + TableModel* pModel = dynamic_cast<TableModel*>(xTable.get()); + assert(pModel); + mxImpl->init( this, pModel ); } catch( Exception& ) { @@ -469,7 +461,7 @@ sal_Int32 SAL_CALL AccessibleTableShape::getAccessibleRowExtentAt( sal_Int32 nRo checkCellPosition( nColumn, nRow ); if( mxImpl->mxTable.is() ) { - Reference< XMergeableCell > xCell( mxImpl->mxTable->getCellByPosition( nColumn, nRow ), UNO_QUERY ); + rtl::Reference< Cell > xCell( mxImpl->mxTable->getCell( nColumn, nRow ) ); if( xCell.is() ) return xCell->getRowSpan(); } @@ -483,7 +475,7 @@ sal_Int32 SAL_CALL AccessibleTableShape::getAccessibleColumnExtentAt( sal_Int32 checkCellPosition( nColumn, nRow ); if( mxImpl->mxTable.is() ) { - Reference< XMergeableCell > xCell( mxImpl->mxTable->getCellByPosition( nColumn, nRow ), UNO_QUERY ); + rtl::Reference< Cell > xCell( mxImpl->mxTable->getCell( nColumn, nRow ) ); if( xCell.is() ) return xCell->getColumnSpan(); } @@ -894,7 +886,7 @@ void SAL_CALL void SAL_CALL AccessibleTableShape::selectionChanged (const EventObject& rEvent) { //sdr::table::CellRef xCellRef = static_cast< sdr::table::CellRef > (rEvent.Source); - Reference< XCell > xCell(rEvent.Source, UNO_QUERY); + rtl::Reference< Cell > xCell = dynamic_cast<Cell*>(rEvent.Source.get()); if (!xCell.is()) return;