dbaccess/source/core/api/RowSet.cxx                       |   18 +-
 dbaccess/source/core/api/RowSet.hxx                       |    8 -
 dbaccess/source/core/dataaccess/bookmarkcontainer.cxx     |   12 -
 dbaccess/source/core/dataaccess/databasedocument.cxx      |    4 
 dbaccess/source/core/dataaccess/databasedocument.hxx      |    7 -
 dbaccess/source/core/dataaccess/databaseregistrations.cxx |    4 
 dbaccess/source/core/dataaccess/datasource.hxx            |    3 
 dbaccess/source/core/dataaccess/documenteventnotifier.cxx |    6 
 dbaccess/source/core/inc/ContentHelper.hxx                |    3 
 dbaccess/source/core/inc/bookmarkcontainer.hxx            |    4 
 dbaccess/source/core/inc/databasecontext.hxx              |    2 
 dbaccess/source/ui/app/AppController.cxx                  |    3 
 dbaccess/source/ui/browser/brwctrlr.cxx                   |   10 -
 dbaccess/source/ui/browser/exsrcbrw.cxx                   |    4 
 dbaccess/source/ui/browser/formadapter.cxx                |   20 +--
 dbaccess/source/ui/browser/sbamultiplex.cxx               |   90 +++++++-------
 dbaccess/source/ui/inc/exsrcbrw.hxx                       |    3 
 dbaccess/source/ui/inc/formadapter.hxx                    |    5 
 dbaccess/source/ui/inc/sbamultiplex.hxx                   |   19 +-
 dbaccess/source/ui/misc/dbsubcomponentcontroller.cxx      |    4 
 dbaccess/source/ui/uno/copytablewizard.cxx                |    9 -
 21 files changed, 122 insertions(+), 116 deletions(-)

