Merge "Revert "Replace tabs with spaces in config yang files""
[controller.git] / opendaylight / md-sal / sal-common-impl / src / main / java / org / opendaylight / controller / md / sal / common / impl / service / AbstractDataBroker.xtend
index e3d2b567a71f42b202bf028db6f0d8dcd5f70ae2..5f4f8159617e695e930b5c142708834166fbb985 100644 (file)
@@ -28,8 +28,6 @@ import org.opendaylight.controller.md.sal.common.impl.routing.AbstractDataReadRo
 import org.opendaylight.yangtools.concepts.Path
 import org.slf4j.LoggerFactory
 import java.util.HashSet
-import java.util.Map.Entry
-import java.util.Iterator
 import java.util.Collection
 import com.google.common.collect.FluentIterable;
 import java.util.Set
@@ -37,7 +35,7 @@ import com.google.common.collect.ImmutableList
 import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandlerRegistration
 import org.opendaylight.controller.md.sal.common.api.RegistrationListener
 import org.opendaylight.yangtools.concepts.util.ListenerRegistry
-import java.util.concurrent.atomic.AtomicLong
+import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent
 
 abstract class AbstractDataBroker<P extends Path<P>, D, DCL extends DataChangeListener<P, D>> implements DataModificationTransactionFactory<P, D>, //
 DataReader<P, D>, //
@@ -91,6 +89,10 @@ DataProvisionService<P, D> {
     override final def registerDataChangeListener(P path, DCL listener) {
         val reg = new DataChangeListenerRegistration(path, listener, this);
         listeners.put(path, reg);
+        val initialConfig = dataReadRouter.readConfigurationData(path);
+        val initialOperational = dataReadRouter.readOperationalData(path);
+        val event = createInitialListenerEvent(path,initialConfig,initialOperational);
+        listener.onDataChanged(event);
         return reg;
     }
 
@@ -108,6 +110,10 @@ DataProvisionService<P, D> {
         return ret;
     }
     
+    protected  def DataChangeEvent<P,D> createInitialListenerEvent(P path,D initialConfig,D initialOperational) {
+        return new InitialDataChangeEventImpl<P, D>(initialConfig,initialOperational);
+        
+    }
 
     protected final def removeListener(DataChangeListenerRegistration<P, D, DCL> registration) {
         listeners.remove(registration.path, registration);