X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fconfig-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fconfignetconfconnector%2Foperations%2FCommit.java;h=6e295580f92b3f50bd32777ab979d547a850c3da;hb=refs%2Fchanges%2F13%2F23413%2F26;hp=592d8e4f3b657933b99144f5c769adf4895a5baf;hpb=335aee8c6154a25c76503223e636398d32135bc9;p=controller.git diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/Commit.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/Commit.java index 592d8e4f3b..6e295580f9 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/Commit.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/Commit.java @@ -8,18 +8,16 @@ package org.opendaylight.controller.netconf.confignetconfconnector.operations; -import java.util.HashMap; -import java.util.Map; - +import com.google.common.base.Optional; +import org.opendaylight.controller.config.api.ConflictingVersionException; +import org.opendaylight.controller.config.api.ValidationException; import org.opendaylight.controller.config.api.jmx.CommitStatus; -import org.opendaylight.controller.config.util.ConfigRegistryClient; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorSeverity; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorTag; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorType; -import org.opendaylight.controller.netconf.confignetconfconnector.transactions.TransactionProvider; -import org.opendaylight.controller.netconf.util.xml.XmlElement; -import org.opendaylight.controller.netconf.util.xml.XmlNetconfConstants; +import org.opendaylight.controller.config.facade.xml.ConfigSubsystemFacade; +import org.opendaylight.controller.config.facade.xml.Datastore; +import org.opendaylight.controller.config.util.xml.DocumentedException; +import org.opendaylight.controller.config.util.xml.XmlElement; +import org.opendaylight.controller.config.util.xml.XmlUtil; +import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; @@ -27,17 +25,13 @@ import org.w3c.dom.Element; public class Commit extends AbstractConfigNetconfOperation { - private static final Logger logger = LoggerFactory.getLogger(Commit.class); - - private final TransactionProvider transactionProvider; + private static final Logger LOG = LoggerFactory.getLogger(Commit.class); - public Commit(TransactionProvider transactionProvider, ConfigRegistryClient configRegistryClient, - String netconfSessionIdForReporting) { - super(configRegistryClient, netconfSessionIdForReporting); - this.transactionProvider = transactionProvider; + public Commit(final ConfigSubsystemFacade configSubsystemFacade, final String netconfSessionIdForReporting) { + super(configSubsystemFacade, netconfSessionIdForReporting); } - private static void checkXml(XmlElement xml) { + private static void checkXml(XmlElement xml) throws DocumentedException { xml.checkName(XmlNetconfConstants.COMMIT); xml.checkNamespace(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0); } @@ -48,27 +42,19 @@ public class Commit extends AbstractConfigNetconfOperation { } @Override - protected Element handle(Document document, XmlElement xml) throws NetconfDocumentedException { - checkXml(xml); + protected Element handleWithNoSubsequentOperations(Document document, XmlElement xml) throws DocumentedException { + checkXml(xml); CommitStatus status; try { - status = this.transactionProvider.commitTransaction(); - } catch (final IllegalStateException e) { - logger.warn("Commit failed: ", e); - final Map errorInfo = new HashMap<>(); - errorInfo.put(ErrorTag.operation_failed.name(), - "Operation failed. Use 'get-config' or 'edit-config' before triggering 'commit' operation"); - throw new NetconfDocumentedException(e.getMessage(), e, ErrorType.application, ErrorTag.operation_failed, - ErrorSeverity.error, errorInfo); - } catch (final NetconfDocumentedException e) { - throw new NetconfDocumentedException( - "Unable to retrieve config snapshot after commit for persister, details: " + e.getMessage(), - ErrorType.application, ErrorTag.operation_failed, ErrorSeverity.error, e.getErrorInfo()); + status = getConfigSubsystemFacade().commitTransaction(); + LOG.trace("Datastore {} committed successfully: {}", Datastore.candidate, status); + } catch (ConflictingVersionException | ValidationException e) { + throw DocumentedException.wrap(e); } - logger.trace("Datastore {} committed successfully: {}", Datastore.candidate, status); + LOG.trace("Datastore {} committed successfully: {}", Datastore.candidate, status); - return document.createElement(XmlNetconfConstants.OK); + return XmlUtil.createElement(document, XmlNetconfConstants.OK, Optional.absent()); } }