OpenApi add POST request to device root
[netconf.git] / restconf / restconf-nb / src / main / java / org / opendaylight / restconf / nb / rfc8040 / streams / DefaultRestconfStreamServletFactory.java
index 5c02131a36ed73746f90d7fdc5ffc29b5a2d3ee9..386f5c5c426c73193a419bda5f8120135ad7c3c7 100644 (file)
@@ -16,13 +16,12 @@ import javax.ws.rs.core.Application;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.aaa.web.servlet.ServletSupport;
 import org.opendaylight.restconf.api.query.PrettyPrintParam;
+import org.opendaylight.restconf.nb.rfc8040.ErrorTagMapping;
 import org.opendaylight.restconf.server.spi.RestconfStream;
 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;
 
 /**
  * Auxiliary interface for instantiating JAX-RS streams.
@@ -33,32 +32,29 @@ import org.slf4j.LoggerFactory;
 @Component(factory = DefaultRestconfStreamServletFactory.FACTORY_NAME, service = RestconfStreamServletFactory.class)
 @Deprecated(since = "7.0.0", forRemoval = true)
 public final class DefaultRestconfStreamServletFactory implements RestconfStreamServletFactory, AutoCloseable {
-    private static final Logger LOG = LoggerFactory.getLogger(DefaultRestconfStreamServletFactory.class);
-
     public static final String FACTORY_NAME =
         "org.opendaylight.restconf.nb.rfc8040.streams.RestconfStreamServletFactory";
 
-    private static final String PROP_STREAM_REGISTRY = ".streamRegistry";
     private static final String PROP_NAME_PREFIX = ".namePrefix";
     private static final String PROP_CORE_POOL_SIZE = ".corePoolSize";
-    private static final String PROP_USE_WEBSOCKETS = ".useWebsockets";
     private static final String PROP_STREAMS_CONFIGURATION = ".streamsConfiguration";
     private static final String PROP_RESTCONF = ".restconf";
     private static final String PROP_PRETTY_PRINT = ".prettyPrint";
+    private static final String PROP_ERROR_TAG_MAPPING = ".errorTagMapping";
 
     private final @NonNull String restconf;
+    private final @NonNull ErrorTagMapping errorTagMapping;
     private final @NonNull PrettyPrintParam prettyPrint;
     private final RestconfStream.Registry streamRegistry;
     private final ServletSupport servletSupport;
 
     private final DefaultPingExecutor pingExecutor;
     private final StreamsConfiguration streamsConfiguration;
-    private final boolean useWebsockets;
 
     public DefaultRestconfStreamServletFactory(final ServletSupport servletSupport, final String restconf,
             final RestconfStream.Registry streamRegistry, final StreamsConfiguration streamsConfiguration,
-            final PrettyPrintParam prettyPrint, final String namePrefix, final int corePoolSize,
-            final boolean useWebsockets) {
+            final ErrorTagMapping errorTagMapping, final PrettyPrintParam prettyPrint, final String namePrefix,
+            final int corePoolSize) {
         this.servletSupport = requireNonNull(servletSupport);
         this.restconf = requireNonNull(restconf);
         if (restconf.endsWith("/")) {
@@ -66,25 +62,19 @@ public final class DefaultRestconfStreamServletFactory implements RestconfStream
         }
         this.streamRegistry = requireNonNull(streamRegistry);
         this.streamsConfiguration = requireNonNull(streamsConfiguration);
+        this.errorTagMapping = requireNonNull(errorTagMapping);
         this.prettyPrint = requireNonNull(prettyPrint);
         pingExecutor = new DefaultPingExecutor(namePrefix, corePoolSize);
-        this.useWebsockets = useWebsockets;
-        if (useWebsockets) {
-            LOG.warn("""
-                RESTCONF event streams use WebSockets instead of Server-Sent Events. This option is will be removed in
-                the next major release.""");
-        }
     }
 
     @Activate
     public DefaultRestconfStreamServletFactory(@Reference final ServletSupport servletSupport,
-            final Map<String, ?> props) {
-        this(servletSupport, (String) props.get(PROP_RESTCONF),
-            (RestconfStream.Registry) props.get(PROP_STREAM_REGISTRY),
+            @Reference final RestconfStream.Registry streamRegistry, final Map<String, ?> props) {
+        this(servletSupport, (String) props.get(PROP_RESTCONF), streamRegistry,
             (StreamsConfiguration) props.get(PROP_STREAMS_CONFIGURATION),
+            (ErrorTagMapping) props.get(PROP_ERROR_TAG_MAPPING),
             (PrettyPrintParam) props.get(PROP_PRETTY_PRINT),
-            (String) props.get(PROP_NAME_PREFIX), (int) requireNonNull(props.get(PROP_CORE_POOL_SIZE)),
-            (boolean) requireNonNull(props.get(PROP_USE_WEBSOCKETS)));
+            (String) props.get(PROP_NAME_PREFIX), (int) requireNonNull(props.get(PROP_CORE_POOL_SIZE)));
     }
 
     @Override
@@ -94,14 +84,13 @@ public final class DefaultRestconfStreamServletFactory implements RestconfStream
 
     @Override
     public HttpServlet newStreamServlet() {
-        return useWebsockets ? new WebSocketInitializer(restconf, streamRegistry, pingExecutor, streamsConfiguration)
-            : servletSupport.createHttpServletBuilder(
-                new Application() {
-                    @Override
-                    public Set<Object> getSingletons() {
-                        return Set.of(new SSEStreamService(streamRegistry, pingExecutor, streamsConfiguration));
-                    }
-                }).build();
+        return servletSupport.createHttpServletBuilder(
+            new Application() {
+                @Override
+                public Set<Object> getSingletons() {
+                    return Set.of(new SSEStreamService(streamRegistry, pingExecutor, streamsConfiguration));
+                }
+            }).build();
     }
 
     @Override
@@ -109,20 +98,24 @@ public final class DefaultRestconfStreamServletFactory implements RestconfStream
         return prettyPrint;
     }
 
+    @Override
+    public ErrorTagMapping errorTagMapping() {
+        return errorTagMapping;
+    }
+
     @Override
     @Deactivate
     public void close() {
         pingExecutor.close();
     }
 
-    public static Map<String, ?> props(final String restconf, final RestconfStream.Registry streamRegistry,
-            final PrettyPrintParam prettyPrint, final boolean useSSE, final StreamsConfiguration streamsConfiguration,
+    public static Map<String, ?> props(final String restconf, final ErrorTagMapping errorTagMapping,
+            final PrettyPrintParam prettyPrint, final StreamsConfiguration streamsConfiguration,
             final String namePrefix, final int corePoolSize) {
         return Map.of(
             PROP_RESTCONF, restconf,
-            PROP_STREAM_REGISTRY, streamRegistry,
+            PROP_ERROR_TAG_MAPPING, errorTagMapping,
             PROP_PRETTY_PRINT, prettyPrint,
-            PROP_USE_WEBSOCKETS, !useSSE,
             PROP_STREAMS_CONFIGURATION, streamsConfiguration,
             PROP_NAME_PREFIX, namePrefix,
             PROP_CORE_POOL_SIZE, corePoolSize);