Add service reference binding to config registry.
[controller.git] / opendaylight / config / config-api / src / main / java / org / opendaylight / controller / config / api / ServiceReferenceReadableRegistry.java
diff --git a/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/ServiceReferenceReadableRegistry.java b/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/ServiceReferenceReadableRegistry.java
new file mode 100644 (file)
index 0000000..f84fcd4
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * 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 javax.management.InstanceNotFoundException;
+import javax.management.ObjectName;
+import java.util.Map;
+import java.util.Set;
+
+public interface ServiceReferenceReadableRegistry {
+
+    /**
+     * Lookup object name by fully qualified service interface name and service reference name.
+     * @param serviceInterfaceName service interface name
+     * @param refName service reference name supplied in
+     * {@link org.opendaylight.controller.config.api.ConfigTransactionController#saveServiceReference(String, String, javax.management.ObjectName)}
+     * @throws java.lang.IllegalArgumentException if module not found
+     */
+    ObjectName lookupConfigBeanByServiceInterfaceName(String serviceInterfaceName, String refName);
+
+    /**
+     * Get mapping of services to reference names and module object names.
+     */
+    Map<String /* serviceInterfaceName */, Map<String/* refName */, ObjectName>> getServiceMapping();
+
+    /**
+     * Get current mapping between reference names and module object names for given service interface name.
+     * @param serviceInterfaceName service interface name
+     * @throws IllegalArgumentException if there is a mismatch between serviceInterfaceName and objectName
+     */
+    Map<String /* refName */, ObjectName> lookupServiceReferencesByServiceInterfaceName(String serviceInterfaceName);
+
+    /**
+     * Find all available service interface names of a module.
+     * @param objectName module object name
+     * @throws InstanceNotFoundException if search did not find exactly one instance
+     */
+    Set<String> lookupServiceInterfaceNames(ObjectName objectName) throws InstanceNotFoundException;
+
+    /**
+     * @param namespace service interface namespace
+     * @param localName service interface local name
+     * @return fully qualified name needed by all other service reference mapping methods.
+     * @throws java.lang.IllegalArgumentException if namespace or localName is not found
+     */
+    String getServiceInterfaceName(String namespace, String localName);
+
+}