import org.opendaylight.transportpce.pce.service.PathComputationService;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.TransportpcePceService;
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;
* Class to register
* Pce Service & Notification.
*/
+@Component
public class PceProvider {
private static final Logger LOG = LoggerFactory.getLogger(PceProvider.class);
private final RpcProviderService rpcService;
- private final PathComputationService pathComputationService;
private ObjectRegistration<PceServiceRPCImpl> rpcRegistration;
- public PceProvider(RpcProviderService rpcProviderService, PathComputationService pathComputationService) {
+ @Activate
+ public PceProvider(@Reference RpcProviderService rpcProviderService,
+ @Reference PathComputationService pathComputationService) {
this.rpcService = rpcProviderService;
- this.pathComputationService = pathComputationService;
- }
-
- /*
- * Method called when the blueprint container is created.
- */
- public void init() {
LOG.info("PceProvider Session Initiated");
final PceServiceRPCImpl consumer = new PceServiceRPCImpl(pathComputationService);
rpcRegistration = rpcService.registerRpcImplementation(TransportpcePceService.class, consumer);
/*
* Method called when the blueprint container is destroyed.
*/
+ @Deactivate
public void close() {
LOG.info("PceProvider Closed");
rpcRegistration.close();
}
-
}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
-Copyright © 2017 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
-
-Author: Martial Coulibaly <martial.coulibaly@gfi.com> on behalf of Orange
--->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-
- <reference id="rpcService" interface="org.opendaylight.mdsal.binding.api.RpcProviderService"/>
- <reference id="pceServiceImpl" interface="org.opendaylight.transportpce.pce.service.PathComputationService"/>
-
- <bean id="provider"
- class="org.opendaylight.transportpce.pce.impl.PceProvider"
- init-method="init" destroy-method="close">
- <argument ref="rpcService" />
- <argument ref="pceServiceImpl" />
- </bean>
-</blueprint>
package org.opendaylight.transportpce.pce.impl;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
-import org.eclipse.jdt.annotation.NonNull;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.opendaylight.mdsal.binding.api.NotificationPublishService;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
import org.opendaylight.mdsal.binding.api.RpcProviderService;
-import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
import org.opendaylight.transportpce.pce.service.PathComputationService;
-import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl;
-import org.opendaylight.transportpce.pce.utils.NotificationPublishServiceMock;
import org.opendaylight.transportpce.test.AbstractTest;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220808.TransportpcePceService;
-import org.opendaylight.yangtools.concepts.ObjectRegistration;
+@ExtendWith(MockitoExtension.class)
public class PceProviderTest extends AbstractTest {
+ @Mock
private RpcProviderService rpcService;
+ @Mock
private PathComputationService pathComputationService;
- private NotificationPublishService notificationPublishService;
- private NetworkTransactionImpl networkTransaction;
- private ObjectRegistration<TransportpcePceService> rpcRegistration;
- private PceProvider pceProvider;
-
- @BeforeEach
- void setUp() {
- rpcService = mock(RpcProviderService.class);
- notificationPublishService = new NotificationPublishServiceMock();
- networkTransaction = new NetworkTransactionImpl(getDataBroker());
- pathComputationService = new PathComputationServiceImpl(networkTransaction, notificationPublishService,
- null, null);
- pceProvider = new PceProvider(rpcService, pathComputationService);
- }
@Test
void testInit() {
- this.rpcRegistration = new ObjectRegistration<TransportpcePceService>() {
- @NonNull
- @Override
- public TransportpcePceService getInstance() {
- return new PceServiceRPCImpl(pathComputationService);
- }
-
- @Override
- public void close() {
-
- }
- };
- when(rpcService.registerRpcImplementation(eq(TransportpcePceService.class), any())).thenReturn(rpcRegistration);
- pceProvider.init();
- pceProvider.close();
+ new PceProvider(rpcService, pathComputationService);
+ verify(rpcService, times(1)).registerRpcImplementation(any(), any(TransportpcePceService.class));
}
}