Skip to content

Commit e892e7c

Browse files
committed
impl changes
1 parent 9f359d6 commit e892e7c

File tree

5 files changed

+1333
-811
lines changed

5 files changed

+1333
-811
lines changed

sdk/clientcore/annotation-processor-test/src/main/java/io/clientcore/annotation/processor/test/ParameterizedHostServiceImpl.java

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,21 @@
22
// Licensed under the MIT License.
33
package io.clientcore.annotation.processor.test;
44

5+
import io.clientcore.annotation.processor.test.implementation.ParameterizedHostService;
56
import io.clientcore.core.http.models.HttpHeaderName;
67
import io.clientcore.core.http.models.HttpMethod;
78
import io.clientcore.core.http.models.HttpRequest;
9+
import io.clientcore.core.http.models.HttpResponseException;
810
import io.clientcore.core.http.models.Response;
911
import io.clientcore.core.http.pipeline.HttpPipeline;
10-
import io.clientcore.core.implementation.utils.UriEscapers;
11-
import io.clientcore.core.models.binarydata.BinaryData;
12-
import io.clientcore.annotation.processor.test.implementation.ParameterizedHostService;
1312
import io.clientcore.core.instrumentation.logging.ClientLogger;
13+
import io.clientcore.core.models.binarydata.BinaryData;
1414
import io.clientcore.core.serialization.json.JsonSerializer;
1515
import io.clientcore.core.serialization.xml.XmlSerializer;
16-
import io.clientcore.core.http.models.HttpResponseException;
16+
import io.clientcore.core.utils.CoreUtils;
17+
import java.io.IOException;
18+
import java.lang.reflect.ParameterizedType;
19+
import java.nio.charset.StandardCharsets;
1720

