1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.transport.http;
20
21 import java.io.Closeable;
22
23 import org.apache.http.client.protocol.HttpClientContext;
24 import org.apache.http.protocol.BasicHttpContext;
25
26
27
28
29
30
31
32 final class SharingHttpContext extends BasicHttpContext implements Closeable {
33
34 private final LocalState state;
35
36 private final SharingAuthCache authCache;
37
38 SharingHttpContext(LocalState state) {
39 this.state = state;
40 authCache = new SharingAuthCache(state);
41 super.setAttribute(HttpClientContext.AUTH_CACHE, authCache);
42 }
43
44 @Override
45 public Object getAttribute(String id) {
46 if (HttpClientContext.USER_TOKEN.equals(id)) {
47 return state.getUserToken();
48 }
49 return super.getAttribute(id);
50 }
51
52 @Override
53 public void setAttribute(String id, Object obj) {
54 if (HttpClientContext.USER_TOKEN.equals(id)) {
55 state.setUserToken(obj);
56 } else {
57 super.setAttribute(id, obj);
58 }
59 }
60
61 @Override
62 public Object removeAttribute(String id) {
63 if (HttpClientContext.USER_TOKEN.equals(id)) {
64 state.setUserToken(null);
65 return null;
66 }
67 return super.removeAttribute(id);
68 }
69
70 @Override
71 public void close() {
72 authCache.clear();
73 }
74 }