X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=restconf%2Frestconf-nb-bierman02%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fsal%2Frestconf%2Fweb%2FBierman02WebRegistrarImpl.java;h=fb6f5bc821cb3a62dbf49bb4153095e8d4bdc481;hb=b382d3002f0b84ffdcde61de1ebae76f54f72a25;hp=9e41c62e06290c1cc2ddb07a0e43be93e57c9d66;hpb=45e2a83946baba314beb7a4d46de2227008d5516;p=netconf.git diff --git a/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/restconf/web/Bierman02WebRegistrarImpl.java b/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/restconf/web/Bierman02WebRegistrarImpl.java index 9e41c62e06..fb6f5bc821 100644 --- a/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/restconf/web/Bierman02WebRegistrarImpl.java +++ b/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/restconf/web/Bierman02WebRegistrarImpl.java @@ -7,6 +7,7 @@ */ package org.opendaylight.netconf.sal.restconf.web; +import java.util.concurrent.atomic.AtomicBoolean; import javax.servlet.ServletException; import javax.ws.rs.core.Application; import org.opendaylight.aaa.filterchain.configuration.CustomFilterAdapterConfiguration; @@ -19,6 +20,8 @@ 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.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Implementation of Bierman02WebRegistrar. @@ -26,13 +29,15 @@ import org.opendaylight.aaa.web.servlet.ServletSupport; * @author Thomas Pantelis */ public class Bierman02WebRegistrarImpl implements Bierman02WebRegistrar { + private static final Logger LOG = LoggerFactory.getLogger(Bierman02WebRegistrarImpl.class); - private WebContextRegistration registraton; private final WebServer webServer; private final WebContextSecurer webContextSecurer; private final ServletSupport servletSupport; private final Application webApp; private final CustomFilterAdapterConfiguration customFilterAdapterConfig; + private volatile WebContextRegistration registraton; + private final AtomicBoolean registered = new AtomicBoolean(false); public Bierman02WebRegistrarImpl(WebServer webServer, WebContextSecurer webContextSecurer, ServletSupport servletSupport, Application webApp, @@ -45,8 +50,10 @@ public class Bierman02WebRegistrarImpl implements Bierman02WebRegistrar { } public void close() { - if (registraton != null) { - registraton.close(); + if (registered.compareAndSet(true, false)) { + if (registraton != null) { + registraton.close(); + } } } @@ -61,6 +68,11 @@ public class Bierman02WebRegistrarImpl implements Bierman02WebRegistrar { } private void register(boolean authenticate) { + if (!registered.compareAndSet(false, true)) { + LOG.warn("Web context has already been registered", new Exception("call site")); + return; + } + WebContextBuilder webContextBuilder = WebContext.builder().contextPath("restconf").supportsSessions(true) .addServlet(ServletDetails.builder().servlet(servletSupport.createHttpServletBuilder(webApp).build()) .addUrlPattern("/*").build())