diff options
Diffstat (limited to 'configmgr/source/api2/broadcaster.cxx')
-rw-r--r-- | configmgr/source/api2/broadcaster.cxx | 534 |
1 files changed, 243 insertions, 291 deletions
diff --git a/configmgr/source/api2/broadcaster.cxx b/configmgr/source/api2/broadcaster.cxx index cfcc085d18..9bd6cf0d27 100644 --- a/configmgr/source/api2/broadcaster.cxx +++ b/configmgr/source/api2/broadcaster.cxx @@ -61,19 +61,12 @@ namespace configmgr namespace configapi { // --------------------------------------------------------------------------------------------------- - using configuration::Tree; - using configuration::NodeID; - - using configuration::NodeChangeInformation; - using configuration::NodeChangeLocation; - using configuration::NodeChangesInformation; -// --------------------------------------------------------------------------------------------------- // Broadcaster implementation // --------------------------------------------------------------------------------------------------- class BroadcasterHelper { public: - static NotifierHolder getImpl(Notifier const& aNotifier) { return aNotifier.m_aImpl; } + static vos::ORef<NotifierImpl> getImpl(Notifier const& aNotifier) { return aNotifier.m_aImpl; } }; // --------------------------------------------------------------------------------------------------- @@ -83,8 +76,7 @@ namespace configmgr template <class T> struct LessORefBodyPtr { - typedef vos::ORef<T> Ref; - bool operator()(Ref const& lhs, Ref const& rhs) const + bool operator()(vos::ORef<T> const& lhs, vos::ORef<T> const& rhs) const { return ptr_less(lhs.getBodyPtr(), rhs.getBodyPtr()); } @@ -95,7 +87,7 @@ namespace configmgr class ApiTreeRef { ApiTreeImpl const* m_pApiTree; - UnoInterfaceRef m_xKeepAlive; + uno::Reference<uno::XInterface> m_xKeepAlive; public: explicit ApiTreeRef(ApiTreeImpl const* _pApiTree = NULL) : m_pApiTree(_pApiTree) @@ -120,8 +112,7 @@ namespace configmgr { return lhs.m_pApiTree != rhs.m_pApiTree; } }; // ----------------------------------------------------------------------------------------------- - typedef std::map< NotifierHolder, ApiTreeRef, LessORefBodyPtr<NotifierImpl> > NotifierSet; - typedef NotifierSet::value_type NotifierData; + typedef std::map< vos::ORef<NotifierImpl>, ApiTreeRef, LessORefBodyPtr<NotifierImpl> > NotifierSet; // ----------------------------------------------------------------------------------------------- } @@ -131,219 +122,201 @@ namespace configmgr class Broadcaster::Impl : public vos::OReference { private: - NotifierData m_aNotifierData; + NotifierSet::value_type m_aNotifierData; public: - Impl(NotifierData const& aNotifierData) : m_aNotifierData(aNotifierData) {} + Impl(NotifierSet::value_type const& aNotifierData) : m_aNotifierData(aNotifierData) {} - NotifierData getNotifierData() const { return m_aNotifierData; } + NotifierSet::value_type getNotifierData() const { return m_aNotifierData; } - bool translateChanges(NodeChangesInformation& aInfos, NodeChanges const& aChanges, bool bSingleBase) const; - bool translateChanges(NodeChangesInformation& aInfos, NodeChangesInformation const& aChanges, bool bSingleBase) const; + bool translateChanges(configuration::NodeChangesInformation& aInfos, configuration::NodeChanges const& aChanges, bool bSingleBase) const; + bool translateChanges(configuration::NodeChangesInformation& aInfos, configuration::NodeChangesInformation const& aChanges, bool bSingleBase) const; - void queryConstraints(NodeChangesInformation const& aChanges) { this->doQueryConstraints(aChanges); } - void notifyListeners(NodeChangesInformation const& aChanges) { this->doNotifyListeners(aChanges); } + void queryConstraints(configuration::NodeChangesInformation const& aChanges) { this->doQueryConstraints(aChanges); } + void notifyListeners(configuration::NodeChangesInformation const& aChanges) { this->doNotifyListeners(aChanges); } - void notifyRootListeners(NodeChangesInformation const& aChanges); + void notifyRootListeners(configuration::NodeChangesInformation const& aChanges); - static vos::ORef<Impl> create(NotifierHolder const& rNotifierImpl, ApiTreeRef const& pTreeImpl, NodeChange const& aChange, bool bLocal); - static vos::ORef<Impl> create(NotifierHolder const& rNotifierImpl, ApiTreeRef const& pTreeImpl, NodeChanges const& aChange, bool bLocal); - static vos::ORef<Impl> create(NotifierHolder const& rNotifierImpl, ApiTreeRef const& pTreeImpl, NodeChangeInformation const& aChange, bool bLocal); - static vos::ORef<Impl> create(NotifierHolder const& rNotifierImpl, ApiTreeRef const& pTreeImpl, NodeChangesInformation const& aChange, bool bLocal); + static vos::ORef<Impl> create(vos::ORef<NotifierImpl> const& rNotifierImpl, ApiTreeRef const& pTreeImpl, configuration::NodeChange const& aChange, bool bLocal); + static vos::ORef<Impl> create(vos::ORef<NotifierImpl> const& rNotifierImpl, ApiTreeRef const& pTreeImpl, configuration::NodeChanges const& aChange, bool bLocal); + static vos::ORef<Impl> create(vos::ORef<NotifierImpl> const& rNotifierImpl, ApiTreeRef const& pTreeImpl, configuration::NodeChangeInformation const& aChange, bool bLocal); + static vos::ORef<Impl> create(vos::ORef<NotifierImpl> const& rNotifierImpl, ApiTreeRef const& pTreeImpl, configuration::NodeChangesInformation const& aChange, bool bLocal); private: - virtual void doQueryConstraints(NodeChangesInformation const& aChanges) = 0; - virtual void doNotifyListeners(NodeChangesInformation const& aChanges) = 0; + virtual void doQueryConstraints(configuration::NodeChangesInformation const& aChanges) = 0; + virtual void doNotifyListeners(configuration::NodeChangesInformation const& aChanges) = 0; }; // --------------------------------------------------------------------------------------------------- namespace { // ----------------------------------------------------------------------------------------------- - using configuration::Tree; - using configuration::TreeRef; - using configuration::NodeRef; - using configuration::NodeID; - using configuration::SubNodeID; - using configuration::NodeOffset; - using configuration::NodeChange; - using configuration::NodeChangeInformation; - using configuration::NodeChangeData; - - typedef std::set< configuration::NodeID > NodeSet; - typedef std::set< configuration::SubNodeID > SubNodeSet; - // ----------------------------------------------------------------------------------------------- - typedef vos::ORef< Broadcaster::Impl > BroadcasterImplRef; - // ----------------------------------------------------------------------------------------------- class EmptyBroadcaster_Impl : public Broadcaster::Impl { - EmptyBroadcaster_Impl(NotifierData const& rNotifierData) + EmptyBroadcaster_Impl(NotifierSet::value_type const& rNotifierData) : Broadcaster::Impl(rNotifierData) { } public: static - BroadcasterImplRef create(NotifierData const& rRootNotifier) + vos::ORef< Broadcaster::Impl > create(NotifierSet::value_type const& rRootNotifier) { return new EmptyBroadcaster_Impl(rRootNotifier); } private: - virtual void doQueryConstraints(NodeChangesInformation const& aChanges); - virtual void doNotifyListeners(NodeChangesInformation const& aChanges); + virtual void doQueryConstraints(configuration::NodeChangesInformation const& aChanges); + virtual void doNotifyListeners(configuration::NodeChangesInformation const& aChanges); }; - void EmptyBroadcaster_Impl::doQueryConstraints(NodeChangesInformation const&) {} - void EmptyBroadcaster_Impl::doNotifyListeners(NodeChangesInformation const&) {} + void EmptyBroadcaster_Impl::doQueryConstraints(configuration::NodeChangesInformation const&) {} + void EmptyBroadcaster_Impl::doNotifyListeners(configuration::NodeChangesInformation const&) {} // ----------------------------------------------------------------------------------------------- class NodeLocalBroadcaster_Impl : public Broadcaster::Impl { - NodeID aAffectedNode; + configuration::NodeID aAffectedNode; public: - NodeLocalBroadcaster_Impl(NotifierData const& rTreeNotifierData, NodeID const& aAffectedID) + NodeLocalBroadcaster_Impl(NotifierSet::value_type const& rTreeNotifierData, configuration::NodeID const& aAffectedID) : Broadcaster::Impl(rTreeNotifierData) , aAffectedNode(aAffectedID) { } - NodeID getAffectedNodeID() const { return aAffectedNode; } - NodeOffset getNodeIndex() const { return aAffectedNode.toIndex(); } + configuration::NodeID getAffectedNodeID() const { return aAffectedNode; } + unsigned int getNodeIndex() const { return aAffectedNode.toIndex(); } protected: - void querySingleConstraint(NodeChangeInformation const& aChange, bool bMore); - void notifySingleChange(NodeChangeInformation const& aChange, bool bMore, css::beans::PropertyChangeEvent*& pCurEvent); + void querySingleConstraint(configuration::NodeChangeInformation const& aChange, bool bMore); + void notifySingleChange(configuration::NodeChangeInformation const& aChange, bool bMore, css::beans::PropertyChangeEvent*& pCurEvent); }; // ----------------------------------------------------------------------------------------------- class SingleChangeBroadcaster_Impl : public NodeLocalBroadcaster_Impl { - SubNodeID m_aChangingValue; + configuration::SubNodeID m_aChangingValue; - SingleChangeBroadcaster_Impl(NotifierData const& rTreeNotifierData, NodeID const& aAffectedID, SubNodeID const& aChangedValue); + SingleChangeBroadcaster_Impl(NotifierSet::value_type const& rTreeNotifierData, configuration::NodeID const& aAffectedID, configuration::SubNodeID const& aChangedValue); public: static NodeLocalBroadcaster_Impl* create( - NotifierData const& rLocalNotifier, - NodeChangeLocation const& aChange); + NotifierSet::value_type const& rLocalNotifier, + configuration::NodeChangeLocation const& aChange); static NodeLocalBroadcaster_Impl* create( - NotifierData const& rLocalNotifier, - NodeID const& aAffectedID, - NodeChangeLocation const& aChange); + NotifierSet::value_type const& rLocalNotifier, + configuration::NodeID const& aAffectedID, + configuration::NodeChangeLocation const& aChange); static NodeLocalBroadcaster_Impl* create( - NotifierData const& rLocalNotifier, - NodeID const& aAffectedID, - SubNodeID const& aChangedNode, - NodeChangeLocation const& aChange); + NotifierSet::value_type const& rLocalNotifier, + configuration::NodeID const& aAffectedID, + configuration::SubNodeID const& aChangedNode, + configuration::NodeChangeLocation const& aChange); private: - virtual void doQueryConstraints(NodeChangesInformation const& aChanges); - virtual void doNotifyListeners(NodeChangesInformation const& aChanges); + virtual void doQueryConstraints(configuration::NodeChangesInformation const& aChanges); + virtual void doNotifyListeners(configuration::NodeChangesInformation const& aChanges); }; // ----------------------------------------------------------------------------------------------- class MultiChangeBroadcaster_Impl : public NodeLocalBroadcaster_Impl { - SubNodeSet m_aChangingNodes; + std::set< configuration::SubNodeID > m_aChangingNodes; - MultiChangeBroadcaster_Impl(NotifierData const& rTreeNotifierData, NodeID const& aAffectedID, SubNodeSet& aChangedNodes); + MultiChangeBroadcaster_Impl(NotifierSet::value_type const& rTreeNotifierData, configuration::NodeID const& aAffectedID, std::set< configuration::SubNodeID >& aChangedNodes); public: static NodeLocalBroadcaster_Impl* create( - NotifierData const& rLocalNotifier, - NodeChangesInformation const& aChanges); + NotifierSet::value_type const& rLocalNotifier, + configuration::NodeChangesInformation const& aChanges); static NodeLocalBroadcaster_Impl* create( - NotifierData const& rLocalNotifier, - NodeID const& aAffectedID, - NodeChangesInformation const& aChanges); + NotifierSet::value_type const& rLocalNotifier, + configuration::NodeID const& aAffectedID, + configuration::NodeChangesInformation const& aChanges); private: - virtual void doQueryConstraints(NodeChangesInformation const& aChanges); - virtual void doNotifyListeners(NodeChangesInformation const& aChanges); + virtual void doQueryConstraints(configuration::NodeChangesInformation const& aChanges); + virtual void doNotifyListeners(configuration::NodeChangesInformation const& aChanges); }; // ----------------------------------------------------------------------------------------------- class SingleTreeBroadcaster_Impl : public Broadcaster::Impl { - typedef std::vector< vos::ORef<NodeLocalBroadcaster_Impl> > BroadcasterList; - BroadcasterList m_aBroadcasters; + std::vector< vos::ORef<NodeLocalBroadcaster_Impl> > m_aBroadcasters; - SingleTreeBroadcaster_Impl(NotifierData const& rTreeNotifierData, BroadcasterList& aBroadcasters); + SingleTreeBroadcaster_Impl(NotifierSet::value_type const& rTreeNotifierData, std::vector< vos::ORef<NodeLocalBroadcaster_Impl> >& aBroadcasters); public: //-------------------------- static - BroadcasterImplRef create( - NotifierData const& rRootNotifier, - NotifierData const& rLocalNotifier, - NodeChangesInformation const& aChanges); + vos::ORef< Broadcaster::Impl > create( + NotifierSet::value_type const& rRootNotifier, + NotifierSet::value_type const& rLocalNotifier, + configuration::NodeChangesInformation const& aChanges); - static bool selectChanges(NodeChangesInformation& rSelected, NodeChangesInformation const& aOriginal, NodeID const& aSelector); + static bool selectChanges(configuration::NodeChangesInformation& rSelected, configuration::NodeChangesInformation const& aOriginal, configuration::NodeID const& aSelector); //-------------------------- private: - virtual void doQueryConstraints(NodeChangesInformation const& aChanges); - virtual void doNotifyListeners(NodeChangesInformation const& aChanges); + virtual void doQueryConstraints(configuration::NodeChangesInformation const& aChanges); + virtual void doNotifyListeners(configuration::NodeChangesInformation const& aChanges); }; // ----------------------------------------------------------------------------------------------- class MultiTreeBroadcaster_Impl : public Broadcaster::Impl { - typedef std::vector< BroadcasterImplRef > BroadcasterList; - BroadcasterList m_aBroadcasters; + std::vector< vos::ORef< Broadcaster::Impl > > m_aBroadcasters; - MultiTreeBroadcaster_Impl(NotifierData const& rRootNotifierData, BroadcasterList& aBroadcasters); + MultiTreeBroadcaster_Impl(NotifierSet::value_type const& rRootNotifierData, std::vector< vos::ORef< Broadcaster::Impl > >& aBroadcasters); public: //-------------------------- static - BroadcasterImplRef create( - NotifierData const& rRootNotifier, + vos::ORef< Broadcaster::Impl > create( + NotifierSet::value_type const& rRootNotifier, NotifierSet const& rNotifiers, - NodeChangesInformation const& aChanges); + configuration::NodeChangesInformation const& aChanges); - static bool selectChanges(NodeChangesInformation& rSelected, NodeChangesInformation const& aOriginal, NotifierData const& aSelector); + static bool selectChanges(configuration::NodeChangesInformation& rSelected, configuration::NodeChangesInformation const& aOriginal, NotifierSet::value_type const& aSelector); //-------------------------- private: - virtual void doQueryConstraints(NodeChangesInformation const& aChanges); - virtual void doNotifyListeners(NodeChangesInformation const& aChanges); + virtual void doQueryConstraints(configuration::NodeChangesInformation const& aChanges); + virtual void doNotifyListeners(configuration::NodeChangesInformation const& aChanges); }; // ----------------------------------------------------------------------------------------------- - inline NodeID makeRootID( Tree const& aTree ) { return NodeID( aTree, aTree.getRootNode() ); } - inline NodeID makeRootID( TreeRef const& aTree ) { return NodeID( aTree, aTree.getRootNode() ); } - inline NodeID makeRootID( ApiTreeRef const& pTreeImpl ) { return makeRootID( pTreeImpl->getTree() ); } + inline configuration::NodeID makeRootID( rtl::Reference< configuration::Tree > const& aTree ) { return configuration::NodeID( aTree, aTree->getRootNode() ); } + inline configuration::NodeID makeRootID( ApiTreeRef const& pTreeImpl ) { return makeRootID( pTreeImpl->getTree() ); } // ----------------------------------------------------------------------------------------------- - NotifierData findNotifier(NodeChangeLocation const& aChange, ApiTreeRef const& pTreeImpl) + NotifierSet::value_type findNotifier(configuration::NodeChangeLocation const& aChange, ApiTreeRef const& pTreeImpl) { OSL_ENSURE(aChange.isValidData(),"Invalid change location - cannot find notifier"); - NodeID aAffectedNode = aChange.getAffectedNodeID(); + configuration::NodeID aAffectedNode = aChange.getAffectedNodeID(); if (aAffectedNode.isEmpty()) - return NotifierData(); + return NotifierSet::value_type(); ApiTreeRef aAffectedImpl( Factory::findDescendantTreeImpl(aAffectedNode, pTreeImpl.get()) ); if (aAffectedImpl.is()) { - NotifierHolder aAffectedNotifier = BroadcasterHelper::getImpl(aAffectedImpl->getNotifier()); + vos::ORef<NotifierImpl> aAffectedNotifier = BroadcasterHelper::getImpl(aAffectedImpl->getNotifier()); - return NotifierData(aAffectedNotifier, aAffectedImpl); + return NotifierSet::value_type(aAffectedNotifier, aAffectedImpl); } else - return NotifierData(); + return NotifierSet::value_type(); } // ----------------------------------------------------------------------------------------------- inline - NotifierData findNotifier(NodeChangeInformation const& aChange, ApiTreeRef const& pTreeImpl) + NotifierSet::value_type findNotifier(configuration::NodeChangeInformation const& aChange, ApiTreeRef const& pTreeImpl) { return findNotifier(aChange.location,pTreeImpl); } // ----------------------------------------------------------------------------------------------- - void findNotifiers(NotifierSet& aNotifiers, NodeChangesInformation const& aChanges, ApiTreeRef const& pTreeImpl ) + void findNotifiers(NotifierSet& aNotifiers, configuration::NodeChangesInformation const& aChanges, ApiTreeRef const& pTreeImpl ) { - for (NodeChangesInformation::Iterator it = aChanges.begin(); it != aChanges.end(); ++it) + for (std::vector< configuration::NodeChangeInformation >::const_iterator it = aChanges.begin(); it != aChanges.end(); ++it) { - NotifierData aNotifierData( findNotifier(*it,pTreeImpl) ); + NotifierSet::value_type aNotifierData( findNotifier(*it,pTreeImpl) ); if (aNotifierData.first.isValid()) { @@ -355,17 +328,14 @@ namespace configmgr // ----------------------------------------------------------------------------------------------- // NodeLocalBroadcaster_Impl // ----------------------------------------------------------------------------------------------- - void NodeLocalBroadcaster_Impl::querySingleConstraint(NodeChangeInformation const& aChange, bool bMore) + void NodeLocalBroadcaster_Impl::querySingleConstraint(configuration::NodeChangeInformation const& aChange, bool bMore) { - using css::beans::XVetoableChangeListener; - - typedef ListenerContainerIterator< XVetoableChangeListener > ListenerIterator; - uno::Reference< XVetoableChangeListener > const * const SelectListener = 0; + uno::Reference< css::beans::XVetoableChangeListener > const * const SelectListener = 0; - NotifierImplHolder pNotifierImpl = getNotifierData().first; + vos::ORef<NotifierImpl> pNotifierImpl = getNotifierData().first; - ListenerContainer* pListeners = pNotifierImpl->m_aListeners.getContainer( getNodeIndex(), getCppuType(SelectListener) ); - ListenerContainer* pSpecial = pNotifierImpl->m_aListeners.getSpecialContainer( aChange.location.getChangingValueID() ); + cppu::OInterfaceContainerHelper* pListeners = pNotifierImpl->m_aListeners.getContainer( getNodeIndex(), getCppuType(SelectListener) ); + cppu::OInterfaceContainerHelper* pSpecial = pNotifierImpl->m_aListeners.getSpecialContainer( aChange.location.getChangingValueID() ); if (pSpecial || pListeners) { @@ -378,7 +348,7 @@ namespace configmgr // a PropertyVetoException (which is not a RuntimeException) if (pListeners) { - ListenerIterator aIterator(*pListeners); + ListenerContainerIterator< css::beans::XVetoableChangeListener > aIterator(*pListeners); UnoApiLockReleaser aGuardReleaser; while (aIterator.hasMoreElements()) @@ -391,7 +361,7 @@ namespace configmgr } if (pSpecial) { - ListenerIterator aIterator(*pSpecial); + ListenerContainerIterator< css::beans::XVetoableChangeListener > aIterator(*pSpecial); UnoApiLockReleaser aGuardReleaser; while (aIterator.hasMoreElements()) @@ -407,19 +377,14 @@ namespace configmgr } // ----------------------------------------------------------------------------------------------- - void NodeLocalBroadcaster_Impl::notifySingleChange(NodeChangeInformation const& aChange, bool bMore, css::beans::PropertyChangeEvent*& pCurEvent) + void NodeLocalBroadcaster_Impl::notifySingleChange(configuration::NodeChangeInformation const& aChange, bool bMore, css::beans::PropertyChangeEvent*& pCurEvent) { - using css::beans::XPropertyChangeListener; - using css::container::XContainerListener; + uno::Reference< css::beans::XPropertyChangeListener > const * const SelectPropertyListener = 0; + uno::Reference< css::container::XContainerListener > const * const SelectContainerListener = 0; - typedef ListenerContainerIterator< XPropertyChangeListener > PropertyListenerIterator; - typedef ListenerContainerIterator< XContainerListener > ContainerListenerIterator; - uno::Reference< XPropertyChangeListener > const * const SelectPropertyListener = 0; - uno::Reference< XContainerListener > const * const SelectContainerListener = 0; + vos::ORef<NotifierImpl> pNotifierImpl = getNotifierData().first; - NotifierImplHolder pNotifierImpl = getNotifierData().first; - - ListenerContainer* pContainerListeners = pNotifierImpl->m_aListeners.getContainer( getNodeIndex(), getCppuType(SelectContainerListener) ); + cppu::OInterfaceContainerHelper* pContainerListeners = pNotifierImpl->m_aListeners.getContainer( getNodeIndex(), getCppuType(SelectContainerListener) ); if (pContainerListeners) { @@ -429,35 +394,35 @@ namespace configmgr if (configapi::fillEventDataFromResolved(aEvent,aChange)) { - ContainerListenerIterator aIterator(*pContainerListeners); + ListenerContainerIterator< css::container::XContainerListener > aIterator(*pContainerListeners); UnoApiLockReleaser aGuardReleaser; while (aIterator.hasMoreElements()) try { - uno::Reference<XContainerListener> xListener( aIterator.next() ); + uno::Reference<css::container::XContainerListener> xListener( aIterator.next() ); OSL_ASSERT( xListener.is() ); switch (aChange.change.type) { - case NodeChangeData::eSetValue: - case NodeChangeData::eSetDefault: - case NodeChangeData::eReplaceElement: + case configuration::NodeChangeData::eSetValue: + case configuration::NodeChangeData::eSetDefault: + case configuration::NodeChangeData::eReplaceElement: xListener->elementReplaced(aEvent); break; - case NodeChangeData::eInsertElement: + case configuration::NodeChangeData::eInsertElement: xListener->elementInserted(aEvent); break; - case NodeChangeData::eRemoveElement: + case configuration::NodeChangeData::eRemoveElement: xListener->elementRemoved(aEvent); break; - case NodeChangeData::eResetSetDefault: - case NodeChangeData::eRenameElementTree: - case NodeChangeData::eNoChange: + case configuration::NodeChangeData::eResetSetDefault: + case configuration::NodeChangeData::eRenameElementTree: + case configuration::NodeChangeData::eNoChange: OSL_ASSERT(false); break; } @@ -475,19 +440,19 @@ namespace configmgr if (configapi::fillEventDataFromResolved(rEvent,aChange,bMore)) { - ListenerContainer* pPropertyListeners = pNotifierImpl->m_aListeners.getContainer( getNodeIndex(), getCppuType(SelectPropertyListener) ); + cppu::OInterfaceContainerHelper* pPropertyListeners = pNotifierImpl->m_aListeners.getContainer( getNodeIndex(), getCppuType(SelectPropertyListener) ); if (pPropertyListeners) { - PropertyListenerIterator aIterator(*pPropertyListeners); + ListenerContainerIterator< css::beans::XPropertyChangeListener > aIterator(*pPropertyListeners); UnoApiLockReleaser aGuardReleaser; while (aIterator.hasMoreElements()) try { aIterator.next()->propertyChange(rEvent); } catch (uno::Exception & ) {} } - ListenerContainer* pSpecialListeners = pNotifierImpl->m_aListeners.getSpecialContainer( aChange.location.getChangingValueID() ); + cppu::OInterfaceContainerHelper* pSpecialListeners = pNotifierImpl->m_aListeners.getSpecialContainer( aChange.location.getChangingValueID() ); if (pSpecialListeners) { - PropertyListenerIterator aIterator(*pSpecialListeners); + ListenerContainerIterator< css::beans::XPropertyChangeListener > aIterator(*pSpecialListeners); UnoApiLockReleaser aGuardReleaser; while (aIterator.hasMoreElements()) try { aIterator.next()->propertyChange(rEvent); } catch (uno::Exception & ) {} @@ -503,8 +468,8 @@ namespace configmgr // SingleBroadcaster_Impl // ----------------------------------------------------------------------------------------------- SingleChangeBroadcaster_Impl::SingleChangeBroadcaster_Impl( - NotifierData const& rTreeNotifierData, - NodeID const& aAffectedID, SubNodeID const& aChangedNode + NotifierSet::value_type const& rTreeNotifierData, + configuration::NodeID const& aAffectedID, configuration::SubNodeID const& aChangedNode ) : NodeLocalBroadcaster_Impl(rTreeNotifierData,aAffectedID) , m_aChangingValue(aChangedNode) @@ -512,15 +477,15 @@ namespace configmgr } // ----------------------------------------------------------------------------------------------- NodeLocalBroadcaster_Impl* SingleChangeBroadcaster_Impl::create( - NotifierData const& rLocalNotifier, - NodeChangeLocation const& aChange) + NotifierSet::value_type const& rLocalNotifier, + configuration::NodeChangeLocation const& aChange) { - OSL_ENSURE(configuration::equalTreeRef(rLocalNotifier.second->getTree(), aChange.getAffectedTreeRef()), + OSL_ENSURE(rLocalNotifier.second->getTree() == aChange.getAffectedTreeRef(), "ERROR: Tree Mismatch creating Single Broadcaster"); OSL_ENSURE(aChange.isValidData(), "ERROR: Invalid Change Location for Broadcaster"); - NodeID aAffectedNodeID = aChange.getAffectedNodeID(); + configuration::NodeID aAffectedNodeID = aChange.getAffectedNodeID(); if (aAffectedNodeID.isEmpty()) return 0; @@ -528,25 +493,25 @@ namespace configmgr } // ----------------------------------------------------------------------------------------------- NodeLocalBroadcaster_Impl* SingleChangeBroadcaster_Impl::create( - NotifierData const& rLocalNotifier, - NodeID const& aAffectedID, - NodeChangeLocation const& aChange) + NotifierSet::value_type const& rLocalNotifier, + configuration::NodeID const& aAffectedID, + configuration::NodeChangeLocation const& aChange) { return create(rLocalNotifier,aAffectedID,aChange.getChangingValueID(),aChange); } // ----------------------------------------------------------------------------------------------- NodeLocalBroadcaster_Impl* SingleChangeBroadcaster_Impl::create( - NotifierData const& rLocalNotifier, - NodeID const& aAffectedID, - SubNodeID const& aChangedNodeID, - NodeChangeLocation const& aChange) + NotifierSet::value_type const& rLocalNotifier, + configuration::NodeID const& aAffectedID, + configuration::SubNodeID const& aChangedNodeID, + configuration::NodeChangeLocation const& aChange) { { (void)aChange; } OSL_ENSURE(aChange.isValidData(), "ERROR: Invalid Change Location for Broadcaster"); OSL_ENSURE(aAffectedID.isValidNode(),"Cannot broadcast without affected node"); - OSL_ENSURE(configuration::equalTreeRef(rLocalNotifier.second->getTree(), aChange.getAffectedTreeRef()), + OSL_ENSURE(rLocalNotifier.second->getTree() == aChange.getAffectedTreeRef(), "ERROR: Tree Mismatch creating Single Broadcaster"); OSL_ENSURE( aChange.getAffectedNodeID() == aAffectedID, "ERROR: Node Mismatch creating Single Broadcaster"); @@ -556,12 +521,12 @@ namespace configmgr return new SingleChangeBroadcaster_Impl(rLocalNotifier,aAffectedID,aChangedNodeID); } // ----------------------------------------------------------------------------------------------- - void SingleChangeBroadcaster_Impl::doQueryConstraints(NodeChangesInformation const& aChanges) + void SingleChangeBroadcaster_Impl::doQueryConstraints(configuration::NodeChangesInformation const& aChanges) { OSL_ASSERT(aChanges.size() <= 1); if (!aChanges.empty()) { - NodeChangesInformation::Iterator it = aChanges.begin(); + std::vector< configuration::NodeChangeInformation >::const_iterator it = aChanges.begin(); OSL_ENSURE( m_aChangingValue == it->location.getChangingValueID(), "Broadcasting unanticipated change"); @@ -570,18 +535,15 @@ namespace configmgr } // ----------------------------------------------------------------------------------------------- - void SingleChangeBroadcaster_Impl::doNotifyListeners(NodeChangesInformation const& aChanges) + void SingleChangeBroadcaster_Impl::doNotifyListeners(configuration::NodeChangesInformation const& aChanges) { - using css::beans::XPropertiesChangeListener; - using css::beans::PropertyChangeEvent; - OSL_ASSERT(aChanges.size() <= 1); if (!aChanges.empty()) { - PropertyChangeEvent aEvent; - PropertyChangeEvent * pEventNext = &aEvent; + css::beans::PropertyChangeEvent aEvent; + css::beans::PropertyChangeEvent * pEventNext = &aEvent; - NodeChangesInformation::Iterator it = aChanges.begin(); + std::vector< configuration::NodeChangeInformation >::const_iterator it = aChanges.begin(); OSL_ENSURE( m_aChangingValue == it->location.getChangingValueID(), "Broadcasting unanticipated change"); @@ -589,18 +551,17 @@ namespace configmgr if (pEventNext != &aEvent) { - uno::Sequence< PropertyChangeEvent > aPropertyEvents(&aEvent,1); + uno::Sequence< css::beans::PropertyChangeEvent > aPropertyEvents(&aEvent,1); - typedef ListenerContainerIterator< XPropertiesChangeListener > ListenerIterator; - uno::Reference< XPropertiesChangeListener > const * const SelectListener = 0; + uno::Reference< css::beans::XPropertiesChangeListener > const * const SelectListener = 0; - NotifierImplHolder pNotifierImpl = getNotifierData().first; + vos::ORef<NotifierImpl> pNotifierImpl = getNotifierData().first; - ListenerContainer* pContainer = pNotifierImpl->m_aListeners.getContainer( getNodeIndex(), getCppuType(SelectListener) ); + cppu::OInterfaceContainerHelper* pContainer = pNotifierImpl->m_aListeners.getContainer( getNodeIndex(), getCppuType(SelectListener) ); if (pContainer) { - ListenerIterator aIterator(*pContainer); + ListenerContainerIterator< css::beans::XPropertiesChangeListener > aIterator(*pContainer); UnoApiLockReleaser aGuardReleaser; while (aIterator.hasMoreElements()) try { aIterator.next()->propertiesChange(aPropertyEvents); } catch (uno::Exception & ) {} @@ -614,8 +575,8 @@ namespace configmgr // ----------------------------------------------------------------------------------------------- MultiChangeBroadcaster_Impl::MultiChangeBroadcaster_Impl( - NotifierData const& rTreeNotifierData, - NodeID const& aAffectedID, SubNodeSet& aChangedNodes + NotifierSet::value_type const& rTreeNotifierData, + configuration::NodeID const& aAffectedID, std::set< configuration::SubNodeID >& aChangedNodes ) : NodeLocalBroadcaster_Impl(rTreeNotifierData,aAffectedID) , m_aChangingNodes() @@ -624,15 +585,15 @@ namespace configmgr } // ----------------------------------------------------------------------------------------------- NodeLocalBroadcaster_Impl* MultiChangeBroadcaster_Impl::create( - NotifierData const& rLocalNotifier, - NodeChangesInformation const& aChanges) + NotifierSet::value_type const& rLocalNotifier, + configuration::NodeChangesInformation const& aChanges) { if (aChanges.empty()) return 0; OSL_ENSURE(aChanges.begin()->hasValidLocation(), "ERROR: Invalid Change Location for Broadcaster"); - NodeID aAffectedNodeID = aChanges.begin()->location.getAffectedNodeID(); + configuration::NodeID aAffectedNodeID = aChanges.begin()->location.getAffectedNodeID(); if (aAffectedNodeID.isEmpty()) return 0; @@ -640,9 +601,9 @@ namespace configmgr } // ----------------------------------------------------------------------------------------------- NodeLocalBroadcaster_Impl* MultiChangeBroadcaster_Impl::create( - NotifierData const& rLocalNotifier, - NodeID const& aAffectedNodeID, - NodeChangesInformation const& aChanges) + NotifierSet::value_type const& rLocalNotifier, + configuration::NodeID const& aAffectedNodeID, + configuration::NodeChangesInformation const& aChanges) { if (aChanges.empty()) return 0; @@ -654,16 +615,16 @@ namespace configmgr { OSL_ENSURE(aAffectedNodeID.isValidNode(),"Cannot broadcast without affected node"); - SubNodeSet aChangedNodes; - for (NodeChangesInformation::Iterator it = aChanges.begin(); it != aChanges.end(); ++it) + std::set< configuration::SubNodeID > aChangedNodes; + for (std::vector< configuration::NodeChangeInformation >::const_iterator it = aChanges.begin(); it != aChanges.end(); ++it) { OSL_ENSURE(it->hasValidLocation(), "ERROR: Invalid Change Location for Broadcaster"); OSL_ENSURE(it->location.getAffectedNodeID() == aAffectedNodeID, "ERROR: Change is not local to affected node (as advertised)"); - OSL_ENSURE(configuration::equalTreeRef(rLocalNotifier.second->getTree(), it->location.getAffectedTreeRef()), + OSL_ENSURE(rLocalNotifier.second->getTree() == it->location.getAffectedTreeRef(), "ERROR: Tree Mismatch creating Multi Change Broadcaster"); - SubNodeID aChangedValueID = it->location.getChangingValueID(); + configuration::SubNodeID aChangedValueID = it->location.getChangingValueID(); aChangedNodes.insert(aChangedValueID); } @@ -675,11 +636,11 @@ namespace configmgr } } // ----------------------------------------------------------------------------------------------- - void MultiChangeBroadcaster_Impl::doQueryConstraints(NodeChangesInformation const& aChanges) + void MultiChangeBroadcaster_Impl::doQueryConstraints(configuration::NodeChangesInformation const& aChanges) { - NodeChangesInformation::Iterator const stop = aChanges.end(), last = stop-1; + std::vector< configuration::NodeChangeInformation >::const_iterator const stop = aChanges.end(), last = stop-1; - for (NodeChangesInformation::Iterator it = aChanges.begin(); it != stop; ++it) + for (std::vector< configuration::NodeChangeInformation >::const_iterator it = aChanges.begin(); it != stop; ++it) { OSL_ENSURE( m_aChangingNodes.find( it->location.getChangingValueID() ) != m_aChangingNodes.end(), "Broadcasting unanticipated change"); @@ -688,19 +649,16 @@ namespace configmgr } // ----------------------------------------------------------------------------------------------- - void MultiChangeBroadcaster_Impl::doNotifyListeners(NodeChangesInformation const& aChanges) + void MultiChangeBroadcaster_Impl::doNotifyListeners(configuration::NodeChangesInformation const& aChanges) { - using css::beans::XPropertiesChangeListener; - using css::beans::PropertyChangeEvent; - - uno::Sequence< PropertyChangeEvent > aPropertyEvents(aChanges.size()); + uno::Sequence< css::beans::PropertyChangeEvent > aPropertyEvents(aChanges.size()); - PropertyChangeEvent * const pEventStart = aPropertyEvents.getArray(); - PropertyChangeEvent * pEventNext = pEventStart; + css::beans::PropertyChangeEvent * const pEventStart = aPropertyEvents.getArray(); + css::beans::PropertyChangeEvent * pEventNext = pEventStart; - NodeChangesInformation::Iterator const stop = aChanges.end(), last = stop-1; + std::vector< configuration::NodeChangeInformation >::const_iterator const stop = aChanges.end(), last = stop-1; - for (NodeChangesInformation::Iterator it = aChanges.begin(); it != stop; ++it) + for (std::vector< configuration::NodeChangeInformation >::const_iterator it = aChanges.begin(); it != stop; ++it) { // #92463# Skip nodes that are not in the tree if (it->location.getAffectedNodeID().isEmpty()) continue; @@ -718,16 +676,15 @@ namespace configmgr if (nPropertyEvents != aPropertyEvents.getLength()) aPropertyEvents.realloc(nPropertyEvents); - typedef ListenerContainerIterator< XPropertiesChangeListener > ListenerIterator; - uno::Reference< XPropertiesChangeListener > const * const SelectListener = 0; + uno::Reference< css::beans::XPropertiesChangeListener > const * const SelectListener = 0; - NotifierImplHolder pNotifierImpl = getNotifierData().first; + vos::ORef<NotifierImpl> pNotifierImpl = getNotifierData().first; - ListenerContainer* pContainer = pNotifierImpl->m_aListeners.getContainer( getNodeIndex(), getCppuType(SelectListener) ); + cppu::OInterfaceContainerHelper* pContainer = pNotifierImpl->m_aListeners.getContainer( getNodeIndex(), getCppuType(SelectListener) ); if (pContainer) { - ListenerIterator aIterator(*pContainer); + ListenerContainerIterator< css::beans::XPropertiesChangeListener > aIterator(*pContainer); UnoApiLockReleaser aGuardReleaser; while (aIterator.hasMoreElements()) try { aIterator.next()->propertiesChange(aPropertyEvents); } catch (uno::Exception & ) {} @@ -739,8 +696,8 @@ namespace configmgr // ----------------------------------------------------------------------------------------------- SingleTreeBroadcaster_Impl::SingleTreeBroadcaster_Impl( - NotifierData const& aTreeNotifierData, - BroadcasterList& aBroadcasters + NotifierSet::value_type const& aTreeNotifierData, + std::vector< vos::ORef<NodeLocalBroadcaster_Impl> >& aBroadcasters ) : Broadcaster::Impl(aTreeNotifierData) , m_aBroadcasters() @@ -750,11 +707,11 @@ namespace configmgr // ----------------------------------------------------------------------------------------------- - bool SingleTreeBroadcaster_Impl::selectChanges(NodeChangesInformation& rSelected, NodeChangesInformation const& aOriginal, NodeID const& aSelector) + bool SingleTreeBroadcaster_Impl::selectChanges(configuration::NodeChangesInformation& rSelected, configuration::NodeChangesInformation const& aOriginal, configuration::NodeID const& aSelector) { OSL_ASSERT(rSelected.empty()); // nothing in there yet - for (NodeChangesInformation::Iterator it = aOriginal.begin(); it != aOriginal.end(); ++it) + for (std::vector< configuration::NodeChangeInformation >::const_iterator it = aOriginal.begin(); it != aOriginal.end(); ++it) { if ( it->location.getAffectedNodeID() == aSelector ) { @@ -765,27 +722,27 @@ namespace configmgr } // ----------------------------------------------------------------------------------------------- - BroadcasterImplRef SingleTreeBroadcaster_Impl::create( - NotifierData const& rRootNotifier, - NotifierData const& rLocalNotifier, - NodeChangesInformation const& aChanges) + vos::ORef< Broadcaster::Impl > SingleTreeBroadcaster_Impl::create( + NotifierSet::value_type const& rRootNotifier, + NotifierSet::value_type const& rLocalNotifier, + configuration::NodeChangesInformation const& aChanges) { - NodeSet aNodes; - for (NodeChangesInformation::Iterator itChanges = aChanges.begin(); itChanges != aChanges.end(); ++itChanges) + std::set< configuration::NodeID > aNodes; + for (std::vector< configuration::NodeChangeInformation >::const_iterator itChanges = aChanges.begin(); itChanges != aChanges.end(); ++itChanges) { OSL_ENSURE(itChanges->hasValidLocation(), "ERROR: Invalid Change Location for Broadcaster"); - NodeID aAffectedNodeID = itChanges->location.getAffectedNodeID(); + configuration::NodeID aAffectedNodeID = itChanges->location.getAffectedNodeID(); if (!aAffectedNodeID.isEmpty()) aNodes.insert(aAffectedNodeID); } - BroadcasterList aNodecasters; - for (NodeSet::const_iterator itNodes = aNodes.begin(); itNodes != aNodes.end(); ++itNodes) + std::vector< vos::ORef<NodeLocalBroadcaster_Impl> > aNodecasters; + for (std::set< configuration::NodeID >::const_iterator itNodes = aNodes.begin(); itNodes != aNodes.end(); ++itNodes) { OSL_ASSERT(itNodes->isValidNode()); // filtered empty ones above - NodeChangesInformation aSelectedChanges; + configuration::NodeChangesInformation aSelectedChanges; if ( selectChanges(aSelectedChanges, aChanges, *itNodes)) { NodeLocalBroadcaster_Impl* pSelectedImpl = MultiChangeBroadcaster_Impl::create(rLocalNotifier, *itNodes, aSelectedChanges); @@ -804,21 +761,21 @@ namespace configmgr return new SingleTreeBroadcaster_Impl(rRootNotifier, aNodecasters); } // ----------------------------------------------------------------------------------------------- - void SingleTreeBroadcaster_Impl::doQueryConstraints(NodeChangesInformation const& aChanges) + void SingleTreeBroadcaster_Impl::doQueryConstraints(configuration::NodeChangesInformation const& aChanges) { - for(BroadcasterList::iterator it = m_aBroadcasters.begin(); it != m_aBroadcasters.end(); ++it) + for(std::vector< vos::ORef<NodeLocalBroadcaster_Impl> >::iterator it = m_aBroadcasters.begin(); it != m_aBroadcasters.end(); ++it) { - NodeChangesInformation aSelectedInfos; + configuration::NodeChangesInformation aSelectedInfos; if ( selectChanges(aSelectedInfos, aChanges, (*it)->getAffectedNodeID()) ) (*it)->queryConstraints(aSelectedInfos); } } // ----------------------------------------------------------------------------------------------- - void SingleTreeBroadcaster_Impl::doNotifyListeners(NodeChangesInformation const& aChanges) + void SingleTreeBroadcaster_Impl::doNotifyListeners(configuration::NodeChangesInformation const& aChanges) { - for(BroadcasterList::iterator it = m_aBroadcasters.begin(); it != m_aBroadcasters.end(); ++it) + for(std::vector< vos::ORef<NodeLocalBroadcaster_Impl> >::iterator it = m_aBroadcasters.begin(); it != m_aBroadcasters.end(); ++it) { - NodeChangesInformation aSelectedInfos; + configuration::NodeChangesInformation aSelectedInfos; if ( selectChanges(aSelectedInfos, aChanges, (*it)->getAffectedNodeID()) ) (*it)->notifyListeners(aSelectedInfos); } @@ -826,7 +783,7 @@ namespace configmgr // ----------------------------------------------------------------------------------------------- // MultiTreeBroadcaster_Impl // ----------------------------------------------------------------------------------------------- - MultiTreeBroadcaster_Impl::MultiTreeBroadcaster_Impl(NotifierData const& aRootSelector, BroadcasterList& aBroadcasters) + MultiTreeBroadcaster_Impl::MultiTreeBroadcaster_Impl(NotifierSet::value_type const& aRootSelector, std::vector< vos::ORef< Broadcaster::Impl > >& aBroadcasters) : Broadcaster::Impl(aRootSelector) , m_aBroadcasters() { @@ -835,18 +792,18 @@ namespace configmgr // ----------------------------------------------------------------------------------------------- - bool MultiTreeBroadcaster_Impl::selectChanges(NodeChangesInformation& rSelected, NodeChangesInformation const& aOriginal, NotifierData const& aSelector) + bool MultiTreeBroadcaster_Impl::selectChanges(configuration::NodeChangesInformation& rSelected, configuration::NodeChangesInformation const& aOriginal, NotifierSet::value_type const& aSelector) { OSL_ASSERT(aSelector.first.isValid()); OSL_ASSERT(aSelector.second.is()); OSL_ASSERT(rSelected.empty()); // nothing in there yet - TreeRef const aSelectedTree( aSelector.second->getTree() ); + rtl::Reference< configuration::Tree > const aSelectedTree( aSelector.second->getTree() ); - for (NodeChangesInformation::Iterator it = aOriginal.begin(); it != aOriginal.end(); ++it) + for (std::vector< configuration::NodeChangeInformation >::const_iterator it = aOriginal.begin(); it != aOriginal.end(); ++it) { - if ( configuration::equalTreeRef(it->location.getAffectedTreeRef(),aSelectedTree) ) + if (it->location.getAffectedTreeRef() == aSelectedTree) { rSelected.push_back(*it); } @@ -855,15 +812,15 @@ namespace configmgr } // ------------------------------------------------------------------------------------------- - BroadcasterImplRef MultiTreeBroadcaster_Impl::create(NotifierData const& rRootNotifier, NotifierSet const& rNotifiers, NodeChangesInformation const& aChanges) + vos::ORef< Broadcaster::Impl > MultiTreeBroadcaster_Impl::create(NotifierSet::value_type const& rRootNotifier, NotifierSet const& rNotifiers, configuration::NodeChangesInformation const& aChanges) { - BroadcasterList aTreecasters; + std::vector< vos::ORef< Broadcaster::Impl > > aTreecasters; for (NotifierSet::const_iterator it = rNotifiers.begin(); it != rNotifiers.end(); ++it) { - NodeChangesInformation aSelectedChanges; + configuration::NodeChangesInformation aSelectedChanges; if ( selectChanges(aSelectedChanges, aChanges, *it)) { - BroadcasterImplRef pSelectedImpl = SingleTreeBroadcaster_Impl::create(rRootNotifier, *it, aSelectedChanges); + vos::ORef< Broadcaster::Impl > pSelectedImpl = SingleTreeBroadcaster_Impl::create(rRootNotifier, *it, aSelectedChanges); if (pSelectedImpl.isValid()) aTreecasters.push_back(pSelectedImpl); } @@ -880,22 +837,22 @@ namespace configmgr } // ------------------------------------------------------------------------------------------- - void MultiTreeBroadcaster_Impl::doQueryConstraints(NodeChangesInformation const& aChanges) + void MultiTreeBroadcaster_Impl::doQueryConstraints(configuration::NodeChangesInformation const& aChanges) { - for(BroadcasterList::iterator it = m_aBroadcasters.begin(); it != m_aBroadcasters.end(); ++it) + for(std::vector< vos::ORef< Broadcaster::Impl > >::iterator it = m_aBroadcasters.begin(); it != m_aBroadcasters.end(); ++it) { - NodeChangesInformation aSelectedInfos; + configuration::NodeChangesInformation aSelectedInfos; if ( selectChanges(aSelectedInfos, aChanges, (*it)->getNotifierData()) ) (*it)->queryConstraints(aSelectedInfos); } } // ------------------------------------------------------------------------------------------- - void MultiTreeBroadcaster_Impl::doNotifyListeners(NodeChangesInformation const& aChanges) + void MultiTreeBroadcaster_Impl::doNotifyListeners(configuration::NodeChangesInformation const& aChanges) { - for(BroadcasterList::iterator it = m_aBroadcasters.begin(); it != m_aBroadcasters.end(); ++it) + for(std::vector< vos::ORef< Broadcaster::Impl > >::iterator it = m_aBroadcasters.begin(); it != m_aBroadcasters.end(); ++it) { - NodeChangesInformation aSelectedInfos; + configuration::NodeChangesInformation aSelectedInfos; if ( selectChanges(aSelectedInfos, aChanges, (*it)->getNotifierData()) ) (*it)->notifyListeners(aSelectedInfos); } @@ -904,22 +861,22 @@ namespace configmgr } // --------------------------------------------------------------------------------------------------- - BroadcasterImplRef Broadcaster::Impl::create(NotifierHolder const& rNotifierImpl, ApiTreeRef const& pTreeImpl, NodeChange const& aChange, bool bLocal) + vos::ORef< Broadcaster::Impl > Broadcaster::Impl::create(vos::ORef<NotifierImpl> const& rNotifierImpl, ApiTreeRef const& pTreeImpl, configuration::NodeChange const& aChange, bool bLocal) { OSL_ASSERT(pTreeImpl.is()); - BroadcasterImplRef pRet; + vos::ORef< Broadcaster::Impl > pRet; - NodeChangeLocation aLocation; + configuration::NodeChangeLocation aLocation; if (aChange.getChangeLocation(aLocation)) { if (bLocal) { - pRet = SingleChangeBroadcaster_Impl::create( NotifierData(rNotifierImpl,pTreeImpl), aLocation); + pRet = SingleChangeBroadcaster_Impl::create( NotifierSet::value_type(rNotifierImpl,pTreeImpl), aLocation); } else { - NotifierData aAffectedNotifier( findNotifier(aLocation, pTreeImpl) ); + NotifierSet::value_type aAffectedNotifier( findNotifier(aLocation, pTreeImpl) ); if (aAffectedNotifier.second.is()) // only if we found a notifier we are able to create a broadcaster (DG) pRet = SingleChangeBroadcaster_Impl::create( aAffectedNotifier, aLocation); } @@ -931,17 +888,17 @@ namespace configmgr } if (pRet.isEmpty()) - pRet = EmptyBroadcaster_Impl::create( NotifierData(rNotifierImpl,pTreeImpl) ); + pRet = EmptyBroadcaster_Impl::create( NotifierSet::value_type(rNotifierImpl,pTreeImpl) ); return pRet; } // --------------------------------------------------------------------------------------------------- - BroadcasterImplRef Broadcaster::Impl::create(NotifierHolder const& rNotifierImpl, ApiTreeRef const& pTreeImpl, NodeChanges const& aChanges, bool bLocal) + vos::ORef< Broadcaster::Impl > Broadcaster::Impl::create(vos::ORef<NotifierImpl> const& rNotifierImpl, ApiTreeRef const& pTreeImpl, configuration::NodeChanges const& aChanges, bool bLocal) { - NotifierData aRootData(rNotifierImpl, pTreeImpl); + NotifierSet::value_type aRootData(rNotifierImpl, pTreeImpl); - NodeChangesInformation aChangeInfos; + configuration::NodeChangesInformation aChangeInfos; if (aChanges.getChangesInfos(aChangeInfos)) { return create(rNotifierImpl,pTreeImpl,aChangeInfos,bLocal); @@ -951,7 +908,7 @@ namespace configmgr OSL_ENSURE(aChanges.isEmpty(), "Cannot get information for changes - cannot notify"); // make an empty one below - BroadcasterImplRef pRet = EmptyBroadcaster_Impl::create( aRootData ); + vos::ORef< Broadcaster::Impl > pRet = EmptyBroadcaster_Impl::create( aRootData ); return pRet; } @@ -959,21 +916,21 @@ namespace configmgr } // --------------------------------------------------------------------------------------------------- - BroadcasterImplRef Broadcaster::Impl::create(NotifierHolder const& rNotifierImpl, ApiTreeRef const& pTreeImpl, NodeChangeInformation const& aChange, bool bLocal) + vos::ORef< Broadcaster::Impl > Broadcaster::Impl::create(vos::ORef<NotifierImpl> const& rNotifierImpl, ApiTreeRef const& pTreeImpl, configuration::NodeChangeInformation const& aChange, bool bLocal) { OSL_ASSERT(pTreeImpl.is()); - BroadcasterImplRef pRet; + vos::ORef< Broadcaster::Impl > pRet; if (aChange.hasValidLocation()) { if (bLocal) { - pRet = SingleChangeBroadcaster_Impl::create( NotifierData(rNotifierImpl,pTreeImpl), aChange.location); + pRet = SingleChangeBroadcaster_Impl::create( NotifierSet::value_type(rNotifierImpl,pTreeImpl), aChange.location); } else { - NotifierData aAffectedNotifier( findNotifier(aChange.location, pTreeImpl) ); + NotifierSet::value_type aAffectedNotifier( findNotifier(aChange.location, pTreeImpl) ); if (aAffectedNotifier.second.is()) // only if we found a notifier we are able to create a broadcaster (DG) pRet = SingleChangeBroadcaster_Impl::create( aAffectedNotifier, aChange.location); } @@ -985,17 +942,17 @@ namespace configmgr } if (pRet.isEmpty()) - pRet = EmptyBroadcaster_Impl::create( NotifierData(rNotifierImpl,pTreeImpl) ); + pRet = EmptyBroadcaster_Impl::create( NotifierSet::value_type(rNotifierImpl,pTreeImpl) ); return pRet; } // --------------------------------------------------------------------------------------------------- - BroadcasterImplRef Broadcaster::Impl::create(NotifierHolder const& rNotifierImpl, ApiTreeRef const& pTreeImpl, NodeChangesInformation const& aChanges, bool bLocal) + vos::ORef< Broadcaster::Impl > Broadcaster::Impl::create(vos::ORef<NotifierImpl> const& rNotifierImpl, ApiTreeRef const& pTreeImpl, configuration::NodeChangesInformation const& aChanges, bool bLocal) { - BroadcasterImplRef pRet; + vos::ORef< Broadcaster::Impl > pRet; - NotifierData aRootData(rNotifierImpl, pTreeImpl); + NotifierSet::value_type aRootData(rNotifierImpl, pTreeImpl); if (aChanges.size() == 1) { @@ -1028,27 +985,24 @@ namespace configmgr } // --------------------------------------------------------------------------------------------------- - bool Broadcaster::Impl::translateChanges(NodeChangesInformation& _rInfos, NodeChanges const& aChanges, bool /*bSingleBase*/) const + bool Broadcaster::Impl::translateChanges(configuration::NodeChangesInformation& _rInfos, configuration::NodeChanges const& aChanges, bool /*bSingleBase*/) const { - TreeRef aBaseTree = m_aNotifierData.second->getTree(); + rtl::Reference< configuration::Tree > aBaseTree = m_aNotifierData.second->getTree(); Factory& rFactory = m_aNotifierData.second->getFactory(); - NodeChangesInformation aRawInfos; + configuration::NodeChangesInformation aRawInfos; sal_uInt32 nChanges = aChanges.getChangesInfos(aRawInfos); OSL_ENSURE(nChanges, "Cannot get info(s) for change - skipping for notification"); OSL_ENSURE(nChanges == aRawInfos.size(), "Incorrect change count returned"); - NodeChangesInformation aNewInfos; + configuration::NodeChangesInformation aNewInfos; aNewInfos.reserve(nChanges); - // enabling the Single base optimization requires a base node (not only a base tree) for correct accessors - //if (!bSingleBase || !configuration::equalTree(aBaseTree,aNewChange.info.baseTree)) - - for (NodeChangesInformation::Iterator pos = aRawInfos.begin(); pos != aRawInfos.end(); ++pos) + for (std::vector< configuration::NodeChangeInformation >::const_iterator pos = aRawInfos.begin(); pos != aRawInfos.end(); ++pos) { - NodeChangeInformation aInfo = *pos; + configuration::NodeChangeInformation aInfo = *pos; if( !configapi::rebaseChange(aInfo.location,aBaseTree) ) { OSL_TRACE("Change is not within expected tree - skipping for notification"); @@ -1069,19 +1023,17 @@ namespace configmgr // --------------------------------------------------------------------------------------------------- - bool Broadcaster::Impl::translateChanges(NodeChangesInformation& aInfos, NodeChangesInformation const& aChanges, bool /*bSingleBase*/) const + bool Broadcaster::Impl::translateChanges(configuration::NodeChangesInformation& aInfos, configuration::NodeChangesInformation const& aChanges, bool /*bSingleBase*/) const { - NodeChangesInformation aNewInfos; + configuration::NodeChangesInformation aNewInfos; aNewInfos.reserve( aChanges.size() ); - TreeRef aBaseTree = m_aNotifierData.second->getTree(); + rtl::Reference< configuration::Tree > aBaseTree = m_aNotifierData.second->getTree(); Factory& rFactory = m_aNotifierData.second->getFactory(); - for (NodeChangesInformation::Iterator it = aChanges.begin(); it != aChanges.end(); ++it) + for (std::vector< configuration::NodeChangeInformation >::const_iterator it = aChanges.begin(); it != aChanges.end(); ++it) { - NodeChangeInformation aInfo(*it); - // enabling the Single base optimization requires a base node (not only a base tree) for correct accessors - //if (!bSingleBase || !configuration::equalTree(aBaseTree,aNewChange.info.baseTree)) + configuration::NodeChangeInformation aInfo(*it); if( !configapi::rebaseChange(aInfo.location,aBaseTree) ) { OSL_TRACE("Change is not within expected tree - skipping for notification"); @@ -1102,33 +1054,33 @@ namespace configmgr } // --------------------------------------------------------------------------------------------------- - void Broadcaster::Impl::notifyRootListeners(NodeChangesInformation const& aChanges) + void Broadcaster::Impl::notifyRootListeners(configuration::NodeChangesInformation const& aChanges) { if (aChanges.empty()) return; ApiTreeRef pRootTree( m_aNotifierData.second->getRootTreeImpl() ); if (pRootTree.is()) { - NotifierHolder aRootNotifier = BroadcasterHelper::getImpl(pRootTree->getNotifier()); + vos::ORef<NotifierImpl> aRootNotifier = BroadcasterHelper::getImpl(pRootTree->getNotifier()); if (aRootNotifier.isValid()) { uno::Reference< css::util::XChangesListener > const * const pSelect = 0; - NodeID aNotifiedNode = makeRootID( pRootTree ); + configuration::NodeID aNotifiedNode = makeRootID( pRootTree ); - if (ListenerContainer* pContainer = aRootNotifier->m_aListeners.getContainer(aNotifiedNode.toIndex(), ::getCppuType(pSelect)) ) + if (cppu::OInterfaceContainerHelper* pContainer = aRootNotifier->m_aListeners.getContainer(aNotifiedNode.toIndex(), ::getCppuType(pSelect)) ) { css::util::ChangesEvent aEvent; aEvent.Source = pRootTree->getUnoInstance(); - UnoInterfaceRef xBaseInstance = m_aNotifierData.second->getUnoInstance(); + uno::Reference<uno::XInterface> xBaseInstance = m_aNotifierData.second->getUnoInstance(); aEvent.Base <<= xBaseInstance; // translate and collect the changes aEvent.Changes.realloc(aChanges.size()); css::util::ElementChange* pChange = aEvent.Changes.getArray(); - for (NodeChangesInformation::Iterator it = aChanges.begin(); it != aChanges.end(); ++it) + for (std::vector< configuration::NodeChangeInformation >::const_iterator it = aChanges.begin(); it != aChanges.end(); ++it) { fillChangeFromResolved(*pChange, *it); ++pChange; @@ -1148,25 +1100,25 @@ namespace configmgr // --------------------------------------------------------------------------------------------------- // class Broadcaster // --------------------------------------------------------------------------------------------------- -Broadcaster::Broadcaster(Notifier const& aNotifier, NodeChange const& aChange, bool bLocal) +Broadcaster::Broadcaster(Notifier const& aNotifier, configuration::NodeChange const& aChange, bool bLocal) : m_pImpl( Impl::create(aNotifier.m_aImpl,ApiTreeRef(aNotifier.m_pTree),aChange,bLocal) ) { OSL_ASSERT(m_pImpl.isValid()); } // --------------------------------------------------------------------------------------------------- -Broadcaster::Broadcaster(Notifier const& aNotifier, NodeChanges const& aChanges, bool bLocal) +Broadcaster::Broadcaster(Notifier const& aNotifier, configuration::NodeChanges const& aChanges, bool bLocal) : m_pImpl( Impl::create(aNotifier.m_aImpl,ApiTreeRef(aNotifier.m_pTree),aChanges,bLocal) ) { OSL_ASSERT(m_pImpl.isValid()); } // --------------------------------------------------------------------------------------------------- -Broadcaster::Broadcaster(Notifier const& aNotifier, NodeChangeInformation const& aChange, bool bLocal) +Broadcaster::Broadcaster(Notifier const& aNotifier, configuration::NodeChangeInformation const& aChange, bool bLocal) : m_pImpl( Impl::create(aNotifier.m_aImpl,ApiTreeRef(aNotifier.m_pTree),aChange,bLocal) ) { OSL_ASSERT(m_pImpl.isValid()); } // --------------------------------------------------------------------------------------------------- -Broadcaster::Broadcaster(Notifier const& aNotifier, NodeChangesInformation const& aChanges, bool bLocal) +Broadcaster::Broadcaster(Notifier const& aNotifier, configuration::NodeChangesInformation const& aChanges, bool bLocal) : m_pImpl( Impl::create(aNotifier.m_aImpl,ApiTreeRef(aNotifier.m_pTree),aChanges,bLocal) ) { OSL_ASSERT(m_pImpl.isValid()); @@ -1185,23 +1137,23 @@ Broadcaster::~Broadcaster() } // --------------------------------------------------------------------------------------------------- -void Broadcaster::queryConstraints(NodeChange const& aChange) throw(beans::PropertyVetoException) +void Broadcaster::queryConstraints(configuration::NodeChange const& aChange) throw(beans::PropertyVetoException) { OSL_ENSURE(aChange.isChange(),"Constraint query without a change !"); - NodeChanges aChanges; + configuration::NodeChanges aChanges; aChanges.add(aChange); this->queryConstraints(aChanges,true); } // --------------------------------------------------------------------------------------------------- -void Broadcaster::queryConstraints(NodeChanges const& aChanges, bool bSingleBase) throw(beans::PropertyVetoException) +void Broadcaster::queryConstraints(configuration::NodeChanges const& aChanges, bool bSingleBase) throw(beans::PropertyVetoException) { OSL_ENSURE(!aChanges.isEmpty(),"Constraint query without a change !"); try { - NodeChangesInformation aInfos; + configuration::NodeChangesInformation aInfos; if (m_pImpl->translateChanges(aInfos,aChanges,bSingleBase)) { m_pImpl->queryConstraints(aInfos); @@ -1222,33 +1174,33 @@ void Broadcaster::queryConstraints(NodeChanges const& aChanges, bool bSingleBase } // --------------------------------------------------------------------------------------------------- -void Broadcaster::notifyListeners(NodeChange const& aChange) throw() +void Broadcaster::notifyListeners(configuration::NodeChange const& aChange) throw() { OSL_ENSURE(aChange.isChange(),"Notifying without a change !"); - NodeChanges aChanges; + configuration::NodeChanges aChanges; aChanges.add(aChange); this->notifyListeners(aChanges, true); } // --------------------------------------------------------------------------------------------------- -void Broadcaster::notifyListeners(NodeChangeInformation const& aChange) throw() +void Broadcaster::notifyListeners(configuration::NodeChangeInformation const& aChange) throw() { OSL_ENSURE(!aChange.isEmptyChange(),"Notifying without a change !"); - NodeChangesInformation aChanges; + configuration::NodeChangesInformation aChanges; aChanges.push_back(aChange); this->notifyListeners(aChanges, true); } // --------------------------------------------------------------------------------------------------- -void Broadcaster::notifyListeners(NodeChanges const& aChanges, bool bSingleBase) throw() +void Broadcaster::notifyListeners(configuration::NodeChanges const& aChanges, bool bSingleBase) throw() { OSL_ENSURE(!aChanges.isEmpty(),"Notifying without a change !"); try { - NodeChangesInformation aInfos; + configuration::NodeChangesInformation aInfos; if (m_pImpl->translateChanges(aInfos,aChanges, bSingleBase)) { m_pImpl->notifyListeners(aInfos); @@ -1266,13 +1218,13 @@ void Broadcaster::notifyListeners(NodeChanges const& aChanges, bool bSingleBase) } // --------------------------------------------------------------------------------------------------- -void Broadcaster::notifyListeners(NodeChangesInformation const& aChanges, bool bSingleBase) throw() +void Broadcaster::notifyListeners(configuration::NodeChangesInformation const& aChanges, bool bSingleBase) throw() { OSL_ENSURE(!aChanges.empty(),"Notifying without a change !"); try { - NodeChangesInformation aInfos; + configuration::NodeChangesInformation aInfos; if (m_pImpl->translateChanges(aInfos,aChanges, bSingleBase)) { m_pImpl->notifyListeners(aInfos); |