23#include <osl/diagnose.h>
24#include <com/sun/star/ucb/AlreadyInitializedException.hpp>
25#include <com/sun/star/ucb/ListActionType.hpp>
26#include <com/sun/star/ucb/ListenerAlreadySetException.hpp>
27#include <com/sun/star/ucb/ServiceNotFoundException.hpp>
28#include <com/sun/star/ucb/WelcomeDynamicResultSetStruct.hpp>
29#include <com/sun/star/ucb/CachedDynamicResultSetStubFactory.hpp>
45 , m_bInDispose( false )
48 , m_bGotWelcome( false )
64 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
86 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
88 throw DisposedException();
94 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
103 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
114 static_cast< XComponent*
>(
this),
115 static_cast< XDynamicResultSet*
>(
this),
116 static_cast< XSourceInitialization*
>(
this)
118 return aRet.hasValue() ? aRet : OWeakObject::queryInterface( rType );
130 osl::ClearableGuard< osl::Mutex > aGuard(
m_aMutex );
140 aEvt.Source =
static_cast< XComponent *
>( this );
152 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
162 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
176 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
191 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
218 aNewEvent.Source =
static_cast< XDynamicResultSet *
>( this );
219 aNewEvent.Changes = Changes.Changes;
222 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
223 for( ListAction& rAction : asNonConstRange(aNewEvent.Changes) )
228 switch( rAction.ListActionType )
230 case ListActionType::WELCOME:
232 WelcomeDynamicResultSetStruct aWelcome;
233 if( rAction.ActionInfo >>= aWelcome )
242 rAction.ActionInfo <<= aWelcome;
246 OSL_FAIL(
"ListActionType was WELCOME but ActionInfo didn't contain a WelcomeDynamicResultSetStruct" );
253 OSL_ENSURE(
m_bGotWelcome,
"first notification was without WELCOME" );
277 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
280 throw AlreadyInitializedException();
285 OSL_ENSURE( xSourceDynamic.is(),
286 "the given source is not of required type XDynamicResultSet" );
291 bool bStatic =
false;
293 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
304 xSourceComponent->addEventListener( xMyListenerImpl );
320 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
322 throw ListenerAlreadySetException();
331 xSource->addEventListener( xMyListenerImpl );
350 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
352 throw ListenerAlreadySetException();
354 throw ListenerAlreadySetException();
363 xSource->setListener( xMyListenerImpl );
374 throw ListenerAlreadySetException();
376 throw ListenerAlreadySetException();
379 OSL_ENSURE(
xTarget.is(),
"The given Target doesn't have the required interface 'XSourceInitialization'" );
387 xStubFactory = CachedDynamicResultSetStubFactory::create(
m_xContext );
393 if( xStubFactory.is() )
395 xStubFactory->connectToCache(
400 OSL_FAIL(
"could not connect to cache" );
401 throw ServiceNotFoundException();
412 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
415 return xSource->getCapabilities();
439 OWeakObject::acquire();
445 OWeakObject::release();
451 static_cast< XDynamicResultSetListener*
>(
this),
452 static_cast< XEventListener*
>(
this)
454 return aRet.hasValue() ? aRet : OWeakObject::queryInterface( rType );
462 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
471 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
483 osl::Guard< osl::Mutex > aGuard(
m_aMutex );
Reference< XComponentContext > m_xContext
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) override
virtual void SAL_CALL acquire() noexcept override
virtual ~DynamicResultSetWrapperListener() override
virtual void SAL_CALL release() noexcept override
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
DynamicResultSetWrapper * m_pOwner
virtual void SAL_CALL notify(const css::ucb::ListEvent &Changes) override
DynamicResultSetWrapperListener(DynamicResultSetWrapper *pOwner)
osl::Mutex m_aContainerMutex
In dispose call.
rtl::Reference< DynamicResultSetWrapperListener > m_xMyListenerImpl
virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > &Listener) override
css::uno::Reference< css::uno::XComponentContext > m_xContext
css::uno::Reference< css::ucb::XDynamicResultSet > m_xSource
virtual ~DynamicResultSetWrapper() override
virtual void impl_InitResultSetTwo(const css::uno::Reference< css::sdbc::XResultSet > &xResultSet)
std::unique_ptr< comphelper::OInterfaceContainerHelper3< css::lang::XEventListener > > m_pDisposeEventListeners
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) override
css::uno::Reference< css::ucb::XDynamicResultSetListener > m_xListener
virtual void SAL_CALL dispose() override
virtual void impl_disposing(const css::lang::EventObject &Source)
virtual void SAL_CALL setSource(const css::uno::Reference< css::uno::XInterface > &Source) override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getStaticResultSet() override
virtual void SAL_CALL setListener(const css::uno::Reference< css::ucb::XDynamicResultSetListener > &Listener) override
osl::Condition m_aSourceSet
DynamicResultSetWrapper(css::uno::Reference< css::ucb::XDynamicResultSet > const &xOrigin, const css::uno::Reference< css::uno::XComponentContext > &rxContext)
void impl_notify(const css::ucb::ListEvent &Changes)
css::uno::Reference< css::sdbc::XResultSet > m_xMyResultOne
osl::Condition m_aListenerSet
virtual void SAL_CALL connectToCache(const css::uno::Reference< css::ucb::XDynamicResultSet > &xCache) override
virtual sal_Int16 SAL_CALL getCapabilities() override
css::uno::Reference< css::sdbc::XResultSet > m_xSourceResultTwo
css::uno::Reference< css::sdbc::XResultSet > m_xSourceResultOne
virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > &Listener) override
void impl_EnsureNotDisposed()
css::uno::Reference< css::sdbc::XResultSet > m_xMyResultTwo
bool m_bInDispose
Dispose call ready.
virtual void impl_InitResultSetOne(const css::uno::Reference< css::sdbc::XResultSet > &xResultSet)
const Reference< XRow > m_xSource
Reference< XInterface > xTarget
css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType, Interface1 *p1)
ContentProvider * m_pOwner