@@ -41,18 +41,18 @@ public SkyflowException(int httpCode, Throwable cause, Map<String, List<String>>
4141 super (cause );
4242 this .httpCode = httpCode ;
4343 setRequestId (responseHeaders );
44- setResponseBody (responseBody );
44+ setResponseBody (responseBody , responseHeaders );
4545 }
4646
47- private void setResponseBody (String responseBody ) {
47+ private void setResponseBody (String responseBody , Map < String , List < String >> responseHeaders ) {
4848 try {
4949 if (responseBody != null ) {
5050 this .responseBody = JsonParser .parseString (responseBody ).getAsJsonObject ();
5151 if (this .responseBody .get ("error" ) != null ) {
5252 setGrpcCode ();
5353 setHttpStatus ();
5454 setMessage ();
55- setDetails ();
55+ setDetails (responseHeaders );
5656 }
5757 }
5858 } catch (JsonSyntaxException e ) {
@@ -86,9 +86,19 @@ private void setHttpStatus() {
8686 this .httpStatus = statusElement == null ? null : statusElement .getAsString ();
8787 }
8888
89- private void setDetails () {
89+ private void setDetails (Map < String , List < String >> responseHeaders ) {
9090 JsonElement detailsElement = ((JsonObject ) responseBody .get ("error" )).get ("details" );
91- this .details = detailsElement == null ? null : detailsElement .getAsJsonArray ();
91+ List <String > errorFromClientHeader = responseHeaders .get ("error-from-client" );
92+ if (detailsElement != null ) {
93+ this .details = detailsElement .getAsJsonArray ();
94+ }
95+ if (errorFromClientHeader != null ) {
96+ this .details = this .details == null ? new JsonArray () : this .details ;
97+ String errorFromClient = errorFromClientHeader .get (0 );
98+ JsonObject detailObject = new JsonObject ();
99+ detailObject .addProperty ("errorFromClient" , errorFromClient );
100+ this .details .add (detailObject );
101+ }
92102 }
93103
94104 public int getHttpCode () {
0 commit comments