1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.core5.http.protocol;
29
30 import javax.net.ssl.SSLSession;
31
32 import org.apache.hc.core5.http.EndpointDetails;
33 import org.apache.hc.core5.http.HttpRequest;
34 import org.apache.hc.core5.http.HttpResponse;
35 import org.apache.hc.core5.http.ProtocolVersion;
36 import org.apache.hc.core5.util.Args;
37
38
39
40
41
42
43
44 public class HttpCoreContext implements HttpContext {
45
46
47
48
49
50 public static final String CONNECTION_ENDPOINT = HttpContext.RESERVED_PREFIX + "connection-endpoint";
51
52
53
54
55
56 public static final String SSL_SESSION = HttpContext.RESERVED_PREFIX + "ssl-session";
57
58
59
60
61
62 public static final String HTTP_REQUEST = HttpContext.RESERVED_PREFIX + "request";
63
64
65
66
67
68 public static final String HTTP_RESPONSE = HttpContext.RESERVED_PREFIX + "response";
69
70 public static HttpCoreContext create() {
71 return new HttpCoreContext();
72 }
73
74 public static HttpCoreContext adapt(final HttpContext context) {
75 if (context == null) {
76 return new HttpCoreContext();
77 }
78 if (context instanceof HttpCoreContext) {
79 return (HttpCoreContext) context;
80 }
81 return new HttpCoreContext(context);
82 }
83
84 private final HttpContext context;
85
86 public HttpCoreContext(final HttpContext context) {
87 super();
88 this.context = context;
89 }
90
91 public HttpCoreContext() {
92 super();
93 this.context = new BasicHttpContext();
94 }
95
96
97
98
99 @Override
100 public ProtocolVersion getProtocolVersion() {
101 return this.context.getProtocolVersion();
102 }
103
104
105
106
107 @Override
108 public void setProtocolVersion(final ProtocolVersion version) {
109 this.context.setProtocolVersion(version);
110 }
111
112 @Override
113 public Object getAttribute(final String id) {
114 return context.getAttribute(id);
115 }
116
117 @Override
118 public Object setAttribute(final String id, final Object obj) {
119 return context.setAttribute(id, obj);
120 }
121
122 @Override
123 public Object removeAttribute(final String id) {
124 return context.removeAttribute(id);
125 }
126
127 public <T> T getAttribute(final String attribname, final Class<T> clazz) {
128 Args.notNull(clazz, "Attribute class");
129 final Object obj = getAttribute(attribname);
130 if (obj == null) {
131 return null;
132 }
133 return clazz.cast(obj);
134 }
135
136
137
138
139 public SSLSession getSSLSession() {
140 return getAttribute(SSL_SESSION, SSLSession.class);
141 }
142
143
144
145
146 public EndpointDetails getEndpointDetails() {
147 return getAttribute(CONNECTION_ENDPOINT, EndpointDetails.class);
148 }
149
150 public HttpRequest getRequest() {
151 return getAttribute(HTTP_REQUEST, HttpRequest.class);
152 }
153
154 public HttpResponse getResponse() {
155 return getAttribute(HTTP_RESPONSE, HttpResponse.class);
156 }
157
158 }