Do not use RpcService in programming-impl 66/107866/17
authorlubos-cicut <lubos.cicut@pantheon.tech>
Fri, 13 Oct 2023 15:10:55 +0000 (17:10 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 14 Nov 2023 13:34:51 +0000 (14:34 +0100)
Migrated usage of RpcService to Rpc<?,?> for programming-impl.

JIRA: BGPCEP-1027
Change-Id: Id5059bdb656b3f7427f72d6e9fc51c6e691382c3
Signed-off-by: lubos-cicut <lubos.cicut@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
programming/impl/src/main/java/org/opendaylight/bgpcep/programming/impl/DefaultInstructionScheduler.java [moved from programming/impl/src/main/java/org/opendaylight/bgpcep/programming/impl/ProgrammingServiceImpl.java with 94% similarity]
programming/impl/src/main/java/org/opendaylight/bgpcep/programming/impl/DefaultInstructionSchedulerFactory.java
programming/impl/src/test/java/org/opendaylight/bgpcep/programming/impl/AbstractProgrammingTest.java
programming/impl/src/test/java/org/opendaylight/bgpcep/programming/impl/DefaultInstructionSchedulerTest.java [moved from programming/impl/src/test/java/org/opendaylight/bgpcep/programming/impl/ProgrammingServiceImplTest.java with 98% similarity]

similarity index 94%
rename from programming/impl/src/main/java/org/opendaylight/bgpcep/programming/impl/ProgrammingServiceImpl.java
rename to programming/impl/src/main/java/org/opendaylight/bgpcep/programming/impl/DefaultInstructionScheduler.java
index 6d478acbbdc9d2fc47acc516de774e3a289cec08..e826f2dc482e4de3b11005764b4aaa994b49693e 100644 (file)
@@ -9,6 +9,8 @@ package org.opendaylight.bgpcep.programming.impl;
 
 import static java.util.Objects.requireNonNull;
 
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.ImmutableClassToInstanceMap;
 import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
@@ -44,9 +46,11 @@ import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
 import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.CancelInstruction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.CancelInstructionInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.CancelInstructionOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.CancelInstructionOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.CleanInstructions;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.CleanInstructionsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.CleanInstructionsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.CleanInstructionsOutputBuilder;
@@ -59,7 +63,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programm
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.InstructionsQueueBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.InstructionsQueueKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.Nanotime;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.ProgrammingService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.SubmitInstructionInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.UnknownInstruction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.UnknownPreconditionId;
@@ -67,15 +70,16 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programm
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.instruction.queue.InstructionKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.instruction.status.changed.Details;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.submit.instruction.output.result.failure._case.FailureBuilder;
-import org.opendaylight.yangtools.concepts.ObjectRegistration;
+import org.opendaylight.yangtools.concepts.Registration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.Rpc;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-final class ProgrammingServiceImpl implements ClusterSingletonService, InstructionScheduler, ProgrammingService {
-    private static final Logger LOG = LoggerFactory.getLogger(ProgrammingServiceImpl.class);
+final class DefaultInstructionScheduler implements ClusterSingletonService, InstructionScheduler {
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultInstructionScheduler.class);
 
     private final Map<InstructionId, InstructionImpl> insns = new HashMap<>();
     private final InstanceIdentifier<InstructionsQueue> qid;
@@ -88,7 +92,7 @@ final class ProgrammingServiceImpl implements ClusterSingletonService, Instructi
     private final ClusterSingletonServiceRegistration csspReg;
     private final RpcProviderService rpcProviderRegistry;
     @GuardedBy("this")
-    private ObjectRegistration<ProgrammingService> reg;
+    private Registration reg;
 
     private final class InstructionPusher implements QueueInstruction {
         private final InstructionBuilder builder = new InstructionBuilder();
@@ -153,7 +157,7 @@ final class ProgrammingServiceImpl implements ClusterSingletonService, Instructi
         }
     }
 
-    ProgrammingServiceImpl(final DataBroker dataProvider, final NotificationPublishService notifs,
+    DefaultInstructionScheduler(final DataBroker dataProvider, final NotificationPublishService notifs,
             final Executor executor, final RpcProviderService rpcProviderRegistry,
             final ClusterSingletonServiceProvider cssp, final Timer timer, final String instructionId) {
         this.dataProvider = requireNonNull(dataProvider);
@@ -172,7 +176,10 @@ final class ProgrammingServiceImpl implements ClusterSingletonService, Instructi
     @Override
     public synchronized void instantiateServiceInstance() {
         LOG.info("Instruction Queue service {} instantiated", sgi.getName());
-        reg = rpcProviderRegistry.registerRpcImplementation(ProgrammingService.class, this);
+        reg = rpcProviderRegistry.registerRpcImplementations(ImmutableClassToInstanceMap.<Rpc<?, ?>>builder()
+            .put(CancelInstruction.class, this::cancelInstruction)
+            .put(CleanInstructions.class, this::cleanInstructions)
+            .build());
 
         final WriteTransaction wt = dataProvider.newWriteOnlyTransaction();
         wt.put(LogicalDatastoreType.OPERATIONAL, qid, new InstructionsQueueBuilder()
@@ -195,13 +202,13 @@ final class ProgrammingServiceImpl implements ClusterSingletonService, Instructi
         return sgi;
     }
 
-    @Override
-    public ListenableFuture<RpcResult<CancelInstructionOutput>> cancelInstruction(final CancelInstructionInput input) {
+    @VisibleForTesting
+    ListenableFuture<RpcResult<CancelInstructionOutput>> cancelInstruction(final CancelInstructionInput input) {
         return Futures.submit(() -> realCancelInstruction(input), executor);
     }
 
-    @Override
-    public ListenableFuture<RpcResult<CleanInstructionsOutput>> cleanInstructions(final CleanInstructionsInput input) {
+    @VisibleForTesting
+    ListenableFuture<RpcResult<CleanInstructionsOutput>> cleanInstructions(final CleanInstructionsInput input) {
         return Futures.submit(() -> realCleanInstructions(input), executor);
     }
 
index c59fce7fe56fb5fb4a40afb38158130b4619f793..3ff42b5bddf157d583f2353074a817d3e3df2a2c 100644 (file)
@@ -57,7 +57,8 @@ public final class DefaultInstructionSchedulerFactory implements InstructionSche
     @Override
     public InstructionScheduler createInstructionScheduler(final String instructionId) {
         LOG.info("Creating Instruction Scheduler {}.", instructionId);
-        return new ProgrammingServiceImpl(dataProvider, notifs, exec, rpcProviderRegistry, cssp, timer, instructionId);
+        return new DefaultInstructionScheduler(dataProvider, notifs, exec, rpcProviderRegistry, cssp, timer,
+            instructionId);
     }
 
     @Deactivate
index 2ade2db6b8183be90e7b7d931ae40d1495f5486a..857b279abcf051a41c52671f22210e954b6de5fa 100644 (file)
@@ -19,8 +19,7 @@ import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBro
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.programming.rev150720.ProgrammingService;
-import org.opendaylight.yangtools.concepts.ObjectRegistration;
+import org.opendaylight.yangtools.concepts.Registration;
 
 abstract class AbstractProgrammingTest extends AbstractConcurrentDataBrokerTest {
     @Mock
@@ -30,7 +29,7 @@ abstract class AbstractProgrammingTest extends AbstractConcurrentDataBrokerTest
     @Mock
     ClusterSingletonServiceRegistration singletonServiceRegistration;
     @Mock
-    private ObjectRegistration<ProgrammingService> registration;
+    private Registration registration;
     ClusterSingletonService singletonService;
 
     AbstractProgrammingTest() {
@@ -48,8 +47,7 @@ abstract class AbstractProgrammingTest extends AbstractConcurrentDataBrokerTest
             return null;
         }).when(this.singletonServiceRegistration).close();
 
-        doReturn(this.registration).when(this.rpcRegistry).registerRpcImplementation(any(),
-            any(ProgrammingService.class));
+        doReturn(this.registration).when(this.rpcRegistry).registerRpcImplementations(any());
 
         doNothing().when(this.registration).close();
     }
similarity index 98%
rename from programming/impl/src/test/java/org/opendaylight/bgpcep/programming/impl/ProgrammingServiceImplTest.java
rename to programming/impl/src/test/java/org/opendaylight/bgpcep/programming/impl/DefaultInstructionSchedulerTest.java
index b22c136c6a3268bb4040264aa7148d79f3b6fb6d..2033568d13ab04fe0007911393a3a6b9a1e8deca 100644 (file)
@@ -53,14 +53,14 @@ import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.Uint64;
 
 @RunWith(MockitoJUnitRunner.StrictStubs.class)
-public class ProgrammingServiceImplTest extends AbstractProgrammingTest {
-
+public class DefaultInstructionSchedulerTest extends AbstractProgrammingTest {
     private static final int INSTRUCTION_DEADLINE_OFFSET_IN_SECONDS = 3;
     private static final String INSTRUCTIONS_QUEUE_KEY = "test-instraction-queue";
+
     private final Timer timer = new HashedWheelTimer();
     private MockedExecutorWrapper mockedExecutorWrapper;
     private MockedNotificationServiceWrapper mockedNotificationServiceWrapper;
-    private ProgrammingServiceImpl testedProgrammingService;
+    private DefaultInstructionScheduler testedProgrammingService;
 
     @Before
     @Override
@@ -69,7 +69,7 @@ public class ProgrammingServiceImplTest extends AbstractProgrammingTest {
         mockedExecutorWrapper = new MockedExecutorWrapper();
         mockedNotificationServiceWrapper = new MockedNotificationServiceWrapper();
 
-        testedProgrammingService = new ProgrammingServiceImpl(getDataBroker(),
+        testedProgrammingService = new DefaultInstructionScheduler(getDataBroker(),
                 mockedNotificationServiceWrapper.getMockedNotificationService(),
                 mockedExecutorWrapper.getMockedExecutor(), rpcRegistry, cssp, timer,
                 INSTRUCTIONS_QUEUE_KEY);