/*
- * 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;
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;
private final ConfigRegistryClient configRegistryClient;
- private final String netconfSessionIdForReporting;
+ private final String sessionIdForReporting;
private ObjectName candidateTx;
private ObjectName readTx;
private final List<ObjectName> 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
// 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();
}
// 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();
}
/**
* 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<ObjectName> maybeTaON = getTransaction();
ObjectName taON = maybeTaON.get();
public synchronized void abortTransaction() {
LOG.debug("Aborting current transaction");
Optional<ObjectName> 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();
public synchronized void closeReadTransaction() {
LOG.debug("Closing read transaction");
Optional<ObjectName> 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();
public void validateTransaction() throws ValidationException {
Optional<ObjectName> 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();
public void wipeTransaction() {
Optional<ObjectName> 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);
}