Persist service references as separate MBeans.
[controller.git] / opendaylight / config / config-api / src / main / java / org / opendaylight / controller / config / api / ServiceReferenceReadableRegistry.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.config.api;
9
10 import javax.management.InstanceNotFoundException;
11 import javax.management.ObjectName;
12 import java.util.Map;
13 import java.util.Set;
14
15 public interface ServiceReferenceReadableRegistry {
16
17     /**
18      * Lookup object name by fully qualified service interface name and service reference name.
19      * @param serviceInterfaceQName service interface name
20      * @param refName service reference name supplied in
21      * {@link org.opendaylight.controller.config.api.ConfigTransactionController#saveServiceReference(String, String, javax.management.ObjectName)}
22      * @throws java.lang.IllegalArgumentException if module not found
23      */
24     ObjectName lookupConfigBeanByServiceInterfaceName(String serviceInterfaceQName, String refName);
25
26     /**
27      * Get mapping of services to reference names and module object names.
28      */
29     Map<String /* serviceInterfaceQName */, Map<String/* refName */, ObjectName>> getServiceMapping();
30
31     /**
32      * Get current mapping between reference names and module object names for given service interface name.
33      * @param serviceInterfaceQName service interface name
34      * @throws IllegalArgumentException if there is a mismatch between serviceInterfaceName and objectName
35      */
36     Map<String /* refName */, ObjectName> lookupServiceReferencesByServiceInterfaceName(String serviceInterfaceQName);
37
38     /**
39      * Find all available service interface names of a module.
40      * @param objectName module object name
41      * @throws InstanceNotFoundException if search did not find exactly one instance
42      */
43     Set<String> lookupServiceInterfaceNames(ObjectName objectName) throws InstanceNotFoundException;
44
45     /**
46      * @param namespace service interface namespace
47      * @param localName service interface local name
48      * @return fully qualified name needed by all other service reference mapping methods.
49      * @throws java.lang.IllegalArgumentException if namespace or localName is not found
50      */
51     String getServiceInterfaceName(String namespace, String localName);
52
53     /**
54      * @return ObjectName with type=Service that was created using
55      * {@link org.opendaylight.controller.config.api.ServiceReferenceWritableRegistry#saveServiceReference(String, String,
56      * javax.management.ObjectName)}
57      */
58     ObjectName getServiceReference(String serviceInterfaceQName, String refName) throws InstanceNotFoundException;
59
60     void checkServiceReferenceExists(ObjectName objectName) throws InstanceNotFoundException;
61
62 }