Introduce netconf.server.{api,impl} 12/105712/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Apr 2023 17:01:15 +0000 (19:01 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Apr 2023 17:03:10 +0000 (19:03 +0200)
We have server-side constructs strewn across multiple components,
starting with netconf-api, which makes reasoning about what is what a
bit difficult.

Introduce netconf.server.api package to hold public APIs for consumption
and netconf.server.impl for default implementations of those constructs.

Populate them with SessionIdProvider (and its default implementation).

JIRA: NETCONF-945
Change-Id: Id4ea72c6155c6341f4dc37c78edabba90ec55e93
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
16 files changed:
netconf/mdsal-netconf-impl/src/main/java/org/opendaylight/netconf/impl/mdsal/OSGiNetconfServer.java
netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/MdsalOperationProvider.java
netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/NetconfDeviceSimulator.java
netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/SimulatedOperationProvider.java
netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/TesttoolNegotiationFactory.java
netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/operations/DefaultOperationsCreator.java
netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/operations/OperationsCreator.java
netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/operations/OperationsProvider.java
protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/NetconfServerSessionNegotiatorFactory.java
protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/NetconfServerSessionNegotiatorFactoryBuilder.java
protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/api/SessionIdProvider.java [moved from protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/SessionIdProvider.java with 90% similarity]
protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/api/package-info.java [new file with mode: 0644]
protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/impl/DefaultSessionIdProvider.java [moved from protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/DefaultSessionIdProvider.java with 90% similarity]
protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/impl/package-info.java [new file with mode: 0644]
protocol/netconf-server/src/test/java/org/opendaylight/netconf/server/ConcurrentClientsTest.java
protocol/netconf-server/src/test/java/org/opendaylight/netconf/server/NetconfDispatcherImplTest.java

index 56aae63938b8657bc5998c4f761d81aef0534781..65a991cec2dd7a5431f74c9638eae6e3fbdbd046 100644 (file)
@@ -17,7 +17,7 @@ import org.opendaylight.controller.config.threadpool.ScheduledThreadPool;
 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
 import org.opendaylight.netconf.server.NetconfServerSessionNegotiatorFactory;
 import org.opendaylight.netconf.server.ServerChannelInitializer;
-import org.opendaylight.netconf.server.SessionIdProvider;
+import org.opendaylight.netconf.server.api.SessionIdProvider;
 import org.opendaylight.netconf.server.osgi.AggregatedNetconfOperationServiceFactory;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.service.component.ComponentFactory;
index b60acee256425cb416b29f57a03931b4b870f789..6fbbf29f5a6cf93b0d6659d3831132410b26177f 100644 (file)
@@ -35,7 +35,7 @@ import org.opendaylight.netconf.mdsal.connector.ops.Lock;
 import org.opendaylight.netconf.mdsal.connector.ops.Unlock;
 import org.opendaylight.netconf.mdsal.connector.ops.get.Get;
 import org.opendaylight.netconf.mdsal.connector.ops.get.GetConfig;
-import org.opendaylight.netconf.server.SessionIdProvider;
+import org.opendaylight.netconf.server.api.SessionIdProvider;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.NetconfState;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.Yang;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Schemas;
index b1136c83e47127f15b876b67f2af9022154de397..a4108fc62c18e479dde76c3cfaa8dced8b6e1773 100644 (file)
@@ -39,11 +39,11 @@ import org.opendaylight.netconf.api.capability.Capability;
 import org.opendaylight.netconf.api.capability.YangModuleCapability;
 import org.opendaylight.netconf.api.monitoring.NetconfMonitoringService;
 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
-import org.opendaylight.netconf.server.DefaultSessionIdProvider;
 import org.opendaylight.netconf.server.NetconfServerDispatcherImpl;
 import org.opendaylight.netconf.server.NetconfServerSessionNegotiatorFactory;
 import org.opendaylight.netconf.server.ServerChannelInitializer;
-import org.opendaylight.netconf.server.SessionIdProvider;
+import org.opendaylight.netconf.server.api.SessionIdProvider;
+import org.opendaylight.netconf.server.impl.DefaultSessionIdProvider;
 import org.opendaylight.netconf.server.osgi.AggregatedNetconfOperationServiceFactory;
 import org.opendaylight.netconf.shaded.sshd.common.keyprovider.KeyPairProvider;
 import org.opendaylight.netconf.shaded.sshd.common.util.threads.ThreadUtils;
index 4988a24d114264cafa7262942262c41feaa67cbc..d46e0252a56fa21f5fbc7490b80923e0e521a2f4 100644 (file)
@@ -16,7 +16,7 @@ import org.opendaylight.netconf.api.monitoring.CapabilityListener;
 import org.opendaylight.netconf.mapping.api.NetconfOperation;
 import org.opendaylight.netconf.mapping.api.NetconfOperationService;
 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
-import org.opendaylight.netconf.server.SessionIdProvider;
+import org.opendaylight.netconf.server.api.SessionIdProvider;
 import org.opendaylight.netconf.test.tool.rpc.DataList;
 import org.opendaylight.netconf.test.tool.rpc.SimulatedCommit;
 import org.opendaylight.netconf.test.tool.rpc.SimulatedCreateSubscription;
index b6abfe25eabd5822a29aecfd7b124f6925578d8d..6eb8634eefc679c7ce314c57e1ca01abe78478f1 100644 (file)
@@ -17,7 +17,7 @@ import org.opendaylight.netconf.api.monitoring.NetconfMonitoringService;
 import org.opendaylight.netconf.mapping.api.NetconfOperationService;
 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
 import org.opendaylight.netconf.server.NetconfServerSessionNegotiatorFactory;
-import org.opendaylight.netconf.server.SessionIdProvider;
+import org.opendaylight.netconf.server.api.SessionIdProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
index 8833ff8d9b81088f378352b890539c961961af37..9f7ea8db74ebf60caba42413a72ef05b2cdf5a7c 100644 (file)
@@ -13,7 +13,7 @@ import java.util.Set;
 import org.opendaylight.netconf.api.capability.Capability;
 import org.opendaylight.netconf.mapping.api.NetconfOperation;
 import org.opendaylight.netconf.mapping.api.NetconfOperationService;
-import org.opendaylight.netconf.server.SessionIdProvider;
+import org.opendaylight.netconf.server.api.SessionIdProvider;
 import org.opendaylight.netconf.test.tool.rpc.DataList;
 import org.opendaylight.netconf.test.tool.rpc.SimulatedCommit;
 import org.opendaylight.netconf.test.tool.rpc.SimulatedCreateSubscription;
index e9d441d6b78c083f9d0bddd06fdc7be6f080ca09..eb2489596acddecc1517b4f061c994ee600584b9 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.netconf.test.tool.operations;
 import java.util.Set;
 import org.opendaylight.netconf.api.capability.Capability;
 import org.opendaylight.netconf.mapping.api.NetconfOperationService;
-import org.opendaylight.netconf.server.SessionIdProvider;
+import org.opendaylight.netconf.server.api.SessionIdProvider;
 
 /**
  * Creator which enables testtool users to inject own. implementation of {@link NetconfOperationService}
index 0955c3ddab490bfd666e5030f3add9565ab9bcbb..a379390f871c609986b41b546e3dce0628374705 100644 (file)
@@ -12,7 +12,7 @@ import org.opendaylight.netconf.api.capability.Capability;
 import org.opendaylight.netconf.api.monitoring.CapabilityListener;
 import org.opendaylight.netconf.mapping.api.NetconfOperationService;
 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
-import org.opendaylight.netconf.server.SessionIdProvider;
+import org.opendaylight.netconf.server.api.SessionIdProvider;
 import org.opendaylight.yangtools.concepts.Registration;
 
 
index 74e803be29cd7e455317aae004b67c6c24b4be04..d2533c53f21376dc343adf20a1f70c7551a34739 100644 (file)
@@ -25,6 +25,7 @@ import org.opendaylight.netconf.mapping.api.NetconfOperationService;
 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
 import org.opendaylight.netconf.nettyutil.AbstractNetconfSessionNegotiator;
 import org.opendaylight.netconf.nettyutil.NetconfSessionNegotiatorFactory;
+import org.opendaylight.netconf.server.api.SessionIdProvider;
 import org.opendaylight.netconf.server.osgi.NetconfOperationRouterImpl;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Capabilities;
index 3e6e2887b352d2f1069212e7a736b85203c8c116..0b9cd25402c0d90ca4999c9483c63eaadb231d24 100644 (file)
@@ -16,6 +16,7 @@ import org.checkerframework.checker.index.qual.NonNegative;
 import org.opendaylight.netconf.api.monitoring.NetconfMonitoringService;
 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
 import org.opendaylight.netconf.nettyutil.AbstractNetconfSessionNegotiator;
+import org.opendaylight.netconf.server.api.SessionIdProvider;
 
 public class NetconfServerSessionNegotiatorFactoryBuilder {
     private Timer timer;
similarity index 90%
rename from protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/SessionIdProvider.java
rename to protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/api/SessionIdProvider.java
index cf1f9e53eb9429d6cf3226cd0e98bfc20624041e..2143279fb91512cb94b6d33e005bc2d392f398f4 100644 (file)
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.netconf.server;
+package org.opendaylight.netconf.server.api;
 
 public interface SessionIdProvider {
 
diff --git a/protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/api/package-info.java b/protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/api/package-info.java
new file mode 100644 (file)
index 0000000..fe5b53b
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Copyright (c) 2023 PANTHEON.tech, s.r.o. 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
+ */
+/**
+ * Public interfaces exposed by a NETCONF server. These form the extensibility contracts without exposing component
+ * lifecycle.
+ */
+package org.opendaylight.netconf.server.api;
\ No newline at end of file
similarity index 90%
rename from protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/DefaultSessionIdProvider.java
rename to protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/impl/DefaultSessionIdProvider.java
index 29badad0ebbc4e2e81236f4dafb6b248a0090d48..95e88202cbd9fe68f808a384b219b81c25758155 100644 (file)
@@ -5,11 +5,12 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.netconf.server;
+package org.opendaylight.netconf.server.impl;
 
 import java.util.concurrent.atomic.AtomicLong;
 import javax.inject.Inject;
 import javax.inject.Singleton;
+import org.opendaylight.netconf.server.api.SessionIdProvider;
 import org.osgi.service.component.annotations.Component;
 
 /**
diff --git a/protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/impl/package-info.java b/protocol/netconf-server/src/main/java/org/opendaylight/netconf/server/impl/package-info.java
new file mode 100644 (file)
index 0000000..9b70d3f
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Copyright (c) 2023 PANTHEON.tech, s.r.o. 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
+ */
+/**
+ * Default implementations of public NETCONF server interfaces. These implementations have their individual lifecycle,
+ * which users are expected to abide to. This package is notably NOT exposed in OSGi environments.
+ */
+package org.opendaylight.netconf.server.impl;
\ No newline at end of file
index faf53ac37c222914f690b3b9fcee740346015152..145f9f0e981b261d2c8c566db5a2c3ce0cfbdcd3 100644 (file)
@@ -70,6 +70,8 @@ import org.opendaylight.netconf.mapping.api.NetconfOperationService;
 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
 import org.opendaylight.netconf.nettyutil.NeverReconnectStrategy;
 import org.opendaylight.netconf.nettyutil.handler.exi.NetconfStartExiMessage;
+import org.opendaylight.netconf.server.api.SessionIdProvider;
+import org.opendaylight.netconf.server.impl.DefaultSessionIdProvider;
 import org.opendaylight.netconf.server.osgi.AggregatedNetconfOperationServiceFactory;
 import org.opendaylight.netconf.util.test.XmlFileLoader;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.CapabilitiesBuilder;
index 42a9d4b27711b7f33c939e137229204afede4e8e..b9ef5f9aab05e0b0196697d847d05648eb225cac 100644 (file)
@@ -15,6 +15,8 @@ import java.net.InetSocketAddress;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.opendaylight.netconf.server.api.SessionIdProvider;
+import org.opendaylight.netconf.server.impl.DefaultSessionIdProvider;
 import org.opendaylight.netconf.server.osgi.AggregatedNetconfOperationServiceFactory;
 
 public class NetconfDispatcherImplTest {