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.http.impl.client;
29
30 import java.net.URI;
31 import java.net.URISyntaxException;
32
33 import org.apache.http.annotation.NotThreadSafe;
34
35 import org.apache.http.HttpRequest;
36 import org.apache.http.ProtocolException;
37 import org.apache.http.ProtocolVersion;
38 import org.apache.http.RequestLine;
39 import org.apache.http.client.methods.HttpUriRequest;
40 import org.apache.http.message.AbstractHttpMessage;
41 import org.apache.http.message.BasicRequestLine;
42 import org.apache.http.params.HttpProtocolParams;
43
44
45
46
47
48
49
50
51
52
53
54
55 @NotThreadSafe
56 public class RequestWrapper extends AbstractHttpMessage implements HttpUriRequest {
57
58 private final HttpRequest original;
59
60 private URI uri;
61 private String method;
62 private ProtocolVersion version;
63 private int execCount;
64
65 public RequestWrapper(final HttpRequest request) throws ProtocolException {
66 super();
67 if (request == null) {
68 throw new IllegalArgumentException("HTTP request may not be null");
69 }
70 this.original = request;
71 setParams(request.getParams());
72 setHeaders(request.getAllHeaders());
73
74 if (request instanceof HttpUriRequest) {
75 this.uri = ((HttpUriRequest) request).getURI();
76 this.method = ((HttpUriRequest) request).getMethod();
77 this.version = null;
78 } else {
79 RequestLine requestLine = request.getRequestLine();
80 try {
81 this.uri = new URI(requestLine.getUri());
82 } catch (URISyntaxException ex) {
83 throw new ProtocolException("Invalid request URI: "
84 + requestLine.getUri(), ex);
85 }
86 this.method = requestLine.getMethod();
87 this.version = request.getProtocolVersion();
88 }
89 this.execCount = 0;
90 }
91
92 public void resetHeaders() {
93
94 this.headergroup.clear();
95 setHeaders(this.original.getAllHeaders());
96 }
97
98 public String getMethod() {
99 return this.method;
100 }
101
102 public void setMethod(final String method) {
103 if (method == null) {
104 throw new IllegalArgumentException("Method name may not be null");
105 }
106 this.method = method;
107 }
108
109 public ProtocolVersion getProtocolVersion() {
110 if (this.version == null) {
111 this.version = HttpProtocolParams.getVersion(getParams());
112 }
113 return this.version;
114 }
115
116 public void setProtocolVersion(final ProtocolVersion version) {
117 this.version = version;
118 }
119
120
121 public URI getURI() {
122 return this.uri;
123 }
124
125 public void setURI(final URI uri) {
126 this.uri = uri;
127 }
128
129 public RequestLine getRequestLine() {
130 String method = getMethod();
131 ProtocolVersion ver = getProtocolVersion();
132 String uritext = null;
133 if (uri != null) {
134 uritext = uri.toASCIIString();
135 }
136 if (uritext == null || uritext.length() == 0) {
137 uritext = "/";
138 }
139 return new BasicRequestLine(method, uritext, ver);
140 }
141
142 public void abort() throws UnsupportedOperationException {
143 throw new UnsupportedOperationException();
144 }
145
146 public boolean isAborted() {
147 return false;
148 }
149
150 public HttpRequest getOriginal() {
151 return this.original;
152 }
153
154 public boolean isRepeatable() {
155 return true;
156 }
157
158 public int getExecCount() {
159 return this.execCount;
160 }
161
162 public void incrementExecCount() {
163 this.execCount++;
164 }
165
166 }