]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpContext.java
Improve UI timeout
[lgpl/argeo-commons.git] / org.argeo.cms.lib.jetty / src / org / argeo / cms / jetty / JettyHttpContext.java
1 package org.argeo.cms.jetty;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.Objects;
6
7 import org.argeo.cms.websocket.server.WebsocketEndpoints;
8 import org.eclipse.jetty.ee8.servlet.ServletContextHandler;
9
10 import com.sun.net.httpserver.Authenticator;
11 import com.sun.net.httpserver.Filter;
12 import com.sun.net.httpserver.HttpContext;
13 import com.sun.net.httpserver.HttpHandler;
14 import com.sun.net.httpserver.HttpServer;
15
16 /**
17 * An @{HttpContext} implementation based on Jetty. It supports web sockets if
18 * the handler implements {@link WebsocketEndpoints}.
19 */
20 abstract class JettyHttpContext extends HttpContext {
21 private final JettyHttpServer httpServer;
22 private final String path;
23 private final List<Filter> filters = new ArrayList<>();
24
25 private HttpHandler handler;
26 private Authenticator authenticator;
27
28 public JettyHttpContext(JettyHttpServer httpServer, String path) {
29 this.httpServer = httpServer;
30 if (!path.endsWith("/"))
31 throw new IllegalArgumentException("Path " + path + " should end with a /");
32 this.path = path;
33 }
34
35 protected abstract ServletContextHandler getServletContextHandler();
36
37 @Override
38 public HttpHandler getHandler() {
39 return handler;
40 }
41
42 @Override
43 public void setHandler(HttpHandler handler) {
44 if (this.handler != null)
45 throw new IllegalArgumentException("Handler is already set");
46 Objects.requireNonNull(handler);
47 this.handler = handler;
48 }
49
50 @Override
51 public String getPath() {
52 return path;
53 }
54
55 @Override
56 public HttpServer getServer() {
57 return getJettyHttpServer();
58 }
59
60 protected JettyHttpServer getJettyHttpServer() {
61 return httpServer;
62 }
63
64 @Override
65 public List<Filter> getFilters() {
66 return filters;
67 }
68
69 @Override
70 public Authenticator setAuthenticator(Authenticator auth) {
71 Authenticator previousAuthenticator = authenticator;
72 this.authenticator = auth;
73 return previousAuthenticator;
74 }
75
76 @Override
77 public Authenticator getAuthenticator() {
78 return authenticator;
79 }
80
81 }