X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2FBrokerFacade.java;h=3d047dd07f53e47a4000a5de137fcc52e3affa75;hp=062d03a49f56e12ca6bb178fa39303b78fc059da;hb=e0e75c0ba8bc5ad014c4a8d200465d7d02a3934c;hpb=2a35e5ab8c3300757a425841d017097c1fa31e68 diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java index 062d03a49f..3d047dd07f 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java @@ -7,12 +7,13 @@ */ package org.opendaylight.controller.sal.restconf.impl; +import com.google.common.util.concurrent.Futures; +import java.util.Collections; import java.util.concurrent.Future; - import javax.ws.rs.core.Response.Status; - import org.opendaylight.controller.md.sal.common.api.TransactionStatus; import org.opendaylight.controller.md.sal.common.api.data.DataReader; +import org.opendaylight.controller.sal.common.util.Rpcs; import org.opendaylight.controller.sal.core.api.Broker.ConsumerSession; import org.opendaylight.controller.sal.core.api.data.DataBrokerService; import org.opendaylight.controller.sal.core.api.data.DataChangeListener; @@ -23,6 +24,7 @@ import org.opendaylight.controller.sal.restconf.impl.RestconfError.ErrorType; import org.opendaylight.controller.sal.streams.listeners.ListenerAdapter; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; @@ -160,20 +162,24 @@ public class BrokerFacade implements DataReader> commitConfigurationDataDelete( final InstanceIdentifier path ) { this.checkPreconditions(); - - final DataModificationTransaction transaction = dataService.beginTransaction(); - LOG.info( "Delete Configuration via Restconf: {}", path ); - transaction.removeConfigurationData( path ); - return transaction.commit(); + return deleteDataAtTarget(path,dataService.beginTransaction()); } public Future> commitConfigurationDataDeleteBehindMountPoint( final MountInstance mountPoint, final InstanceIdentifier path ) { this.checkPreconditions(); + return deleteDataAtTarget(path,mountPoint.beginTransaction()); + } - final DataModificationTransaction transaction = mountPoint.beginTransaction(); - LOG.info( "Delete Configuration via Restconf: {}", path ); - transaction.removeConfigurationData( path ); + private Future> deleteDataAtTarget(final InstanceIdentifier path, + final DataModificationTransaction transaction) { + LOG.info("Delete Configuration via Restconf: {}", path); + CompositeNode redDataAtPath = transaction.readConfigurationData(path); + if (redDataAtPath == null) { + return Futures.immediateFuture(Rpcs. getRpcResult(true, TransactionStatus.COMMITED, + Collections. emptyList())); + } + transaction.removeConfigurationData(path); return transaction.commit(); }