New commits:
commit d2e28fe1f9e3c7eb5ec3d50880a4421367ef5b92
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Sun Nov 28 09:44:42 2021 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Sun Nov 28 14:58:40 2021 +0100

    use more OInterfaceContainerHelper3 in dbaccess
    
    Change-Id: I03d75ff508ba8f9904e0ed30cff15e91f82b3300
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125957
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/dbaccess/source/core/api/RowSet.cxx 
b/dbaccess/source/core/api/RowSet.cxx
index e3885108f636..79dd9d4a593b 100644
--- a/dbaccess/source/core/api/RowSet.cxx
+++ b/dbaccess/source/core/api/RowSet.cxx
@@ -1091,13 +1091,13 @@ void 
ORowSet::notifyAllListenersRowChanged(::osl::ResettableMutexGuard& _rGuard,
 bool ORowSet::notifyAllListenersCursorBeforeMove(::osl::ResettableMutexGuard& 
_rGuard)
 {
     EventObject aEvt(*m_pMySelf);
-    std::vector< Reference< XInterface > > aListenerSeq = 
m_aApproveListeners.getElements();
+    std::vector< Reference< css::sdb::XRowSetApproveListener > > aListenerSeq 
= m_aApproveListeners.getElements();
     _rGuard.clear();
     bool bCheck = std::all_of(aListenerSeq.rbegin(), aListenerSeq.rend(),
-        [&aEvt](Reference<XInterface>& rxItem) {
+        [&aEvt](Reference<css::sdb::XRowSetApproveListener>& rxItem) {
             try
             {
-                return 
static_cast<bool>(static_cast<XRowSetApproveListener*>(rxItem.get())->approveCursorMove(aEvt));
+                return static_cast<bool>(rxItem->approveCursorMove(aEvt));
             }
             catch( RuntimeException& )
             {
@@ -1110,13 +1110,13 @@ bool 
ORowSet::notifyAllListenersCursorBeforeMove(::osl::ResettableMutexGuard& _r
 
 void ORowSet::notifyAllListenersRowBeforeChange(::osl::ResettableMutexGuard& 
_rGuard,const RowChangeEvent &aEvt)
 {
-    std::vector< Reference< XInterface > > aListenerSeq = 
m_aApproveListeners.getElements();
+    std::vector< Reference< css::sdb::XRowSetApproveListener > > aListenerSeq 
= m_aApproveListeners.getElements();
     _rGuard.clear();
     bool bCheck = std::all_of(aListenerSeq.rbegin(), aListenerSeq.rend(),
-        [&aEvt](Reference<XInterface>& rxItem) {
+        [&aEvt](Reference<css::sdb::XRowSetApproveListener>& rxItem) {
             try
             {
-                return 
static_cast<bool>(static_cast<XRowSetApproveListener*>(rxItem.get())->approveRowChange(aEvt));
+                return static_cast<bool>(rxItem->approveRowChange(aEvt));
             }
             catch( RuntimeException& )
             {
@@ -1517,13 +1517,13 @@ void ORowSet::approveExecution()
     ::osl::MutexGuard aGuard( m_aColumnsMutex );
     EventObject aEvt(*this);
 
-    OInterfaceIteratorHelper2 aApproveIter( m_aApproveListeners );
+    OInterfaceIteratorHelper3 aApproveIter( m_aApproveListeners );
     while ( aApproveIter.hasMoreElements() )
     {
-        Reference< XRowSetApproveListener > xListener( static_cast< 
XRowSetApproveListener* >( aApproveIter.next() ) );
+        Reference< XRowSetApproveListener > xListener( aApproveIter.next() );
         try
         {
-            if ( xListener.is() && !xListener->approveRowSetChange( aEvt ) )
+            if ( !xListener->approveRowSetChange( aEvt ) )
                 throw RowSetVetoException();
         }
         catch ( const DisposedException& e )
diff --git a/dbaccess/source/core/api/RowSet.hxx 
b/dbaccess/source/core/api/RowSet.hxx
index 4dc244d1b5db..da4da6c24e01 100644
--- a/dbaccess/source/core/api/RowSet.hxx
+++ b/dbaccess/source/core/api/RowSet.hxx
@@ -44,7 +44,7 @@
 
 #include <cppuhelper/compbase12.hxx>
 #include <cppuhelper/basemutex.hxx>
-#include <comphelper/interfacecontainer2.hxx>
+#include <comphelper/interfacecontainer3.hxx>
 #include <connectivity/paramwrapper.hxx>
 #include <connectivity/FValue.hxx>
 #include <connectivity/warningscontainer.hxx>
@@ -94,9 +94,9 @@ namespace dbaccess
         std::vector<bool>                         m_aParametersSet;
         std::vector<bool>                         m_aReadOnlyDataColumns;
 
-        ::comphelper::OInterfaceContainerHelper2    m_aRowsetListeners;
-        ::comphelper::OInterfaceContainerHelper2    m_aApproveListeners;
-        ::comphelper::OInterfaceContainerHelper2    m_aRowsChangeListener;
+        ::comphelper::OInterfaceContainerHelper3<css::sdbc::XRowSetListener> 
m_aRowsetListeners;
+        
::comphelper::OInterfaceContainerHelper3<css::sdb::XRowSetApproveListener> 
m_aApproveListeners;
+        
::comphelper::OInterfaceContainerHelper3<css::sdb::XRowsChangeListener> 
m_aRowsChangeListener;
 
         ::dbtools::WarningsContainer                m_aWarnings;
 
diff --git a/dbaccess/source/core/dataaccess/bookmarkcontainer.cxx 
b/dbaccess/source/core/dataaccess/bookmarkcontainer.cxx
index deb618ff9858..bee7a0cbb7b9 100644
--- a/dbaccess/source/core/dataaccess/bookmarkcontainer.cxx
+++ b/dbaccess/source/core/dataaccess/bookmarkcontainer.cxx
@@ -97,9 +97,9 @@ void SAL_CALL OBookmarkContainer::insertByName( const 
OUString& _rName, const An
     if (m_aContainerListeners.getLength())
     {
         ContainerEvent aEvent(*this, makeAny(_rName), makeAny(sNewLink), 
Any());
-        OInterfaceIteratorHelper2 aListenerIterator(m_aContainerListeners);
+        OInterfaceIteratorHelper3 aListenerIterator(m_aContainerListeners);
         while (aListenerIterator.hasMoreElements())
-            static_cast< XContainerListener* 
>(aListenerIterator.next())->elementInserted(aEvent);
+            aListenerIterator.next()->elementInserted(aEvent);
     }
 }
 
@@ -127,9 +127,9 @@ void SAL_CALL OBookmarkContainer::removeByName( const 
OUString& _rName )
     if (m_aContainerListeners.getLength())
     {
         ContainerEvent aEvent(*this, makeAny(_rName), makeAny(sOldBookmark), 
Any());
-        OInterfaceIteratorHelper2 aListenerIterator(m_aContainerListeners);
+        OInterfaceIteratorHelper3 aListenerIterator(m_aContainerListeners);
         while (aListenerIterator.hasMoreElements())
-            static_cast< XContainerListener* 
>(aListenerIterator.next())->elementRemoved(aEvent);
+            aListenerIterator.next()->elementRemoved(aEvent);
     }
 }
 
@@ -162,9 +162,9 @@ void SAL_CALL OBookmarkContainer::replaceByName( const 
OUString& _rName, const A
     if (m_aContainerListeners.getLength())
     {
         ContainerEvent aEvent(*this, makeAny(_rName), makeAny(sNewLink), 
makeAny(sOldLink));
-        OInterfaceIteratorHelper2 aListenerIterator(m_aContainerListeners);
+        OInterfaceIteratorHelper3 aListenerIterator(m_aContainerListeners);
         while (aListenerIterator.hasMoreElements())
-            static_cast< XContainerListener* 
>(aListenerIterator.next())->elementReplaced(aEvent);
+            aListenerIterator.next()->elementReplaced(aEvent);
     }
 }
 
diff --git a/dbaccess/source/core/dataaccess/databasedocument.cxx 
b/dbaccess/source/core/dataaccess/databasedocument.cxx
index 78d870efd670..b8b352a3a59c 100644
--- a/dbaccess/source/core/dataaccess/databasedocument.cxx
+++ b/dbaccess/source/core/dataaccess/databasedocument.cxx
@@ -1506,7 +1506,7 @@ void SAL_CALL ODatabaseDocument::close(sal_Bool 
bDeliverOwnership)
     {
         // allow listeners to veto
         lang::EventObject aEvent( *this );
-        m_aCloseListener.forEach< XCloseListener >(
+        m_aCloseListener.forEach(
             [&aEvent, &bDeliverOwnership] (uno::Reference<XCloseListener> 
const& xListener) {
                 return xListener->queryClosing(aEvent, bDeliverOwnership);
             });
@@ -1776,7 +1776,7 @@ void 
ODatabaseDocument::impl_notifyStorageChange_nolck_nothrow( const Reference<
 {
     Reference< XInterface > xMe( *this );
 
-    m_aStorageListeners.forEach< XStorageChangeListener >(
+    m_aStorageListeners.forEach(
         [&xMe, &xNewRootStorage] (uno::Reference<XStorageChangeListener> 
const& xListener) {
             return xListener->notifyStorageChange(xMe, xNewRootStorage);
         });
diff --git a/dbaccess/source/core/dataaccess/databasedocument.hxx 
b/dbaccess/source/core/dataaccess/databasedocument.hxx
index b20a2f3ed1d8..bd458d1b9259 100644
--- a/dbaccess/source/core/dataaccess/databasedocument.hxx
+++ b/dbaccess/source/core/dataaccess/databasedocument.hxx
@@ -57,6 +57,7 @@
 #include <com/sun/star/util/XCloseable.hpp>
 #include <com/sun/star/util/XModifiable.hpp>
 
+#include <comphelper/interfacecontainer3.hxx>
 #include <cppuhelper/compbase.hxx>
 #include <cppuhelper/implbase3.hxx>
 #include <rtl/ref.hxx>
@@ -168,9 +169,9 @@ class ODatabaseDocument :public ModelDependentComponent     
        // ModelDepe
     typedef std::map< OUString, css::uno::Reference< 
css::frame::XUntitledNumbers > > TNumberedController;
     css::uno::Reference< css::ui::XUIConfigurationManager2>                    
                 m_xUIConfigurationManager;
 
-    ::comphelper::OInterfaceContainerHelper2                                   
                 m_aModifyListeners;
-    ::comphelper::OInterfaceContainerHelper2                                   
                 m_aCloseListener;
-    ::comphelper::OInterfaceContainerHelper2                                   
                 m_aStorageListeners;
+    ::comphelper::OInterfaceContainerHelper3<css::util::XModifyListener>       
                 m_aModifyListeners;
+    ::comphelper::OInterfaceContainerHelper3<css::util::XCloseListener>        
                 m_aCloseListener;
+    
::comphelper::OInterfaceContainerHelper3<css::document::XStorageChangeListener> 
            m_aStorageListeners;
 
     std::unique_ptr<DocumentEvents>                                            
                 m_pEventContainer;
     ::rtl::Reference< DocumentEventExecutor >                                  
                 m_pEventExecutor;
diff --git a/dbaccess/source/core/dataaccess/databaseregistrations.cxx 
b/dbaccess/source/core/dataaccess/databaseregistrations.cxx
index 64477cd67dda..bd215b397852 100644
--- a/dbaccess/source/core/dataaccess/databaseregistrations.cxx
+++ b/dbaccess/source/core/dataaccess/databaseregistrations.cxx
@@ -26,7 +26,7 @@
 #include <com/sun/star/sdb/XDatabaseRegistrations.hpp>
 
 #include <cppuhelper/basemutex.hxx>
-#include <comphelper/interfacecontainer2.hxx>
+#include <comphelper/interfacecontainer3.hxx>
 #include <cppuhelper/implbase1.hxx>
 #include <osl/diagnose.h>
 #include <unotools/pathoptions.hxx>
@@ -136,7 +136,7 @@ namespace dbaccess
     private:
         Reference<XComponentContext>        m_aContext;
         ::utl::OConfigurationTreeRoot       m_aConfigurationRoot;
-        ::comphelper::OInterfaceContainerHelper2  m_aRegistrationListeners;
+        
::comphelper::OInterfaceContainerHelper3<XDatabaseRegistrationsListener>  
m_aRegistrationListeners;
     };
 
     }
diff --git a/dbaccess/source/core/dataaccess/datasource.hxx 
b/dbaccess/source/core/dataaccess/datasource.hxx
index c608505381b0..5b5985eacd72 100644
--- a/dbaccess/source/core/dataaccess/datasource.hxx
+++ b/dbaccess/source/core/dataaccess/datasource.hxx
@@ -30,6 +30,7 @@
 #include <com/sun/star/document/XEventListener.hpp>
 #include <com/sun/star/util/XFlushable.hpp>
 #include <cppuhelper/propshlp.hxx>
+#include <comphelper/interfacecontainer3.hxx>
 #include <comphelper/proparrhlp.hxx>
 #include <cppuhelper/weakref.hxx>
 #include <cppuhelper/compbase.hxx>
@@ -83,7 +84,7 @@ private:
     using ODatabaseSource_Base::rBHelper;
     // note: this thing uses the ref-count of "this", see 
OBookmarkContainer::acquire!
     OBookmarkContainer m_Bookmarks;
-    ::comphelper::OInterfaceContainerHelper2 m_aFlushListeners;
+    ::comphelper::OInterfaceContainerHelper3<css::util::XFlushListener> 
m_aFlushListeners;
 
 private:
     virtual ~ODatabaseSource() override;
diff --git a/dbaccess/source/core/dataaccess/documenteventnotifier.cxx 
b/dbaccess/source/core/dataaccess/documenteventnotifier.cxx
index 38cf0b2f11ba..6a7088f95787 100644
--- a/dbaccess/source/core/dataaccess/documenteventnotifier.cxx
+++ b/dbaccess/source/core/dataaccess/documenteventnotifier.cxx
@@ -22,7 +22,7 @@
 #include <com/sun/star/frame/DoubleInitializationException.hpp>
 
 #include <comphelper/asyncnotification.hxx>
-#include <comphelper/interfacecontainer2.hxx>
+#include <comphelper/interfacecontainer3.hxx>
 #include <cppuhelper/weak.hxx>
 #include <tools/diagnose_ex.h>
 #include <vcl/svapp.hxx>
@@ -52,8 +52,8 @@ namespace dbaccess
         bool                                                    m_bInitialized;
         bool                                                    m_bDisposed;
         std::shared_ptr<::comphelper::AsyncEventNotifierAutoJoin> 
m_pEventBroadcaster;
-        ::comphelper::OInterfaceContainerHelper2                      
m_aLegacyEventListeners;
-        ::comphelper::OInterfaceContainerHelper2                      
m_aDocumentEventListeners;
+        
::comphelper::OInterfaceContainerHelper3<css::document::XEventListener> 
m_aLegacyEventListeners;
+        ::comphelper::OInterfaceContainerHelper3<XDocumentEventListener>  
m_aDocumentEventListeners;
 
     public:
         DocumentEventNotifier_Impl( ::cppu::OWeakObject& 
_rBroadcasterDocument, ::osl::Mutex& _rMutex )
diff --git a/dbaccess/source/core/inc/ContentHelper.hxx 
b/dbaccess/source/core/inc/ContentHelper.hxx
index f23dd4ca2b2d..471729982b9d 100644
--- a/dbaccess/source/core/inc/ContentHelper.hxx
+++ b/dbaccess/source/core/inc/ContentHelper.hxx
@@ -29,6 +29,7 @@
 #include <com/sun/star/uno/XComponentContext.hpp>
 #include <cppuhelper/compbase.hxx>
 #include <cppuhelper/basemutex.hxx>
+#include <comphelper/interfacecontainer3.hxx>
 #include <comphelper/multiinterfacecontainer2.hxx>
 #include <com/sun/star/beans/Property.hpp>
 #include <com/sun/star/container/XChild.hpp>
@@ -93,7 +94,7 @@ namespace dbaccess
         void impl_rename_throw(const OUString& _sNewName,bool _bNotify = true);
 
     protected:
-        ::comphelper::OInterfaceContainerHelper2      m_aContentListeners;
+        
::comphelper::OInterfaceContainerHelper3<css::ucb::XContentEventListener> 
m_aContentListeners;
         PropertyChangeListenerContainer         m_aPropertyChangeListeners;
         css::uno::Reference< css::uno::XInterface >
                                                 m_xParentContainer;
diff --git a/dbaccess/source/core/inc/bookmarkcontainer.hxx 
b/dbaccess/source/core/inc/bookmarkcontainer.hxx
index ebe66ed918eb..464192542499 100644
--- a/dbaccess/source/core/inc/bookmarkcontainer.hxx
+++ b/dbaccess/source/core/inc/bookmarkcontainer.hxx
@@ -24,7 +24,7 @@
 #include <map>
 #include <vector>
 
-#include <comphelper/interfacecontainer2.hxx>
+#include <comphelper/interfacecontainer3.hxx>
 #include <cppuhelper/implbase.hxx>
 #include <osl/mutex.hxx>
 #include <com/sun/star/container/XChild.hpp>
@@ -58,7 +58,7 @@ class OBookmarkContainer final
     MapIteratorVector       m_aBookmarksIndexed;    // for index access to the
 
     ::cppu::OWeakObject&    m_rParent;      // for the ref counting
-    ::comphelper::OInterfaceContainerHelper2
+    
::comphelper::OInterfaceContainerHelper3<css::container::XContainerListener>
                             m_aContainerListeners;
     ::osl::Mutex&           m_rMutex;
 
diff --git a/dbaccess/source/core/inc/databasecontext.hxx 
b/dbaccess/source/core/inc/databasecontext.hxx
index 4f561ebd2401..2f8924f9f837 100644
--- a/dbaccess/source/core/inc/databasecontext.hxx
+++ b/dbaccess/source/core/inc/databasecontext.hxx
@@ -105,7 +105,7 @@ protected:
         // recreated afterwards. So it's our (the context's) responsibility to 
store the session-persistent
         // properties.
 
-    ::comphelper::OInterfaceContainerHelper2       m_aContainerListeners;
+    
::comphelper::OInterfaceContainerHelper3<css::container::XContainerListener>  
m_aContainerListeners;
     rtl::Reference<DatabaseDocumentLoader>         m_xDatabaseDocumentLoader;
 
 public:
diff --git a/dbaccess/source/ui/app/AppController.cxx 
b/dbaccess/source/ui/app/AppController.cxx
index ed36971392b9..378dceb9cf3c 100644
--- a/dbaccess/source/ui/app/AppController.cxx
+++ b/dbaccess/source/ui/app/AppController.cxx
@@ -63,6 +63,7 @@
 #include <vcl/transfer.hxx>
 #include <svtools/cliplistener.hxx>
 
+#include <comphelper/interfacecontainer3.hxx>
 #include <comphelper/sequence.hxx>
 #include <comphelper/uno3.hxx>
 #include <comphelper/types.hxx>
@@ -157,7 +158,7 @@ class SelectionGuard;
 class SelectionNotifier
 {
 private:
-    ::comphelper::OInterfaceContainerHelper2   m_aSelectionListeners;
+    ::comphelper::OInterfaceContainerHelper3<XSelectionChangeListener> 
m_aSelectionListeners;
     ::cppu::OWeakObject&                m_rContext;
     sal_Int32                           m_nSelectionNestingLevel;
 
diff --git a/dbaccess/source/ui/browser/brwctrlr.cxx 
b/dbaccess/source/ui/browser/brwctrlr.cxx
index 27de7af7dd39..65333da089f9 100644
--- a/dbaccess/source/ui/browser/brwctrlr.cxx
+++ b/dbaccess/source/ui/browser/brwctrlr.cxx
@@ -125,7 +125,7 @@ class SbaXDataBrowserController::FormControllerImpl
                                          css::frame::XFrameActionListener >
 {
     friend class SbaXDataBrowserController;
-    ::comphelper::OInterfaceContainerHelper2   m_aActivateListeners;
+    
::comphelper::OInterfaceContainerHelper3<css::form::XFormControllerListener>   
m_aActivateListeners;
     SbaXDataBrowserController*          m_pOwner;
 
 public:
@@ -902,9 +902,9 @@ void SAL_CALL SbaXDataBrowserController::focusGained(const 
FocusEvent& /*e*/)
 {
     // notify our activate listeners (registered on the form controller 
aggregate)
     EventObject aEvt(*this);
-    ::comphelper::OInterfaceIteratorHelper2 
aIter(m_xFormControllerImpl->m_aActivateListeners);
+    ::comphelper::OInterfaceIteratorHelper3 
aIter(m_xFormControllerImpl->m_aActivateListeners);
     while (aIter.hasMoreElements())
-        
static_cast<XFormControllerListener*>(aIter.next())->formActivated(aEvt);
+        aIter.next()->formActivated(aEvt);
 }
 
 void SAL_CALL SbaXDataBrowserController::focusLost(const FocusEvent& e)
@@ -928,9 +928,9 @@ void SAL_CALL SbaXDataBrowserController::focusLost(const 
FocusEvent& e)
 
     // notify the listeners that the "form" we represent has been deactivated
     EventObject aEvt(*this);
-    ::comphelper::OInterfaceIteratorHelper2 
aIter(m_xFormControllerImpl->m_aActivateListeners);
+    ::comphelper::OInterfaceIteratorHelper3 
aIter(m_xFormControllerImpl->m_aActivateListeners);
     while (aIter.hasMoreElements())
-        
static_cast<XFormControllerListener*>(aIter.next())->formDeactivated(aEvt);
+        aIter.next()->formDeactivated(aEvt);
 
     // commit the changes of the grid control (as we're deactivated)
     Reference< XBoundComponent >  
xCommitable(getBrowserView()->getGridControl(), UNO_QUERY);
diff --git a/dbaccess/source/ui/browser/exsrcbrw.cxx 
b/dbaccess/source/ui/browser/exsrcbrw.cxx
index e837f6b05439..2b304f23e511 100644
--- a/dbaccess/source/ui/browser/exsrcbrw.cxx
+++ b/dbaccess/source/ui/browser/exsrcbrw.cxx
@@ -104,9 +104,9 @@ void SbaExternalSourceBrowser::modified(const 
css::lang::EventObject& aEvent)
 
     // multiplex this event to all my listeners
     css::lang::EventObject aEvt(*this);
-    ::comphelper::OInterfaceIteratorHelper2 aIt(m_aModifyListeners);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(m_aModifyListeners);
     while (aIt.hasMoreElements())
-        static_cast< css::util::XModifyListener*>(aIt.next())->modified(aEvt);
+        aIt.next()->modified(aEvt);
 }
 
 void SAL_CALL SbaExternalSourceBrowser::dispatch(const css::util::URL& aURL, 
const Sequence< css::beans::PropertyValue>& aArgs)
diff --git a/dbaccess/source/ui/browser/formadapter.cxx 
b/dbaccess/source/ui/browser/formadapter.cxx
index 20314106988b..8dafddca1442 100644
--- a/dbaccess/source/ui/browser/formadapter.cxx
+++ b/dbaccess/source/ui/browser/formadapter.cxx
@@ -249,9 +249,9 @@ void SbaXFormAdapter::AttachForm(const Reference< 
css::sdbc::XRowSet >& xNewMast
         if (xLoadable->isLoaded())
         {
             css::lang::EventObject aEvt(*this);
-            ::comphelper::OInterfaceIteratorHelper2 aIt(m_aLoadListeners);
+            ::comphelper::OInterfaceIteratorHelper3 aIt(m_aLoadListeners);
             while (aIt.hasMoreElements())
-                static_cast< 
css::form::XLoadListener*>(aIt.next())->unloaded(aEvt);
+                aIt.next()->unloaded(aEvt);
         }
     }
 
@@ -267,9 +267,9 @@ void SbaXFormAdapter::AttachForm(const Reference< 
css::sdbc::XRowSet >& xNewMast
     if (xLoadable->isLoaded())
     {
         css::lang::EventObject aEvt(*this);
-        ::comphelper::OInterfaceIteratorHelper2 aIt(m_aLoadListeners);
+        ::comphelper::OInterfaceIteratorHelper3 aIt(m_aLoadListeners);
         while (aIt.hasMoreElements())
-            static_cast< css::form::XLoadListener*>(aIt.next())->loaded(aEvt);
+            aIt.next()->loaded(aEvt);
     }
 
     // TODO : perhaps _all_ of our listeners should be notified about our new 
state
@@ -1649,9 +1649,9 @@ void SbaXFormAdapter::implInsert(const Any& aElement, 
sal_Int32 nIndex, const OU
     aEvt.Source = *this;
     aEvt.Accessor <<= nIndex;
     aEvt.Element <<= xElement;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(m_aContainerListeners);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(m_aContainerListeners);
     while (aIt.hasMoreElements())
-        static_cast< 
css::container::XContainerListener*>(aIt.next())->elementInserted(aEvt);
+        aIt.next()->elementInserted(aEvt);
 }
 
 sal_Int32 SbaXFormAdapter::implGetPos(const OUString& rName)
@@ -1754,9 +1754,9 @@ void SAL_CALL SbaXFormAdapter::removeByIndex(sal_Int32 
_rIndex)
     css::container::ContainerEvent aEvt;
     aEvt.Source = *this;
     aEvt.Element <<= xAffected;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(m_aContainerListeners);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(m_aContainerListeners);
     while (aIt.hasMoreElements())
-        static_cast< 
css::container::XContainerListener*>(aIt.next())->elementRemoved(aEvt);
+        aIt.next()->elementRemoved(aEvt);
 
 }
 
@@ -1817,9 +1817,9 @@ void SAL_CALL SbaXFormAdapter::replaceByIndex(sal_Int32 
_rIndex, const Any& Elem
     aEvt.Element <<= xElement;
     aEvt.ReplacedElement <<= xOld;
 
-    ::comphelper::OInterfaceIteratorHelper2 aIt(m_aContainerListeners);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(m_aContainerListeners);
     while (aIt.hasMoreElements())
-        static_cast< 
css::container::XContainerListener*>(aIt.next())->elementReplaced(aEvt);
+        aIt.next()->elementReplaced(aEvt);
 }
 
 // css::container::XIndexAccess
diff --git a/dbaccess/source/ui/browser/sbamultiplex.cxx 
b/dbaccess/source/ui/browser/sbamultiplex.cxx
index 9c2e786bb9d8..732b730c2b3d 100644
--- a/dbaccess/source/ui/browser/sbamultiplex.cxx
+++ b/dbaccess/source/ui/browser/sbamultiplex.cxx
@@ -25,7 +25,7 @@ using namespace dbaui;
 // XStatusListener
 SbaXStatusMultiplexer::SbaXStatusMultiplexer(::cppu::OWeakObject& rSource, 
::osl::Mutex& _rMutex)
     :OSbaWeakSubObject(rSource)
-    ,OInterfaceContainerHelper2(_rMutex)
+    ,OInterfaceContainerHelper3(_rMutex)
 {
 }
 
@@ -49,15 +49,15 @@ void SAL_CALL SbaXStatusMultiplexer::statusChanged(const 
css::frame::FeatureStat
 {
     m_aLastKnownStatus = e;
     m_aLastKnownStatus.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt( *this );
+    ::comphelper::OInterfaceIteratorHelper3 aIt( *this );
     while ( aIt.hasMoreElements() )
-        static_cast< css::frame::XStatusListener* >( aIt.next() 
)->statusChanged( m_aLastKnownStatus );
+        aIt.next()->statusChanged( m_aLastKnownStatus );
 }
 
 // LoadListener
 SbaXLoadMultiplexer::SbaXLoadMultiplexer(::cppu::OWeakObject& rSource, 
::osl::Mutex& _rMutex)
     :OSbaWeakSubObject(rSource)
-    ,OInterfaceContainerHelper2(_rMutex)
+    ,OInterfaceContainerHelper3(_rMutex)
 {
 }
 
@@ -80,51 +80,51 @@ void SAL_CALL SbaXLoadMultiplexer::loaded(const 
css::lang::EventObject& e)
 {
     css::lang::EventObject aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while (aIt.hasMoreElements())
-        static_cast< css::form::XLoadListener*>(aIt.next())->loaded(aMulti);
+        aIt.next()->loaded(aMulti);
 }
 void SAL_CALL SbaXLoadMultiplexer::unloaded(const css::lang::EventObject& e)
 {
     css::lang::EventObject aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while (aIt.hasMoreElements())
-        static_cast< css::form::XLoadListener*>(aIt.next())->unloaded(aMulti);
+        aIt.next()->unloaded(aMulti);
 }
 
 void SAL_CALL SbaXLoadMultiplexer::unloading(const css::lang::EventObject& e)
 {
     css::lang::EventObject aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while (aIt.hasMoreElements())
-        static_cast< css::form::XLoadListener*>(aIt.next())->unloading(aMulti);
+        aIt.next()->unloading(aMulti);
 }
 
 void SAL_CALL SbaXLoadMultiplexer::reloading(const css::lang::EventObject& e)
 {
     css::lang::EventObject aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while (aIt.hasMoreElements())
-        static_cast< css::form::XLoadListener*>(aIt.next())->reloading(aMulti);
+        aIt.next()->reloading(aMulti);
 }
 
 void SAL_CALL SbaXLoadMultiplexer::reloaded(const css::lang::EventObject& e)
 {
     css::lang::EventObject aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while (aIt.hasMoreElements())
-        static_cast< css::form::XLoadListener*>(aIt.next())->reloaded(aMulti);
+        aIt.next()->reloaded(aMulti);
 }
 
 
 // css::sdbc::XRowSetListener
 SbaXRowSetMultiplexer::SbaXRowSetMultiplexer(::cppu::OWeakObject& rSource, 
::osl::Mutex& _rMutex)
     :OSbaWeakSubObject(rSource)
-    ,OInterfaceContainerHelper2(_rMutex)
+    ,OInterfaceContainerHelper3(_rMutex)
 {
 }
 
@@ -147,33 +147,33 @@ void SAL_CALL SbaXRowSetMultiplexer::cursorMoved(const 
css::lang::EventObject& e
 {
     css::lang::EventObject aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while (aIt.hasMoreElements())
-        static_cast< 
css::sdbc::XRowSetListener*>(aIt.next())->cursorMoved(aMulti);
+        aIt.next()->cursorMoved(aMulti);
 }
 
 void SAL_CALL SbaXRowSetMultiplexer::rowChanged(const css::lang::EventObject& 
e)
 {
     css::lang::EventObject aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while (aIt.hasMoreElements())
-        static_cast< 
css::sdbc::XRowSetListener*>(aIt.next())->rowChanged(aMulti);
+        aIt.next()->rowChanged(aMulti);
 }
 
 void SAL_CALL SbaXRowSetMultiplexer::rowSetChanged(const 
css::lang::EventObject& e)
 {
     css::lang::EventObject aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while (aIt.hasMoreElements())
-        static_cast< 
css::sdbc::XRowSetListener*>(aIt.next())->rowSetChanged(aMulti);
+        aIt.next()->rowSetChanged(aMulti);
 }
 
 // css::sdb::XRowSetApproveListener
 
SbaXRowSetApproveMultiplexer::SbaXRowSetApproveMultiplexer(::cppu::OWeakObject& 
rSource, ::osl::Mutex& _rMutex)
     :OSbaWeakSubObject(rSource)
-    ,OInterfaceContainerHelper2(_rMutex)
+    ,OInterfaceContainerHelper3(_rMutex)
 {
 }
 
@@ -196,10 +196,10 @@ sal_Bool SAL_CALL 
SbaXRowSetApproveMultiplexer::approveCursorMove(const css::lan
 {
     css::lang::EventObject aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     bool bResult = true;
     while (bResult && aIt.hasMoreElements())
-        bResult = static_cast< 
css::sdb::XRowSetApproveListener*>(aIt.next())->approveCursorMove(aMulti);
+        bResult = aIt.next()->approveCursorMove(aMulti);
     return bResult;
 }
 
@@ -207,10 +207,10 @@ sal_Bool SAL_CALL 
SbaXRowSetApproveMultiplexer::approveRowChange(const css::sdb:
 {
     css::sdb::RowChangeEvent aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     bool bResult = true;
     while (bResult && aIt.hasMoreElements())
-        bResult = static_cast< 
css::sdb::XRowSetApproveListener*>(aIt.next())->approveRowChange(aMulti);
+        bResult = aIt.next()->approveRowChange(aMulti);
     return bResult;
 }
 
@@ -218,17 +218,17 @@ sal_Bool SAL_CALL 
SbaXRowSetApproveMultiplexer::approveRowSetChange(const css::l
 {
     css::lang::EventObject aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     bool bResult = true;
     while (bResult && aIt.hasMoreElements())
-        bResult = static_cast< 
css::sdb::XRowSetApproveListener*>(aIt.next())->approveRowSetChange(aMulti);
+        bResult = aIt.next()->approveRowSetChange(aMulti);
     return bResult;
 }
 
 // css::sdb::XSQLErrorListener
 SbaXSQLErrorMultiplexer::SbaXSQLErrorMultiplexer(::cppu::OWeakObject& rSource, 
::osl::Mutex& _rMutex)
     :OSbaWeakSubObject(rSource)
-    ,OInterfaceContainerHelper2(_rMutex)
+    ,OInterfaceContainerHelper3(_rMutex)
 {
 }
 
@@ -251,15 +251,15 @@ void SAL_CALL SbaXSQLErrorMultiplexer::errorOccured(const 
css::sdb::SQLErrorEven
 {
     css::sdb::SQLErrorEvent aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while (aIt.hasMoreElements())
-        static_cast< 
css::sdb::XSQLErrorListener*>(aIt.next())->errorOccured(aMulti);
+        aIt.next()->errorOccured(aMulti);
 }
 
 // css::form::XDatabaseParameterListener
 SbaXParameterMultiplexer::SbaXParameterMultiplexer(::cppu::OWeakObject& 
rSource, ::osl::Mutex& _rMutex)
     :OSbaWeakSubObject(rSource)
-    ,OInterfaceContainerHelper2(_rMutex)
+    ,OInterfaceContainerHelper3(_rMutex)
 {
 }
 
@@ -282,17 +282,17 @@ sal_Bool SAL_CALL 
SbaXParameterMultiplexer::approveParameter(const css::form::Da
 {
     css::form::DatabaseParameterEvent aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     bool bResult = true;
     while (bResult && aIt.hasMoreElements())
-        bResult = static_cast< 
css::form::XDatabaseParameterListener*>(aIt.next())->approveParameter(aMulti);
+        bResult = aIt.next()->approveParameter(aMulti);
     return bResult;
 }
 
 // css::form::XSubmitListener
 SbaXSubmitMultiplexer::SbaXSubmitMultiplexer(::cppu::OWeakObject& rSource, 
::osl::Mutex& _rMutex)
     :OSbaWeakSubObject(rSource)
-    ,OInterfaceContainerHelper2(_rMutex)
+    ,OInterfaceContainerHelper3(_rMutex)
 {
 }
 
@@ -317,17 +317,17 @@ sal_Bool SAL_CALL 
SbaXSubmitMultiplexer::approveSubmit(const css::lang::EventObj
 {
     css::lang::EventObject aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     bool bResult = true;
     while (bResult && aIt.hasMoreElements())
-        bResult = static_cast< 
css::form::XSubmitListener*>(aIt.next())->approveSubmit(aMulti);
+        bResult = aIt.next()->approveSubmit(aMulti);
     return bResult;
 }
 
 // css::form::XResetListener
 SbaXResetMultiplexer::SbaXResetMultiplexer(::cppu::OWeakObject& rSource, 
::osl::Mutex& _rMutex)
     :OSbaWeakSubObject(rSource)
-    ,OInterfaceContainerHelper2(_rMutex)
+    ,OInterfaceContainerHelper3(_rMutex)
 {
 }
 
@@ -351,10 +351,10 @@ sal_Bool SAL_CALL 
SbaXResetMultiplexer::approveReset(const css::lang::EventObjec
 {
     css::lang::EventObject aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     bool bResult = true;
     while (bResult && aIt.hasMoreElements())
-        bResult = static_cast< 
css::form::XResetListener*>(aIt.next())->approveReset(aMulti);
+        bResult = aIt.next()->approveReset(aMulti);
     return bResult;
 }
 
@@ -362,9 +362,9 @@ void SAL_CALL SbaXResetMultiplexer::resetted(const 
css::lang::EventObject& e)
 {
     css::lang::EventObject aMulti(e);
     aMulti.Source = &m_rParent;
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while (aIt.hasMoreElements())
-        static_cast< css::form::XResetListener*>(aIt.next())->resetted(aMulti);
+        aIt.next()->resetted(aMulti);
 }
 
 // css::beans::XPropertyChangeListener
@@ -518,7 +518,7 @@ void 
SbaXVetoableChangeMultiplexer::Notify(::comphelper::OInterfaceContainerHelp
 // css::beans::XPropertiesChangeListener
 
SbaXPropertiesChangeMultiplexer::SbaXPropertiesChangeMultiplexer(::cppu::OWeakObject&
 rSource, ::osl::Mutex& _rMutex)
     :OSbaWeakSubObject(rSource)
-    ,OInterfaceContainerHelper2(_rMutex)
+    ,OInterfaceContainerHelper3(_rMutex)
 {
 }
 
@@ -546,9 +546,9 @@ void 
SbaXPropertiesChangeMultiplexer::propertiesChange(const css::uno::Sequence<
     for (css::beans::PropertyChangeEvent & rEvent : asNonConstRange(aMulti))
         rEvent.Source = &m_rParent;
 
-    ::comphelper::OInterfaceIteratorHelper2 aIt(*this);
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while (aIt.hasMoreElements())
-        static_cast< 
css::beans::XPropertiesChangeListener*>(aIt.next())->propertiesChange(aMulti);
+        aIt.next()->propertiesChange(aMulti);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/ui/inc/exsrcbrw.hxx 
b/dbaccess/source/ui/inc/exsrcbrw.hxx
index eaeb56e336bd..0ecda1ed647e 100644
--- a/dbaccess/source/ui/inc/exsrcbrw.hxx
+++ b/dbaccess/source/ui/inc/exsrcbrw.hxx
@@ -21,6 +21,7 @@
 
 #include "brwctrlr.hxx"
 
+#include <comphelper/interfacecontainer3.hxx>
 #include <comphelper/uno3.hxx>
 
 // SbaExternalSourceBrowser
@@ -32,7 +33,7 @@ namespace dbaui
                 :public SbaXDataBrowserController
                 ,public css::util::XModifyBroadcaster
     {
-        ::comphelper::OInterfaceContainerHelper2   m_aModifyListeners;
+        ::comphelper::OInterfaceContainerHelper3<css::util::XModifyListener>  
m_aModifyListeners;
             // for multiplexing the modify events
         rtl::Reference<SbaXFormAdapter>            m_pDataSourceImpl;
         bool                            m_bInQueryDispatch;
diff --git a/dbaccess/source/ui/inc/formadapter.hxx 
b/dbaccess/source/ui/inc/formadapter.hxx
index c4fa9d96af66..c6d565896215 100644
--- a/dbaccess/source/ui/inc/formadapter.hxx
+++ b/dbaccess/source/ui/inc/formadapter.hxx
@@ -53,6 +53,7 @@
 #include <com/sun/star/io/XPersistObject.hpp>
 #include <com/sun/star/container/XNamed.hpp>
 #include <com/sun/star/util/XCancellable.hpp>
+#include <comphelper/interfacecontainer3.hxx>
 #include <comphelper/uno3.hxx>
 #include <cppuhelper/implbase.hxx>
 #include <cppuhelper/implbase12.hxx>
@@ -133,8 +134,8 @@ namespace dbaui
         SbaXVetoableChangeMultiplexer       m_aVetoablePropertyChangeListeners;
         SbaXPropertiesChangeMultiplexer     m_aPropertiesChangeListeners;
 
-        ::comphelper::OInterfaceContainerHelper2   m_aDisposeListeners;
-        ::comphelper::OInterfaceContainerHelper2   m_aContainerListeners;
+        ::comphelper::OInterfaceContainerHelper3<css::lang::XEventListener> 
m_aDisposeListeners;
+        
::comphelper::OInterfaceContainerHelper3<css::container::XContainerListener> 
m_aContainerListeners;
 
         // hierarchy administration
         css::uno::Reference< css::uno::XInterface >                           
m_xParent;
diff --git a/dbaccess/source/ui/inc/sbamultiplex.hxx 
b/dbaccess/source/ui/inc/sbamultiplex.hxx
index 1ad6152b0df5..87d31c88dc2b 100644
--- a/dbaccess/source/ui/inc/sbamultiplex.hxx
+++ b/dbaccess/source/ui/inc/sbamultiplex.hxx
@@ -32,6 +32,7 @@
 #include <com/sun/star/frame/XStatusListener.hpp>
 #include <comphelper/uno3.hxx>
 #include <cppuhelper/interfacecontainer.hxx>
+#include <comphelper/interfacecontainer3.hxx>
 #include <comphelper/multiinterfacecontainer2.hxx>
 #include <cppuhelper/queryinterface.hxx>
 #include <cppuhelper/weak.hxx>
@@ -56,7 +57,7 @@ namespace dbaui
     class SbaXStatusMultiplexer
             :public OSbaWeakSubObject
             ,public css::frame::XStatusListener
-            ,public ::comphelper::OInterfaceContainerHelper2
+            ,public 
::comphelper::OInterfaceContainerHelper3<css::frame::XStatusListener>
     {
     public:
         SbaXStatusMultiplexer(::cppu::OWeakObject& rSource, ::osl::Mutex& 
rMutex);
@@ -81,7 +82,7 @@ namespace dbaui
     class SbaXLoadMultiplexer
             :public OSbaWeakSubObject
             ,public css::form::XLoadListener
-            ,public ::comphelper::OInterfaceContainerHelper2
+            ,public 
::comphelper::OInterfaceContainerHelper3<css::form::XLoadListener>
     {
     public:
         SbaXLoadMultiplexer(::cppu::OWeakObject& rSource, ::osl::Mutex& 
rMutex);
@@ -105,7 +106,7 @@ namespace dbaui
     class SbaXParameterMultiplexer
             :public OSbaWeakSubObject
             ,public css::form::XDatabaseParameterListener
-            ,public ::comphelper::OInterfaceContainerHelper2
+            ,public 
::comphelper::OInterfaceContainerHelper3<css::form::XDatabaseParameterListener>
     {
     public:
         SbaXParameterMultiplexer(::cppu::OWeakObject& rSource, ::osl::Mutex& 
rMutex);
@@ -124,7 +125,7 @@ namespace dbaui
     class SbaXSubmitMultiplexer
             :public OSbaWeakSubObject
             ,public css::form::XSubmitListener
-            ,public ::comphelper::OInterfaceContainerHelper2
+            ,public 
::comphelper::OInterfaceContainerHelper3<css::form::XSubmitListener>
     {
     public:
         SbaXSubmitMultiplexer(::cppu::OWeakObject& rSource, ::osl::Mutex& 
rMutex);
@@ -143,7 +144,7 @@ namespace dbaui
     class SbaXResetMultiplexer
             :public OSbaWeakSubObject
             ,public css::form::XResetListener
-            ,public ::comphelper::OInterfaceContainerHelper2
+            ,public 
::comphelper::OInterfaceContainerHelper3<css::form::XResetListener>
     {
     public:
         SbaXResetMultiplexer(::cppu::OWeakObject& rSource, ::osl::Mutex& 
rMutex);
@@ -163,7 +164,7 @@ namespace dbaui
     class SbaXRowSetMultiplexer
             :public OSbaWeakSubObject
             ,public css::sdbc::XRowSetListener
-            ,public ::comphelper::OInterfaceContainerHelper2
+            ,public 
::comphelper::OInterfaceContainerHelper3<css::sdbc::XRowSetListener>
     {
     public:
         SbaXRowSetMultiplexer(::cppu::OWeakObject& rSource, ::osl::Mutex& 
rMutex);
@@ -184,7 +185,7 @@ namespace dbaui
     class SbaXRowSetApproveMultiplexer
             :public OSbaWeakSubObject
             ,public css::sdb::XRowSetApproveListener
-            ,public ::comphelper::OInterfaceContainerHelper2
+            ,public 
::comphelper::OInterfaceContainerHelper3<css::sdb::XRowSetApproveListener>
     {
     public:
         SbaXRowSetApproveMultiplexer(::cppu::OWeakObject& rSource, 
::osl::Mutex& rMutex);
@@ -205,7 +206,7 @@ namespace dbaui
     class SbaXSQLErrorMultiplexer
             :public OSbaWeakSubObject
             ,public css::sdb::XSQLErrorListener
-            ,public ::comphelper::OInterfaceContainerHelper2
+            ,public 
::comphelper::OInterfaceContainerHelper3<css::sdb::XSQLErrorListener>
     {
     public:
         SbaXSQLErrorMultiplexer(::cppu::OWeakObject& rSource, ::osl::Mutex& 
rMutex);
@@ -288,7 +289,7 @@ namespace dbaui
     class SbaXPropertiesChangeMultiplexer
             :public OSbaWeakSubObject
             ,public css::beans::XPropertiesChangeListener
-            ,public ::comphelper::OInterfaceContainerHelper2
+            ,public 
::comphelper::OInterfaceContainerHelper3<css::beans::XPropertiesChangeListener>
     {
     public:
         SbaXPropertiesChangeMultiplexer(::cppu::OWeakObject& rSource, 
::osl::Mutex& rMutex);
diff --git a/dbaccess/source/ui/misc/dbsubcomponentcontroller.cxx 
b/dbaccess/source/ui/misc/dbsubcomponentcontroller.cxx
index b77953316ec7..e736e365aea9 100644
--- a/dbaccess/source/ui/misc/dbsubcomponentcontroller.cxx
+++ b/dbaccess/source/ui/misc/dbsubcomponentcontroller.cxx
@@ -37,7 +37,7 @@
 #include <connectivity/dbexception.hxx>
 #include <connectivity/dbmetadata.hxx>
 #include <connectivity/dbtools.hxx>
-#include <comphelper/interfacecontainer2.hxx>
+#include <comphelper/interfacecontainer3.hxx>
 #include <rtl/ustrbuf.hxx>
 #include <sal/log.hxx>
 #include <toolkit/helper/vclunohelper.hxx>
@@ -124,7 +124,7 @@ namespace dbaui
     public:
         ::dbtools::SQLExceptionInfo     m_aCurrentError;
 
-        ::comphelper::OInterfaceContainerHelper2
+        ::comphelper::OInterfaceContainerHelper3<css::util::XModifyListener>
                                         m_aModifyListeners;
 
         // <properties>
diff --git a/dbaccess/source/ui/uno/copytablewizard.cxx 
b/dbaccess/source/ui/uno/copytablewizard.cxx
index 9ebd7d6df288..51420d74995c 100644
--- a/dbaccess/source/ui/uno/copytablewizard.cxx
+++ b/dbaccess/source/ui/uno/copytablewizard.cxx
@@ -59,7 +59,7 @@
 #include <connectivity/dbtools.hxx>
 #include <cppuhelper/exc_hlp.hxx>
 #include <cppuhelper/implbase.hxx>
-#include <comphelper/interfacecontainer2.hxx>
+#include <comphelper/interfacecontainer3.hxx>
 #include <rtl/ustrbuf.hxx>
 #include <sal/log.hxx>
 #include <svtools/genericunodialog.hxx>
@@ -338,7 +338,7 @@ private:
 
         // other
         Reference< XInteractionHandler > m_xInteractionHandler;
-        ::comphelper::OInterfaceContainerHelper2
+        ::comphelper::OInterfaceContainerHelper3<XCopyTableListener>
                                         m_aCopyTableListeners;
         sal_Int16                       m_nOverrideExecutionResult;
     };
@@ -983,13 +983,12 @@ namespace
 
 bool CopyTableWizard::impl_processCopyError_nothrow( const CopyTableRowEvent& 
_rEvent )
 {
-    Reference< XCopyTableListener > xListener;
     try
     {
-        ::comphelper::OInterfaceIteratorHelper2 aIter( m_aCopyTableListeners );
+        ::comphelper::OInterfaceIteratorHelper3 aIter( m_aCopyTableListeners );
         while ( aIter.hasMoreElements() )
         {
-            xListener.set( aIter.next(), UNO_QUERY_THROW );
+            Reference< XCopyTableListener > xListener( aIter.next() );
             sal_Int16 nListenerChoice = xListener->copyRowError( _rEvent );
             switch ( nListenerChoice )
             {

Reply via email to