X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-manager-facade-xml%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Ffacade%2Fxml%2Ftransactions%2FTransactionProvider.java;fp=opendaylight%2Fnetconf%2Fconfig-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fconfignetconfconnector%2Ftransactions%2FTransactionProvider.java;h=743be1e257c8d436f851789929a6b6d6c0b6251f;hp=7655cb300db5a9f28238802e59db3cf3f6a54cff;hb=refs%2Fchanges%2F13%2F23413%2F26;hpb=071a641d7c12c0e6112d5ce0afe806b54f116ed2 diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/transactions/TransactionProvider.java b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/transactions/TransactionProvider.java similarity index 83% rename from opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/transactions/TransactionProvider.java rename to opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/transactions/TransactionProvider.java index 7655cb300d..743be1e257 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/transactions/TransactionProvider.java +++ b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/transactions/TransactionProvider.java @@ -1,12 +1,12 @@ /* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.controller.netconf.confignetconfconnector.transactions; +package org.opendaylight.controller.config.facade.xml.transactions; import com.google.common.base.Optional; import com.google.common.base.Preconditions; @@ -18,10 +18,10 @@ import javax.management.ObjectName; 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.facade.xml.exception.NoTransactionFoundException; import org.opendaylight.controller.config.util.ConfigRegistryClient; import org.opendaylight.controller.config.util.ConfigTransactionClient; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException; -import org.opendaylight.controller.netconf.confignetconfconnector.exception.NoTransactionFoundException; +import org.opendaylight.controller.config.util.xml.DocumentedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,15 +30,15 @@ public class TransactionProvider implements AutoCloseable { private final ConfigRegistryClient configRegistryClient; - private final String netconfSessionIdForReporting; + private final String sessionIdForReporting; private ObjectName candidateTx; private ObjectName readTx; private final List allOpenedTransactions = new ArrayList<>(); - private static final String NO_TRANSACTION_FOUND_FOR_SESSION = "No transaction found for session "; + private static final String NO_TRANSACTION_FOUND_FOR_SESSION = "No transaction found for session "; - public TransactionProvider(ConfigRegistryClient configRegistryClient, String netconfSessionIdForReporting) { + public TransactionProvider(ConfigRegistryClient configRegistryClient, String sessionIdForReporting) { this.configRegistryClient = configRegistryClient; - this.netconfSessionIdForReporting = netconfSessionIdForReporting; + this.sessionIdForReporting = sessionIdForReporting; } @Override @@ -63,8 +63,7 @@ public class TransactionProvider implements AutoCloseable { // Transaction was already closed somehow if (!isStillOpenTransaction(candidateTx)) { - LOG.warn("Fixing illegal state: transaction {} was closed in {}", candidateTx, - netconfSessionIdForReporting); + LOG.warn("Fixing illegal state: transaction {} was closed in {}", candidateTx, sessionIdForReporting); candidateTx = null; return Optional.absent(); } @@ -79,8 +78,7 @@ public class TransactionProvider implements AutoCloseable { // Transaction was already closed somehow if (!isStillOpenTransaction(readTx)) { - LOG.warn("Fixing illegal state: transaction {} was closed in {}", readTx, - netconfSessionIdForReporting); + LOG.warn("Fixing illegal state: transaction {} was closed in {}", readTx, sessionIdForReporting); readTx = null; return Optional.absent(); } @@ -125,12 +123,21 @@ public class TransactionProvider implements AutoCloseable { /** * Commit and notification send must be atomic */ - public synchronized CommitStatus commitTransaction() throws ValidationException, ConflictingVersionException, NoTransactionFoundException { + public CommitStatus commitTransaction() throws ValidationException, ConflictingVersionException, + NoTransactionFoundException { + return commitTransaction(configRegistryClient); + } + + /** + * Commit and notification send must be atomic + * @param configRegistryClient + */ + public synchronized CommitStatus commitTransaction(final ConfigRegistryClient configRegistryClient) throws ValidationException, ConflictingVersionException, NoTransactionFoundException { if (!getTransaction().isPresent()){ - throw new NoTransactionFoundException("No transaction found for session " + netconfSessionIdForReporting, - NetconfDocumentedException.ErrorType.application, - NetconfDocumentedException.ErrorTag.operation_failed, - NetconfDocumentedException.ErrorSeverity.error); + throw new NoTransactionFoundException("No transaction found for session " + sessionIdForReporting, + DocumentedException.ErrorType.application, + DocumentedException.ErrorTag.operation_failed, + DocumentedException.ErrorSeverity.error); } final Optional maybeTaON = getTransaction(); ObjectName taON = maybeTaON.get(); @@ -155,7 +162,7 @@ public class TransactionProvider implements AutoCloseable { public synchronized void abortTransaction() { LOG.debug("Aborting current transaction"); Optional taON = getTransaction(); - Preconditions.checkState(taON.isPresent(), NO_TRANSACTION_FOUND_FOR_SESSION + netconfSessionIdForReporting); + Preconditions.checkState(taON.isPresent(), NO_TRANSACTION_FOUND_FOR_SESSION + sessionIdForReporting); ConfigTransactionClient transactionClient = configRegistryClient.getConfigTransactionClient(taON.get()); transactionClient.abortConfig(); @@ -166,7 +173,7 @@ public class TransactionProvider implements AutoCloseable { public synchronized void closeReadTransaction() { LOG.debug("Closing read transaction"); Optional taON = getReadTransaction(); - Preconditions.checkState(taON.isPresent(), NO_TRANSACTION_FOUND_FOR_SESSION + netconfSessionIdForReporting); + Preconditions.checkState(taON.isPresent(), NO_TRANSACTION_FOUND_FOR_SESSION + sessionIdForReporting); ConfigTransactionClient transactionClient = configRegistryClient.getConfigTransactionClient(taON.get()); transactionClient.abortConfig(); @@ -183,7 +190,7 @@ public class TransactionProvider implements AutoCloseable { public void validateTransaction() throws ValidationException { Optional taON = getTransaction(); - Preconditions.checkState(taON.isPresent(), NO_TRANSACTION_FOUND_FOR_SESSION + netconfSessionIdForReporting); + Preconditions.checkState(taON.isPresent(), NO_TRANSACTION_FOUND_FOR_SESSION + sessionIdForReporting); ConfigTransactionClient transactionClient = configRegistryClient.getConfigTransactionClient(taON.get()); transactionClient.validateConfig(); @@ -227,7 +234,7 @@ public class TransactionProvider implements AutoCloseable { public void wipeTransaction() { Optional taON = getTransaction(); - Preconditions.checkState(taON.isPresent(), NO_TRANSACTION_FOUND_FOR_SESSION + netconfSessionIdForReporting); + Preconditions.checkState(taON.isPresent(), NO_TRANSACTION_FOUND_FOR_SESSION + sessionIdForReporting); wipeInternal(taON.get(), false); }