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.io.IOException;
31 import java.io.InputStream;
32 import java.io.OutputStream;
33
34 import org.apache.http.annotation.NotThreadSafe;
35 import org.apache.http.entity.HttpEntityWrapper;
36
37 import org.apache.http.Header;
38 import org.apache.http.HttpEntity;
39 import org.apache.http.HttpEntityEnclosingRequest;
40 import org.apache.http.ProtocolException;
41 import org.apache.http.protocol.HTTP;
42
43
44
45
46
47
48
49
50
51
52
53
54 @NotThreadSafe
55 public class EntityEnclosingRequestWrapper extends RequestWrapper
56 implements HttpEntityEnclosingRequest {
57
58 private HttpEntity entity;
59 private boolean consumed;
60
61 public EntityEnclosingRequestWrapper(final HttpEntityEnclosingRequest request)
62 throws ProtocolException {
63 super(request);
64 setEntity(request.getEntity());
65 }
66
67 public HttpEntity getEntity() {
68 return this.entity;
69 }
70
71 public void setEntity(final HttpEntity entity) {
72 this.entity = entity != null ? new EntityWrapper(entity) : null;
73 this.consumed = false;
74 }
75
76 public boolean expectContinue() {
77 Header expect = getFirstHeader(HTTP.EXPECT_DIRECTIVE);
78 return expect != null && HTTP.EXPECT_CONTINUE.equalsIgnoreCase(expect.getValue());
79 }
80
81 @Override
82 public boolean isRepeatable() {
83 return this.entity == null || this.entity.isRepeatable() || !this.consumed;
84 }
85
86 class EntityWrapper extends HttpEntityWrapper {
87
88 EntityWrapper(final HttpEntity entity) {
89 super(entity);
90 }
91
92 @SuppressWarnings("deprecation")
93 @Override
94 public void consumeContent() throws IOException {
95 consumed = true;
96 super.consumeContent();
97 }
98
99 @Override
100 public InputStream getContent() throws IOException {
101 consumed = true;
102 return super.getContent();
103 }
104
105 @Override
106 public void writeTo(final OutputStream outstream) throws IOException {
107 consumed = true;
108 super.writeTo(outstream);
109 }
110
111 }
112
113 }