Class ChildListener<P extends org.opendaylight.yangtools.yang.binding.DataObject,C extends org.opendaylight.yangtools.yang.binding.DataObject,G>
- java.lang.Object
-
- org.opendaylight.netvirt.elan.l2gw.listeners.ChildListener<P,C,G>
-
- Type Parameters:
P
- - Parent DataObjectC
- - Child DataObject (Subtree)G
- - Group type (Mostly key of Subtree DataObject)
- All Implemented Interfaces:
java.lang.AutoCloseable
,java.util.EventListener
,org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener<P>
- Direct Known Subclasses:
LocalUcastMacListener
public abstract class ChildListener<P extends org.opendaylight.yangtools.yang.binding.DataObject,C extends org.opendaylight.yangtools.yang.binding.DataObject,G> extends java.lang.Object implements org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener<P>, java.lang.AutoCloseable
ChildListener class listens to provided P node and its child node C. It can act on some special condition based on the parameter set. When the children are updated and same update is processed by parent listener , it takes a toll on the performance , specially in cases where child updates are too often . In case there are any Sub-Tree modification , it can be handled and not handled based on the parameters.
-
-
Field Summary
Fields Modifier and Type Field Description protected org.opendaylight.controller.md.sal.binding.api.DataBroker
dataBroker
-
Constructor Summary
Constructors Constructor Description ChildListener(org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker, boolean processParentDeletes)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
close()
protected abstract java.util.Map<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<C>,org.opendaylight.controller.md.sal.binding.api.DataObjectModification<C>>
getChildMod(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<P> parentIid, org.opendaylight.controller.md.sal.binding.api.DataObjectModification<P> mod)
Returns the all subtree data modified.protected abstract G
getGroup(C child)
Group of data for bulk child update cases.protected @Nullable org.opendaylight.controller.md.sal.binding.api.DataObjectModification.ModificationType
getModificationType(org.opendaylight.controller.md.sal.binding.api.DataObjectModification<? extends org.opendaylight.yangtools.yang.binding.DataObject> mod)
protected abstract org.opendaylight.yangtools.yang.binding.InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node>
getParentWildCardPath()
void
init()
void
onDataTreeChanged(java.util.Collection<org.opendaylight.controller.md.sal.binding.api.DataTreeModification<P>> changes)
protected abstract void
onParentAdded(org.opendaylight.controller.md.sal.binding.api.DataTreeModification<P> parent)
Upon parent added will be called.protected abstract void
onParentRemoved(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<P> parent)
Upon parent delete will be called.protected abstract void
onUpdate(java.util.Map<G,java.util.Map<org.opendaylight.yangtools.yang.binding.InstanceIdentifier,C>> updatedMacsGrouped, java.util.Map<G,java.util.Map<org.opendaylight.yangtools.yang.binding.InstanceIdentifier,C>> deletedMacsGrouped)
Process the added/updated/Deleted subtree data.protected abstract boolean
proceed(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<P> parent)
Based on the return type of this function , processing on the dataTreeChanges takes place.protected org.opendaylight.yangtools.concepts.ListenerRegistration<?>
registerListener(org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType dsType, org.opendaylight.yangtools.yang.binding.InstanceIdentifier wildCard)
-
-
-
Method Detail
-
init
public void init() throws java.lang.Exception
- Throws:
java.lang.Exception
-
registerListener
protected org.opendaylight.yangtools.concepts.ListenerRegistration<?> registerListener(org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType dsType, org.opendaylight.yangtools.yang.binding.InstanceIdentifier wildCard) throws java.lang.Exception
- Throws:
java.lang.Exception
-
onParentAdded
protected abstract void onParentAdded(org.opendaylight.controller.md.sal.binding.api.DataTreeModification<P> parent)
Upon parent added will be called.- Parameters:
parent
- - Added parent node
-
onParentRemoved
protected abstract void onParentRemoved(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<P> parent)
Upon parent delete will be called.- Parameters:
parent
- - Deleted parent
-
proceed
protected abstract boolean proceed(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<P> parent)
Based on the return type of this function , processing on the dataTreeChanges takes place.- Parameters:
parent
- - Parent node which is add/update/delete- Returns:
- boolean value .
-
getGroup
protected abstract G getGroup(C child)
Group of data for bulk child update cases.- Parameters:
child
- - Subtree Node data- Returns:
- - Group value
-
onUpdate
protected abstract void onUpdate(java.util.Map<G,java.util.Map<org.opendaylight.yangtools.yang.binding.InstanceIdentifier,C>> updatedMacsGrouped, java.util.Map<G,java.util.Map<org.opendaylight.yangtools.yang.binding.InstanceIdentifier,C>> deletedMacsGrouped)
Process the added/updated/Deleted subtree data.- Parameters:
updatedMacsGrouped
- - Updated Subtree DatadeletedMacsGrouped
- - Deleted Subtree Data
-
getChildMod
protected abstract java.util.Map<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<C>,org.opendaylight.controller.md.sal.binding.api.DataObjectModification<C>> getChildMod(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<P> parentIid, org.opendaylight.controller.md.sal.binding.api.DataObjectModification<P> mod)
Returns the all subtree data modified.- Parameters:
parentIid
- - Parent Node iidmod
- - Modified Data- Returns:
- subtree modified data map with IID
-
getParentWildCardPath
protected abstract org.opendaylight.yangtools.yang.binding.InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node> getParentWildCardPath()
-
close
@PreDestroy public void close()
- Specified by:
close
in interfacejava.lang.AutoCloseable
-
onDataTreeChanged
public void onDataTreeChanged(java.util.Collection<org.opendaylight.controller.md.sal.binding.api.DataTreeModification<P>> changes)
- Specified by:
onDataTreeChanged
in interfaceorg.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener<P extends org.opendaylight.yangtools.yang.binding.DataObject>
-
getModificationType
protected @Nullable org.opendaylight.controller.md.sal.binding.api.DataObjectModification.ModificationType getModificationType(org.opendaylight.controller.md.sal.binding.api.DataObjectModification<? extends org.opendaylight.yangtools.yang.binding.DataObject> mod)
-
-