X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2FBrokerFacade.java;h=1cc1f783d676ed69f68c959d1024a58349dc51d9;hb=aae09dbf11186d2cd30fe87692f746519b0958f9;hp=68c9340bb1672551c1479a8a267474bd7302cfd3;hpb=9bcddde7fb7e277d315499bcbda79484c3e49f2e;p=controller.git 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 68c9340bb1..1cc1f783d6 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,9 +7,6 @@ */ package org.opendaylight.controller.sal.restconf.impl; -import com.google.common.base.Objects; - -import java.util.Map; import java.util.concurrent.Future; import javax.ws.rs.core.Response.Status; @@ -22,7 +19,6 @@ import org.opendaylight.controller.sal.core.api.data.DataChangeListener; import org.opendaylight.controller.sal.core.api.data.DataModificationTransaction; import org.opendaylight.controller.sal.core.api.mount.MountInstance; import org.opendaylight.controller.sal.rest.impl.RestconfProvider; -import org.opendaylight.controller.sal.restconf.impl.ResponseException; import org.opendaylight.controller.sal.streams.listeners.ListenerAdapter; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.common.QName; @@ -133,23 +129,22 @@ public class BrokerFacade implements DataReader> commitConfigurationDataPost( final InstanceIdentifier path, - final CompositeNode payload ) { + final CompositeNode payload) { this.checkPreconditions(); final DataModificationTransaction transaction = dataService.beginTransaction(); - transaction.putConfigurationData( path, payload ); - Map createdConfigurationData = - transaction.getCreatedConfigurationData(); - CompositeNode createdNode = createdConfigurationData.get( path ); - - if( Objects.equal( payload, createdNode ) ) { - LOG.trace( "Post Configuration via Restconf: {}", path ); - return transaction.commit(); + /* check for available Node in Configuration DataStore by path */ + CompositeNode availableNode = transaction.readConfigurationData( path ); + if (availableNode != null) { + String errMsg = "Post Configuration via Restconf was not executed because data already exists"; + BrokerFacade.LOG.warn((new StringBuilder(errMsg)).append(" : ").append(path).toString()); + // FIXME: return correct ietf-restconf:errors -> follow specification + // (http://tools.ietf.org/html/draft-bierman-netconf-restconf-03#page-48) + throw new ResponseException(Status.CONFLICT, errMsg); } - - LOG.trace( "Post Configuration via Restconf was not executed because data already exists: {}", - path ); - return null; + BrokerFacade.LOG.trace( "Post Configuration via Restconf: {}", path ); + transaction.putConfigurationData( path, payload ); + return transaction.commit(); } public Future> commitConfigurationDataPostBehindMountPoint( @@ -157,19 +152,18 @@ public class BrokerFacade implements DataReader createdConfigurationData = - transaction.getCreatedConfigurationData(); - CompositeNode createdNode = createdConfigurationData.get( path ); - - if( Objects.equal( payload, createdNode ) ) { - LOG.trace( "Post Configuration via Restconf: {}", path ); - return transaction.commit(); + /* check for available Node in Configuration DataStore by path */ + CompositeNode availableNode = transaction.readConfigurationData( path ); + if (availableNode != null) { + String errMsg = "Post Configuration via Restconf was not executed because data already exists"; + BrokerFacade.LOG.warn((new StringBuilder(errMsg)).append(" : ").append(path).toString()); + // FIXME: return correct ietf-restconf:errors -> follow specification + // (http://tools.ietf.org/html/draft-bierman-netconf-restconf-03#page-48) + throw new ResponseException(Status.CONFLICT, errMsg); } - - LOG.trace( "Post Configuration via Restconf was not executed because data already exists: {}", - path ); - return null; + BrokerFacade.LOG.trace( "Post Configuration via Restconf: {}", path ); + transaction.putConfigurationData( path, payload ); + return transaction.commit(); } public Future> commitConfigurationDataDelete( final InstanceIdentifier path ) {