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;h=a40bac9b054a9e34490b181b838be4a1ef71643d;hp=716ed79f72423835b3d11b794ef8ea8c32611a0c;hb=d266f4384d4850af9049d7cddd2bbac8f75ba61e;hpb=1bbdb10607c6c198cb80ec506cd5637098bb917d diff --git a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/transactions/TransactionProvider.java b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/transactions/TransactionProvider.java index 716ed79f72..a40bac9b05 100644 --- a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/transactions/TransactionProvider.java +++ b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/transactions/TransactionProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2015, 2017 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, @@ -10,12 +10,15 @@ package org.opendaylight.controller.config.facade.xml.transactions; import com.google.common.base.Optional; import com.google.common.base.Preconditions; + import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; + import javax.management.InstanceNotFoundException; 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; @@ -35,19 +38,20 @@ public class TransactionProvider implements AutoCloseable { private final List allOpenedTransactions = new ArrayList<>(); private static final String NO_TRANSACTION_FOUND_FOR_SESSION = "No transaction found for session "; - public TransactionProvider(ConfigRegistryClient configRegistryClient, String sessionIdForReporting) { + public TransactionProvider(final ConfigRegistryClient configRegistryClient, final String sessionIdForReporting) { this.configRegistryClient = configRegistryClient; this.sessionIdForReporting = sessionIdForReporting; } @Override + @SuppressWarnings("IllegalCatch") public synchronized void close() { for (ObjectName tx : allOpenedTransactions) { try { if (isStillOpenTransaction(tx)) { configRegistryClient.getConfigTransactionClient(tx).abortConfig(); } - } catch (Exception e) { + } catch (final RuntimeException e) { LOG.debug("Ignoring exception while closing transaction {}", tx, e); } } @@ -56,7 +60,7 @@ public class TransactionProvider implements AutoCloseable { public synchronized Optional getTransaction() { - if (candidateTx == null){ + if (candidateTx == null) { return Optional.absent(); } @@ -71,7 +75,7 @@ public class TransactionProvider implements AutoCloseable { public synchronized Optional getReadTransaction() { - if (readTx == null){ + if (readTx == null) { return Optional.absent(); } @@ -84,7 +88,7 @@ public class TransactionProvider implements AutoCloseable { return Optional.of(readTx); } - private boolean isStillOpenTransaction(ObjectName transaction) { + private boolean isStillOpenTransaction(final ObjectName transaction) { return configRegistryClient.getOpenConfigs().contains(transaction); } @@ -111,7 +115,7 @@ public class TransactionProvider implements AutoCloseable { } /** - * Used for editConfig test option + * Used for editConfig test option. */ public synchronized ObjectName getTestTransaction() { ObjectName testTx = configRegistryClient.beginConfig(); @@ -120,21 +124,22 @@ public class TransactionProvider implements AutoCloseable { } /** - * Commit and notification send must be atomic + * Commit and notification send must be atomic. */ public CommitStatus commitTransaction() throws ValidationException, ConflictingVersionException { return commitTransaction(configRegistryClient); } /** - * Commit and notification send must be atomic - * @param configRegistryClient + * Commit and notification send must be atomic. */ - public synchronized CommitStatus commitTransaction(final ConfigRegistryClient configRegistryClient) throws ValidationException, ConflictingVersionException { - if (!getTransaction().isPresent()){ - //making empty commit without prior opened transaction, just return commit status with empty lists + public synchronized CommitStatus commitTransaction(final ConfigRegistryClient configRegistryClient) + throws ValidationException, ConflictingVersionException { + if (!getTransaction().isPresent()) { + // making empty commit without prior opened transaction, just return commit + // status with empty lists LOG.debug("Making commit without open candidate transaction for session {}", sessionIdForReporting); - return new CommitStatus(Collections.EMPTY_LIST, Collections.EMPTY_LIST, Collections.EMPTY_LIST); + return new CommitStatus(Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); } final Optional maybeTaON = getTransaction(); ObjectName taON = maybeTaON.get(); @@ -144,12 +149,12 @@ public class TransactionProvider implements AutoCloseable { allOpenedTransactions.remove(candidateTx); candidateTx = null; return status; - } catch (ValidationException validationException) { + } catch (final ValidationException validationException) { // no clean up: user can reconfigure and recover this transaction LOG.warn("Transaction {} failed on {}", taON, validationException.toString()); throw validationException; - } catch (ConflictingVersionException e) { - LOG.error("Exception while commit of {}, aborting transaction", taON, e); + } catch (final ConflictingVersionException e) { + LOG.debug("Exception while commit of {}, aborting transaction", taON, e); // clean up abortTransaction(); throw e; @@ -178,7 +183,7 @@ public class TransactionProvider implements AutoCloseable { readTx = null; } - public synchronized void abortTestTransaction(ObjectName testTx) { + public synchronized void abortTestTransaction(final ObjectName testTx) { LOG.debug("Aborting transaction {}", testTx); ConfigTransactionClient transactionClient = configRegistryClient.getConfigTransactionClient(testTx); allOpenedTransactions.remove(testTx); @@ -193,28 +198,29 @@ public class TransactionProvider implements AutoCloseable { transactionClient.validateConfig(); } - public void validateTestTransaction(ObjectName taON) throws ValidationException { + public void validateTestTransaction(final ObjectName taON) throws ValidationException { ConfigTransactionClient transactionClient = configRegistryClient.getConfigTransactionClient(taON); transactionClient.validateConfig(); } - public void wipeTestTransaction(ObjectName taON) { + public void wipeTestTransaction(final ObjectName taON) { wipeInternal(taON, true); } /** - * Wiping means removing all module instances keeping the transaction open + service references. + * Wiping means removing all module instances keeping the transaction open + + * service references. */ - synchronized void wipeInternal(ObjectName taON, boolean isTest) { + synchronized void wipeInternal(final ObjectName taON, final boolean isTest) { ConfigTransactionClient transactionClient = configRegistryClient.getConfigTransactionClient(taON); Set lookupConfigBeans = transactionClient.lookupConfigBeans(); - int i = lookupConfigBeans.size(); + int index = lookupConfigBeans.size(); for (ObjectName instance : lookupConfigBeans) { try { transactionClient.destroyModule(instance); - } catch (InstanceNotFoundException e) { - if (isTest){ + } catch (final InstanceNotFoundException e) { + if (isTest) { LOG.debug("Unable to clean configuration in transactiom {}", taON, e); } else { LOG.warn("Unable to clean configuration in transactiom {}", taON, e); @@ -223,7 +229,7 @@ public class TransactionProvider implements AutoCloseable { throw new IllegalStateException("Unable to clean configuration in transactiom " + taON, e); } } - LOG.debug("Transaction {} wiped clean of {} config beans", taON, i); + LOG.debug("Transaction {} wiped clean of {} config beans", taON, index); transactionClient.removeAllServiceReferences(); LOG.debug("Transaction {} wiped clean of all service references", taON); @@ -234,5 +240,4 @@ public class TransactionProvider implements AutoCloseable { Preconditions.checkState(taON.isPresent(), NO_TRANSACTION_FOUND_FOR_SESSION + sessionIdForReporting); wipeInternal(taON.get(), false); } - }