1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.client;
20
21 import java.util.ArrayList;
22 import java.util.List;
23
24 import org.eclipse.jetty.client.api.Request;
25 import org.eclipse.jetty.client.api.Response;
26 import org.eclipse.jetty.http.HttpFields;
27 import org.eclipse.jetty.http.HttpVersion;
28
29 public class HttpResponse implements Response
30 {
31 private final HttpFields headers = new HttpFields();
32 private final Request request;
33 private final List<ResponseListener> listeners;
34 private HttpVersion version;
35 private int status;
36 private String reason;
37
38 public HttpResponse(Request request, List<ResponseListener> listeners)
39 {
40 this.request = request;
41 this.listeners = listeners;
42 }
43
44 @Override
45 public Request getRequest()
46 {
47 return request;
48 }
49
50 public HttpVersion getVersion()
51 {
52 return version;
53 }
54
55 public HttpResponse version(HttpVersion version)
56 {
57 this.version = version;
58 return this;
59 }
60
61 @Override
62 public int getStatus()
63 {
64 return status;
65 }
66
67 public HttpResponse status(int status)
68 {
69 this.status = status;
70 return this;
71 }
72
73 public String getReason()
74 {
75 return reason;
76 }
77
78 public HttpResponse reason(String reason)
79 {
80 this.reason = reason;
81 return this;
82 }
83
84 @Override
85 public HttpFields getHeaders()
86 {
87 return headers;
88 }
89
90 @Override
91 @Deprecated
92 public long getConversationID()
93 {
94 return request.getConversationID();
95 }
96
97 @Override
98 public <T extends ResponseListener> List<T> getListeners(Class<T> type)
99 {
100 ArrayList<T> result = new ArrayList<>();
101 for (ResponseListener listener : listeners)
102 if (type == null || type.isInstance(listener))
103 result.add((T)listener);
104 return result;
105 }
106
107 @Override
108 public boolean abort(Throwable cause)
109 {
110 return request.abort(cause);
111 }
112
113 @Override
114 public String toString()
115 {
116 return String.format("%s[%s %d %s]@%x", HttpResponse.class.getSimpleName(), getVersion(), getStatus(), getReason(), hashCode());
117 }
118 }