1821
/**
1922
* Initializes a new instance of the ParameterizedHostServiceImpl type.
@@ -59,6 +62,32 @@ public byte[] getByteArray(String scheme, String host, int numberOfBytes) {
5962
}
6063
BinaryData responseBody = networkResponse.getValue();
6164
return responseBody != null ? responseBody.toBytes() : null;
65+
if (!expectedResponse) {
66+
if (networkResponse.getValue() == null || networkResponse.getValue().toBytes().length == 0) {
67+
throw instantiateUnexpectedException(responseCode, networkResponse, null, null);
68+
} else {
69+
ParameterizedType returnType = null;
70+
throw instantiateUnexpectedException(responseCode, networkResponse, networkResponse.getValue(),
71+
CoreUtils.decodeNetworkResponse(networkResponse.getValue(), jsonSerializer, returnType));
72+
}
73+
}
74+
}
75+
}
76+
77+
private static HttpResponseException instantiateUnexpectedException(int responseCode, Response<BinaryData> response, BinaryData data, Object decodedValue) {
78+
StringBuilder exceptionMessage = new StringBuilder("Status code ").append(responseCode).append(", ");
79+
String contentType = response.getHeaders().getValue(HttpHeaderName.CONTENT_TYPE);
80+
if ("application/octet-stream".equalsIgnoreCase(contentType)) {
81+
String contentLength = response.getHeaders().getValue(HttpHeaderName.CONTENT_LENGTH);
82+
exceptionMessage.append("(").append(contentLength).append("-byte body)");
83+
} else if (data == null || data.toBytes().length == 0) {
84+
exceptionMessage.append("(empty body)");
85+
} else {
86+
exceptionMessage.append('"').append(new String(data.toBytes(), StandardCharsets.UTF_8)).append('"');
87+
}
88+
if (decodedValue instanceof IOException || decodedValue instanceof IllegalStateException) {
89+
return new HttpResponseException(exceptionMessage.toString(), response, (Throwable) decodedValue);
6290
}
91+
return new HttpResponseException(exceptionMessage.toString(), response, decodedValue);
6392
}
6493
}

sdk/clientcore/annotation-processor-test/src/main/java/io/clientcore/annotation/processor/test/ParameterizedMultipleHostServiceImpl.java

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,17 @@
88
import io.clientcore.core.http.models.HttpRequest;
99
import io.clientcore.core.http.models.Response;
1010
import io.clientcore.core.http.pipeline.HttpPipeline;
11-
import io.clientcore.core.implementation.utils.UriEscapers;
1211
import io.clientcore.core.models.binarydata.BinaryData;
1312
import io.clientcore.annotation.processor.test.implementation.ParameterizedMultipleHostService;
1413
import io.clientcore.core.instrumentation.logging.ClientLogger;
1514
import io.clientcore.core.serialization.json.JsonSerializer;
1615
import io.clientcore.core.serialization.xml.XmlSerializer;
17-
import io.clientcore.core.http.models.HttpResponseException;
1816
import io.clientcore.core.utils.CoreUtils;
1917
import java.lang.reflect.ParameterizedType;
2018
import io.clientcore.core.serialization.SerializationFormat;
19+
import java.io.IOException;
20+
import io.clientcore.core.http.models.HttpResponseException;
21+
import java.nio.charset.StandardCharsets;
2122

2223
/**
2324
* Initializes a new instance of the ParameterizedMultipleHostServiceImpl type.
@@ -47,31 +48,52 @@ public static ParameterizedMultipleHostService getNewInstance(HttpPipeline httpP
4748
return new ParameterizedMultipleHostServiceImpl(httpPipeline);
4849
}
4950

50-
@SuppressWarnings("cast")
51+
@SuppressWarnings({ "unchecked", "cast" })
5152
@Override
5253
public HttpBinJSON get(String scheme, String hostPart1, String hostPart2) {
53-
String uri = scheme + "://" + hostPart1 + hostPart2 + "/get";
54+
String url = scheme + "://" + hostPart1 + hostPart2 + "/get";
5455
// Create the HTTP request
55-
HttpRequest httpRequest = new HttpRequest().setMethod(HttpMethod.GET).setUri(uri);
56+
HttpRequest httpRequest = new HttpRequest().setMethod(HttpMethod.GET).setUri(url);
5657
// Send the request through the httpPipeline
5758
Response<BinaryData> networkResponse = this.httpPipeline.send(httpRequest);
5859
int responseCode = networkResponse.getStatusCode();
5960
boolean expectedResponse = responseCode == 200;
6061
if (!expectedResponse) {
61-
String errorMessage = networkResponse.getValue().toString();
62-
networkResponse.close();
63-
throw new HttpResponseException(errorMessage, networkResponse, null);
62+
if (networkResponse.getValue() == null || networkResponse.getValue().toBytes().length == 0) {
63+
throw instantiateUnexpectedException(responseCode, networkResponse, null, null);
64+
} else {
65+
ParameterizedType returnType = CoreUtils.createParameterizedType(io.clientcore.annotation.processor.test.implementation.models.HttpBinJSON.class);
66+
throw instantiateUnexpectedException(responseCode, networkResponse, networkResponse.getValue(), CoreUtils.decodeNetworkResponse(networkResponse.getValue(), jsonSerializer, returnType));
67+
}
6468
}
65-
HttpBinJSON deserializedResult;
66-
ParameterizedType returnType = CoreUtils.createParameterizedType(HttpBinJSON.class);
69+
Object result = null;
70+
ParameterizedType returnType = CoreUtils.createParameterizedType(io.clientcore.annotation.processor.test.implementation.models.HttpBinJSON.class);
6771
SerializationFormat serializationFormat = CoreUtils.serializationFormatFromContentType(httpRequest.getHeaders());
6872
if (jsonSerializer.supportsFormat(serializationFormat)) {
69-
deserializedResult = CoreUtils.decodeNetworkResponse(networkResponse.getValue(), jsonSerializer, returnType);
73+
result = CoreUtils.decodeNetworkResponse(networkResponse.getValue(), jsonSerializer, returnType);
7074
} else if (xmlSerializer.supportsFormat(serializationFormat)) {
71-
deserializedResult = CoreUtils.decodeNetworkResponse(networkResponse.getValue(), xmlSerializer, returnType);
75+
result = CoreUtils.decodeNetworkResponse(networkResponse.getValue(), xmlSerializer, returnType);
7276
} else {
7377
throw new RuntimeException(new UnsupportedOperationException("None of the provided serializers support the format: " + serializationFormat + "."));
7478
}
75-
return deserializedResult;
79+
networkResponse.close();
80+
return (io.clientcore.annotation.processor.test.implementation.models.HttpBinJSON) result;
81+
}
82+
83+
private static HttpResponseException instantiateUnexpectedException(int responseCode, Response<BinaryData> response, BinaryData data, Object decodedValue) {
84+
StringBuilder exceptionMessage = new StringBuilder("Status code ").append(responseCode).append(", ");
85+
String contentType = response.getHeaders().getValue(HttpHeaderName.CONTENT_TYPE);
86+
if ("application/octet-stream".equalsIgnoreCase(contentType)) {
87+
String contentLength = response.getHeaders().getValue(HttpHeaderName.CONTENT_LENGTH);
88+
exceptionMessage.append("(").append(contentLength).append("-byte body)");
89+
} else if (data == null || data.toBytes().length == 0) {
90+
exceptionMessage.append("(empty body)");
91+
} else {
92+
exceptionMessage.append('"').append(new String(data.toBytes(), StandardCharsets.UTF_8)).append('"');
93+
}
94+
if (decodedValue instanceof IOException || decodedValue instanceof IllegalStateException) {
95+
return new HttpResponseException(exceptionMessage.toString(), response, (Throwable) decodedValue);
96+
}
97+
return new HttpResponseException(exceptionMessage.toString(), response, decodedValue);
7698
}
7799
}

0 commit comments

Comments
 (0)