Remove Service(Notif)Wrapper
[netconf.git] / restconf / restconf-nb-rfc8040 / src / main / java / org / opendaylight / restconf / nb / rfc8040 / web / WebInitializer.java
index a642e6b1ffc0fff71c4e6c154bf67245027a8d7b..826cf4d92b45d5133ce0faf3b7de24b358f54059 100644 (file)
@@ -7,7 +7,7 @@
  */
 package org.opendaylight.restconf.nb.rfc8040.web;
 
-import com.google.common.collect.Lists;
+import java.util.List;
 import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -23,8 +23,9 @@ import org.opendaylight.aaa.web.WebContextRegistration;
 import org.opendaylight.aaa.web.WebContextSecurer;
 import org.opendaylight.aaa.web.WebServer;
 import org.opendaylight.aaa.web.servlet.ServletSupport;
+import org.opendaylight.restconf.nb.rfc8040.DataStreamApplication;
 import org.opendaylight.restconf.nb.rfc8040.RestconfApplication;
-import org.opendaylight.restconf.nb.rfc8040.RestconfNotifApplication;
+import org.opendaylight.restconf.nb.rfc8040.RootFoundApplication;
 import org.opendaylight.restconf.nb.rfc8040.rests.utils.RestconfStreamsConstants;
 import org.opendaylight.restconf.nb.rfc8040.streams.websockets.WebSocketInitializer;
 import org.opendaylight.restconf.nb.rfc8040.utils.RestconfConstants;
@@ -36,32 +37,49 @@ import org.opendaylight.restconf.nb.rfc8040.utils.RestconfConstants;
  */
 @Singleton
 public class WebInitializer {
-
     private final WebContextRegistration registration;
 
     @Inject
-    public WebInitializer(@Reference WebServer webServer, @Reference WebContextSecurer webContextSecurer,
-            @Reference ServletSupport servletSupport, RestconfApplication webApp,RestconfNotifApplication webAppNotif,
-            @Reference CustomFilterAdapterConfiguration customFilterAdapterConfig,
-            WebSocketInitializer webSocketServlet) throws ServletException {
-        WebContextBuilder webContextBuilder = WebContext.builder().contextPath(RestconfConstants.BASE_URI_PATTERN)
-                .supportsSessions(false)
-                .addServlet(ServletDetails.builder().servlet(servletSupport.createHttpServletBuilder(webApp).build())
-                        .addUrlPattern("/*").build())
-                .addServlet(ServletDetails.builder().servlet(servletSupport.createHttpServletBuilder(webAppNotif)
-                        .build()).asyncSupported(true).addUrlPattern("/notif/*").name("notificationServlet").build())
-                .addServlet(ServletDetails.builder().servlet(webSocketServlet).addAllUrlPatterns(Lists.newArrayList(
-                        RestconfStreamsConstants.DATA_CHANGE_EVENT_STREAM_PATTERN,
-                        RestconfStreamsConstants.YANG_NOTIFICATION_STREAM_PATTERN)).build())
-                // Allows user to add javax.servlet.Filter(s) in front of REST services
-                .addFilter(FilterDetails.builder().filter(new CustomFilterAdapter(customFilterAdapterConfig))
-                    .addUrlPattern("/*").asyncSupported(true).build())
-                .addFilter(FilterDetails.builder().filter(new org.eclipse.jetty.servlets.GzipFilter())
-                    .putInitParam("mimeTypes",
-                        "application/xml,application/yang.data+xml,xml,application/json,application/yang.data+json")
-                    .addUrlPattern("/*").asyncSupported(true).build());
+    public WebInitializer(@Reference final WebServer webServer, @Reference final WebContextSecurer webContextSecurer,
+            @Reference final ServletSupport servletSupport, final RestconfApplication webApp,
+            final DataStreamApplication webAppNotif,
+            @Reference final CustomFilterAdapterConfiguration customFilterAdapterConfig,
+            final WebSocketInitializer webSocketServlet) throws ServletException {
+        WebContextBuilder webContextBuilder = WebContext.builder()
+            .contextPath("/")
+            .supportsSessions(false)
+            .addServlet(ServletDetails.builder()
+                .addUrlPattern(RestconfConstants.BASE_URI_PATTERN + "/*")
+                .servlet(servletSupport.createHttpServletBuilder(webApp).build())
+                .build())
+            .addServlet(ServletDetails.builder()
+                .addUrlPattern(RestconfConstants.BASE_URI_PATTERN + "/notif/*")
+                .servlet(servletSupport.createHttpServletBuilder(webAppNotif).build())
+                .name("notificationServlet")
+                .asyncSupported(true)
+                .build())
+            .addServlet(ServletDetails.builder()
+                .addAllUrlPatterns(List.of(
+                    RestconfConstants.BASE_URI_PATTERN + RestconfStreamsConstants.DATA_CHANGE_EVENT_STREAM_PATTERN,
+                    RestconfConstants.BASE_URI_PATTERN + RestconfStreamsConstants.YANG_NOTIFICATION_STREAM_PATTERN))
+                .servlet(webSocketServlet)
+                .build())
+            .addServlet(ServletDetails.builder()
+                .addUrlPattern(".well-known/*")
+                .servlet(servletSupport.createHttpServletBuilder(
+                    new RootFoundApplication(RestconfConstants.BASE_URI_PATTERN))
+                    .build())
+                .name("Rootfound")
+                .build())
+
+            // Allows user to add javax.servlet.Filter(s) in front of REST services
+            .addFilter(FilterDetails.builder()
+                .addUrlPattern("/*")
+                .filter(new CustomFilterAdapter(customFilterAdapterConfig))
+                .asyncSupported(true)
+                .build());
 
-        webContextSecurer.requireAuthentication(webContextBuilder, true , "/*");
+        webContextSecurer.requireAuthentication(webContextBuilder, true, RestconfConstants.BASE_URI_PATTERN + "/*");
 
         registration = webServer.registerWebContext(webContextBuilder.build());
     }