Class ChildListener<P extends org.opendaylight.yangtools.yang.binding.DataObject,​C extends org.opendaylight.yangtools.yang.binding.DataObject,​G>

  • Type Parameters:
    P - - Parent DataObject
    C - - 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)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • dataBroker

        protected final org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker
    • Constructor Detail

      • ChildListener

        public ChildListener​(org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker,
                             boolean processParentDeletes)
    • 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 Data
        deletedMacsGrouped - - 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 iid
        mod - - 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 interface java.lang.AutoCloseable
      • onDataTreeChanged

        public void onDataTreeChanged​(java.util.Collection<org.opendaylight.controller.md.sal.binding.api.DataTreeModification<P>> changes)
        Specified by:
        onDataTreeChanged in interface org.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)