1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.websocket.jsr356;
20
21 import java.net.HttpCookie;
22 import java.util.List;
23 import java.util.Map;
24 import javax.websocket.ClientEndpointConfig.Configurator;
25
26 import org.eclipse.jetty.websocket.api.UpgradeRequest;
27 import org.eclipse.jetty.websocket.api.UpgradeResponse;
28 import org.eclipse.jetty.websocket.client.io.UpgradeListener;
29
30 public class JsrUpgradeListener implements UpgradeListener
31 {
32 private Configurator configurator;
33
34 public JsrUpgradeListener(Configurator configurator)
35 {
36 this.configurator = configurator;
37 }
38
39 @Override
40 public void onHandshakeRequest(UpgradeRequest request)
41 {
42 if (configurator == null)
43 {
44 return;
45 }
46
47 Map<String, List<String>> headers = request.getHeaders();
48 configurator.beforeRequest(headers);
49
50
51 for (String name : headers.keySet())
52 {
53 if ("cookie".equalsIgnoreCase(name))
54 {
55 List<String> values = headers.get(name);
56 if (values != null)
57 {
58 for (String cookie : values)
59 {
60 List<HttpCookie> cookies = HttpCookie.parse(cookie);
61 request.getCookies().addAll(cookies);
62 }
63 }
64 }
65 }
66 }
67
68 @Override
69 public void onHandshakeResponse(UpgradeResponse response)
70 {
71 if (configurator == null)
72 {
73 return;
74 }
75
76 JsrHandshakeResponse hr = new JsrHandshakeResponse(response);
77 configurator.afterResponse(hr);
78 }
79 }