diff options
Diffstat (limited to 'ucb')
-rw-r--r-- | ucb/source/ucp/ext/ucpext_datasupplier.cxx | 108 | ||||
-rw-r--r-- | ucb/source/ucp/ext/ucpext_datasupplier.hxx | 16 |
2 files changed, 50 insertions, 74 deletions
diff --git a/ucb/source/ucp/ext/ucpext_datasupplier.cxx b/ucb/source/ucp/ext/ucpext_datasupplier.cxx index 06c379a6e2af..beb9e3066d15 100644 --- a/ucb/source/ucp/ext/ucpext_datasupplier.cxx +++ b/ucb/source/ucp/ext/ucpext_datasupplier.cxx @@ -34,7 +34,6 @@ #include <sal/log.hxx> #include <memory> -#include <vector> namespace ucb::ucp::ext @@ -56,40 +55,6 @@ namespace ucb::ucp::ext using ::com::sun::star::sdbc::XResultSet; - //= ResultListEntry - - namespace { - - struct ResultListEntry - { - OUString sId; - Reference< XContentIdentifier > xId; - ::rtl::Reference< Content > pContent; - Reference< XRow > xRow; - }; - - } - - typedef ::std::vector< ResultListEntry > ResultList; - - - //= DataSupplier_Impl - - struct DataSupplier_Impl - { - ::osl::Mutex m_aMutex; - ResultList m_aResults; - ::rtl::Reference< Content > m_xContent; - Reference< XComponentContext > m_xContext; - - DataSupplier_Impl( const Reference< XComponentContext >& rxContext, const ::rtl::Reference< Content >& i_rContent ) - :m_xContent( i_rContent ) - ,m_xContext( rxContext ) - { - } - }; - - //= helper namespace @@ -112,7 +77,8 @@ namespace ucb::ucp::ext DataSupplier::DataSupplier( const Reference< XComponentContext >& rxContext, const ::rtl::Reference< Content >& i_rContent ) - :m_pImpl( new DataSupplier_Impl( rxContext, i_rContent ) ) + :m_xContent( i_rContent ) + ,m_xContext( rxContext ) { } @@ -121,11 +87,11 @@ namespace ucb::ucp::ext { try { - const Reference< XPackageInformationProvider > xPackageInfo = PackageInformationProvider::get( m_pImpl->m_xContext ); + const Reference< XPackageInformationProvider > xPackageInfo = PackageInformationProvider::get( m_xContext ); - const OUString sContentIdentifier( m_pImpl->m_xContent->getIdentifier()->getContentIdentifier() ); + const OUString sContentIdentifier( m_xContent->getIdentifier()->getContentIdentifier() ); - switch ( m_pImpl->m_xContent->getExtensionContentType() ) + switch ( m_xContent->getExtensionContentType() ) { case E_ROOT: { @@ -141,15 +107,15 @@ namespace ucb::ucp::ext const OUString& rLocalId = extInfo[0]; ResultListEntry aEntry; aEntry.sId = ContentProvider::getRootURL() + Content::encodeIdentifier( rLocalId ) + "/"; - m_pImpl->m_aResults.push_back( aEntry ); + m_aResults.push_back( aEntry ); } } break; case E_EXTENSION_ROOT: case E_EXTENSION_CONTENT: { - const OUString sPackageLocation( m_pImpl->m_xContent->getPhysicalURL() ); - ::ucbhelper::Content aWrappedContent( sPackageLocation, getResultSet()->getEnvironment(), m_pImpl->m_xContext ); + const OUString sPackageLocation( m_xContent->getPhysicalURL() ); + ::ucbhelper::Content aWrappedContent( sPackageLocation, getResultSet()->getEnvironment(), m_xContext ); // obtain the properties which our result set is set up for from the wrapped content Sequence< OUString > aPropertyNames { "Title" }; @@ -160,7 +126,7 @@ namespace ucb::ucp::ext { ResultListEntry aEntry; aEntry.sId = lcl_compose( sContentIdentifier, xContentRow->getString( 1 ) ); - m_pImpl->m_aResults.push_back( aEntry ); + m_aResults.push_back( aEntry ); } } break; @@ -183,11 +149,11 @@ namespace ucb::ucp::ext OUString DataSupplier::queryContentIdentifierString( sal_uInt32 i_nIndex ) { - ::osl::Guard< ::osl::Mutex > aGuard( m_pImpl->m_aMutex ); + ::osl::Guard< ::osl::Mutex > aGuard( m_aMutex ); - if ( i_nIndex < m_pImpl->m_aResults.size() ) + if ( i_nIndex < m_aResults.size() ) { - const OUString sId = m_pImpl->m_aResults[ i_nIndex ].sId; + const OUString sId = m_aResults[ i_nIndex ].sId; if ( !sId.isEmpty() ) return sId; } @@ -199,11 +165,11 @@ namespace ucb::ucp::ext Reference< XContentIdentifier > DataSupplier::queryContentIdentifier( sal_uInt32 i_nIndex ) { - ::osl::Guard< ::osl::Mutex > aGuard( m_pImpl->m_aMutex ); + ::osl::Guard< ::osl::Mutex > aGuard( m_aMutex ); - if ( i_nIndex < m_pImpl->m_aResults.size() ) + if ( i_nIndex < m_aResults.size() ) { - Reference< XContentIdentifier > xId( m_pImpl->m_aResults[ i_nIndex ].xId ); + Reference< XContentIdentifier > xId( m_aResults[ i_nIndex ].xId ); if ( xId.is() ) return xId; } @@ -212,7 +178,7 @@ namespace ucb::ucp::ext if ( !sId.isEmpty() ) { Reference< XContentIdentifier > xId = new ::ucbhelper::ContentIdentifier( sId ); - m_pImpl->m_aResults[ i_nIndex ].xId = xId; + m_aResults[ i_nIndex ].xId = xId; return xId; } @@ -222,11 +188,11 @@ namespace ucb::ucp::ext Reference< XContent > DataSupplier::queryContent( sal_uInt32 i_nIndex ) { - ::osl::Guard< ::osl::Mutex > aGuard( m_pImpl->m_aMutex ); - ENSURE_OR_RETURN( i_nIndex < m_pImpl->m_aResults.size(), "illegal index!", nullptr ); + ::osl::Guard< ::osl::Mutex > aGuard( m_aMutex ); + ENSURE_OR_RETURN( i_nIndex < m_aResults.size(), "illegal index!", nullptr ); - ::rtl::Reference< Content > pContent( m_pImpl->m_aResults[ i_nIndex ].pContent ); + ::rtl::Reference< Content > pContent( m_aResults[ i_nIndex ].pContent ); if ( pContent.is() ) return pContent; @@ -235,10 +201,10 @@ namespace ucb::ucp::ext { try { - Reference< XContent > xContent( m_pImpl->m_xContent->getProvider()->queryContent( xId ) ); + Reference< XContent > xContent( m_xContent->getProvider()->queryContent( xId ) ); pContent.set( dynamic_cast< Content* >( xContent.get() ) ); OSL_ENSURE( pContent.is() || !xContent.is(), "DataSupplier::queryContent: invalid content implementation!" ); - m_pImpl->m_aResults[ i_nIndex ].pContent = pContent; + m_aResults[ i_nIndex ].pContent = pContent; return pContent; } @@ -254,23 +220,23 @@ namespace ucb::ucp::ext bool DataSupplier::getResult( sal_uInt32 i_nIndex ) { - ::osl::ClearableGuard< ::osl::Mutex > aGuard( m_pImpl->m_aMutex ); + ::osl::ClearableGuard< ::osl::Mutex > aGuard( m_aMutex ); // true if result already present. - return m_pImpl->m_aResults.size() > i_nIndex; + return m_aResults.size() > i_nIndex; } sal_uInt32 DataSupplier::totalCount() { - ::osl::ClearableGuard< ::osl::Mutex > aGuard( m_pImpl->m_aMutex ); - return m_pImpl->m_aResults.size(); + ::osl::ClearableGuard< ::osl::Mutex > aGuard( m_aMutex ); + return m_aResults.size(); } sal_uInt32 DataSupplier::currentCount() { - return m_pImpl->m_aResults.size(); + return m_aResults.size(); } @@ -282,32 +248,32 @@ namespace ucb::ucp::ext Reference< XRow > DataSupplier::queryPropertyValues( sal_uInt32 i_nIndex ) { - ::osl::MutexGuard aGuard( m_pImpl->m_aMutex ); - ENSURE_OR_RETURN( i_nIndex < m_pImpl->m_aResults.size(), "DataSupplier::queryPropertyValues: illegal index!", nullptr ); + ::osl::MutexGuard aGuard( m_aMutex ); + ENSURE_OR_RETURN( i_nIndex < m_aResults.size(), "DataSupplier::queryPropertyValues: illegal index!", nullptr ); - Reference< XRow > xRow = m_pImpl->m_aResults[ i_nIndex ].xRow; + Reference< XRow > xRow = m_aResults[ i_nIndex ].xRow; if ( xRow.is() ) return xRow; ENSURE_OR_RETURN( queryContent( i_nIndex ).is(), "could not retrieve the content", nullptr ); - switch ( m_pImpl->m_xContent->getExtensionContentType() ) + switch ( m_xContent->getExtensionContentType() ) { case E_ROOT: { - const OUString& rId( m_pImpl->m_aResults[ i_nIndex ].sId ); + const OUString& rId( m_aResults[ i_nIndex ].sId ); const OUString sRootURL( ContentProvider::getRootURL() ); OUString sTitle = Content::decodeIdentifier( rId.copy( sRootURL.getLength() ) ); if ( sTitle.endsWith("/") ) sTitle = sTitle.copy( 0, sTitle.getLength() - 1 ); - xRow = Content::getArtificialNodePropertyValues( m_pImpl->m_xContext, getResultSet()->getProperties(), sTitle ); + xRow = Content::getArtificialNodePropertyValues( m_xContext, getResultSet()->getProperties(), sTitle ); } break; case E_EXTENSION_ROOT: case E_EXTENSION_CONTENT: { - xRow = m_pImpl->m_aResults[ i_nIndex ].pContent->getPropertyValues( + xRow = m_aResults[ i_nIndex ].pContent->getPropertyValues( getResultSet()->getProperties(), getResultSet()->getEnvironment() ); } break; @@ -316,17 +282,17 @@ namespace ucb::ucp::ext break; } - m_pImpl->m_aResults[ i_nIndex ].xRow = xRow; + m_aResults[ i_nIndex ].xRow = xRow; return xRow; } void DataSupplier::releasePropertyValues( sal_uInt32 i_nIndex ) { - ::osl::Guard< ::osl::Mutex > aGuard( m_pImpl->m_aMutex ); + ::osl::Guard< ::osl::Mutex > aGuard( m_aMutex ); - if ( i_nIndex < m_pImpl->m_aResults.size() ) - m_pImpl->m_aResults[ i_nIndex ].xRow.clear(); + if ( i_nIndex < m_aResults.size() ) + m_aResults[ i_nIndex ].xRow.clear(); } diff --git a/ucb/source/ucp/ext/ucpext_datasupplier.hxx b/ucb/source/ucp/ext/ucpext_datasupplier.hxx index d2ed90d3f9f5..12a5b8ae26af 100644 --- a/ucb/source/ucp/ext/ucpext_datasupplier.hxx +++ b/ucb/source/ucp/ext/ucpext_datasupplier.hxx @@ -22,14 +22,13 @@ #include <rtl/ref.hxx> #include <ucbhelper/resultset.hxx> -#include <memory> +#include <vector> namespace ucb::ucp::ext { - struct DataSupplier_Impl; class Content; @@ -66,7 +65,18 @@ namespace ucb::ucp::ext virtual void validate() override; private: - std::unique_ptr< DataSupplier_Impl > m_pImpl; + struct ResultListEntry + { + OUString sId; + css::uno::Reference< css::ucb::XContentIdentifier > xId; + ::rtl::Reference< Content > pContent; + css::uno::Reference< css::sdbc::XRow > xRow; + }; + typedef ::std::vector< ResultListEntry > ResultList; + ::osl::Mutex m_aMutex; + ResultList m_aResults; + ::rtl::Reference< Content > m_xContent; + css::uno::Reference< css::uno::XComponentContext > m_xContext; }; |