From 5a35b994ccb5717c40ccceaee59fac3fc84f2cca Mon Sep 17 00:00:00 2001 From: alzimmermsft <48699787+alzimmermsft@users.noreply.github.com> Date: Wed, 19 Mar 2025 10:01:22 -0400 Subject: [PATCH 1/2] Remove Base64Uri --- sdk/clientcore/core/spotbugs-exclude.xml | 1 - .../http/rest/RestProxyImpl.java | 7 +- .../http/rest/SwaggerMethodParser.java | 9 +- .../serializer/HttpResponseBodyDecoder.java | 13 +- .../io/clientcore/core/utils/Base64Uri.java | 142 ------------------ .../http/rest/SwaggerMethodParserTests.java | 7 +- .../HttpResponseBodyDecoderTests.java | 44 +++--- .../clientcore/core/utils/Base64UriTests.java | 127 ---------------- 8 files changed, 33 insertions(+), 317 deletions(-) delete mode 100644 sdk/clientcore/core/src/main/java/io/clientcore/core/utils/Base64Uri.java delete mode 100644 sdk/clientcore/core/src/test/java/io/clientcore/core/utils/Base64UriTests.java diff --git a/sdk/clientcore/core/spotbugs-exclude.xml b/sdk/clientcore/core/spotbugs-exclude.xml index c76318656cd3..d71988099da4 100644 --- a/sdk/clientcore/core/spotbugs-exclude.xml +++ b/sdk/clientcore/core/spotbugs-exclude.xml @@ -296,7 +296,6 @@ - diff --git a/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/rest/RestProxyImpl.java b/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/rest/RestProxyImpl.java index 1c24eb5657a8..c002b984d1cf 100644 --- a/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/rest/RestProxyImpl.java +++ b/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/rest/RestProxyImpl.java @@ -22,7 +22,6 @@ import io.clientcore.core.models.binarydata.InputStreamBinaryData; import io.clientcore.core.serialization.ObjectSerializer; import io.clientcore.core.serialization.SerializationFormat; -import io.clientcore.core.utils.Base64Uri; import io.clientcore.core.utils.CoreUtils; import io.clientcore.core.utils.UriBuilder; @@ -377,9 +376,9 @@ private static Object handleResponseBody(Response response, SwaggerM } else if (TypeUtil.isTypeOrSubTypeOf(entityType, byte[].class)) { byte[] responseBodyBytes = responseBody != null ? responseBody.toBytes() : null; - if (returnValueWireType == Base64Uri.class) { - responseBodyBytes = new Base64Uri(responseBodyBytes).decodedBytes(); - } +// if (returnValueWireType == Base64Uri.class) { +// responseBodyBytes = new Base64Uri(responseBodyBytes).decodedBytes(); +// } result = responseBodyBytes != null ? (responseBodyBytes.length == 0 ? null : responseBodyBytes) : null; } else if (TypeUtil.isTypeOrSubTypeOf(entityType, InputStream.class)) { diff --git a/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/rest/SwaggerMethodParser.java b/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/rest/SwaggerMethodParser.java index 4aea4fce5ef3..0ff39401a680 100644 --- a/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/rest/SwaggerMethodParser.java +++ b/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/rest/SwaggerMethodParser.java @@ -12,7 +12,6 @@ import io.clientcore.core.http.annotations.PathParam; import io.clientcore.core.http.annotations.QueryParam; import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; -import io.clientcore.core.implementation.http.ContentType; import io.clientcore.core.http.models.HttpHeaderName; import io.clientcore.core.http.models.HttpHeaders; import io.clientcore.core.http.models.HttpMethod; @@ -21,16 +20,16 @@ import io.clientcore.core.http.models.ServerSentEventListener; import io.clientcore.core.implementation.AccessibleByteArrayOutputStream; import io.clientcore.core.implementation.TypeUtil; +import io.clientcore.core.implementation.http.ContentType; import io.clientcore.core.implementation.http.UnexpectedExceptionInformation; import io.clientcore.core.implementation.http.serializer.CompositeSerializer; import io.clientcore.core.implementation.http.serializer.HttpResponseDecodeData; import io.clientcore.core.instrumentation.logging.ClientLogger; -import io.clientcore.core.utils.Base64Uri; +import io.clientcore.core.models.binarydata.BinaryData; +import io.clientcore.core.serialization.SerializationFormat; import io.clientcore.core.utils.DateTimeRfc1123; import io.clientcore.core.utils.ExpandableEnum; import io.clientcore.core.utils.UriBuilder; -import io.clientcore.core.models.binarydata.BinaryData; -import io.clientcore.core.serialization.SerializationFormat; import java.io.IOException; import java.io.InputStream; @@ -195,7 +194,7 @@ public SwaggerMethodParser(Method swaggerMethod) { Class returnValueWireType = httpRequestInformation.returnValueWireType(); - if (returnValueWireType == Base64Uri.class || returnValueWireType == DateTimeRfc1123.class) { + if (returnValueWireType == DateTimeRfc1123.class) { this.returnValueWireType = returnValueWireType; } else if (TypeUtil.isTypeOrSubTypeOf(returnValueWireType, List.class)) { this.returnValueWireType = returnValueWireType.getGenericInterfaces()[0]; diff --git a/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/serializer/HttpResponseBodyDecoder.java b/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/serializer/HttpResponseBodyDecoder.java index a6a6fde948a8..568e360ed7eb 100644 --- a/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/serializer/HttpResponseBodyDecoder.java +++ b/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/serializer/HttpResponseBodyDecoder.java @@ -12,7 +12,6 @@ import io.clientcore.core.instrumentation.logging.ClientLogger; import io.clientcore.core.models.binarydata.BinaryData; import io.clientcore.core.serialization.SerializationFormat; -import io.clientcore.core.utils.Base64Uri; import io.clientcore.core.utils.DateTimeRfc1123; import java.io.IOException; @@ -178,11 +177,7 @@ private static Object deserialize(BinaryData value, Type type, SerializationForm private static Type constructWireResponseType(Type resultType, Type wireType) { Objects.requireNonNull(wireType); - if (resultType == byte[].class) { - if (wireType == Base64Uri.class) { - return Base64Uri.class; - } - } else if (resultType == OffsetDateTime.class) { + if (resultType == OffsetDateTime.class) { if (wireType == DateTimeRfc1123.class) { return DateTimeRfc1123.class; } @@ -214,11 +209,7 @@ private static Type constructWireResponseType(Type resultType, Type wireType) { * @return The converted object. */ private static Object convertToResultType(final Object wireResponse, final Type resultType, final Type wireType) { - if (resultType == byte[].class) { - if (wireType == Base64Uri.class) { - return (new Base64Uri(wireResponse.toString())).decodedBytes(); - } - } else if (resultType == OffsetDateTime.class) { + if (resultType == OffsetDateTime.class) { if (wireType == DateTimeRfc1123.class) { return new DateTimeRfc1123(wireResponse.toString()).getDateTime(); } else { diff --git a/sdk/clientcore/core/src/main/java/io/clientcore/core/utils/Base64Uri.java b/sdk/clientcore/core/src/main/java/io/clientcore/core/utils/Base64Uri.java deleted file mode 100644 index c95b6235eb03..000000000000 --- a/sdk/clientcore/core/src/main/java/io/clientcore/core/utils/Base64Uri.java +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package io.clientcore.core.utils; - -import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.Base64; - -import static io.clientcore.core.utils.CoreUtils.isNullOrEmpty; - -/** - * Encodes and decodes using Base64 URI encoding. - */ -public final class Base64Uri { - /** - * The Base64Uri encoded bytes. - */ - private final byte[] bytes; - - /** - * Creates a new Base64Uri object with the specified encoded string. - * - * @param string The encoded string. - */ - public Base64Uri(String string) { - if (string == null) { - this.bytes = null; - } else { - string = unquote(string); - this.bytes = string.getBytes(StandardCharsets.UTF_8); - } - } - - /** - * Creates a new Base64Uri object with the specified encoded bytes. - * - * @param bytes The encoded bytes. - */ - public Base64Uri(byte[] bytes) { - this.bytes = unquote(bytes); - } - - private static byte[] unquote(byte[] bytes) { - if (bytes != null && bytes.length > 1) { - byte firstByte = bytes[0]; - if (firstByte == '\"' || firstByte == '\'') { - byte lastByte = bytes[bytes.length - 1]; - if (lastByte == firstByte) { - return Arrays.copyOfRange(bytes, 1, bytes.length - 1); - } - } - } - return bytes; - } - - private static String unquote(String string) { - if (!isNullOrEmpty(string)) { - final char firstCharacter = string.charAt(0); - if (firstCharacter == '\"' || firstCharacter == '\'') { - final int base64UriStringLength = string.length(); - final char lastCharacter = string.charAt(base64UriStringLength - 1); - if (lastCharacter == firstCharacter) { - return string.substring(1, base64UriStringLength - 1); - } - } - } - return string; - } - - /** - * Encodes a byte array into Base64Uri encoded bytes. - * - * @param bytes The byte array to encode. - * @return A new Base64Uri instance. - */ - public static Base64Uri encode(byte[] bytes) { - if (bytes == null) { - return new Base64Uri((String) null); - } else { - return new Base64Uri(encodeURIWithoutPadding(bytes)); - } - } - - /** - * Encodes a byte array to base64 URI format. - * @param src the byte array to encode - * @return the base64 URI encoded bytes - */ - private static byte[] encodeURIWithoutPadding(byte[] src) { - return src == null ? null : Base64.getUrlEncoder().withoutPadding().encode(src); - } - - /** - * Returns the underlying encoded byte array. - * - * @return The underlying encoded byte array. - */ - public byte[] encodedBytes() { - if (bytes == null) { - return null; - } - - return CoreUtils.arrayCopy(bytes); - } - - /** - * Decode the bytes and returns its value. - * - * @return The decoded byte array. - */ - public byte[] decodedBytes() { - if (this.bytes == null) { - return null; - } - - return Base64.getUrlDecoder().decode(bytes); - } - - @Override - public String toString() { - return bytes == null ? "" : new String(bytes, StandardCharsets.UTF_8); - } - - @Override - public int hashCode() { - return Arrays.hashCode(bytes); - } - - @Override - public boolean equals(Object obj) { - if (obj == this) { - return true; - } - - if (!(obj instanceof Base64Uri)) { - return false; - } - - return Arrays.equals(this.bytes, ((Base64Uri) obj).encodedBytes()); - } -} diff --git a/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/http/rest/SwaggerMethodParserTests.java b/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/http/rest/SwaggerMethodParserTests.java index f3803673a6ac..a38d23272916 100644 --- a/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/http/rest/SwaggerMethodParserTests.java +++ b/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/http/rest/SwaggerMethodParserTests.java @@ -23,7 +23,6 @@ import io.clientcore.core.models.SimpleClass; import io.clientcore.core.models.binarydata.BinaryData; import io.clientcore.core.serialization.json.JsonSerializer; -import io.clientcore.core.utils.Base64Uri; import io.clientcore.core.utils.Context; import io.clientcore.core.utils.DateTimeRfc1123; import io.clientcore.core.utils.UriBuilder; @@ -130,8 +129,8 @@ interface WireTypesMethods { @HttpRequestInformation(method = HttpMethod.GET, path = "test") void noWireType(); - @HttpRequestInformation(method = HttpMethod.GET, path = "test", returnValueWireType = Base64Uri.class) - void base64Uri(); +// @HttpRequestInformation(method = HttpMethod.GET, path = "test", returnValueWireType = Base64Uri.class) +// void base64Uri(); @HttpRequestInformation(method = HttpMethod.GET, path = "test", returnValueWireType = DateTimeRfc1123.class) void dateTimeRfc1123(); @@ -152,7 +151,7 @@ private static Stream wireTypesSupplier() throws NoSuchMethodExceptio Class clazz = WireTypesMethods.class; return Stream.of(Arguments.of(clazz.getDeclaredMethod("noWireType"), null), - Arguments.of(clazz.getDeclaredMethod("base64Uri"), Base64Uri.class), +// Arguments.of(clazz.getDeclaredMethod("base64Uri"), Base64Uri.class), Arguments.of(clazz.getDeclaredMethod("dateTimeRfc1123"), DateTimeRfc1123.class), Arguments.of(clazz.getDeclaredMethod("unknownType"), null)); } diff --git a/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/serializer/HttpResponseBodyDecoderTests.java b/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/serializer/HttpResponseBodyDecoderTests.java index cd50f27738eb..00a548b53897 100644 --- a/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/serializer/HttpResponseBodyDecoderTests.java +++ b/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/serializer/HttpResponseBodyDecoderTests.java @@ -15,7 +15,6 @@ import io.clientcore.core.implementation.http.serializer.HttpResponseDecodeData; import io.clientcore.core.models.binarydata.BinaryData; import io.clientcore.core.serialization.json.JsonSerializer; -import io.clientcore.core.utils.Base64Uri; import io.clientcore.core.utils.CoreUtils; import io.clientcore.core.utils.DateTimeRfc1123; import org.junit.jupiter.api.Test; @@ -35,7 +34,6 @@ import java.util.Map; import java.util.stream.Stream; -import static io.clientcore.core.utils.TestUtils.assertArraysEqual; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; import static org.junit.jupiter.api.Assertions.assertNull; @@ -213,27 +211,27 @@ private static Stream decodableResponseSupplier() { Arguments.of(mapStringStringResponse, mapStringStringDecodeData, map)); } - @Test - public void decodeListBase64UriResponse() { - ParameterizedType parameterizedType = CoreUtils.createParameterizedType(List.class, byte[].class); - HttpResponseDecodeData decodeData - = new MockHttpResponseDecodeData(200, parameterizedType, Base64Uri.class, true); - - List base64Uris = Arrays.asList(new Base64Uri("base"), new Base64Uri("64")); - Response response - = new Response<>(GET_REQUEST, 200, new HttpHeaders(), BinaryData.fromObject(base64Uris)); - - Object actual = HttpResponseBodyDecoder.decodeByteArray(null, response, SERIALIZER, decodeData); - - assertInstanceOf(List.class, actual); - - @SuppressWarnings("unchecked") - List decoded = (List) actual; - - assertEquals(2, decoded.size()); - assertArraysEqual(base64Uris.get(0).decodedBytes(), decoded.get(0)); - assertArraysEqual(base64Uris.get(1).decodedBytes(), decoded.get(1)); - } +// @Test +// public void decodeListBase64UriResponse() { +// ParameterizedType parameterizedType = CoreUtils.createParameterizedType(List.class, byte[].class); +// HttpResponseDecodeData decodeData +// = new MockHttpResponseDecodeData(200, parameterizedType, Base64Uri.class, true); +// +// List base64Uris = Arrays.asList(new Base64Uri("base"), new Base64Uri("64")); +// Response response +// = new Response<>(GET_REQUEST, 200, new HttpHeaders(), BinaryData.fromObject(base64Uris)); +// +// Object actual = HttpResponseBodyDecoder.decodeByteArray(null, response, SERIALIZER, decodeData); +// +// assertInstanceOf(List.class, actual); +// +// @SuppressWarnings("unchecked") +// List decoded = (List) actual; +// +// assertEquals(2, decoded.size()); +// assertArraysEqual(base64Uris.get(0).decodedBytes(), decoded.get(0)); +// assertArraysEqual(base64Uris.get(1).decodedBytes(), decoded.get(1)); +// } @Test public void malformedBodyReturnsError() throws IOException { diff --git a/sdk/clientcore/core/src/test/java/io/clientcore/core/utils/Base64UriTests.java b/sdk/clientcore/core/src/test/java/io/clientcore/core/utils/Base64UriTests.java deleted file mode 100644 index a0df0415c78c..000000000000 --- a/sdk/clientcore/core/src/test/java/io/clientcore/core/utils/Base64UriTests.java +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package io.clientcore.core.utils; - -import org.junit.jupiter.api.Test; - -import static io.clientcore.core.utils.TestUtils.assertArraysEqual; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; - -public class Base64UriTests { - @Test - public void constructorWithNullBytes() { - final Base64Uri base64Uri = new Base64Uri((byte[]) null); - assertNull(base64Uri.encodedBytes()); - assertNull(base64Uri.decodedBytes()); - assertEmptyString(base64Uri.toString()); - } - - @Test - public void constructorWithEmptyBytes() { - final Base64Uri base64Uri = new Base64Uri(new byte[0]); - assertArraysEqual(new byte[0], base64Uri.encodedBytes()); - assertArraysEqual(new byte[0], base64Uri.decodedBytes()); - assertEquals("", base64Uri.toString()); - } - - @Test - public void constructorWithNonEmptyBytes() { - final Base64Uri base64Uri - = new Base64Uri(new byte[] { 65, 65, 69, 67, 65, 119, 81, 70, 66, 103, 99, 73, 67, 81 }); - assertArraysEqual(new byte[] { 65, 65, 69, 67, 65, 119, 81, 70, 66, 103, 99, 73, 67, 81 }, - base64Uri.encodedBytes()); - assertArraysEqual(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, base64Uri.decodedBytes()); - assertEquals("AAECAwQFBgcICQ", base64Uri.toString()); - } - - @Test - public void constructorWithNullString() { - final Base64Uri base64Uri = new Base64Uri((String) null); - assertNull(base64Uri.encodedBytes()); - assertNull(base64Uri.decodedBytes()); - assertEmptyString(base64Uri.toString()); - } - - @Test - public void constructorWithEmptyString() { - final Base64Uri base64Uri = new Base64Uri(""); - assertArraysEqual(new byte[0], base64Uri.encodedBytes()); - assertArraysEqual(new byte[0], base64Uri.decodedBytes()); - assertEquals("", base64Uri.toString()); - } - - @Test - public void constructorWithEmptyDoubleQuotedString() { - final Base64Uri base64Uri = new Base64Uri("\"\""); - assertArraysEqual(new byte[0], base64Uri.encodedBytes()); - assertArraysEqual(new byte[0], base64Uri.decodedBytes()); - assertEquals("", base64Uri.toString()); - } - - @Test - public void constructorWithEmptySingleQuotedString() { - final Base64Uri base64Uri = new Base64Uri("\'\'"); - assertArraysEqual(new byte[0], base64Uri.encodedBytes()); - assertArraysEqual(new byte[0], base64Uri.decodedBytes()); - assertEquals("", base64Uri.toString()); - } - - @Test - public void constructorWithNonEmptyString() { - final Base64Uri base64Uri = new Base64Uri("AAECAwQFBgcICQ"); - assertArraysEqual(new byte[] { 65, 65, 69, 67, 65, 119, 81, 70, 66, 103, 99, 73, 67, 81 }, - base64Uri.encodedBytes()); - assertArraysEqual(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, base64Uri.decodedBytes()); - assertEquals("AAECAwQFBgcICQ", base64Uri.toString()); - } - - @Test - public void constructorWithNonEmptyDoubleQuotedString() { - final Base64Uri base64Uri = new Base64Uri("\"AAECAwQFBgcICQ\""); - assertArraysEqual(new byte[] { 65, 65, 69, 67, 65, 119, 81, 70, 66, 103, 99, 73, 67, 81 }, - base64Uri.encodedBytes()); - assertArraysEqual(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, base64Uri.decodedBytes()); - assertEquals("AAECAwQFBgcICQ", base64Uri.toString()); - } - - @Test - public void constructorWithNonEmptySingleQuotedString() { - final Base64Uri base64Uri = new Base64Uri("\'AAECAwQFBgcICQ\'"); - assertArraysEqual(new byte[] { 65, 65, 69, 67, 65, 119, 81, 70, 66, 103, 99, 73, 67, 81 }, - base64Uri.encodedBytes()); - assertArraysEqual(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, base64Uri.decodedBytes()); - assertEquals("AAECAwQFBgcICQ", base64Uri.toString()); - } - - @Test - public void encodeWithNullBytes() { - final Base64Uri base64Uri = Base64Uri.encode(null); - assertNull(base64Uri.encodedBytes()); - assertNull(base64Uri.decodedBytes()); - assertEmptyString(base64Uri.toString()); - } - - @Test - public void encodeWithEmptyBytes() { - final Base64Uri base64Uri = Base64Uri.encode(new byte[0]); - assertArraysEqual(new byte[0], base64Uri.encodedBytes()); - assertArraysEqual(new byte[0], base64Uri.decodedBytes()); - assertEquals("", base64Uri.toString()); - } - - @Test - public void encodeWithNonEmptyBytes() { - final Base64Uri base64Uri = Base64Uri.encode(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }); - assertArraysEqual(new byte[] { 65, 65, 69, 67, 65, 119, 81, 70, 66, 103, 99, 73, 67, 81 }, - base64Uri.encodedBytes()); - assertArraysEqual(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, base64Uri.decodedBytes()); - assertEquals("AAECAwQFBgcICQ", base64Uri.toString()); - } - - private static void assertEmptyString(String input) { - assertEquals("", input); - } - -} From 1474e49d9e8bd2d1edab18cc19a4bb0c2d08c6e3 Mon Sep 17 00:00:00 2001 From: alzimmermsft <48699787+alzimmermsft@users.noreply.github.com> Date: Wed, 19 Mar 2025 12:29:45 -0400 Subject: [PATCH 2/2] Cleanup code --- .../http/rest/RestProxyImpl.java | 6 +-- .../http/rest/SwaggerMethodParserTests.java | 6 +-- .../HttpResponseBodyDecoderTests.java | 42 +++++++++---------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/rest/RestProxyImpl.java b/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/rest/RestProxyImpl.java index c002b984d1cf..9a955745f331 100644 --- a/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/rest/RestProxyImpl.java +++ b/sdk/clientcore/core/src/main/java/io/clientcore/core/implementation/http/rest/RestProxyImpl.java @@ -376,9 +376,9 @@ private static Object handleResponseBody(Response response, SwaggerM } else if (TypeUtil.isTypeOrSubTypeOf(entityType, byte[].class)) { byte[] responseBodyBytes = responseBody != null ? responseBody.toBytes() : null; -// if (returnValueWireType == Base64Uri.class) { -// responseBodyBytes = new Base64Uri(responseBodyBytes).decodedBytes(); -// } + // if (returnValueWireType == Base64Uri.class) { + // responseBodyBytes = new Base64Uri(responseBodyBytes).decodedBytes(); + // } result = responseBodyBytes != null ? (responseBodyBytes.length == 0 ? null : responseBodyBytes) : null; } else if (TypeUtil.isTypeOrSubTypeOf(entityType, InputStream.class)) { diff --git a/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/http/rest/SwaggerMethodParserTests.java b/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/http/rest/SwaggerMethodParserTests.java index a38d23272916..f1e3f9df54fe 100644 --- a/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/http/rest/SwaggerMethodParserTests.java +++ b/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/http/rest/SwaggerMethodParserTests.java @@ -129,8 +129,8 @@ interface WireTypesMethods { @HttpRequestInformation(method = HttpMethod.GET, path = "test") void noWireType(); -// @HttpRequestInformation(method = HttpMethod.GET, path = "test", returnValueWireType = Base64Uri.class) -// void base64Uri(); + // @HttpRequestInformation(method = HttpMethod.GET, path = "test", returnValueWireType = Base64Uri.class) + // void base64Uri(); @HttpRequestInformation(method = HttpMethod.GET, path = "test", returnValueWireType = DateTimeRfc1123.class) void dateTimeRfc1123(); @@ -151,7 +151,7 @@ private static Stream wireTypesSupplier() throws NoSuchMethodExceptio Class clazz = WireTypesMethods.class; return Stream.of(Arguments.of(clazz.getDeclaredMethod("noWireType"), null), -// Arguments.of(clazz.getDeclaredMethod("base64Uri"), Base64Uri.class), + // Arguments.of(clazz.getDeclaredMethod("base64Uri"), Base64Uri.class), Arguments.of(clazz.getDeclaredMethod("dateTimeRfc1123"), DateTimeRfc1123.class), Arguments.of(clazz.getDeclaredMethod("unknownType"), null)); } diff --git a/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/serializer/HttpResponseBodyDecoderTests.java b/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/serializer/HttpResponseBodyDecoderTests.java index 00a548b53897..000e12edbbf1 100644 --- a/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/serializer/HttpResponseBodyDecoderTests.java +++ b/sdk/clientcore/core/src/test/java/io/clientcore/core/implementation/serializer/HttpResponseBodyDecoderTests.java @@ -211,27 +211,27 @@ private static Stream decodableResponseSupplier() { Arguments.of(mapStringStringResponse, mapStringStringDecodeData, map)); } -// @Test -// public void decodeListBase64UriResponse() { -// ParameterizedType parameterizedType = CoreUtils.createParameterizedType(List.class, byte[].class); -// HttpResponseDecodeData decodeData -// = new MockHttpResponseDecodeData(200, parameterizedType, Base64Uri.class, true); -// -// List base64Uris = Arrays.asList(new Base64Uri("base"), new Base64Uri("64")); -// Response response -// = new Response<>(GET_REQUEST, 200, new HttpHeaders(), BinaryData.fromObject(base64Uris)); -// -// Object actual = HttpResponseBodyDecoder.decodeByteArray(null, response, SERIALIZER, decodeData); -// -// assertInstanceOf(List.class, actual); -// -// @SuppressWarnings("unchecked") -// List decoded = (List) actual; -// -// assertEquals(2, decoded.size()); -// assertArraysEqual(base64Uris.get(0).decodedBytes(), decoded.get(0)); -// assertArraysEqual(base64Uris.get(1).decodedBytes(), decoded.get(1)); -// } + // @Test + // public void decodeListBase64UriResponse() { + // ParameterizedType parameterizedType = CoreUtils.createParameterizedType(List.class, byte[].class); + // HttpResponseDecodeData decodeData + // = new MockHttpResponseDecodeData(200, parameterizedType, Base64Uri.class, true); + // + // List base64Uris = Arrays.asList(new Base64Uri("base"), new Base64Uri("64")); + // Response response + // = new Response<>(GET_REQUEST, 200, new HttpHeaders(), BinaryData.fromObject(base64Uris)); + // + // Object actual = HttpResponseBodyDecoder.decodeByteArray(null, response, SERIALIZER, decodeData); + // + // assertInstanceOf(List.class, actual); + // + // @SuppressWarnings("unchecked") + // List decoded = (List) actual; + // + // assertEquals(2, decoded.size()); + // assertArraysEqual(base64Uris.get(0).decodedBytes(), decoded.get(0)); + // assertArraysEqual(base64Uris.get(1).decodedBytes(), decoded.get(1)); + // } @Test public void malformedBodyReturnsError() throws IOException {