1 package org
.argeo
.cms
.jetty
;
3 import java
.util
.ArrayList
;
5 import java
.util
.Objects
;
7 import javax
.servlet
.ServletContext
;
8 import javax
.websocket
.DeploymentException
;
9 import javax
.websocket
.server
.ServerContainer
;
11 import org
.argeo
.cms
.websocket
.server
.WebsocketEndpoints
;
12 import org
.eclipse
.jetty
.servlet
.ServletContextHandler
;
13 import org
.eclipse
.jetty
.websocket
.javax
.server
.config
.JavaxWebSocketServletContainerInitializer
;
14 import org
.eclipse
.jetty
.websocket
.javax
.server
.config
.JavaxWebSocketServletContainerInitializer
.Configurator
;
16 import com
.sun
.net
.httpserver
.Authenticator
;
17 import com
.sun
.net
.httpserver
.Filter
;
18 import com
.sun
.net
.httpserver
.HttpContext
;
19 import com
.sun
.net
.httpserver
.HttpHandler
;
20 import com
.sun
.net
.httpserver
.HttpServer
;
23 * An @{HttpContext} implementation based on Jetty. It supports web sockets if
24 * the handler implements {@link WebsocketEndpoints}.
26 abstract class JettyHttpContext
extends HttpContext
{
27 private final JettyHttpServer httpServer
;
28 private final String path
;
29 private final List
<Filter
> filters
= new ArrayList
<>();
31 private HttpHandler handler
;
32 private Authenticator authenticator
;
34 public JettyHttpContext(JettyHttpServer httpServer
, String path
) {
35 this.httpServer
= httpServer
;
36 if (!path
.endsWith("/"))
37 throw new IllegalArgumentException("Path " + path
+ " should end with a /");
41 protected abstract ServletContextHandler
getServletContextHandler();
44 public HttpHandler
getHandler() {
49 public void setHandler(HttpHandler handler
) {
50 if (this.handler
!= null)
51 throw new IllegalArgumentException("Handler is already set");
52 Objects
.requireNonNull(handler
);
53 this.handler
= handler
;
57 public String
getPath() {
62 public HttpServer
getServer() {
63 return getJettyHttpServer();
66 protected JettyHttpServer
getJettyHttpServer() {
71 public List
<Filter
> getFilters() {
76 public Authenticator
setAuthenticator(Authenticator auth
) {
77 Authenticator previousAuthenticator
= authenticator
;
78 this.authenticator
= auth
;
79 return previousAuthenticator
;
83 public Authenticator
getAuthenticator() {