]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ee/src/org/argeo/cms/websocket/server/WebSocketHandshakeRequest.java
Add content type to package servlet
[lgpl/argeo-commons.git] / org.argeo.cms.ee / src / org / argeo / cms / websocket / server / WebSocketHandshakeRequest.java
1 package org.argeo.cms.websocket.server;
2
3 import java.util.HashMap;
4 import java.util.List;
5 import java.util.Locale;
6 import java.util.Map;
7 import java.util.Objects;
8
9 import javax.servlet.http.HttpSession;
10 import javax.websocket.server.HandshakeRequest;
11
12 import org.argeo.cms.auth.RemoteAuthRequest;
13 import org.argeo.cms.auth.RemoteAuthSession;
14 import org.argeo.cms.servlet.ServletHttpSession;
15
16 public class WebSocketHandshakeRequest implements RemoteAuthRequest {
17 private final HandshakeRequest handshakeRequest;
18 private final HttpSession httpSession;
19
20 private Map<String, Object> attributes = new HashMap<>();
21
22 public WebSocketHandshakeRequest(HandshakeRequest handshakeRequest) {
23 Objects.requireNonNull(handshakeRequest);
24 this.handshakeRequest = handshakeRequest;
25 this.httpSession = (HttpSession) handshakeRequest.getHttpSession();
26 // Objects.requireNonNull(this.httpSession);
27 }
28
29 @Override
30 public RemoteAuthSession getSession() {
31 if (httpSession == null)
32 return null;
33 return new ServletHttpSession(httpSession);
34 }
35
36 @Override
37 public RemoteAuthSession createSession() {
38 throw new UnsupportedOperationException();
39 }
40
41 @Override
42 public Locale getLocale() {
43 // TODO check Accept-Language header
44 return Locale.getDefault();
45 }
46
47 @Override
48 public Object getAttribute(String key) {
49 return attributes.get(key);
50 }
51
52 @Override
53 public void setAttribute(String key, Object object) {
54 attributes.put(key, object);
55 }
56
57 @Override
58 public String getHeader(String key) {
59 List<String> values = handshakeRequest.getHeaders().get(key);
60 if (values.size() == 0)
61 return null;
62 if (values.size() > 1)
63 throw new IllegalStateException("More that one value for " + key + ": " + values);
64 return values.get(0);
65 }
66
67 @Override
68 public String getRemoteAddr() {
69 throw new UnsupportedOperationException();
70 }
71
72 @Override
73 public int getLocalPort() {
74 throw new UnsupportedOperationException();
75 }
76
77 @Override
78 public int getRemotePort() {
79 throw new UnsupportedOperationException();
80 }
81
82 }