summaryrefslogtreecommitdiff
path: root/configmgr/source/api2/broadcaster.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'configmgr/source/api2/broadcaster.cxx')
-rw-r--r--configmgr/source/api2/broadcaster.cxx534
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);