X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2FForwardedBackwardsCompatibleDataBroker.java;h=bf18454f4d1c3122ad7e8c5cd651e02d24f50437;hp=0ad592707992e395234a451126b5673ce5a25af7;hb=331b8a41d5e326ec0769ef8ae731c67061fda8bd;hpb=89f326c5d75fe39cc7ef7f646ccccb1e927c227c diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/ForwardedBackwardsCompatibleDataBroker.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/ForwardedBackwardsCompatibleDataBroker.java index 0ad5927079..bf18454f4d 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/ForwardedBackwardsCompatibleDataBroker.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/ForwardedBackwardsCompatibleDataBroker.java @@ -35,6 +35,7 @@ import org.opendaylight.controller.sal.binding.api.data.DataChangeListener; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; import org.opendaylight.controller.sal.binding.api.data.DataProviderService; import org.opendaylight.controller.sal.common.util.Rpcs; +import org.opendaylight.controller.sal.core.api.model.SchemaService; import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; import org.opendaylight.yangtools.concepts.Delegator; import org.opendaylight.yangtools.concepts.ListenerRegistration; @@ -60,12 +61,11 @@ public class ForwardedBackwardsCompatibleDataBroker extends AbstractForwardedDat private static final Logger LOG = LoggerFactory.getLogger(ForwardedBackwardsCompatibleDataBroker.class); private final ConcurrentHashMap, CommitHandlerRegistrationImpl> commitHandlers = new ConcurrentHashMap<>(); - private final ListenerRegistry fakeRegistry = ListenerRegistry.create(); private final ListeningExecutorService executorService; public ForwardedBackwardsCompatibleDataBroker(final DOMDataBroker domDataBroker, - final BindingIndependentMappingService mappingService, final ListeningExecutorService executor) { - super(domDataBroker, mappingService); + final BindingIndependentMappingService mappingService, final SchemaService schemaService,final ListeningExecutorService executor) { + super(domDataBroker, mappingService,schemaService); executorService = executor; LOG.info("ForwardedBackwardsCompatibleBroker started."); } @@ -129,12 +129,6 @@ public class ForwardedBackwardsCompatibleDataBroker extends AbstractForwardedDat throw new UnsupportedOperationException("Data reader contract is not supported."); } - @Override - public void close() throws Exception { - // TODO Auto-generated method stub - - } - public ListenableFuture> commit(final ForwardedBackwardsCompatibleTransacion tx) { final List, DataObject>> subTrans = new ArrayList<>(); @@ -195,6 +189,7 @@ public class ForwardedBackwardsCompatibleDataBroker extends AbstractForwardedDat private class ForwardedBackwardsCompatibleTransacion extends AbstractForwardedTransaction implements DataModificationTransaction { + private final ListenerRegistry listeners = ListenerRegistry.create(); private final Map, DataObject> updated = new HashMap<>(); private final Map, DataObject> created = new HashMap<>(); private final Set> removed = new HashSet<>(); @@ -322,6 +317,14 @@ public class ForwardedBackwardsCompatibleDataBroker extends AbstractForwardedDat private void changeStatus(final TransactionStatus status) { LOG.trace("Transaction {} changed status to {}", getIdentifier(), status); this.status = status; + + for(ListenerRegistration listener : listeners) { + try { + listener.getInstance().onStatusUpdated(this, status); + } catch (Exception e) { + LOG.error("Error during invoking transaction listener {}",listener.getInstance(),e); + } + } } @Override @@ -335,10 +338,10 @@ public class ForwardedBackwardsCompatibleDataBroker extends AbstractForwardedDat doDelete(getDelegate(), LogicalDatastoreType.OPERATIONAL, path); } - final ListenableFuture> f = ForwardedBackwardsCompatibleDataBroker.this.commit(this); - changeStatus(TransactionStatus.SUBMITED); + final ListenableFuture> f = ForwardedBackwardsCompatibleDataBroker.this.commit(this); + Futures.addCallback(f, new FutureCallback>() { @Override public void onSuccess(final RpcResult result) { @@ -357,7 +360,7 @@ public class ForwardedBackwardsCompatibleDataBroker extends AbstractForwardedDat @Override public ListenerRegistration registerListener(final DataTransactionListener listener) { - throw new UnsupportedOperationException(); + return listeners.register(listener); } } @@ -434,9 +437,6 @@ public class ForwardedBackwardsCompatibleDataBroker extends AbstractForwardedDat } private static class BackwardsCompatibleConfigurationDataChangeInvoker implements BindingDataChangeListener, Delegator { - - - @SuppressWarnings("rawtypes") private final org.opendaylight.controller.md.sal.common.api.data.DataChangeListener delegate; public BackwardsCompatibleConfigurationDataChangeInvoker(final DataChangeListener listener) {