2 * Copyright (c) 2018 Inocybe Technologies and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.netconf.sal.restconf.web;
10 import javax.servlet.ServletException;
11 import javax.ws.rs.core.Application;
12 import org.opendaylight.aaa.filterchain.configuration.CustomFilterAdapterConfiguration;
13 import org.opendaylight.aaa.filterchain.filters.CustomFilterAdapter;
14 import org.opendaylight.aaa.web.FilterDetails;
15 import org.opendaylight.aaa.web.ServletDetails;
16 import org.opendaylight.aaa.web.WebContext;
17 import org.opendaylight.aaa.web.WebContextBuilder;
18 import org.opendaylight.aaa.web.WebContextRegistration;
19 import org.opendaylight.aaa.web.WebContextSecurer;
20 import org.opendaylight.aaa.web.WebServer;
21 import org.opendaylight.aaa.web.servlet.ServletSupport;
24 * Implementation of Bierman02WebRegistrar.
26 * @author Thomas Pantelis
28 public class Bierman02WebRegistrarImpl implements Bierman02WebRegistrar {
30 private WebContextRegistration registraton;
31 private final WebServer webServer;
32 private final WebContextSecurer webContextSecurer;
33 private final ServletSupport servletSupport;
34 private final Application webApp;
35 private final CustomFilterAdapterConfiguration customFilterAdapterConfig;
37 public Bierman02WebRegistrarImpl(WebServer webServer, WebContextSecurer webContextSecurer,
38 ServletSupport servletSupport, Application webApp,
39 CustomFilterAdapterConfiguration customFilterAdapterConfig) {
40 this.webServer = webServer;
41 this.webContextSecurer = webContextSecurer;
42 this.servletSupport = servletSupport;
44 this.customFilterAdapterConfig = customFilterAdapterConfig;
48 if (registraton != null) {
54 public void registerWithAuthentication() {
59 public void registerWithoutAuthentication() {
63 private void register(boolean authenticate) {
64 WebContextBuilder webContextBuilder = WebContext.builder().contextPath("restconf").supportsSessions(true)
65 .addServlet(ServletDetails.builder().servlet(servletSupport.createHttpServletBuilder(webApp).build())
66 .addUrlPattern("/*").build())
68 // Allows user to add javax.servlet.Filter(s) in front of REST services
69 .addFilter(FilterDetails.builder().filter(new CustomFilterAdapter(customFilterAdapterConfig))
70 .addUrlPattern("/*").build())
72 .addFilter(FilterDetails.builder().filter(new org.eclipse.jetty.servlets.GzipFilter())
73 .putInitParam("mimeTypes",
74 "application/xml,application/yang.data+xml,xml,application/json,application/yang.data+json")
75 .addUrlPattern("/*").build());
78 webContextSecurer.requireAuthentication(webContextBuilder, "/*");
82 registraton = webServer.registerWebContext(webContextBuilder.build());
83 } catch (ServletException e) {
84 throw new RuntimeException("Failed to register the web context", e);