Convert RendererProvier into a Component.
Instantiate manually DeviceRendererRPCImpl and
TransportPCEServicePathRPCImpl since OSGI does not start them directly
when they are also converted to Components.
JIRA: TRNSPRTPCE-736
Signed-off-by: Gilles Thouenon <gilles.thouenon@orange.com>
Change-Id: Ia5f19169edbd2b8ea1fd8006379128f84695293e
import org.opendaylight.transportpce.tapi.utils.TapiLink;
import org.opendaylight.transportpce.tapi.utils.TapiListener;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.TransportpceOlmService;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.TransportpceRendererService;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.TransportpceTapinetworkutilsService;
import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.OrgOpenroadmServiceService;
import org.slf4j.Logger;
protected boolean initProcedure() {
LOG.info("Initializing PCE provider ...");
pceProvider.init();
- LOG.info("Initializing renderer provider ...");
- rendererProvider.init();
LOG.info("Initializing service-handler provider ...");
servicehandlerProvider.init();
if (tapiProvider != null) {
deviceRendererService, otnDeviceRendererService, olmPowerServiceRpc,
lightyServices.getBindingDataBroker(), lightyServices.getBindingNotificationPublishService(),
portMapping);
- return new RendererProvider(lightyServices.getRpcProviderService(), deviceRendererRPC,
- rendererServiceOperations);
+ return new RendererProvider(lightyServices.getRpcProviderService(), deviceRendererService,
+ otnDeviceRendererService, rendererServiceOperations);
}
private OpenRoadmInterfaceFactory initOpenRoadmFactory(MappingUtils mappingUtils,
package org.opendaylight.transportpce.renderer;
import org.opendaylight.mdsal.binding.api.RpcProviderService;
+import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererService;
+import org.opendaylight.transportpce.renderer.provisiondevice.OtnDeviceRendererService;
import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations;
import org.opendaylight.transportpce.renderer.rpcs.DeviceRendererRPCImpl;
import org.opendaylight.transportpce.renderer.rpcs.TransportPCEServicePathRPCImpl;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.TransportpceDeviceRendererService;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.TransportpceRendererService;
import org.opendaylight.yangtools.concepts.ObjectRegistration;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@Component
public class RendererProvider {
private static final Logger LOG = LoggerFactory.getLogger(RendererProvider.class);
private final RpcProviderService rpcProviderService;
private DeviceRendererRPCImpl deviceRendererRPCImpl;
+ private TransportPCEServicePathRPCImpl transportPCEServicePathRPCImpl;
private ObjectRegistration<DeviceRendererRPCImpl> deviceRendererRegistration;
private ObjectRegistration<TransportpceRendererService> tpceServiceRegistry;
- private RendererServiceOperations rendererServiceOperations;
- public RendererProvider(RpcProviderService rpcProviderService, DeviceRendererRPCImpl deviceRendererRPCImpl,
- RendererServiceOperations rendererServiceOperations) {
+ @Activate
+ public RendererProvider(@Reference RpcProviderService rpcProviderService,
+ @Reference DeviceRendererService deviceRenderer,
+ @Reference OtnDeviceRendererService otnDeviceRendererService,
+ @Reference RendererServiceOperations rendererServiceOperations) {
this.rpcProviderService = rpcProviderService;
- this.deviceRendererRPCImpl = deviceRendererRPCImpl;
- this.rendererServiceOperations = rendererServiceOperations;
- }
-
- /**
- * Method called when the blueprint container is created.
- */
- public void init() {
+ this.deviceRendererRPCImpl = new DeviceRendererRPCImpl(deviceRenderer, otnDeviceRendererService);
+ this.transportPCEServicePathRPCImpl = new TransportPCEServicePathRPCImpl(rendererServiceOperations);
LOG.info("RendererProvider Session Initiated");
- TransportPCEServicePathRPCImpl transportPCEServicePathRPCImpl =
- new TransportPCEServicePathRPCImpl(this.rendererServiceOperations);
this.deviceRendererRegistration = this.rpcProviderService
.registerRpcImplementation(TransportpceDeviceRendererService.class, deviceRendererRPCImpl);
this.tpceServiceRegistry = this.rpcProviderService
/**
* Method called when the blueprint container is destroyed.
*/
+ @Deactivate
public void close() {
LOG.info("RendererProvider Closed");
if (this.deviceRendererRegistration != null) {
this.tpceServiceRegistry.close();
}
}
-
-}
+}
\ No newline at end of file
OtnDeviceRendererService otnDeviceRendererService) {
this.deviceRenderer = deviceRenderer;
this.otnDeviceRendererService = otnDeviceRendererService;
+ LOG.debug("DeviceRendererRPCImpl instantiated");
}
/**
public TransportPCEServicePathRPCImpl(RendererServiceOperations rendererServiceOperations) {
this.rendererServiceOperations = rendererServiceOperations;
+ LOG.debug("TransportPCEServicePathRPCImpl instantiated");
}
@Override
}
return ModelMappingUtils.createServiceImplementationRpcResponse(output);
}
-
}
-
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
-Copyright © 2016 Orange 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
--->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-
- <reference id="rpcProviderService" interface="org.opendaylight.mdsal.binding.api.RpcProviderService" />
- <reference id="deviceRenderer" interface="org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererService" />
- <reference id="otnDeviceRenderer" interface="org.opendaylight.transportpce.renderer.provisiondevice.OtnDeviceRendererService"/>
- <reference id="rendererServiceOperations" interface="org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations" />
-
- <bean id="deviceRendererRPCImpl" class="org.opendaylight.transportpce.renderer.rpcs.DeviceRendererRPCImpl" >
- <argument ref="deviceRenderer" />
- <argument ref="otnDeviceRenderer" />
- </bean>
-
- <bean id="rendererProvider" class="org.opendaylight.transportpce.renderer.RendererProvider"
- init-method="init" destroy-method="close">
- <argument ref="rpcProviderService" />
- <argument ref="deviceRendererRPCImpl" />
- <argument ref="rendererServiceOperations" />
- </bean>
-
-</blueprint>
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.opendaylight.mdsal.binding.api.RpcProviderService;
+import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererService;
+import org.opendaylight.transportpce.renderer.provisiondevice.OtnDeviceRendererService;
import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations;
import org.opendaylight.transportpce.renderer.rpcs.DeviceRendererRPCImpl;
import org.opendaylight.transportpce.renderer.rpcs.TransportPCEServicePathRPCImpl;
@Mock
RpcProviderService rpcProviderService;
@Mock
- private RendererServiceOperations rendererServiceOperations;
+ DeviceRendererService deviceRenderer;
@Mock
- DeviceRendererRPCImpl deviceRendererRPC;
+ OtnDeviceRendererService otnDeviceRendererService;
+ @Mock
+ RendererServiceOperations rendererServiceOperations;
@Test
void testInitMethodRegistersRendererToRpcService() {
- RendererProvider provider =
- new RendererProvider(rpcProviderService, deviceRendererRPC, rendererServiceOperations);
- provider.init();
+ new RendererProvider(rpcProviderService, deviceRenderer, otnDeviceRendererService, rendererServiceOperations);
verify(rpcProviderService, times(1))
.registerRpcImplementation(any(), any(TransportPCEServicePathRPCImpl.class));