AbstractTopologySessionListener is not generic 85/100685/3
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 20 Apr 2022 20:23:46 +0000 (22:23 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 20 Apr 2022 21:45:20 +0000 (23:45 +0200)
We have exactly one subclass, remove generic arguments to make coupling
more obvious.

JIRA: BGPCEP-1005
Change-Id: Icc18d6dfa3b101e892dcb969bfa5fc5651f70804
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
pcep/segment-routing/src/test/java/org/opendaylight/protocol/pcep/segment/routing/TopologyProviderTest.java
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/AbstractTopologySessionListener.java
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/PCEPTopologySessionListener.java

index 1119d264e7935b3bc171313af87d0d6efc1aaf04..6cc83f175e55be6c7b603029f939f158618bea1d 100644 (file)
@@ -57,11 +57,10 @@ import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class TopologyProviderTest extends AbstractPCEPSessionTest {
 
-    private AbstractTopologySessionListener<SrpIdNumber, PlspId> listener;
+    private AbstractTopologySessionListener listener;
     private PCEPSession session;
 
     @Override
-    @SuppressWarnings("unchecked")
     @Before
     public void setUp() throws Exception {
         super.setUp();
index df1be1c1bc96ed82c9d260acb33611639860bc87..bf34c74f640f337e28149fd0bcbbffa1b2b725b5 100644 (file)
@@ -47,6 +47,8 @@ import org.opendaylight.protocol.pcep.TerminationReason;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev200720.LspObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev200720.Path1;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev200720.PlspId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev200720.SrpIdNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev200720.lsp.object.Lsp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Message;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.MessageHeader;
@@ -80,11 +82,8 @@ import org.slf4j.LoggerFactory;
  * Base class for PCEP topology providers. It handles the common tasks involved in managing a PCEP server (PCE)
  * endpoint, and exposing a network topology based on it. It needs to be subclassed to form a fully functional block,
  * where the subclass provides handling of incoming messages.
- *
- * @param <S> identifier type of requests
- * @param <L> identifier type for LSPs
  */
-public abstract class AbstractTopologySessionListener<S, L> implements TopologySessionListener, TopologySessionStats {
+public abstract class AbstractTopologySessionListener implements TopologySessionListener, TopologySessionStats {
     private static final Logger LOG = LoggerFactory.getLogger(AbstractTopologySessionListener.class);
 
     static final String MISSING_XML_TAG = "Mandatory XML tags are missing.";
@@ -103,12 +102,12 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
     };
 
     @GuardedBy("this")
-    final Map<L, String> lsps = new HashMap<>();
+    final Map<PlspId, String> lsps = new HashMap<>();
     @GuardedBy("this")
     SessionStateImpl listenerState;
 
     @GuardedBy("this")
-    private final Map<S, PCEPRequest> requests = new HashMap<>();
+    private final Map<SrpIdNumber, PCEPRequest> requests = new HashMap<>();
     @GuardedBy("this")
     private final Map<String, ReportedLsp> lspData = new ConcurrentHashMap<>();
     private final ServerSessionManager serverSessionManager;
@@ -253,7 +252,7 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
                 syncOptimization = null;
 
                 // Clear all requests we know about
-                for (final Entry<S, PCEPRequest> e : requests.entrySet()) {
+                for (final Entry<SrpIdNumber, PCEPRequest> e : requests.entrySet()) {
                     final PCEPRequest r = e.getValue();
                     switch (r.getState()) {
                         case DONE:
@@ -367,7 +366,7 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
         }
     }
 
-    final synchronized PCEPRequest removeRequest(final S id) {
+    final synchronized PCEPRequest removeRequest(final SrpIdNumber id) {
         final PCEPRequest ret = requests.remove(id);
         if (ret != null && listenerState != null) {
             listenerState.processRequestStats(ret.getElapsedMillis());
@@ -376,7 +375,7 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
         return ret;
     }
 
-    final synchronized ListenableFuture<OperationResult> sendMessage(final Message message, final S requestId,
+    final synchronized ListenableFuture<OperationResult> sendMessage(final Message message, final SrpIdNumber requestId,
             final Metadata metadata) {
         final var sendFuture = session.sendMessage(message);
         listenerState.updateStatefulSentMsg(message);
@@ -404,7 +403,7 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
         return req.getFuture();
     }
 
-    private void setupTimeoutHandler(final S requestId, final PCEPRequest req, final short timeout) {
+    private void setupTimeoutHandler(final SrpIdNumber requestId, final PCEPRequest req, final short timeout) {
         final Timer timer = req.getTimer();
         timer.schedule(new TimerTask() {
             @Override
@@ -429,7 +428,7 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
      * @param solicited True if the update was solicited
      * @param remove    True if this is an LSP path removal
      */
-    protected final synchronized void updateLsp(final MessageContext ctx, final L id, final String lspName,
+    protected final synchronized void updateLsp(final MessageContext ctx, final PlspId id, final String lspName,
             final ReportedLspBuilder rlb, final boolean solicited, final boolean remove) {
 
         final String name;
@@ -555,7 +554,7 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
      * @param ctx Message Context
      * @param id  Revision-specific LSP identifier
      */
-    protected final synchronized void removeLsp(final MessageContext ctx, final L id) {
+    protected final synchronized void removeLsp(final MessageContext ctx, final PlspId id) {
         final String name = lsps.remove(id);
         LOG.debug("LSP {} removed", name);
         ctx.trans.delete(LogicalDatastoreType.OPERATIONAL, lspIdentifier(name));
@@ -563,7 +562,7 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
     }
 
     @Holding("this")
-    final String lookupLspName(final L id) {
+    final String lookupLspName(final PlspId id) {
         return lsps.get(requireNonNull(id, "ID parameter null."));
     }
 
@@ -581,7 +580,7 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
 
     protected abstract Object validateReportedLsp(Optional<ReportedLsp> rep, LspId input);
 
-    protected abstract void loadLspData(Node node, Map<String, ReportedLsp> lspData, Map<L, String> lsps,
+    protected abstract void loadLspData(Node node, Map<String, ReportedLsp> lspData, Map<PlspId, String> lsps,
             boolean incrementalSynchro);
 
     final boolean isLspDbPersisted() {
index 0eacf16fc9b92df5d4dd66ab38ed6f7d9f5ea3e2..90c5f51f30dfb58f644b1241a9b8b4853fede20f 100644 (file)
@@ -110,7 +110,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 // Non-final for testing
-class PCEPTopologySessionListener extends AbstractTopologySessionListener<SrpIdNumber, PlspId> {
+class PCEPTopologySessionListener extends AbstractTopologySessionListener {
     private static final Logger LOG = LoggerFactory.getLogger(PCEPTopologySessionListener.class);
     private static final PlspId PLSPID_ZERO = new PlspId(Uint32.ZERO);