1818import java .io .InputStreamReader ;
1919import java .io .Reader ;
2020import java .nio .Buffer ;
21+ import java .nio .ByteBuffer ;
2122import java .nio .CharBuffer ;
2223import java .nio .charset .Charset ;
2324import java .util .Collection ;
2425import java .util .Map ;
26+ import java .util .Optional ;
2527import java .util .regex .Matcher ;
2628import java .util .regex .Pattern ;
2729import static feign .Util .UTF_8 ;
@@ -37,7 +39,7 @@ public class FeignException extends RuntimeException {
3739 "request should not be null" ;
3840 private static final long serialVersionUID = 0 ;
3941 private int status ;
40- private byte [] content ;
42+ private byte [] responseBody ;
4143 private Request request ;
4244
4345 protected FeignException (int status , String message , Throwable cause ) {
@@ -46,10 +48,10 @@ protected FeignException(int status, String message, Throwable cause) {
4648 this .request = null ;
4749 }
4850
49- protected FeignException (int status , String message , Throwable cause , byte [] content ) {
51+ protected FeignException (int status , String message , Throwable cause , byte [] responseBody ) {
5052 super (message , cause );
5153 this .status = status ;
52- this .content = content ;
54+ this .responseBody = responseBody ;
5355 this .request = null ;
5456 }
5557
@@ -59,10 +61,10 @@ protected FeignException(int status, String message) {
5961 this .request = null ;
6062 }
6163
62- protected FeignException (int status , String message , byte [] content ) {
64+ protected FeignException (int status , String message , byte [] responseBody ) {
6365 super (message );
6466 this .status = status ;
65- this .content = content ;
67+ this .responseBody = responseBody ;
6668 this .request = null ;
6769 }
6870
@@ -73,10 +75,10 @@ protected FeignException(int status, String message, Request request, Throwable
7375 }
7476
7577 protected FeignException (int status , String message , Request request , Throwable cause ,
76- byte [] content ) {
78+ byte [] responseBody ) {
7779 super (message , cause );
7880 this .status = status ;
79- this .content = content ;
81+ this .responseBody = responseBody ;
8082 this .request = checkRequestNotNull (request );
8183 }
8284
@@ -86,10 +88,10 @@ protected FeignException(int status, String message, Request request) {
8688 this .request = checkRequestNotNull (request );
8789 }
8890
89- protected FeignException (int status , String message , Request request , byte [] content ) {
91+ protected FeignException (int status , String message , Request request , byte [] responseBody ) {
9092 super (message );
9193 this .status = status ;
92- this .content = content ;
94+ this .responseBody = responseBody ;
9395 this .request = checkRequestNotNull (request );
9496 }
9597
@@ -101,8 +103,27 @@ public int status() {
101103 return this .status ;
102104 }
103105
106+ /**
107+ * The Response Body, if present.
108+ *
109+ * @return the body of the response.
110+ * @deprecated use {@link #responseBody()} instead.
111+ */
112+ @ Deprecated
104113 public byte [] content () {
105- return this .content ;
114+ return this .responseBody ;
115+ }
116+
117+ /**
118+ * The Response body.
119+ *
120+ * @return an Optional wrapping the response body.
121+ */
122+ public Optional <ByteBuffer > responseBody () {
123+ if (this .responseBody == null ) {
124+ return Optional .empty ();
125+ }
126+ return Optional .of (ByteBuffer .wrap (this .responseBody ));
106127 }
107128
108129 public Request request () {
@@ -114,8 +135,8 @@ public boolean hasRequest() {
114135 }
115136
116137 public String contentUTF8 () {
117- if (content != null ) {
118- return new String (content , UTF_8 );
138+ if (responseBody != null ) {
139+ return new String (responseBody , UTF_8 );
119140 } else {
120141 return "" ;
121142 }
0 commit comments