X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fapi%2FConfigTransactionController.java;fp=opendaylight%2Fconfig%2Fconfig-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fapi%2FConfigTransactionController.java;h=7e8ee64daa089fec089d8d0d57b31cba364f25c9;hb=9fb64948564e252018f9b1e13e7cea2c92f991aa;hp=0000000000000000000000000000000000000000;hpb=1742b3894614be478c333a1043ced8ef1bc5dc84;p=controller.git diff --git a/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/ConfigTransactionController.java b/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/ConfigTransactionController.java new file mode 100644 index 0000000000..7e8ee64daa --- /dev/null +++ b/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/ConfigTransactionController.java @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2013 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.config.api; + +import java.util.Set; + +import javax.management.InstanceAlreadyExistsException; +import javax.management.InstanceNotFoundException; +import javax.management.ObjectName; + +/** + * Represents functionality provided by configuration transaction. + */ +public interface ConfigTransactionController extends LookupRegistry { + + /** + * Create new configuration bean. + * + * @param moduleName + * @param instanceName + * @return ObjectName of newly created module + * @throws InstanceAlreadyExistsException + * if given ifcName and instanceName is already registered + */ + ObjectName createModule(String moduleName, String instanceName) + throws InstanceAlreadyExistsException; + + /** + * Destroy existing module. + * + * @param objectName + * can be either read-only module name that can be obtained using + * {@link ConfigRegistry#lookupConfigBean(String, String)} or + * writable module name that must contain current transaction + * name. + * @throws InstanceNotFoundException + * if module is not found + * @throws IllegalArgumentException + * if object name contains wrong transaction name or domain + */ + void destroyModule(ObjectName objectName) throws InstanceNotFoundException; + + /** + * Destroy current transaction. + */ + void abortConfig(); + + /** + * This method can be called multiple times, has no side effects. + * + * @throws ValidationException + * if validation fails + */ + void validateConfig() throws ValidationException; + + /** + * + * @return transactionName + */ + String getTransactionName(); + + Set getAvailableModuleNames(); + +}