-class RpcServiceMetadata implements ComponentFactoryMetadata {
- private static final Logger LOG = LoggerFactory.getLogger(RpcServiceMetadata.class);
-
- private final String id;
- private final String interfaceName;
- private ExtendedBlueprintContainer container;
-
- RpcServiceMetadata(String id, String interfaceName) {
- this.id = id;
- this.interfaceName = interfaceName;
- }
-
- @Override
- public String getId() {
- return id;
- }
-
- @Override
- public int getActivation() {
- return ACTIVATION_LAZY;
- }
-
- @Override
- public List<String> getDependsOn() {
- return Collections.singletonList(OpendaylightNamespaceHandler.RPC_REGISTRY_NAME);
- }
-
- @Override
- public void init(ExtendedBlueprintContainer container) {
- this.container = container;
-
- LOG.debug("{}: In init", logName());
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public Object create() throws ComponentDefinitionException {
- LOG.debug("{}: In create: interfaceName: {}", logName(), interfaceName);
-
- RpcProviderRegistry rpcRegistry = (RpcProviderRegistry) container.getComponentInstance(
- OpendaylightNamespaceHandler.RPC_REGISTRY_NAME);
-
- try {
- Class<?> rpcInterface = container.getBundleContext().getBundle().loadClass(interfaceName);
- Preconditions.checkArgument(RpcService.class.isAssignableFrom(rpcInterface),
- "Specified interface %s is not an RpcService", interfaceName);
-
- RpcService rpcService = rpcRegistry.getRpcService((Class<RpcService>)rpcInterface);
-
- LOG.debug("{}: create returning service {}", logName(), rpcService);
-
- return rpcService;
- } catch(Exception e) {
- throw new ComponentDefinitionException("Error getting RPC service for " + interfaceName, e);
- }
- }
-
- @Override
- public void destroy(Object instance) {
- }
-
- private String logName() {
- return (container != null ? container.getBundleContext().getBundle().getSymbolicName() : "") +
- " (" + id + ")";