diff --git a/sdk/core/azure-core-experimental/CHANGELOG.md b/sdk/core/azure-core-experimental/CHANGELOG.md index 5662cb8beb06..e68f1fc49ae7 100644 --- a/sdk/core/azure-core-experimental/CHANGELOG.md +++ b/sdk/core/azure-core-experimental/CHANGELOG.md @@ -2,8 +2,14 @@ ## 1.0.0-beta.24 (2022-02-03) +### Features Added + +- Added `com.azure.core.experimental.models.MessageWithMetadata`. + ### Other Changes +### Breaking Changes + #### Dependency Updates - Upgraded `azure-core` from `1.24.1` to `1.25.0`. @@ -62,7 +68,7 @@ ### Breaking Changes -- Moved `HttpAuthorization` into `azure-core`. +- Moved `HttpAuthorization` into `azure-core`. ### Other Changes @@ -174,7 +180,7 @@ - Added API `fromObject()` in `BinaryData` which uses `JsonSerializer` present in the classpath. - Added APIs to `JsonPatchDocument` which accept pre-serialized JSON. -- Updated `azure-core` dependency to released version. +- Updated `azure-core` dependency to released version. ## 1.0.0-beta.6 (2020-10-06) diff --git a/sdk/core/azure-core-experimental/src/main/java/com/azure/core/experimental/models/MessageWithMetadata.java b/sdk/core/azure-core-experimental/src/main/java/com/azure/core/experimental/models/MessageWithMetadata.java new file mode 100644 index 000000000000..7b0a9ccdbd4d --- /dev/null +++ b/sdk/core/azure-core-experimental/src/main/java/com/azure/core/experimental/models/MessageWithMetadata.java @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.core.experimental.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.util.BinaryData; + +/** + * An abstraction for a message containing a content type along with its data. + */ +@Fluent +public class MessageWithMetadata { + private BinaryData binaryData; + private String contentType; + + /** + * Gets the message body. + * + * @return The message body. + */ + public BinaryData getBodyAsBinaryData() { + return binaryData; + } + + /** + * Sets the message body. + * + * @param binaryData The message body. + * + * @return The updated {@link MessageWithMetadata} object. + */ + public MessageWithMetadata setBodyAsBinaryData(BinaryData binaryData) { + this.binaryData = binaryData; + return this; + } + + /** + * Gets the content type. + * + * @return The content type. + */ + public String getContentType() { + return contentType; + } + + /** + * Sets the content type. + * + * @param contentType The content type. + * + * @return The updated {@link MessageWithMetadata} object. + */ + public MessageWithMetadata setContentType(String contentType) { + this.contentType = contentType; + return this; + } +} diff --git a/sdk/core/azure-core-experimental/src/main/java/com/azure/core/experimental/models/package-info.java b/sdk/core/azure-core-experimental/src/main/java/com/azure/core/experimental/models/package-info.java new file mode 100644 index 000000000000..da6e2700c0b0 --- /dev/null +++ b/sdk/core/azure-core-experimental/src/main/java/com/azure/core/experimental/models/package-info.java @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +/** + * Package containing experimental model classes. + */ +package com.azure.core.experimental.models; diff --git a/sdk/core/azure-core-experimental/src/main/java/module-info.java b/sdk/core/azure-core-experimental/src/main/java/module-info.java index dbc0343a02f7..6addb1a8ece0 100644 --- a/sdk/core/azure-core-experimental/src/main/java/module-info.java +++ b/sdk/core/azure-core-experimental/src/main/java/module-info.java @@ -9,5 +9,7 @@ exports com.azure.core.experimental.http; exports com.azure.core.experimental.http.policy; + exports com.azure.core.experimental.models; + uses com.azure.core.experimental.serializer.AvroSerializerProvider; } diff --git a/sdk/core/azure-core-experimental/src/test/java/com/azure/core/experimental/models/MessageWithMetadataTest.java b/sdk/core/azure-core-experimental/src/test/java/com/azure/core/experimental/models/MessageWithMetadataTest.java new file mode 100644 index 000000000000..ebe19fa1a9fc --- /dev/null +++ b/sdk/core/azure-core-experimental/src/test/java/com/azure/core/experimental/models/MessageWithMetadataTest.java @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.core.experimental.models; + +import com.azure.core.util.BinaryData; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +/** + * Tests for {@link MessageWithMetadata} + */ +public class MessageWithMetadataTest { + /** + * Verify default parameters. + */ + @Test + public void initialize() { + // Act + final MessageWithMetadata message = new MessageWithMetadata(); + + // Assert + assertNull(message.getBodyAsBinaryData(), "'body' should initially be null."); + assertNull(message.getContentType(), "'contentType' should initially be null."); + } + + /** + * Verify properties can be set. + */ + @Test + public void settingProperties() { + // Arrange + final BinaryData binaryData = BinaryData.fromString("foo.bar.baz"); + final String contentType = "some-content"; + final MessageWithMetadata message = new MessageWithMetadata(); + + // Act + final MessageWithMetadata actual = message.setContentType(contentType) + .setBodyAsBinaryData(binaryData); + + // Assert + assertEquals(binaryData, actual.getBodyAsBinaryData()); + assertEquals(contentType, actual.getContentType()); + } +}