*/
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;
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;
public Future<RpcResult<TransactionStatus>> 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<RpcResult<TransactionStatus>> 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<RpcResult<TransactionStatus>> 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.<TransactionStatus> getRpcResult(true, TransactionStatus.COMMITED,
+ Collections.<RpcError> emptyList()));
+ }
+ transaction.removeConfigurationData(path);
return transaction.commit();
}